![]() |
|
||||||||||||||
| . 网站首页 . 产品新知 . 业界资讯 . 技术文库 . 下载中心 . 服务导航 . 邮购需知 . 技术论坛 . | ||
|
||
|
|||||
| 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条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 | | |||
|