如何在系统verilog中驱动来自2个源的信号

如何在系统verilog中驱动来自2个源的信号,verilog,system-verilog,register-transfer-level,vlsi,digital-design,Verilog,System Verilog,Register Transfer Level,Vlsi,Digital Design,我正在尝试编写一个RTL模型,在这个模型中我监视独立的时钟源。这些时钟源可以具有可变频率(范围5至50MHz) 让我们说clk1和clk2。我试图驱动一个信号“切换”,它在clk1的每个posedge设置为“1”,在clk2的每个NEGDEDGE设置为“0”。我很难理解这个模型 我尝试使用一个在clk1正边缘触发的触发器,该触发器的输入绑定到“高”,另一个在clk2负边缘触发的触发器,输入绑定到“低”。我将这些输出发送到一个多路复用器,但是我很难弄清楚如何驱动这个多路复用器的选择信号 以下是我的

我正在尝试编写一个RTL模型,在这个模型中我监视独立的时钟源。这些时钟源可以具有可变频率(范围5至50MHz)

让我们说clk1和clk2。我试图驱动一个信号“切换”,它在clk1的每个posedge设置为“1”,在clk2的每个NEGDEDGE设置为“0”。我很难理解这个模型

我尝试使用一个在clk1正边缘触发的触发器,该触发器的输入绑定到“高”,另一个在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;
始终\u ff@(posedge clk1或rstb)开始
如果(!rstb)开始
flop1\u out<代码>分配rstn=clk2;
始终@(posedge clk1或negedge rstn)
如果(~rstn)
切换=1'b0;
其他的
切换
assign rstn = clk2;
always @ (posedge clk1 or negedge rstn)
    if (~rstn) 
        toggle   = 1'b0;
    else
        toggle <= 1'b1;