2進数表現
CoddyのVerilogジャーニー「基礎」セクションの一部 — レッスン 13/90。
Verilogでは、0と1のみを理解するデジタル回路を扱います。これらは2進数で表現されます。
2進数は、0と1の2つの数字のみを使用します。各2進数字はビットと呼ばれます。
| 10進数 | 2進数 | ビット |
|---|---|---|
| 0 | 0 | 1 ビット |
| 1 | 1 | 1 ビット |
| 2 | 10 | 2 ビット |
| 3 | 11 | 2 ビット |
| 4 | 100 | 3 ビット |
| 5 | 101 | 3 ビット |
Verilogでの2進数の記述
Verilogで2進数を記述するには、接頭辞 'b を使用します:
4'b1010 // 4ビットの2進数 1010 (10進数の 10)
8'b11110000 // 8ビットの2進数 11110000 (10進数の 240)
2'b01 // 2ビットの2進数 01 (10進数の 1)'b の前の数字は、その値が何ビットであるかをVerilogに伝えます。
10進数を2進数に変換する方法
10進数を2で繰り返し割り、余りを下から上へ順に読みます。
例:9を2進数に変換する
| ステップ | 除算 | 商 | 余り |
|---|---|---|---|
| 1 | 9 ÷ 2 | 4 | 1 |
| 2 | 4 ÷ 2 | 2 | 0 |
| 3 | 2 ÷ 2 | 1 | 0 |
| 4 | 1 ÷ 2 | 0 | 1 |
余りを最後から最初へ順に読みます:1001
9 = 4'b1001
コード例
module binary_example;
reg [3:0] a;
initial begin
a = 4'b1010; // 2進数 1010 = 10進数 10
$display("a = %b (binary)", a);
$display("a = %d (decimal)", a);
$display("a = %h (hex)", a);
$finish;
end
endmodule出力:
a = 1010 (binary)
a = 10 (decimal)
a = a (hex)チャレンジ
不足しているバイナリ値を記述して、コードを完成させてください。
行うこと:
- 10進数の 5 をバイナリ(4ビット)で記述してください
- 10進数の 14 をバイナリ(4ビット)で記述してください
チートシート
2進数は0と1のみを使用します。各桁はビットです。
Verilogで2進数を記述するには、'b接頭辞を使用します。その前の数字はビット幅を指定します:
4'b1010 // 4ビットの2進数 = 10進数の10
8'b11110000 // 8ビットの2進数 = 10進数の240表示形式:%b(2進数)、%d(10進数)、%h(16進数)。
10進数から2進数へ: 2で繰り返し割り、余りを下から上に読みます。
// 9 ÷ 2 → 4 余り1 → 2 余り0 → 1 余り0 → 0 余り1 ⟹ 1001
// 9 = 4'b1001自分で試してみよう
module binary_challenge;
reg [3:0] a, b;
initial begin
// 10進数の 5 をバイナリで記述 (4ビット)
a = 4'b______;
// Write binary for decimal 14 (4 bits)
b = 4'b______;
$display("5 = %b", a);
$display("14 = %b", b);
$finish;
end
endmoduleこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。