Nexys4 FPGA에 스톱워치 프로그램을 작성하고 있습니다. 스톱워치를 시작, 중지 및 재설정 할 수 있지만 증가 기능을 구현하는 데 문제가 있습니다. 증가 기능은 버튼을 누르면 눌러지면 1 밀리 초 단위로 시계가 증가합니다. 따라서 7 세그먼트 디스플레이에 1 : 002가 표시되고 증가 버튼을 누르면 디스플레이에 1 : 003이 표시됩니다. 상태 2'b11가 증가이고 중심점이 상태 머신에서 오는버튼을 누를 때 4 비트 카운터를 1 비트 씩 증가시키는 방법
always @ (posedge (clk), posedge(rst))
begin
if (rst == 1'b1)begin
Dig0 <= 4'b0000;
Dig1 <= 4'b0000;
Dig2 <= 4'b0000;
Dig3 <= 4'b0000;
end
//increment if inc
else if(state == 2'b11)// && Dig3 < 4'b1001)begin
begin
Dig0 <= Dig0 + 4'b0001;
state <= 2'b00;
end
//only continue if Cen is 01 & not inc
else if(Cen == 2'b01)begin
//add 1 to first digit up till 9
Dig0 <= Dig0 + 1'b1;
//reset if == 10
if(Dig0 > 4'b1001)begin
Dig0 <= 4'b0000;
//add 1 to second digit (when first resets) up till 9
Dig1 <= Dig1 + 1'b1;
end
//reset if == 10
if(Dig1 == 4'b1010)begin
Dig1 <= 4'b0000;
//add 1 to third digit (when second reset) up till 9
Dig2 <= Dig2 + 1'b1;
end
//reset if == 10
if(Dig2 == 4'b1010)begin
Dig2 <= 4'b0000;
//add 1 to fourth digit (when third reset) up till 9
Dig3 <= Dig3 + 1'b1;
end
//reset if == 10
if(Dig3 > 4'b1001)begin
Dig3 <= 4'b0000;
end
end
2'b01 횟수이며, 2'b00 중지하고, 다음은 카운터 내 코드의 조각이다. 나는 그것을 단지 하나의 비트 증가시키는 방법을 이해할 수 없다. 증가 할 때마다 영원히 중요합니다. 어떤 아이디어?
덕분에 상태 기계 코드없이
카운터 1 개를 가지고 숫자를 디스플레이에 표시하는 것이 더 쉬울까요? 또한 코드 들여 쓰기를 정렬하면 버그를 읽고 쉽게 파악할 수 있습니다. – Morgan
모건이 말했듯이 들여 쓰기를 수정하십시오. – Moberg