Menu
Coddy logo textTech

サイズ指定ありの数値

CoddyのVerilogジャーニー「基礎」セクションの一部 — レッスン 14/90。

Verilogには、特定のサイズを持つ数を宣言する方法があります。これはサイズの指定された数(sized number)と呼ばれます。数が何ビットを持っているかに関する混乱を防ぎ、ハードウェアが期待どおりに正確に動作することを保証するために役立ちます。

サイズ指定された数値は次の形式に従います: [bits]'[format][value]

  • <strong>bits</strong> — ビット数(例: 8
  • <strong>'</strong> — サイズとフォーマットを区切るアポストロフィ(必須)
  • <strong>format</strong> — 数値の基数:b は 2 進数(binary)、d は 10 進数(decimal)、h は 16 進数(hexadecimal)、o は 8 進数(octal)
  • <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 (左側のビットはゼロ埋めされます)

コード例:

reg [7:0] data;

data = 8'b10101010;   // 8 bits, binary 10101010
data = 8'd170;        // 8ビット、10進数 170
data = 8'hAA;         // 8 bits, hex AA

3つの例はすべて、同じ値を 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
challenge icon

チャレンジ

正しいサイズ指定の数値を記述してコードを完成させてください。

作業内容:

  1. a に 10 進数の 170(2 進数 10101010)を表す 8 ビットの 2 進数を設定します。
  2. b に 10 進数の 12(2 進数 1100)を表す 4 ビットの 2 進数を設定します。
  3. 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
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン