异步清零寄存器
工作原理:
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
|