Verilog中可合成的'X'或无效的输入检测系统

时间:2017-02-18 09:49:10

标签: verilog synthesis

我正在尝试制作一个可合成的Verilog代码,它可以检测'x'或无效输入。基本上,x不能合成,所以我避免使用x。我试图在每个时钟周期读取输入,如果它是01,那么我将加载到新的寄存器中。这是代码;

always@(posedge clk)
begin
    if(in & gate_check == 0 | in & gate_check == 1)
    begin
        load_input_8 <= {in,load_input_8[8:1]}; 
    end
end

因此,在检查输入数据的有效性后,我将新输入加载到load_input_8寄存器中。顺便说一句,gate_check的值为1,即`gate_check = 1。

但这只是将1存储到load_input_8中。 0中未存储load_input_8。电路在加载输入时也有奇怪的行为。这是模拟的图片; enter image description here 谢谢。

1 个答案:

答案 0 :(得分:0)

感谢@Laleh帮助解决了这个问题。存在()的问题。这是正确的代码;

always@(posedge clk)
begin
    if((in & gate_check) == 0 | (in & gate_check) == 1)
    begin
        load_input_8 <= {in,load_input_8[8:1]}; 
    end
end