2017-02-18 5 views
0

'x'또는 잘못된 입력을 감지 할 수있는 합성 가능 Verilog 코드를 만들려고합니다. 기본적으로 x은 합성 가능하지 않으므로 x을 피하고 있습니다. 모든 클럭 사이클에서 입력을 읽으려고하는데, 0 또는 1이면 새 레지스터에로드됩니다. 다음은 코드입니다. 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입니다.

그러나이 값은 의 값만 load_input_8에 저장됩니다. 0load_input_8에 저장됩니다. 또한 회로는 입력을로드하는 데 이상한 동작을합니다. 다음은 시뮬레이션 그림입니다. enter image description here 감사합니다.

+0

'in = 1'만이 if 조건을 만족시킬 수 있습니다. –

+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