組み合わせ関数
CoddyのVerilogジャーニー「RTL設計と検証」セクションの一部。レッスン 11/38。
Verilogのfunctionは、モジュール内で再利用するためのゼロ時間の計算をまとめたものです。戻り値の幅、入力引数、ローカル変数を宣言し、その結果をfunction名にassignします。組み合わせ関数には遅延やイベント制御を含めません。固定範囲のループを使って、繰り返しのロジックを記述できます。
関連する抜粋です。周辺の宣言と接続は課題内で提供されています。
function [7:0] gray;
input [7:0] value;
begin gray = value ^ (value >> 1); end
endfunctionfunctionを呼び出すと、シミュレーション時間を追加せずに式が計算されます。
すべての経路でfunctionの結果を代入し、組み合わせ関数にはタイミング制御を含めないでください。
チャレンジ
中級値 XOR(値を 1 ビット右シフトしたもの)を使用して、符号なし 8 ビットのバイナリ値を Gray コードに変換する Verilog の function gray を実装してください。a を指定して function を呼び出し、y を駆動します。出力列: y。すべての刺激値は既知のバイナリ値です。
design.v を完成させ、モジュール名とポートを保持してください。ロックされた testbench.v は入力の変化を与え、値が安定した後に出力を表示します。+CASE=1 のようなシミュレーター引数を使用してシナリオを選択します。標準入力は必要ありません。デザインに表示、遅延、またはシミュレーション終了処理を追加しないでください。期待される出力は、観測ごとに 10 進値を 1 行に 1 つずつ、各値を 1 個のスペースで区切り、改行で終了する形式です。
自分で試してみよう
module dut (input [7:0] a, output [7:0] y);
// このプレースホルダーをあなたの設計に置き換えてください。
assign y = 0;
endmoduleこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
RTL設計と検証のすべてのレッスン
自分で練習してみよう: Verilogオンラインコンパイラ