Verilog基礎:最初のANDゲートを設計する
Verilogは、FPGAやASIC向けにデジタル ロジックをモデル化、シミュレーション、合成するためのハードウェア記述言語(HDL)です。近い従兄弟であるVHDLとともに、Verilogは学術カリキュラムと商用製品開発の両方で業界標準言語となっています。
プログラマブル ロジックやシリコン設計の世界に初めて触れる方のために、このガイドではVerilogの基礎を説明し、すべてのデジタル システムの基礎要素であるシンプルなANDゲートの構築方法を示します。
JavaやCのような高水準ソフトウェア言語とは異なり、Verilogはゲート レベルでハードウェアを記述します。その結果、コードを直接シリコンにマッピングでき、設計者はタイミング、電力、面積を細かく制御できます。
以下は、今回Verilogでモデル化する古典的な2入力ANDゲートの図です。
Verilog実装に入りましょう。
Verilogでは、構成要素はwireです。この例では、wireを0または1のみを取り得る2進信号として扱います。
wire and_temp; assign and_temp = input_1 & input_2;
1行目でand_tempというwireを宣言。2行目でinput_1とinput_2の論理積の結果を代入します。Verilogではアンパサンド(&)がブール論理積演算子です。
モジュールが公開するすべての信号は、moduleヘッダーに列挙されます。moduleキーワードは、定義された入出力を持つ自己完結型のコード ブロックを導入します。
module example_and_gate ( input_1, input_2, and_result ); input input_1; input input_2; output and_result;
最後に、内部and_temp信号を外部and_result出力に配線し、モジュールを閉じます。
/////////////////////////////////////////////////////////////////////////////// // File Downloaded from https://www.nandland.com /////////////////////////////////////////////////////////////////////////////// module example_and_gate ( input_1, input_2, and_result ); input input_1; input input_2; output and_result; wire and_temp; assign and_temp = input_1 & input_2; assign and_result = and_temp; endmodule // example_and_gate
おめでとうございます—最初のVerilogモジュールが完成しました!HDL構文は従来のソフトウェアと比べて冗長に感じられるかもしれませんが、ハードウェア設計に比類なき精度を提供します。練習を重ねれば、シンプルなロジック ゲートから本格的なグラフィックス パイプラインまで実装できるようになります。
Verilog
- Verilogマスター:デジタル回路設計のための完全チュートリアル
- Verilog連結マスター:実践ガイド
- Verilog代入文の理解:種類、構文、ベストプラクティス
- Verilogブロッキング代入とノンブロッキング代入:違いを徹底解説
- Verilog関数のマスター:効率的なRTL設計のために
- Verilogタスクの理解:関数との違い、構文、使用法
- Verilogクロックジェネレータ:設計と実装ガイド
- Verilog数学関数のマスター:効率的なハードウェア設計のために
- Verilog $timeformatのマスター:精度と表示制御
- 任意のスコープでのVerilog timescale理解と表示
- VerilogファイルI/Oの完全ガイド:オープン、読み取り、書き込み、クローズ