Sized Numbers
CoddyのVerilogジャーニー「基礎」セクションの一部。レッスン 14/90。
Verilogで特定のサイズの数値を宣言する方法があります。これはサイズ指定数値と呼ばれます。数値が何ビットなのかについての混乱を防ぎ、ハードウェアが期待どおりに正確に動作することを保証できるため便利です。
サイズ指定された数値は、次の形式に従います: [bits]'[format][value]
<strong>bits</strong>: ビット数(例:8)<strong>'</strong>: サイズと形式を区切るアポストロフィ(必須)
<strong>format</strong>:数値の基数:2進数の場合はb、10進数の場合はd、16進数の場合はh、または8進数の場合はo<strong>value</strong>:実際の数値(例:1010)
例:
4'b1010:4 bits、binary 1010(decimal 10)8'd255:8 bits、decimal 255(binary 11111111)16'hFF:16 bits、hex FF(binary 0000000011111111)3'b1:3 bits、binary 001(左側の bits は 0 で埋められます)
コード例:
reg [7:0] data;
data = 8'b10101010; // 8 bits, binary 10101010
data = 8'd170; // 8ビット、10進数 170
data = 8'hAA; // 8 bits, hex AA3つの例はすべて、同じ値をdataに代入します。
サイズが重要な理由
サイズ指定がない場合:
reg [7:0] data;
data = 1; // これはどういう意味ですか? 1ビット? 8ビット?Verilogでは、小さい数値をデフォルトで32ビットと見なすため、問題が発生する可能性があります。
サイズ指定あり:
reg [7:0] data;
data = 8'b00000001; // Clear: 8-bit value 1ゼロパディング
より大きなベクターに小さな値を代入すると、Verilog は左側のビットをゼロで埋めます:
reg [7:0] data;
data = 4'b1010; // Becomes 8'b00001010チャレンジ
正しいサイズの数値を記述して、コードを完成させてください。
行うこと:
aに、10進数 170(2進数 10101010)を表す8ビットの2進数を設定するbに、10進数 12(2進数 1100)を表す4ビットの2進数を設定するcに、10進数 255(16進数 FF)を表す16ビットの16進数を設定する
自分で試してみよう
module sized_challenge;
reg [7:0] a;
reg [3:0] b;
reg [15:0] c;
initial begin
a = ______; // 170の8ビットバイナリ (10101010)
b = ______; // 12の4ビットバイナリ (1100)
c = ______; // 255の16ビット16進数 (FF)
$display("a = %b", a);
$display("b = %b", b);
$display("c = %h", c);
$finish;
end
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オンラインコンパイラ