二进制表示
本课属于 Coddy Verilog 学习旅程的“基础知识”单元。第 13 课,共 90 课。
在 Verilog 中,我们使用只能识别 0 和 1 的数字电路。这些用二进制表示。
二进制只使用两个数字:0 和 1。每个二进制数字称为一个位。
| 十进制 | 二进制 | 位数 |
|---|---|---|
| 0 | 0 | 1 位 |
| 1 | 1 | 1 位 |
| 2 | 10 | 2 位 |
| 3 | 11 | 2 位 |
| 4 | 100 | 3 位 |
| 5 | 101 | 3 位 |
在 Verilog 中书写二进制数
要在 Verilog 中书写二进制数,请使用前缀 'b:
4'b1010 // 4-bit binary 1010 (decimal 10)
8'b11110000 // 8 位二进制数 11110000(十进制为 240)
2'b01 // 2-bit binary 01 (decimal 1)'b 前面的数字告诉 Verilog 这个值有多少位。
如何将十进制转换为二进制
反复将十进制数除以 2,然后从下往上读取余数。
示例:将 9 转换为二进制
| 步骤 | 除法 | 商 | 余数 |
|---|---|---|---|
| 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)挑战
填写缺失的二进制值,完成代码。
要做什么:
- 写出十进制数 5 的二进制表示(4 位)
- 写出十进制数 14 的二进制表示(4 位)
亲手试试
module binary_challenge;
reg [3:0] a, b;
initial begin
// 写出十进制数 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这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: Verilog 在线编译器
检查进制转换: 进制转换器