我正在尝试编写一个 RTL 模型,在该模型中我监视独立的时钟源。这些时钟源可以具有可变频率(范围 5 到 50MHz)
让我们说 clk1 和 clk2。我正在尝试驱动一个信号“toggle”,该信号在 clk1 的每个 posedge 处设置为“1”,在 clk2 的每个 negedge 处设置为“0”。我很难实现这个模型。
我尝试使用在 clk1 的正沿触发的 1 个触发器,该触发器的输入绑定到“高”,另一个触发器在 clk2 的负沿触发,输入绑定到“低”。我将这些输出发送到一个多路复用器,但我无法弄清楚如何驱动这个多路复用器的选择信号
这是我的代码片段:
always_ff @(posedge clk1 or rstb) begin
if(!rstb) begin
flop1_out <= 0;
end else begin
flop1_out <= 1;
end
end
always_ff @(negedge clk2) begin
flop2_out <= 0;
end
assign toggle = sel ? flop1 : flop2;
所以,到目前为止,没有什么可以推动 sel 并试图弄清楚这是我遇到麻烦的地方
如果我尝试从 2 个不同的时钟源驱动相同的信号(切换),我会收到一条错误消息,指出为信号切换找到了多个驱动程序,这是有道理的。
如果您有任何建议,请告诉我
编辑:修复了一个错字并从 flop2 的敏感度列表中删除了 rstb