通过上一篇《VerilogHDL入门》,我们大致了解Verilog的一个基本结构,即:
//**模块名定义**
module mux2_1(a, b, s, y);
//**引脚方向定义
input a, b, s;
output y;
//**寄存器、导线定义
reg result; //reg 表示寄存器
//结构或行为描述
always @(a, b, s)
begin
if(!s) result = a;
else result = b;
end
//信号连接
assign y = result;
//**模块定义结束
endmodule
本篇主要说的是中间部分的“结构或行为描述”。
这一部分是整个模块设计的重点,但语法很简单。能够使用的语句只有三种:
1、assign =
2、always @( )
3、元件例化
这三种描述方式:
1、可以多次使用
2、相互之间不可嵌套
3、相互之间没有时间先后
再解释一遍:由于Verilog表述module的功能、结构,类似生活中的商业合同条款,所以这些“条款”是没有先后顺序的。module里,所有的“条款”都只能用上面三种语句块的形式。上面的例子中,assign可以和always语句块对调顺序,并没有任何不同。
1、assign = // 一般用于表述结构连接、数据流,也可以表述行为
2、always @( ) // 行为描述
3、元件例化 // 结构描述
网友评论