FPGA Verilog寄存器模块及testbench代码

异步清零寄存器

工作原理:

  • 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

功能仿真结果图:
功能仿真结果图
时序仿真结果图:
时序仿真结果图

  • 5
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值