我是靠谱客的博主 强健金鱼,这篇文章主要介绍关于学习FPGA,Verilog HDL,的基本知识(四),现在分享给大家,希望可以做个参考。

        Verilog HDL 中常用的数据类型有:线网(Net)、寄存器(Register)、整数(Integer)、

实数(Real)、时间(Time)、参数(Parameter)和存储器等。

1、线网

        凡电路连接支点皆称为线网。线网声明的关键词为(wire),其默认值为(Z)。申明现网的格式如下:

复制代码
1
wire [msb:lsb] net1, net2, ... , netn;

        其中,wire为关键词,表示变量为线网变量类型;msb 和 lsb 定义了范围,并且均为常数值表达式,范围定义是可选的,如果没有定义,缺省值为1位的线网t类型变量;net1, net2, ... , netn为定义的线网类型变量名称;

复制代码
1
2
3
wire sig1; //声明sig1这个线网 wire sib2,sib3; //声明 sig2, sig3 这俩个变量 wire sig4 = 0; //声明sig4 这个线网,并指定其值为 0

        总线(Bus)则是线网的组合,声明为wire。举例如下:

复制代码
1
2
3
wire[7 : 0] test1; wire[3 : 0] test2 = 3'b100; wire[3 : 5] test3 = 3'b100;

        其中test2 = test3,只是test3的声明是从bit3 到 bit5的,习惯上我们以test2为标准写法;

2、寄存器

        寄存器除了硬件电路上的意义外,还有类似高级编程语言中的变量。寄存器变量用reg来声明。例如:

复制代码
1
reg [msb : lsb] reg1, reg2, reg3 ...regn;

        其中,reg为关键词,表示变量为寄存器变量;msb 和 lsb 定义了范围,并且均为常数值表达式,范围定义是可选的,如果没有定义,缺省值为1位的寄存器;reg1, reg2, reg3 ...regn为定义的寄存器类型变量名称;

复制代码
1
2
reg d1 //声明d1为reg类型 reg[2 : 0] d2 //声明d2为3位的reg类型

        若某信号声明为寄存器类型,经综合后却不一定会是在硬件上的寄存器上输出,必须格外注意,因为 Verilog 规定凡是在always语句后的类型都必须声明为 reg 。例如

复制代码
1
2
3
4
5
6
7
8
9
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内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(79)

评论列表共有 0 条评论

立即
投稿
返回
顶部