第四节 时序逻辑代码设计与仿真(计数器和伪随机码发生器)


一、计数器

1.什么叫做时序逻辑电路

  由组合逻辑 + 触发器 = 时序逻辑

  注意:如果要构成触发器(trigger),必须要有时钟信号和复位信号,且两个signal必须为边沿触发。

2.原理图

3.Verilog设计代码

module counter(
    clk,
    rst_n,
    y
    );
input clk,rst_n;
output reg [7:0] y;
//wire [7:0] sum;
//assign sum = y+1 ;
always @(posedge clk or negedge rst_n) 
begin
    if (!rst_n) //negative edge reset
        begin
            y <= 0;            
        end
    else
        begin
//            y <= sum;
            y <= y+1;
        end
end
endmodule

4.测试代码

//testbench of the counter module
`timescale 1ns/1ns
module counter_testbench();
reg CLK,RST_N;
wire [7:0] Y;

counter U1(
    .clk(CLK),
    .rst_n(RST_N),
    .y(Y)
    );
initial begin
    #0 CLK <= 0; RST_N <= 0;
    #17 RST_N <= 1;
    #500 $stop;
end

always #5 CLK <= ~CLK;    //时钟周期为10ns
endmodule

5.测试结果