에서 사용자의 입력 (I는의 Quartus II 적이있는을 실행하고 있습니다. 10.1 및 11.0 (나는 모두를 시도했습니다)). 나는 내 인생에 대해 알 수없는 매우 기괴한 버그를 얻고있다.의 Verilog HDL, 나는 현재 내 학교에서 얻은 FPGA와의 Verilog HDL의 프로젝트에 참여하고 FPGA를
나는 점과 대시를 감지 한 다음이 입력에 기초한 HEX 디스플레이의 해당 문자를 출력하는 모스 코드 프로그램을 개발하고있다. 16 진수 디스플레이는 아름답게 작동하지만, 내 UserInput 모듈은 아무 것도하지 않는 것 같습니다!
module UserInput(Clock, reset, in, out);
input Clock, reset, in;
output reg [1:0] out;
wire [2:0] PS;
reg [2:0] NS;
parameter NONE = 2'b00, DOT = 2'b01, DASH = 2'b11; //For Output
parameter UP = 3'b000, SHORT0 = 3'b001, SHORT1 = 3'b010, UP_DOT = 3'b011, LONG = 3'b100, UP_DASH = 3'b101;
//Active High
[email protected](PS or in)
case (PS)
UP: if (in) NS = SHORT0;
else NS = UP;
SHORT0: if (in) NS = SHORT1;
else NS = UP_DOT;
SHORT1: if (in) NS = LONG;
else NS = UP_DOT;
UP_DOT: NS = UP;
LONG: if (in) NS = LONG;
else NS = UP_DASH;
UP_DASH: NS = UP;
default: NS = 3'bxxx;
endcase
[email protected](PS)
case (PS)
UP: out = NONE;
SHORT0: out = NONE;
SHORT1: out = NONE;
UP_DOT: out = DOT;
LONG: out = NONE;
UP_DASH: out = DASH;
default: out = 2'bxx;
endcase
D_FF dff0 (PS[0], NS[0], reset, Clock);
D_FF dff1 (PS[1], NS[1], reset, Clock);
D_FF dff2 (PS[2], NS[2], reset, Clock);
endmodule
module D_FF (q, d, reset, clk);
input d, reset, clk;
output reg q;
[email protected](posedge clk or posedge reset)
begin
if (reset) q = 0;
else q = d;
end
endmodule
모듈의 입력은 FPGA의 KEY입니다. UserInput 모듈이 나타내는 FSM은 t = 0에서 키가 "UP"상태에 있습니다. 그런 다음 입력이 있으면 SHORT0 또는 SHORT1을 통해 이동하고 마지막으로 LONG을 이동합니다. 키가 이러한 상태 중 하나에서 해제되면 해당 중개 UP 상태로 이동하여 "DOT"또는 "DASH"의 출력을 제공합니다. 내 FPGA에이 연결되면
그러나, 나는 아무 것도 얻을 수 없습니다. 테스트 결과, 결코 "UP"상태에서 벗어나지 않는 것으로 보입니다. 내 시뮬레이션조차도 아무것도주지 못합니다. 둘째, 다른 프로젝트 (다른 하나의 프로젝트에서 다른 UserInput 모듈에 연결하는 중)를 연결해 보았습니다. Verilog의 배경에 뭔가 빠져 있는데 실종 됐나요?
DFF 0, 1, 2, 비트 0, 1, 2이다 PS : 여기
시뮬레이션 파형의 이미지이다. 시뮬레이션 결과 NS의 표시가 허용되지 않습니다.
? 테스트 벤치 코드를 넣을 수 있습니까? – Tim
네, 맞습니다. 불행히도, 나는 testbench 코드를 작성하는 방법을 모른다. 필자는 알테라 대학 프로그램 시뮬레이터 (Altera University Program Simulator)를 사용하는 방법을 배웠다. 그러나 Altera UP 시뮬레이터로 시뮬레이트하고 적절한 리셋, 클록 및 자극을 제공하면 DFF가 변경되지 않습니다. – cjspook
더 자세한 정보가 없으면 무엇을 말할 지 모르겠습니다. 제 생각에 리셋 극성이 섞여 있지 않다면 거기에있는 것이 효과가 있다고 생각합니다. 만약 당신이 파도를 디버깅하고 있다면 어쩌면 작동하지 않을 때 관련된 신호 (리셋, clk, NS, PS, in)를 보여주는 파도의 스크린 샷을 올릴 수 있을까요? – Tim