本文为 Verilog 学习总结,讲解模块的结构、数据类型、变量和基本运算符号。
模块的结构
一个模块由两部分组成,一部分描述接口,一部分描述逻辑功能(即输入是如何影响输出的)。
模块的端口定义
在引用时用“.”符号,将端口名与被引用模块的端口一一对应,不用考虑定义顺序,提高了程序的可读性和可移植性。
模块内容
I/O 说明的格式
I/O 说明可以写在端口声明语句中,格式如下:
module module_name(input port1,…,output port1);
内部信号说明
使用 wire 和 reg 类型变量声明。
功能定义
有 3 种方法可在模块中产生逻辑:用 assign 声明语句,用实例元件,用 always 块。
下面为一个带有异步清除端的 D 除法器:
always @(posedge clk or posedge clr);
begin
if(clr) q<=0;
else if(en) q<=d;
end
always 块也成为过程块,多个 always 模块间并行,模块内部顺序执行。
许多 C 语言类似的语句只能出现在过程块中。只有连续赋值语句 assign 和实例引用语句可以独立