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 仿真结果

相关文章
|
存储 数据采集
时序逻辑电路的应用及其作用
一、什么时序逻辑电路 时序逻辑电路是一种电子电路,用于处理和存储时序信息。它通过使用时钟信号来控制电路的行为,以实现特定的功能。 时序逻辑电路通常由触发器和组合逻辑电路组成。触发器是一种存储器件,可以存储和传递电信号。组合逻辑电路则根据输入信号的组合产生输出信号。 时序逻辑电路的行为是根据时钟信号的变化来确定的。时钟信号是一个周期性的信号,用于同步电路的操作。在每个时钟周期中,电路根据输入信号和当前状态来计算输出信号,并在时钟信号的上升沿或下降沿时更新状态。 时序逻辑电路可以用于实现各种功能,如计数器、状态机、时序控制器等。它在数字系统中起着重要的作用,用于处理时序信息和控制电路的行为。 二、
774 0
|
算法 异构计算
m基于FPGA的costas环载波同步verilog实现,包含testbench,可以修改频偏大小
m基于FPGA的costas环载波同步verilog实现,包含testbench,可以修改频偏大小
258 0
【数字IC手撕代码】Verilog偶数分频|题目|原理|设计|仿真(二分频,四分频,六分频,八分频,偶数分频及特殊占空比)
【数字IC手撕代码】Verilog偶数分频|题目|原理|设计|仿真(二分频,四分频,六分频,八分频,偶数分频及特殊占空比)
【数字IC手撕代码】Verilog偶数分频|题目|原理|设计|仿真(二分频,四分频,六分频,八分频,偶数分频及特殊占空比)
|
Python
可软可硬——从电路的角度做加法
可软可硬——从电路的角度做加法
135 0
|
人工智能 BI C语言
5.2.1_电路的基本原理、加法器设计
计算机组成原理之电路的基本原理、加法器设计
354 0
5.2.1_电路的基本原理、加法器设计
【数字IC手撕代码】Verilog奇数分频|题目|原理|设计|仿真(三分频,五分频,奇数分频及特殊占空比)
【数字IC手撕代码】Verilog奇数分频|题目|原理|设计|仿真(三分频,五分频,奇数分频及特殊占空比)
【数字IC手撕代码】Verilog奇数分频|题目|原理|设计|仿真(三分频,五分频,奇数分频及特殊占空比)
|
存储 算法
数据结构上机实践第四周项目7 - 多项式求和
数据结构上机实践第四周项目7 - 多项式求和
165 0
数据结构上机实践第四周项目7 - 多项式求和
数字逻辑电路设计实验:加法器
数字逻辑电路设计实验:加法器
125 0
数字逻辑电路设计实验:计时器/奇数骑
数字逻辑电路设计实验:计时器/奇数骑
65 0
|
芯片
复习单片机:矩阵按键(内含1 矩阵按键介绍+2 硬件设计+3 软件设计+4原始代码+5 实验现象)
复习单片机:矩阵按键(内含1 矩阵按键介绍+2 硬件设计+3 软件设计+4原始代码+5 实验现象)
600 0
复习单片机:矩阵按键(内含1 矩阵按键介绍+2 硬件设计+3 软件设计+4原始代码+5 实验现象)

热门文章

最新文章