Menu
Coddy logo textTech

ワンホット検証

CoddyのVerilogジャーニー「RTL設計と検証」セクションの一部。レッスン 3/38。

ワンホットデータには、アサートされたビットがちょうど1つあります。デコーダーはこのようなデータを生成し、バリデーションは受信データを使用する前にチェックします。既知のバイナリ値の場合、ゼロではない値は、bits & (bits - 1) がゼロであればワンホットです。このセクションでは、X または Z を分類するためにそのショートカットを使用しません。

関連する抜粋です。周囲の宣言と接続は課題に用意されています。

assign one_hot = (bits != 0) && ((bits & (bits - 1)) == 0);

ゼロ以外のチェックによってアイドル状態を除外し、ビットトリックによって複数のセットビットを排除します。

リクエストを検証する際に、ゼロ、セットビットがちょうど1つの場合、複数のセットビットを区別します。

challenge icon

チャレンジ

中級

既知の4ビット入力 bits に対して、ちょうど1ビットだけが high の場合にのみ valid を設定してください。ゼロでないことのチェックと bits & (bits - 1) を組み合わせて使用します。出力列: valid。すべての刺激値は既知のバイナリ値です。

design.v を完成させ、モジュール名とポートを保持してください。ロックされた testbench.v が入力の変化を与え、値が安定した後に出力を表示します。+CASE=1 のようなシミュレータ引数を使用してシナリオを選択します。標準入力は必要ありません。design に出力、遅延、またはシミュレーション終了処理を追加しないでください。期待される出力は、観測ごとに10進値を1行に並べ、値同士を1つのスペースで区切り、改行で終える形式です。

自分で試してみよう

module dut (input [3:0] bits, output valid);
    // このプレースホルダーをあなたの設計に置き換えてください。
    assign valid = 0;
endmodule
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

RTL設計と検証のすべてのレッスン

自分で練習してみよう: Verilogオンラインコンパイラ