我正在用 Verilog 准备一个程序。我在实现一个短脉冲时遇到问题,该脉冲每次都会在慢速时钟的上升沿发生并在快速时钟的上升沿消失。
下面我粘贴我写的代码,它给了我这样一个脉冲,但不幸的是它只在第一个边缘出现一次,并且再也不会出现。
reg cnt_write_bit1, cnt_write_bit2;
initial cnt_write_bit1 = 0;
initial cnt_write_bit2 = 0;
reg cnt_write_fifo;
initial cnt_write_fifo = 0;
always @ (posedge clk_1kHz)
begin : WRITE_FIFO
if (cnt_write_fifo)
begin
cnt_write_bit1 <= 0;
end
else
begin
cnt_write_bit1 <= 1;
end
end
always @ (posedge clk_50MHz)
begin : STOP_WRITE_FIFO
if (cnt_write_fifo)
begin
cnt_write_bit2 <= 0;
end
else //if (!cnt_write_bit1)
begin
cnt_write_bit2 <= 1;
end
end
always @ (cnt_write_bit1, cnt_write_bit2)
begin
if (cnt_write_bit1 && cnt_write_bit2)
begin
cnt_write_fifo <= 1;
end
else if (!cnt_write_bit2)
begin
cnt_write_fifo <= 0;
end
end
“cnt_write_fifo”信号上的脉冲应该在慢时钟的每个上升沿上都是可重复的,但不幸的是它不是。
我将不胜感激任何帮助。