私は大きなスタンプの一部を書いています。私はVerilogに慣れていないので、助言をいただければ幸いです。Verilogはケースステートメントでオプションをデフォルトに設定しているようです
4つのボタンのうちの1つを押すと、4つの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
私、非常に限られ、理解し、私の4つのボタンの一つが押されるたびに、それは常に文を実行しますから。どのボタンが押されても、sevenDisp0レジスタに書き込まれます。
ボタンの1つが押されたときにボタンが0になり、オンのときに7つのセグメントが0になります。
最初の7セグメントに数字が表示されます。他のボタンを押すと、ボタンを押している間に対応する番号が表示され、番号1に戻ります。
私はこれを今6時間解決しようとしています。どんな助けも素晴らしいだろう。
シミュレーションを実行しましたか?シミュレーションの結果はあなたの期待と一致しましたか? – toolic
私にはシミュレーションがありません。 –
誰かがこれを将来的にgooglesする場合: 実際に正しく機能するためには、レジスタを非ブロッキング表記に切り替える必要がありました。 –