4 To 1 Mux Design
CoddyのVerilogジャーニー「基礎」セクションの一部。レッスン 65/90。
チャレンジ
4対1マルチプレクサ
4対1マルチプレクサには、4つのデータ入力(in0、in1、in2、in3)、2つの選択ビット(sel[1:0])、そして1つの出力(out)があります。2つの選択ビットによって、どの入力を出力に渡すかを選択します。
sel = 2'b00のとき、出力はin0sel = 2'b01のとき、出力はin1sel = 2'b10のとき、出力はin2sel = 2'b11のとき、出力はin3
このマルチプレクサを2つの方法で構築します。まず if-else 文を使用し、次のレッスンでは case 文を使用します。どちらの方法も動作しますが、選択肢が多い場合は case のほうがすっきりすることがよくあります。
4対1マルチプレクサは、4つの入力のうち1つを選択し、2ビットの選択信号に基づいてその入力を出力に渡します。
真理値表
| sel1 | sel0 | out |
|---|---|---|
| 0 | 0 | out = in0 |
| 0 | 1 | out = in1 |
| 1 | 0 | out = in2 |
| 1 | 1 | out = in3 |
sel が 00 のとき、出力は in0 に従います。sel が 01 のとき、出力は in1 に従います。sel が 10 のとき、出力は in2 に従います。sel が 11 のとき、出力は in3 に従います。
行うこと:
mux4to1という名前の module を Create- input
in0(1ビット)を Add - input
in1(1ビット)を Add - input
in2(1ビット)を Add - input
in3(1ビット)を Add - input
sel(2ビット)を Add - output
out(1ビット、typereg)を Add always @(*)block を Add- その中に、
selを確認するif-elsestatement を Add:sel == 2'b00の場合、out = in0に設定するsel == 2'b01の場合、out = in1に設定するsel == 2'b10の場合、out = in2に設定するelseの場合、out = in3に設定する
endmoduleで終了する
自分で試してみよう
// ステップ1: mux4to1という名前のモジュールを作成
// ステップ2: 入力 in0 を追加
// ステップ3: 入力 in1 を追加
// ステップ4: 入力 in2 を追加
// ステップ5: 入力 in3 を追加
// ステップ6: 入力 sel を追加(2ビット)
// ステップ7: 出力 out を追加(reg型)
// ステップ8: always @(*) ブロックを追加
// ステップ9: if-else文を追加
// if sel == 2'b00 の場合、out = in0
// else if sel == 2'b01 の場合、out = in1
// else if sel == 2'b10 の場合、out = in2
// else の場合、out = in3
// ステップ 10: Endmodule基礎のすべてのレッスン
4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine Logic自分で練習してみよう: Verilogオンラインコンパイラ