verilog 一个always块可否对同一寄存器延迟赋值
在一个always块里需要对同一个寄存器赋值两次,但是第二次赋值要比第一次赋值延迟一个时钟周期。有大神知道怎么实现吗?always @(negedge signal2)
begin
fifo_wr_signal_middle<=1'b1;
counter_data_out_midle<=counter_out;
fifo_wr_signal_middle<=1'b0; // 需要延迟一个周期对其赋值
end
用一个计数器吧!按计数器的值来赋值fifo_wr_signal_middle smaret 发表于 2018-4-20 17:16
用一个计数器吧!按计数器的值来赋值fifo_wr_signal_middle
但是signal2和主模块不是一个时钟域,就想在一次signal触发信号下,往外发送一个时钟周期的数据。 不要想Verilog,你就想电路,如果要实现这个功能,你打算怎么用数字电路做出来 McuPlayer 发表于 2018-4-20 17:44
不要想Verilog,你就想电路,如果要实现这个功能,你打算怎么用数字电路做出来 ...
谢了,正在想办法。 等你电路想好了,Verilog代码不就也出来了 想实现得,是fifo_wr_signal_middle这个信号,只立1个时钟周期宽的高电平吧。 always @(negedge clk)
begin
if (某个条件 )
fifo_wr_signal_middle<=1'b1;
if (fifo_wr_signal_middle==1'b1)
fifo_wr_signal_middle<=1'b0;
大概的意思吧,语法不是很严格。 本帖最后由 get500wan 于 2018-4-20 22:23 编辑
手机编辑,发重复了。 你这就是两个d触发器串联起来吧 get500wan 发表于 2018-4-20 22:21
always @(negedge clk)
begin
if (某个条件 )
按你的方法试一下,感觉可行的样子 aammoo 发表于 2018-4-21 00:32
你这就是两个d触发器串联起来吧
第二个延迟一个周期触发,该模块不是在时钟驱动下,但是还的延迟一个时钟周期。 裸奔的流浪者 发表于 2018-4-21 08:59
第二个延迟一个周期触发,该模块不是在时钟驱动下,但是还的延迟一个时钟周期。 ...
最简单状态机 denike 发表于 2018-4-21 17:16
最简单状态机
解决了,就是放到主模块状态机完成的。谢了
页:
[1]