概述
Verilog HDL 中常用的数据类型有:线网(Net)、寄存器(Register)、整数(Integer)、
实数(Real)、时间(Time)、参数(Parameter)和存储器等。
1、线网
凡电路连接支点皆称为线网。线网声明的关键词为(wire),其默认值为(Z)。申明现网的格式如下:
wire [msb:lsb] net1, net2, ... , netn;
其中,wire为关键词,表示变量为线网变量类型;msb 和 lsb 定义了范围,并且均为常数值表达式,范围定义是可选的,如果没有定义,缺省值为1位的线网t类型变量;net1, net2, ... , netn为定义的线网类型变量名称;
wire sig1; //声明sig1这个线网
wire sib2,sib3; //声明 sig2, sig3 这俩个变量
wire sig4 = 0; //声明sig4 这个线网,并指定其值为 0
总线(Bus)则是线网的组合,声明为wire。举例如下:
wire[7 : 0] test1;
wire[3 : 0] test2 = 3'b100;
wire[3 : 5] test3 = 3'b100;
其中test2 = test3,只是test3的声明是从bit3 到 bit5的,习惯上我们以test2为标准写法;
2、寄存器
寄存器除了硬件电路上的意义外,还有类似高级编程语言中的变量。寄存器变量用reg来声明。例如:
reg [msb : lsb] reg1, reg2, reg3 ...regn;
其中,reg为关键词,表示变量为寄存器变量;msb 和 lsb 定义了范围,并且均为常数值表达式,范围定义是可选的,如果没有定义,缺省值为1位的寄存器;reg1, reg2, reg3 ...regn为定义的寄存器类型变量名称;
reg d1 //声明d1为reg类型
reg[2 : 0] d2 //声明d2为3位的reg类型
若某信号声明为寄存器类型,经综合后却不一定会是在硬件上的寄存器上输出,必须格外注意,因为 Verilog 规定凡是在always语句后的类型都必须声明为 reg 。例如
wire a, b, sel;
reg d;
always @ (aorborsel)
begin
if (sel == 0)
d = a;
else
d = b;
end
此例中,虽然声明d为一寄存器数据类型, 但是综合后d是一个MUX(多路选择器(MUX))的输出。
最后
以上就是强健金鱼为你收集整理的关于学习FPGA,Verilog HDL,的基本知识(四)的全部内容,希望文章能够帮你解决关于学习FPGA,Verilog HDL,的基本知识(四)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复