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

概述

        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,的基本知识(四)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部