qjfun

VHDL学习

0
阅读(2177)

    一直使用Verilog HDL编程,VHDL仅仅偶尔看过,并未系统学习,趁此空隙学习下~

一、VHDL程序的基本结构

   1. 库的引用

        library    库名

        use    库名.库中程序包.程序包中的项

    2.实体声明


        entity    实体名    is

        generic(参数名:数据类型:=值);

        port(端口名:端口模式 数据类型)

        end    实体名;

    3.结构体的声明

    4.结构体的定义

        architecture    结构体名    of    实体名    is

            结构体说明语句

        begin

            结构体描述语句;

        end    结构体名;

    5.配置;


二、VHDL操作符

1.赋值操作符

    <=    信号赋值操作符

    :=    变量赋值操作符

    >=    矢量型数据对象的部分赋值

2.逻辑操作符

    not        非门

    and        与门

    or           或门

    nand       与非门

    nor        或非门

    xor        异或门

    nxor        同或门

3.算术操作符

    +        和        可综合

    -        差/负    可综合

    *        乘        可综合

    /        除        一般不可综合,2的整数幂可综合

    **       指数运算

    abs       绝对值

    mod       取模

    rem        取余

4.关系操作符

    =        相等

    /=        不等

    <        小于

    >        大于

    <=       小于等于

    >=        大于等于

5.移位操作符

    sll        逻辑左移        0填充

    srl        逻辑右移        0填充

    sla        算术左移        最右边值填充

    sra        算术右移        最左边值填充

    rol        循环左移        最左边值填充

    ror        循环右移        最右边值填充

6.连接操作符

    &        连接

7.操作符重载(略)

三、VHDL的平行语句

    1.端口映射语句

        用于模块调用,例化模块时用于传递类属性参数和端口连接;

    2.信号赋值语句

        信号    <=    表达式;

    3.when条件选择语句

        信号 <= 表达式1 when 条件1 else

                     表达式2 when 条件2 else

                     表达式3 when 条件3 else

                     。。。

                     表达式n;

    4.generate语句

    5.进程语句

        【标号:】process(敏感信号列表)

        声明语句;

        begin

            顺序语句1;

            顺序语句2;

            。。。

        end process

    6.过程调用语句

    7.块语句

四、VHDL的数据对象

    1.标识符

        基本字符集组成;下划线不能为最后一个字符;字母不区分大小写。

        保留字。

    2.常量

        constant 常量名:常量的数据类型:=值

    3.变量

        variable 变量名:数据类型:=初始值

    4.信号

        signal 信号名:数据类型:=初始值

        信号既可以表示内部连线又可以表示寄存器。

        信号可赋予属性。

        (信号赋值“ <= ”,变量赋值“ := ”)

    5.别名

        alias 别名名称:别名的数据类型 is 数据对象

    6.常量、变量和信号的比较

        常量相当于恒定电平,变量和信号相当于组合电路中门与门间的连接及连线上的信号值。

        信号/变量,区别:

        --信号赋值需要delta延时,变量赋值无延时;

        --信号除当前值外有许多相关的信息,如历史信息,而变量只有当前值;

        --进程对信号敏感而对变量不敏感;

        --信号可以是多个进程的全局信号,而变量值在定义他们的顺序域可见;

        --信号可对应硬件描述,变量无对应。

        信号具有更多的硬件属性,实际使用较多。

五、VHDL的数据类型

    1.标量(scalar):一个存储单元,有具体的数值大小,包括枚举类型、整数类型、物理类型和浮点类型;

    2.复合(composite):由相同类型的元素(数组)或不同类型的元素(记录类型)组成;

    3.存取(access):略;

    4.文件(file):略。