2017-02-18 28 views
0

Я пытаюсь создать код Verilog, способный к синтезу, который может обнаруживать «х» или недопустимые входы. В принципе, x не может синтезировать, поэтому я избегаю x. Я пытаюсь читать входы на каждом такте и если это 0 или 1, то я загружаю новый регистр. Вот код;Synthesis-able 'X' или некорректная система обнаружения входных данных в Verilog

[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' может удовлетворить ваши условия if. –

+0

@ Лале, спасибо. Проблема решена. –

ответ

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