网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 61EDA中国电子网 >> 技术文库 >> HDL语言 >> 正文
  VHDL语句基础           ★★★ 【字体:
VHDL语句基础
作者:Free    文章来源:本站原创    点击数:    更新时间:2008-4-4    

VHDL基本要素:

(1)标识符命名规则(VHDL`87),有128个保留字:

1.有效字符:英文字母大小写,数字和下划线;

2.必须以英文字符打头;

3.下划线前后必须有英文字符或数字;

4.不区分大小写。

VHDL`93部分扩展。

(2)数据对象类型:

常数constants,信号signal,变量variable,文件file四类。

(3)数据类型:有预定义型,可自定义型,

1.预定义:标量类型,

整型integer,浮点型real,枚举类型boolean、bit和charachter,物理类型time,

2.组合型:数组和记录,

3.存取类型:即指针(用的少)。

4.文件类型:

5.子类型:父类型的子集。

(4)运算符:

优先级:由高到低,同行相同:

**? ABS? NOT

*?? /??? MOD? REM

+(正号)? -(负号)

+??? -?? ?&

SLL? SLA? SRL? SRA? ROL? ROR

=??? /=?? <??? <=?? >??? >=

AND? OR?? NAND NOR? XOR? XNOR

运算符可重载:

?

VHDL基本语句:

(1)并行语句

1.信号赋值语句:基本信号赋值、条件信号赋值和选择信号赋值3种类型,格式为:

目标信号<=波形 [条件]

条件以when(else)引导。

2.块语句(BLOCK):把多个并行语句打包,形成结构体中一个单独的区域,可以看作结构体中的一个子模块。

3.进程语句(PROCESS):信号敏感有2种,一是保留字后的显示敏感表,二是用进程末尾wait语句引导的信号。

4.元件例化语句:结构体存为一个元件,就可以入库调用,元件作为一个虚拟模块,可看作一个插槽,使用的时候通过配置把电路插入插槽。

5.生成语句(GENERATE):在循环或条件部分描述规则性的结构。生成方案有for和if两种。

(2)顺序语句

1.变量赋值语句:格式:

变量:=值

2.信号赋值语句:在并行部分说明,但可以用在并行部分和顺序部分,格式:

信号名<=波形

3.IF语句:条件。

4.CASE语句:单个表达式多个作用项中选择。

5.EXIT语句:终止当前循环迭代并终止该循环,用在循环语句内部。

6.LOOP语句:重复模式有while和for两种,模式缺省为无限循环。

7.NEXT语句:在LOOP内部,终止当前迭代并开始下一次循环。

8.NULL语句:空操作。

9.REPORT语句:顺序断言语句的简写格式。

10.RETURN语句:只能在函数与过程体内,结束当前最内层的执行,过程体中return语句不能有表达式;函数体内return语句必须有一个表达式。

11.WAIT语句:在进程语句中提示信号敏感。等同于process后的显示敏感表。

(3)其他常用语句

1.断言语句(ASSERT):只在模拟过程中报告指定的错误信息。

2.函数与过程:

a.函数用来产生一个值;过程用来定义一个算法。

b.函数有一个返回值;过程可产生多个值或不产生值。

c.函数形参仅为In方式;过程形参可以为in、out或inout。

d.过程中允许使用wait和顺序赋值语句;函数中不许。

函数有基本函数、转换函数(可转换数据类型)、决断函数(处理具有多个驱动源的信号,以提高驱动能力)3种。

5类属性:值类,函数类,信号类,类型类,范围类;

信号属性event:决定时钟边沿是否有效。

范围属性'range:生成一个限制性数据对象的范围。

?

VHDL库资源:

(1)库

1.设计库列表:逗号分隔的标识符如:

  library work,std;

2.预编译好的:std库,work库(接受用户设计单元,是用户设计的缺省库),资源库(其他库,必须显示说明),使用如:

  library std;

例最常用的IEEE库(含std_logic_1164,numeric_bit,numeric_std标准库),VITAL库(时序程序包,基本元件程序包)。使用如:

library ieee;

use ieee.numeric_bit.all;

(2)程序包

1.可调用的单元,格式:

  PACKAGE name IS

  --description unit

  END?[PACKAGE][name];

  PACKAGE?BODY name IS

  --description unit

  END [PACKAGE BODY] [name];

2.预定义包

a.STANDARD包:在std包中,自动与所有模型连接,在所有设计单元的开头(即缺省已经说明);可直接使用

b.TEXTIO包:在std包中,定义了ASCII I/O操作的数据类型和子程序;必须显示说明才能使用。如:

  ? USE Std.Textio.all;

c.Std_Logic_1164包:常用数据类型和函数,定义的数据类型包括:std_Ulogic,std_Ulogic_vector,Std_Logic,Std_Logic_vector等,必须显示说明,如:

  Library ieee;

  USE ieee.std_logic_1164.all;

d.Numeric_Std包:定义了向量形式的usigned和signed,该包中的基本元素类型为std_logic_1164中的std_logic。定义为该数据类型的对象的最左端的位为最高位。还有一个特殊的std_logic类型的元素'_',只与自身的值相等;还有一个函数std_match,使用时'_'可看成无关项。

e.Numeric_Bit包:类似于Numeric_Std。

(3)元件配置

配置语句格式:

  FOR 元件标号:元件名

  USE ENTITY 库名.实体名[(构造体名)];

1.体内配置:在构造体内部对所应用的例元(例化元件)用配置语句进行配置。

2.体外配置:格式为:

  CONFIGURATION 配置名 OF 实体名 IS

  FOR 构造体名

  [配置语句;]

  END FOR;

  END 配置名;

3.直接例化:将元件说明、例化及配置结合在一起,使描述更加简洁。格式为:

  元件标号:ENTITY 库名.实体名[(构造体名)]

       [GENERIC MAP(类属映射表)]

          PORT MAP(信号映射表);

4.顶层元件配置:

欲对顶层实体(不作为被其他实体应用的元件)进行配置,则应采样体外配置,或者按默认配置处理。如:

    CONFIGURATION top_config OF 实体名IS

    FOR 构造体名

   END FOR;

    END top_config;

它仅说明要将实体与其构造体装配在一起,句中并无配置语句。

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    VHDL语言中信号设置的不同方…
    VHDL中语句使用问题探讨
    VHDL语言程序配置EAB的研究
    汽车车灯控制系统的VHDL语言…
    使用FPGA和IP Core实现定制缓…
    用VHDL语言在CPLD上实现串行…
    使用VHDL语言设计FPGA的几个…
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    湘ICP备08001332号 站长:61EDA