2017-02-18 87 views
0

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

[email protected](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 谢谢。

+0

只有'in = 1'才能满足你的条件。 –

+0

@Laleh,谢谢。问题解决了。 –

回答

0

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

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