1. module(输入输出口);
定义的参数常量不包含在内
parameter XXX=0; / `define XXX 'b000;不含XXX
2. 调用常量 形成变量
已知定义 parameter t=3;
再定义reg[t:0] 变量;区分该变量是局部还是全局,要看位置
若该定义在module 前后(input/output端口定义附近),即为全局变量;
局部变量定义若在块内,需要在块内begin end中加名字,
e.g. begin avalible
XXXXX;
YY;
end
ps:局部变量不仅限于parameter和define,还可以有其他 e.g. integer i;
3.2.中所提到的定义参数
parameter XXX=0; / `define XXX 'b000;//定义常量值
全局/局部变量中的参数定义指的是 类型定义 ; e.g. reg[]
4. input/output 端口定义
在HDL文件中,定义位宽时是在定义input/output语句时一起定义的;
e.g. input [7:0] in; output [7:0] out;
并且默认input/output类型是wire;
改变output变为reg 时,也要定义重新定义位宽;
e.g. reg[7:0] out;
5. 函数 function / 任务 task
6.assign语句
assign给wire变量;
assign c = (a==b)? 1:0; 含义:给c赋值,取决于a是否等于b;
若a=b,则走第一条路,给c赋值1;
若a不等于b,则c赋值0;
7. 线形反馈移位寄存器
8. monitor / display / strobe
都是在打印变量的值,区别在于:
display 显示当下的值;strobe显示整个语句块结束后的值(注意 非阻塞赋值)
而monitor监视变量的变化,值发生变化时输出;