Input And Output Ports
CoddyのVerilogジャーニー「基礎」セクションの一部。レッスン 31/90。
Input ポートと output ポートは、モジュールが外部と通信できるようにする接続です。チップ上のピンのようなものです。ポートは、モジュールと設計の他の部分とのインターフェースです。
すべてのmoduleには次があります:
- Input ports:moduleに入ってくる信号
- Output ports:moduleから出ていく信号
Input ポート
Input ポートは外部から data を受け取ります。module 内では変更できません。only read です。
input clk; // 単一ビット入力
input [7:0] data; // 8ビット入力ベクトル
input a, b; // 1行に複数の入力inputs のルール:
- module 内で値を割り当てることはできない
regとして宣言することはできない- 常にデフォルトで
wire
出力ポート
出力ポートは外部にデータを送信します。assignまたはalwaysブロックによって駆動できます。
output out; // シングルビット出力
output [3:0] result; // 4ビット出力
output reg busy; // 出力は reg にできる
output wire ready; // 出力は wire にできる出力のルール:
wire(assignを使用)またはreg(alwaysを使用)にできます- モジュール内の何らかの要素によって駆動される必要があります
ポート宣言の構文
ポート宣言の構文とは、モジュール内で入力ポートと出力ポートを記述する具体的な方法です。各ポートについて、Verilog に3つのことを伝えます。
- 方向:input、output、それともinoutですか?
- サイズ:何ビット幅ですか?
- 名前:何と呼ばれていますか?
module example (
input [7:0] data_in, // 入力ベクトル
input clk, // 単一入力
input enable, // 単一入力
output reg [7:0] out, // 出力 reg
output busy // 出力 wire
);ポート方向が重要な理由
方向は Verilog に次のことを伝えます:
- モジュールが can read できる信号(inputs)
- モジュールが can write できる信号(outputs)
- 許可される接続の種類
間違った方向を使用すると、コンパイルエラーが発生します。
コード例
module port_demo (
input [3:0] a, // 読み取りのみ可能
input [3:0] b, // 読み取りのみ可能
output reg [3:0] sum, // 書き込み可能 (reg)
output [3:0] diff // 書き込み可能 (wire)
);
always @(*) begin
sum = a + b; // 出力 reg への書き込み
end
assign diff = a - b; // 出力 wire への書き込み
endmoduleチャレンジ
ポート宣言を完成させる
実行すること:
- 8ビットの input called
data_inを Add - 1ビットの input called
clkを Add - 4ビットの output called
resultを Add(reg を使用: always ブロック内で割り当てられます) - 1ビットの output called
validを Add(wire を使用: assign で割り当てられます)
自分で試してみよう
module port_challenge (
// タスク1: data_in という8ビット入力を追加する
// タスク2: clk という1ビット入力を追加する
// タスク3: result という4ビット出力を追加する(reg を使用)
// タスク4: valid という1ビット出力を追加する(wire を使用)
);
reg [3:0] counter;
always @(posedge clk) begin
counter <= counter + 1;
result <= counter;
end
assign valid = (counter > 8);
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オンラインコンパイラ