- ベストアンサー
回路設計の基礎 | Verilog HDLとは?
- 回路設計の基礎を学びながら、Verilog HDLについて理解を深めましょう。
- 宿題の課題で7セグメントデコーダの回路をVerilog HDLで設計する方法について教えてください。
- Verilog HDL文の動作レベルでの記述について理解を深めましょう。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> `define SEG_OUT_0 7'b011_1111 これは、SEG_OUT_0という変数に011_1111という値を割り当てている(数値内で使われるアンダースコアはVerilogでは無視されるので、7'b011_1111は0111111と等価)。これは、後々011_1111を引用するときに、011_1111という意味不明の数字を使うのではなく、SEG_OUT_0という変数を使うことにより、コードが読みやすくなるため。 > module SEG7_DEC(IN, OUT); ブロック名の宣言. > input [3:0] IN; > output [6:0] OUT; ポートの宣言。入力ポートINは4ビット、出力ポートOUTは7ビット。 functionとendfunctionで挟まれた部分はいわばサブルーチンのようなもので、、 INが0000であれば、FUNC_SEG7_DECにSEG_OUT_0、つまり011_1111を代入、INが0001であればFUNC_SEG7_DECにSEG_OUT_1,つまり000_0110を代入、INが0010であればFUNC_SEG7_DECにSEG_OUT_2を代入,,.....というサブルーチン処理を定義してると考えればよい。 最後のdefaultはINが0から9のどれにも一致しなかった場合に実行されるブロックで、論理合成をするときにラッチを作るのを避けるためのもの。 でそのfunctionを呼び出しているのが、 assign OUT = FUNC_SEG7_DEC (IN); このブロック全体で行っている処理は、 IN=0000ならOUT=0111111 IN=0001ならOUT=0000110 IN=0010ならOUT=1011011 ... ..
お礼
返事が遅れてしまいすみませんでした。 凄く詳しい回答ありがとうございました。どこがどういう機能か前よりも理解することができました。