跳到主要内容

Verilog 教程

Verilog HDL(简称 Verilog )是一种硬件描述语言,用于数字电路的系统设计。可对算法级、门级、开关级等多种抽象设计层次进行建模。

Verilog 继承了 C 语言的多种操作符和结构,与另一种硬件描述语言 VHDL 相比,语法不是很严格,代码更加简洁,更容易上手。

Verilog 不仅定义了语法,还对语法结构都定义了清晰的仿真语义。因此,Verilog 编写的数字模型就能够使用 Verilog 仿真器进行验证。

阅读本教程前,你需要了解的知识

在学习本教程之前,你需要了解数字电路的一些基本信息。

如果你对 C 语言有一定的了解,有助于 Verilog 的快速上手。

第一个 Verilog 设计

4 位宽 10 进制计数器:

module counter10(
// 端口定义
input rstn, // 复位端,低有效
input clk, // 输入时钟
output [3:0] cnt, // 计数输出
output cout); // 溢出位

reg [3:0] cnt_temp; // 计数器寄存器

always@(posedge clk or negedge rstn) begin
if(! rstn)begin // 复位时,计时归0
cnt_temp <= 4'b0;
end
else if (cnt_temp==4'd9) begin // 计时10个cycle时,计时归0
cnt_temp <=4'b000;
end
else begin // 计时加1
cnt_temp <= cnt_temp + 1'b1;
end
end

assign cout = (cnt_temp==4'd9); // 输出周期位
assign cnt = cnt_temp; // 输出实时计时器
endmodule

参考