Синтезируемая 'X' или система обнаружения недопустимого ввода в Verilog

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

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. В load_input_8 нет 0. И схема также имеет странное поведение при загрузке входов. Вот изображение симуляции; введите здесь описание изображения Спасибо.


person Awais Hussain    schedule 18.02.2017    source источник
comment
Только in = 1 может удовлетворить ваше условие if.   -  person Karan Shah    schedule 19.02.2017
comment
@Laleh, спасибо. Проблема решена.   -  person Awais Hussain    schedule 19.02.2017


Ответы (1)


Спасибо @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
person Awais Hussain    schedule 21.02.2017