verilog_边学边练习(6) 相邻点累加(时序逻辑电路)

简介: 1 相邻点累加1.1 代码实现1.2 仿真结果

1 相邻点累加

1.1 代码实现

//2020-6-30 安静到无声
//相邻16点相加
`timescale 1ns/10ps
module sigma_16p (
                                        clk,
                                        res,
                                        data_in,
                                        syn_in,
                                        data_out,
                                        syn_out
);
    input                               clk                        ;
    input                               res                        ;
    input              [   7:0]         data_in                    ;//采样信号
    input                               syn_in                     ;//采样时钟
    output             [  11:0]         data_out                   ;//累加结果输出
    output                              syn_out                    ;//累加结果同步脉冲
reg                                     syn_in_n1                  ;//syn_in的反相延时
wire                                    syn_pluse                  ;//采样时钟上升沿延时
assign syn_pluse = syn_in_n1 & syn_in;
reg                    [   3:0]         con_syn                    ;
wire                   [   7:0]         comp_8                     ;//补码
wire                   [  11:0]         d_12                       ;//升位结果
reg                    [  11:0]         data_out                   ;
reg                                     syn_out                    ;
assign comp_8 = data_in[7] ? {data_in[7], ~ data_in[7-1:0] + 1} : data_in;//补码运算
assign d_12 = {comp_8[7],comp_8[7],comp_8[7],comp_8[7],comp_8};     //升位
reg                    [  11:0]         sigma                      ;//累加计算
always @(posedge clk or negedge res) begin
    if (~res) begin
        syn_in_n1 <= 0;
        con_syn <= 0;
        sigma <= 0;
        data_out <= 0;
        syn_out <= 0;
    end else begin
        syn_in_n1 <= ~syn_in;
        if (syn_pluse) begin
            con_syn <= con_syn + 1;
        end
        if (syn_pluse) begin
            if (con_syn == 15) begin
                sigma <= d_12;
                data_out <= sigma;
                syn_out <= 1;
            end else begin
                sigma <= d_12 + sigma;  
            end
        end else begin
            syn_out <= 0;
        end
    end
end
endmodule
// testbench of sigma_16p_tb
module sigma_16p_tb;
reg                                     clk,res                    ;
reg                    [   7:0]         data_in                    ;
reg                                     syn_in                     ;
wire                   [  11:0]         data_out                   ;
wire                                    syn_out                    ;
sigma_16p sigma_16p (
    .clk                               (clk                       ),
    .res                               (res                       ),
    .data_in                           (data_in                   ),
    .syn_in                            (syn_in                    ),
    .data_out                          (data_out                  ),
    .syn_out                           (syn_out                   ) 
);
initial begin
                   clk<=0;res<=0;data_in=1;syn_in<=0;
            #17    res<=1;
            #25000 $stop;
end
always #5 clk<=~clk;
always #100 syn_in<=~syn_in;//采样时钟
endmodule

1.2 仿真结果

相关文章
|
6月前
|
芯片
组合逻辑电路之半加器
组合逻辑电路之半加器
165 0
组合逻辑电路之半加器
|
算法 异构计算
m基于uw导频序列和cordic算法的基带数据帧频偏估计和补偿FPGA实现,包含testbench
m基于uw导频序列和cordic算法的基带数据帧频偏估计和补偿FPGA实现,包含testbench
104 2
|
6月前
|
测试技术
组合逻辑电路
组合逻辑电路
86 0
|
算法 异构计算
m基于FPGA的costas环载波同步verilog实现,包含testbench,可以修改频偏大小
m基于FPGA的costas环载波同步verilog实现,包含testbench,可以修改频偏大小
234 0
|
6月前
|
算法 关系型数据库 计算机视觉
基于FPGA的9/7整数小波变换和逆变换verilog实现,包含testbench
基于FPGA的9/7整数小波变换和逆变换verilog实现,包含testbench
|
芯片
模电练习题-多路信号发生器(题目)
模电练习题-多路信号发生器(题目)
432 1
模电练习题-多路信号发生器(题目)
【数字IC手撕代码】Verilog偶数分频|题目|原理|设计|仿真(二分频,四分频,六分频,八分频,偶数分频及特殊占空比)
【数字IC手撕代码】Verilog偶数分频|题目|原理|设计|仿真(二分频,四分频,六分频,八分频,偶数分频及特殊占空比)
【数字IC手撕代码】Verilog偶数分频|题目|原理|设计|仿真(二分频,四分频,六分频,八分频,偶数分频及特殊占空比)
|
编解码 算法 异构计算
m基于FPGA的LDPC最小和译码算法verilog实现,包括testbench和matlab辅助验证程序
m基于FPGA的LDPC最小和译码算法verilog实现,包括testbench和matlab辅助验证程序
250 0
【数字IC手撕代码】Verilog奇数分频|题目|原理|设计|仿真(三分频,五分频,奇数分频及特殊占空比)
【数字IC手撕代码】Verilog奇数分频|题目|原理|设计|仿真(三分频,五分频,奇数分频及特殊占空比)
【数字IC手撕代码】Verilog奇数分频|题目|原理|设计|仿真(三分频,五分频,奇数分频及特殊占空比)
|
数据安全/隐私保护
【数字IC手撕代码】Verilog伪随机数生成器|线性反馈移位寄存器|题目|原理|设计|仿真
【数字IC手撕代码】Verilog伪随机数生成器|线性反馈移位寄存器|题目|原理|设计|仿真
【数字IC手撕代码】Verilog伪随机数生成器|线性反馈移位寄存器|题目|原理|设计|仿真