打印
[Verilog HDL]

VERILOG寄存器

[复制链接]
3090|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaochy1126|  楼主 | 2023-5-29 14:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
异步清零寄存器
工作原理:

CP 不为上升沿,且 RD=1 时,寄存器输出保持不变。
CP 上升沿,且 RD=1 时,输入端 D0-D3 送寄存器,Q0-Q3 输出等于输入,并 保持此数据直到下一个时钟沿到来。
RD=0 时, 异步清零。
寄存器模块代码:
module hardreg(d,clk,clrb,q);
       
        input clk,clrb;
        input[3:0] d;
        output reg [3:0] q;
       
        always@(posedge clk or  negedge clrb)
        begin
                if(!clrb)
                        q<=0;// 如果clrb=0就异步清零
                else
                        q<=d;      
        end
       
endmodule

testbench代码:
`timescale 1 ns/ 1 ps

`define clock_period 20
module hardreg_tb;

        reg clk;
        reg clrb;
        reg [3:0] din;

        wire [3:0] dout;
                     
        hardreg hardreg0 (
        din,
        clk,
        clrb,
        dout
        );
       
        initial clk =1'b1;
        always#(`clock_period/2) clk=~clk;
        initial begin                                                  
         clrb=1'b0;
                        din=4'b1111;
                        #100
                        clrb=1'b1;
                        #100
                        clrb=1'b0;
                        #50
                        din =4'b0001;
                        #100
                        clrb =1;
                        #100
                        din =4'b0010;
                        #100
                        din =4'b0011;
                        #100
                        din =4'b0011;                       
         #100
                        clrb =0;
                        #35
                        din =4'b0101;                       
         #100
         $stop;
            
                end
                                                                    
endmodule


使用特权

评论回复

相关帖子

沙发
gaochy1126|  楼主 | 2023-5-29 14:58 | 只看该作者
功能仿真结果图:

时序仿真结果图:

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:这个社会混好的两种人:一是有权有势,二是没脸没皮的。

1025

主题

11271

帖子

24

粉丝