verilog异步复位jk触发器_Verilog(Sequential logic)

概念(sequential logic)

时序逻辑:任意时刻输出不仅与当前时刻的输入,而且还取决于电路原来的状态。

与组合逻辑不同,时序逻辑有时钟信号,复位信号

类型

①触发器

1dc08e4876238d9b36bd6a414aa47f45.png
always @(posedge clk) begin  // 通过时钟的上升沿进行赋值
	q<=d;
end   

625b216fdea030bf1aae70d095b77ca9.png
在 t0 时刻时,d 的值为 0,则 q 的值也为 0;在 t1 时刻 d 发生了变化,值为 1,那么 q 相应也发生了变化,值变为 1。可以看到在 t0-t1 之间的一个时钟周期内,无论输入信号 d 的值如何变化,q 的值是保持不变的,发生了数据存储功能,保存的值为在时钟的跳变沿时 d 的值

②两级触发器

86e14f374ee3bc6481a4d1bc647df6b6.png
always @(posedge clk) begin 
	q<=d;
end
always @(posedge clk)begin 
	q1<=q;
end

652a7bffeca926e903810a6e3c92dd5b.png
t0 时刻,d 为 0,q 输出为 0,t1 时刻,q 随着 d 的数据变化而变化,而此时钟跳变之前 q 的值仍为 0,那么 q1 的值仍为 0,t2 时刻,时钟跳变前 q 的值为1,则 q1 的值相应为 1,q1 相对于 q 落后一个周期

b59a15b3528d3add7e48a7534fde355c.png

③带异步复位的D触发器 独立于时钟,异步复位信号有效,就会触发复位操作。 用于给信号复位,初始化

4e686354bf59e64572b53188434d1231.png
module test(d,q,clk,rst);
	input d;
	input clk;
	input rst;
	output reg q;
//时钟上升沿,复位下降沿为敏感列表,low active reset
always@(posedge clk or negedge rst)begin
	if(rst==0)
		q<=0;
	else
		q<=d;
end
endmodule
仿真代码
module vtf_test_tb();
	reg d;
	reg clk;
	reg rst;
	wire q;

initial begin
	d=0;
	clk=0;
	forever begin
		#({$random}%100)  d=~d;
	end
end 
initial begin
	rst=0;
	#150 
	rst=1;
end 
always #10 clk=~clk;
test t0(
	.d(d),
	.clk(clk),
	.rst(rst),
	.q(q)
	);
endmodule

f89d89ae98132a09e5119b6a64e719ab.png
  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值