2016-06-06 2 views
-2

교수가 아래 코드를 제공합니다. 그리고 나는 그것이 결코 멈추지 않을 이유를 알아 내야 만합니다.내 Verilog 테스트 벤치가 절대 멈추지 않아

모듈 tb_problem1();

reg a, b, c, d, e; 
wire x; 
reg [4:0] ins; 

problem1 dut(a, b, c, d, e, x); 

initial begin 
    ins = 0; 
    while(ins < 32) begin 
     {a, b, c, d, e} = ins; 
     #20; 
     ins = ins + 1; 
    end 
end 

endmodule 

우리가 ins = ins+1'b1;을 수행해야하기 때문입니까?

+1

물고기를주는 것보다 ... 디버깅 101 :'$ display'. 교수님은 시험 중 인터넷 접속을 허용 하시겠습니까? – toolic

답변

4

5 비트 부호없는 값은 0에서 31까지의 범위를 지원합니다. 1에서 31을 추가하면 msb가 삭제되고 0이 반환되므로 값은 32에 도달하지 않습니다.

ins을 6 비트 값으로 만드십시오.

+0

은 내가 <31 인 경우에는 괜찮습니다. ? – Frank

+0

그러면'a, b, c, d, e'의 조건은 모두 1이되지 않습니다. do-while은'ins <31'과 함께 작동합니다. – Greg

+0

감사합니다. – Frank

관련 문제