Altera DE0 보드에 3 개의 버튼을 사용하고 있습니다.Verilog Muliple이 예상대로 작동하지 않는 경우
는 내가 세 가지 버튼의 값을 기준으로 중첩 된 경우 - 다른 문이
input [2:0] Button;
reg [2:0] y;
parameter [2:0] S0 = 3'b000, S1 = 3'b001, S2 = 3'b010, S3 = 3'b011, S4 = 3'b100, S5 = 3'b101;
로 선언
[email protected](negedge (&Button))
//if(&Button == 0)
begin
if(Button == 3'b011) // Button 2 is pressed
begin
if(y == S0)
begin
y = S1;
end
end
else if(Button == 3'b101) // Button 1 is pressed
begin
if (y == S1)
begin
y = S2;
end
else if (y == S2)
begin
y = S3;
end
end
else if(Button == 3'b110) //This is the check on button 0, but this conditional statement does not work.
begin
if(y == S2)
begin
y = S3;
end
end
end
assign z = (y == S0); // z,z1,z2,z3 are LED's on the board
assign z1 = (y == S1);
assign z2 = (y == S2);
assign z3 = (y == S3);
나는 처음 두 버튼을 사용하면 IF-다른 DE0 보드에서 BUTTON2 및 BUTTON1로 레이블 된 명령문 (버튼 == 3'b011 및 버튼 == 3'b101)이 작동하면 코드가 작동하고 예상대로 y가 적절한 값으로 변경됩니다.
하지만 if-else에서 세 번째 버튼을 시도 할 때 DE0에서 BUTTON0으로 레이블 된 Button == 3'b011, 아무 것도 발생하지 않고 y가 예상 값을 얻지 못합니다. 나는 2 개의 다른 DE0 보드를 사용했고 같은 문제가 발생합니다.
나는이 세 번째 버튼을 눌러 바로 감지되지 않는 점에서
[email protected](negedge (&button))
함께 할 수있는 뭔가가 생각합니다. 하지만 같은 코드를 사용할 때
[email protected](negedge button[0] or negedge button[1] or negedge button[2])
다른 문제가 발생하여 해결할 수 없었습니다.