2進数表現
CoddyのVerilogジャーニー「基礎」セクションの一部。レッスン 13/90。
Verilogでは、0と1だけを理解するデジタル回路を扱います。これらはbinaryで表されます。
Binary は 2 つの数字だけを使用します:0 と 1。Binary の各桁は bit と呼ばれます。
| 10進数 | Binary | ビット |
|---|---|---|
| 0 | 0 | 1 bit |
| 1 | 1 | 1 bit |
| 2 | 10 | 2 bits |
| 3 | 11 | 2 bits |
| 4 | 100 | 3 bits |
| 5 | 101 | 3 bits |
VerilogでBinaryを書く
Verilogでbinary数を書くには、接頭辞 'b を使用します:
4'b1010 // 4-bit binary 1010 (decimal 10)
8'b11110000 // 8ビットバイナリ 11110000 (10進数 240)
2'b01 // 2-bit binary 01 (decimal 1)'b の前の数値は、その値が何ビットかを Verilog に伝えます。
10進数を2進数に変換する方法
10進数を2で繰り返し割り、余りを下から上へ読み取ります。
例:9をbinaryに変換
| 手順 | 割り算 | 商 | 余り |
|---|---|---|---|
| 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; // Binary 1010 = decimal 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)チャレンジ
不足している binary 値を書いてコードを完成させてください。
行うこと:
- decimal 5(4 bits)の binary を Write
- decimal 14(4 bits)の binary を Write
自分で試してみよう
module binary_challenge;
reg [3:0] a, b;
initial begin
// 10進数の5の2進数を書く(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このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Verilogオンラインコンパイラ