Vectors
CoddyのVerilogジャーニー「基礎」セクションの一部。レッスン 9/90。
vector は複数ビットの wire または reg です。単一のビットの代わりに、vector を使うと data の bus を扱えます。これはまとめてグループ化された bits の集合です。
注: vector は独立したデータ型ではありません。これは単に wire または reg のマルチビット版です。
wire single; // 単一ビット
wire [7:0] bus; // 8ビットベクトル(ビット7から0まで)vector を宣言するには、[MSB:LSB] という構文を使用します。ここで MSB は最上位ビット、LSB は最下位ビットを表します。
wire [3:0] a; // 4ビットのwireベクトル
reg [7:0] data; // 8ビットのregベクトル
wire [15:0] addr; // 16ビットのwireベクトルビットへのアクセス
vector の個々のビットやスライスにアクセスするときは、ビット位置(インデックス)には 10 進数を使用し、代入には binary 値(0 または 1)を使用します。
これは、ビット位置が(アドレスのような)場所であり、通常は10進数で表される一方、そのビットに格納できる値は0または1、つまり二者択一だからです。
たとえば、data[0]は「ビット番号0」を意味し、= 1は「Highに設定する」ことを意味します。単一のビットに75のような10進数を代入しても75は保存されません。Verilogは最低位ビットだけを黙って保持するため、常に0または1を明示的に記述してください。
reg [7:0] data;
data = 170;
data[0] = 1; // LSBを1に設定
data[7] = 0; // MSBを0に設定
data[3:1] = 3'b101; // Set bits 3,2,1 to 101 (binary remains)ビット順序
ビットの順序は重要です:
wire [3:0] a; // a[3] は MSB、a[0] は LSB
wire [0:3] b; // b[0] は MSB、b[3] は LSB(あまり一般的ではない)ほとんどの設計者は、MSBを左側に置く[MSB:LSB]形式を使用します。
値の割り当て
reg [3:0] a;
a = 10;
a = 5;
a = 3; ベクターのスライス
ビットの範囲にアクセスできます:
reg [15:0] word;
word[15:8] = 255; // 上位バイトを代入 (8'hFF = 255)
word[7:0] = 0; // 下位バイトを代入 (8'h00 = 0)
word[3:1] = 3'b101; // Assign a slice チャレンジ
以下のmoduleにはvector宣言が必要です。
行うこと:
- 各inputとoutputを8ビットのvectorに変更してください。
自分で試してみよう
module vector_example(
input a, // 8ビットベクトル [7:0] に変更
input b, // 8ビットベクトル [7:0] に変更
output c // 8ビットベクトル [7:0] に変更
);
assign c = a & b;
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オンラインコンパイラ