작게 응시하는 큰 프로그램의 일부를 쓰고 있습니다. Verilog에 익숙하지 않으므로 조언을 듣는 것이 좋습니다.Verilog는 case 문에서 옵션을 기본으로 설정하는 것으로 보입니다.
네 개의 버튼 중 하나를 누르면 네 개의 7 세그먼트 디스플레이 중 첫 번째에 숫자 (1-4)가 쓰여지는 사례 문장을 작성하려고합니다. 내 네 개의 버튼 중 하나는 항상 문을 실행 누를 때마다 내, 매우 제한된 이해에서
module final(CLK,button1,button2,button3,button4,a0,b0,c0,d0,e0,f0,g0,a1,b1,c1,d1,e1,f1,g1,a2,b2,c2,d2,e2,f2,g2,a3,b3,c3,d3,e3,f3,g3);
input CLK,button1,button2,button3,button4;
output a0,b0,c0,d0,e0,f0,g0,a1,b1,c1,d1,e1,f1,g1,a2,b2,c2,d2,e2,f2,g2,a3,b3,c3,d3,e3,f3,g3; //What a mess
integer i = 0;
reg [6:0] temp;
reg [6:0] sevenDisp0;
reg [6:0] sevenDisp1;
reg [6:0] sevenDisp2;
reg [6:0] sevenDisp3;
reg [2:0] place;
initial begin
temp = 7'b1110111;
sevenDisp0 = 7'b1110111;
sevenDisp1 = 7'b1110111;
sevenDisp2 = 7'b1110111;
sevenDisp3 = 7'b1110111;
i = 0;
end
always @(button1 or button2 or button3 or button4)// or sevenDisp0 or sevenDisp1 or sevenDisp2 or sevenDisp3)//bit1 or bit2)
begin
case({button1,button2,button3,button4})
4'b0111: sevenDisp0 = 7'b1001111; //Have tried 4'b1111 to troubleshoot
4'b1011: sevenDisp0 = 7'b0010010;
4'b1101: sevenDisp0 = 7'b0000110;
4'b1110: sevenDisp0 = 7'b1001100;
//default: sevenDisp0 = 7'b1110111;
endcase
end
assign {a0,b0,c0,d0,e0,f0,g0} = sevenDisp0;
assign {a1,b1,c1,d1,e1,f1,g1} = sevenDisp1;
assign {a2,b2,c2,d2,e2,f2,g2} = sevenDisp2;
assign {a3,b3,c3,d3,e3,f3,g3} = sevenDisp3;
endmodule
. 어떤 버튼을 눌러도 sevenDisp0 레지스터에 기록됩니다.
한 가지주의 할 점은 버튼을 누르면 0이 표시되고 켜기면 7 개의 세그먼트가 0이라는 점입니다.
내가 보는 것은 처음 7 개 세그먼트의 번호입니다. 다른 버튼을 누르면 버튼이 눌러져있는 동안 해당 번호가 표시되고 숫자 1로 다시 전환됩니다.
나는 이것을 6 시간 동안 풀려고 노력해왔다. 어떤 도움이라도 좋을 것입니다.
시뮬레이션을 실행 했습니까? 시뮬레이션의 결과가 귀하의 기대에 부합 했습니까? – toolic
시뮬레이션이 없습니다. –
미래에 누구든지이 문제를 해결할 것입니다. 레지스터가 실제로 올바르게 작동하려면 비 블로킹 표기법으로 전환해야했습니다. –