Recap - ALU Design
CoddyのVerilogジャーニー「基礎」セクションの一部。レッスン 57/90。
チャレンジ
ALU(算術論理演算装置)は、2つの入力を受け取り、それらに対して演算を実行し、1つの出力を生成するデジタル回路です。select信号に基づいて、2つの入力に対して算術演算および論理演算を実行します。select信号は、実行する1つの演算を選択します。
仕組み
| select | 演算 | 出力 |
|---|---|---|
2'b00 | 加算 | a + b |
2'b01 | 減算 | a - b |
2'b10 | ビット単位のAND | a & b |
2'b11 | ビット単位のOR | a | b |
case文を使用してシンプルなALUを構築する。
実行すること:
aluという名前のmoduleを作成する- inputsを追加する:
a(4ビット)、b(4ビット)、select(2ビット) - outputを追加する:
result(4ビット、reg型) always @(*)blockを追加する- その中に
case (select)文を追加する 2'b00、2'b01、2'b10、2'b11の4つのcaseを追加するresult = 0を設定するdefaultcaseを追加するendcaseとendmoduleで閉じる
自分で試してみよう
// TODO: モジュール alu を作成
// TODO: 入力 (a, b, select) を追加
// TODO: 出力 (result) を追加
// TODO: always @(*) ブロックを追加
// TODO: case (select) を追加
// TODO: case 2'b00: result = a + b; を追加
// TODO: case 2'b01: result = a - b; を追加
// TODO: case 2'b10: result = a & b; を追加
// TODO: case 2'b11: result = a | b; を追加
// TODO: default: result = 0; を追加
// TODO: endcase を追加
// TODO: 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オンラインコンパイラ