2017-12-16 15 views
-1
input [6:0] load, 
input up, 
input down, 
output reg [6:0] currentvalue 
); 

    reg [6:0] state, nextup, nextdown; 

initial 
    begin 
     state = load; 
    end 

안녕 얘들 아! 나는 7 비트 입력 (로드)을 받고 입력 값을 7 비트 레지스터 (상태)에 할당하는 모듈을 만들려고한다. 이 코드를 ISE 시뮬레이터를 통해 실행할 때 레지스터 값 '상태에 대해 XXXXXXXX가 표시됩니다.' 그 외에도 모듈이 올바르게 작동하고 오류가없는 것 같습니다. 원래 코드 대신 다음 코드를 사용하여 작동하는지 확인했습니다.Verilog 레지스터 할당이 시뮬레이션에서 XXXXXXX로 표시됩니다.

initial 
    begin 
     state = 7'd35; 
    end 

그리고 작동했습니다. 입력 값을 레지스터에 할당하는 데 문제가 있다는 모호한 아이디어가 있지만이 문제를 해결하는 방법을 정확하게 파악할 수는 없습니다. 도와주세요! 감사!

+0

'작동하지 않음'과 함께 유효한 코드 줄을 하나만 표시합니다. 더 많은 코드를 표시하고 어디서 얼마나 자주 작동하는지 지정하십시오. 더 중요한 것은 경험있는 코더의 Verilog 모듈을 찾아서 어떻게 보이는지 확인하십시오. Verilog는 C **와 닮지 않습니다 ** 완전히 다른 코딩 스타일이 필요합니다. – oldfart

답변

1

Verilog의 모든 4- 상태 변수는 'x'로 초기화됩니다.

initial 블록은 시뮬레이션이 시작되기 전에 변수를 초기화하는 데 사용됩니다. 그래서 첫 번째 버전 state = load에서 'x'값을 state (이미 'x'였습니다)에 '로드'값으로 지정했습니다.

두 번째 변형에서는 state에 숫자 값을 할당했습니다. 어떤 것이 initial 블록을위한 것입니까?

시뮬레이션에서 모든 주요 동작은 모듈에없는 always 블록에서 발생합니다. 그리고 모듈 반응을보기 위해 입력을 자극하기위한 테스트 벤치 코드를 작성해야합니다.