1. Verilog常见的数据类型
本部分介绍了三种常见的数据类型:wire型、reg型、parameter型。
a. wire型
Verilog程序模块中输入输出信号默认定义为wire型;
wire型数据常用来表示以assign关键字指定的组合逻辑信号;
eg: wire [9:0] a, b, c; //定义了三条线a,b,c,每条线的位宽为10;
b. reg型
reg是寄存器类型的关键字;
常用来表示always模块内的时序逻辑信号;
eg: reg [9:0] a,b,c; //定义了三个位宽为10的寄存器a,b,c
注:reg型数据的的缺省是未知的。reg型数据可以为正值或负值,但当一个reg型数据是一个表达式中的操作数时,它的值被当做是无符号值。即如果一个4位的reg型数据被写入-1 ,在表达式中运算时,值被认为是+15 。
reg型和wire型的区别:reg型保持最后一次的赋值,wire型需要持续地驱动。
c. parameter型
Verilog中用parameter来定义常量,被定义的标志符用于表示一个固定的常数;
程序维护时,只要更改一处变量定义值,全部程序中调用该变量部分的值会随之改变,提高了程序的可读性和可维护性。
eg: parameter [3:0] ABC = 4'd1; //后续调用ABC即表示了“4‘d1”
2. 模块端口
模块端口是指模块与外界交互信息的接口,包括3种类型:
a. input: 模块从外界读取数据的接口,在模块内不可写。
b. output: 模块往外界送出数据的接口,在模块内不可读。
c. inout: 可读取数据也可送出数据,数据可双向流动。
参考:《无线通信FPGA设计》 田耕 徐文波 张延伟等.