第 4 章:Verilog 语法
学习目标
- 掌握 Verilog 基本语法
- 理解硬件描述语言
- 学会编写简单模块
4.1 思考:Verilog 是编程语言吗?
不完全是!Verilog 是硬件描述语言(HDL)。
C 语言:
int a = b + c; // 顺序执行
Verilog:
assign a = b + c; // 并行执行!
关键区别:硬件是并行的!
4.2 模块定义
module adder(
input [31:0] a,
input [31:0] b,
output [31:0] sum
);
assign sum = a + b;
endmodule
问题:为什么用 [31:0] 而不是 int?
因为硬件需要明确位宽!
4.3 两种赋值
// 组合逻辑:assign
assign y = a & b;
// 时序逻辑:always
always @(posedge clk) begin
q <= d;
end
问题:= 和 <= 有什么区别?
=:阻塞赋值(立即)<=:非阻塞赋值(时钟沿)