vhdl语言的基本知识点罗列_第1页
vhdl语言的基本知识点罗列_第2页
vhdl语言的基本知识点罗列_第3页
vhdl语言的基本知识点罗列_第4页
vhdl语言的基本知识点罗列_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、VHDL 语言的基本知识点罗列1 VHDL 语言的标识符VHDL 中的标识符可以是常数、变量、信号、端口、子程序或参数的名字。使用标识符要遵守如 下法则:a )标识符由字母(AZ ; a“)、数字和下划线字符组成。 任何标识符必须以英文字母开头。末字符不能为下划线。b ) 不允许出现两个连续下划线。标识符中不区分大小写字母。VHDL 定义的保留子或称关键字,不能用作标识符。c ) VHDL 中的注释由两个连续的短线( - )开始,直到行尾。 以下是非法标识符:-Decoder 起始不能为非英文字母3DOP 起始不能为数字Large#number“ #不”能成为标识符的构成符号Data_bus

2、不能有双下划线Copper_ 最后字符不能为下划线On 关键字不能用作标识符。注:在 AHDL 语言中标识符要区分大小写,但在 VHDL 语言中不区分大小写。所以写程序时, 一定要养成良好的书写习惯,应用关键字时用大写,自己定义的标识符用小写。标识符表示的几种数据对象的详细说明如下:1) 常数( Constant )常数是一个固定的值, 主要是为了使设计实体中的常数更容易阅读和修改。常数一被赋值就不能在改变。一般格式:CONSTANT 常数名:数据类型: = 表达式; 例: CONSTANT Vcc: REAL: =5.0;设计实体的电源电压指定 常数所赋得值应与定义的数据类型一致。常量的使用

3、范围取决于它被定义的位置。 程序包中定义的常量具有最大的全局化特性, 可以用在 调用此程序包的所有设计实体中; 设计实体中某一结构体中定义的常量只能用于此结构体; 结构 体中某一单元定义的常量,如一个进程中,这个常量只能用在这一进程中。2) 变量( Variable )变量是一个局部变量, 它只能在进程语句、 函数语句和进程语句结构中使用。 用作局部数据存储。 在仿真过程中。它不像信号那样,到了规定的仿真时间才进行赋值,变量的赋值是立即生效的。 变量常用在实现某种算法的赋值语句中。一般格式:VARIABLE 变量名 数据类型 约束条件: = 表达式; 例: VARIABLE x,y:INTEG

4、ER; 定义 x,y 为整数变量VARIABLE count: INTEGER RANGE0 TO255:=10;定义计数变量范围变量的适用范围仅限于定义了变量的进程或子程序中。 若将变量用于进程之外, 必须该值赋给一 个相同的类型的信号,即进程之间传递数据靠的信号。变量赋值语句的语法格式如下:目标变量: = 表达式;变量赋值符号是 “: =”。赋值语句右方的表达式必须是一个与目标变量有相同数据类型的数值。 变量不能用于硬件连线和存储元件。3) 信号( Signal )信号是描述硬件系统的基本数据对象, 它类似于连接线, 它除了没有数据流动方向说明以外, 其 它性质与实体的端口 ( Port

5、)概念一致。 变量的值可以传递给信号, 而信号的值不能传递给变量。 信号通常在构造体、包集合和实体中说明。信号说明格式为:SIGNAL 信号名: 数据类型; 信号初始值的设置不是必需的,而且初始值仅在 VHDL 的行为仿真中有效。1 变量 变量只能在进程、函数和过程中使用,一旦赋值立即生效。 例: VARIABLE x, y: INTEGER;VARIABLE count: INTEGER RANGE 0 TO 255:=10;2 信号 信号除了没有方向的概念以外几乎和端口概念一致。 例: SIGNAL sys_clk: BIT:= 0;SIGNAL ground: BIT:= 0 在程序中,

6、信号值输入信号时采用代入符”=”,而不是赋值符 “:=”,同时信号可以附加延时。信号传送语句:s1=s2 AFTER 10ns 信号是一个全局量,可以用来进行进程之间的通信3 信号与变量的区别: 信号赋值可以有延迟时间,变量赋值无时间延迟; 信号除当前值外还有许多相关值,如历史信息等,变量只有当前值; 进程对信号敏感,对变量不敏感; 信号可以是多个进程的全局信号,但变量只在定义它之后的顺序域可见;信号可以看作硬件的一根连线,但变量无此对应关系。2 VHDL 语言的数据类型VHDL 语言提供了许多标准的数据类型,用户也可自定义数据类型,这样使 VHDL 语言的描述 能力和自由度进一步提高。但 V

7、HDL 语言的数据类型的定义相当严格,不同类型之间的数据不 能直接代入。而且相同数据类型,但位长不同的也不能直接代入,否则 EDA 工具在编译综合时 会报告类型错。因此,为了熟练地使用 VHDL 语言编写程序,必须很好的理解各种数据意义。 2.1. VHDL 标准的数据类型1) 整数( Integer )整数类型的数代表正整数、负整数和零,表示的范围-(231-1 )(231-1 ),它与算术整数相似,可进行 “+”, “-”, “*”, “/”等算术运算,不能用于逻辑运算。2) 实数( Real )实数类型也类似于数学上的实数,或称浮点数,表示范围为-1.0E38 1.0E38.3) 位(

8、Bit )在数字系统中信号通常采用一个位来表示,取值值能是1 获 0 。4) 位矢量( Bit_Vector ) 位矢量是用双引号括起来的一组位数据,使用位矢量必须注明位宽。,最右位为a(0)例如:SIGNAL a:BIT_VEVCTOR(7to0) 信号a被定义为一个具有8位位宽的矢量,最左位为a(7)5) 布尔量( Boolean ) 一个布尔量具有两个状态: “真”或 “假 ”。布尔量不属于数值,因此不能用于运算,它只能通过关 系运算符获得。一般这一类型的数据初始值总为 FALSE.6) 字符( Character )字符也是一种数据类型,字符类型通常用单引号引起来,如 A字符类型区分大

9、小写,如环同于 b。7) 字符串( String )字符串是由双引号括起来的一个字符序列, 也称字符矢量或字符串数组。 常用于程序的提示和说 明,如 “STRING” 等。8) 时间( Time )时间是一个物理数据。 完整的时间类型包括整数和单位两部分; 整数与单位之间至少留一个空格, 如 55 ms , 2 ns 。在包集合 STANDARD 中给除了时间的预定义,其单位为 fs, ps, ns , us, ms , sec , min , hr 。在系统仿真时, 时间数据很有用, 可用它表示信号延时, 从而使模型系统能更逼近实际系统的运 行环境。9) 错误等级( Severity Lev

10、el )在 VHDL 仿真器中,错误等级用来指示设计系统的工作状态,它有四种:NOTE (注意) 、WARNING (警告)、 ERROR (出错)、 FAILURE (失败) 。在仿真过程中,可输出这四种状 态以提示系统当前的工作状态。10) 自然数( Natural )和正整数( Positive )自然数是整数的一个子类型,非负的整数,即为零和正整数。而Positive 只能为正整数。2.2. IEEE 预定义标准逻辑位与矢量在 IEEE 库的程序包 STD_LOGIC1164 中,定义了两个重要的数据类型,即标准逻辑位 STD_LOGIC 和标准逻辑矢量 STD_LOGIC_VECTO

11、R ,使得 STD_LOGIC 数据可以具有如下 的 9 种不同的值:“ U”始值“ 0 ” 0“ Z ”高阻“ L”弱言号0“ X ”不定“ 1 ” 1“ W扇信号不定“ H”弱信号1不可能情况注意在使用该类型数据时,在程序中必须写出库说明语句和使用包集合的说明语句。3 VHDL 语言的运算操作符在 VHDL 语言中共用 4 类操作符,可以分别进行逻辑运算( Logic )、关系运算( Relational )、 算术运算( Arithmetic )和并置运算( Concatenation )。被操作符所操作的对象是操作数,且 操作数的类型应该和操作符所要求的类型相一致。需要注意的是,各家

12、EDA 综合软件对运算操 作符支持程序各不相同,使用时应参考综合工具说明。1)逻辑运算符运算符在 VHDL 语言中逻辑运算符有 6 种,他们分别为:NOT( 非 )OR (或)AND (与)NOR (或非)NAND (与非)XOR (异或)2)关系运算符 关系运算符它们分别是:= (等于)/= (不等于) (小于) (大于)= (大于等于)3)算术运算符+( 加 )/(除)SLL (逻辑左移)ROR (逻辑循环右移) -(减)MOD (求模)SRL (逻辑右移)ABS (取绝对值)* (乘)REM (取余)SLA (算术左移)4)其他运算符 (并联运算符,在元件例化时可用于形参倒实参的映射)4

13、 VHDL 语言的结构VHDL 语言主要组成构件有设计实体( Entity )、结构体( Architecture )、子程序( Function Procedure )、集合包(Package )和库(Library ),前四种称为可编译的设计单元。一个VHDL设计就是有这四种构件的组成, 编译之后将它们放在制定的库中共享。 其中, 实体用于描述设计 的接口界面信号,它规定端口数目,端口方向和端口类型。它与硬件电路设计中的符号相对应。 而结构体指定设计的真实行为, 性能和结构, 与硬件电路设计中的原理图相对应。 子程序是可被调用的执行某一特定功能算法的集合。集合包则是为了使常用的数据类型、

14、常数和子程序对于其他设计块可用而集中充放的一批设计单元和约定。4.1 设计实体实体的定义语法为:ENTITY 实体名 IS 端口说明 ;END 实体名;端口说明书写格式如下:PORT (端口名 ,端口名 :方向 数据类型名;端口名 ,端口名 :方向 数据类型名) ; 例如,一个二选一路数据选择器的设计实体可描述如下: ENTITY selection IS PORT(a, b, sel: IN BIT;C : OUT BIT );END selection;4.2 构造体 用于描述系统内部的结构和行为。构造体部分定义了设计单元的具体功能(行为)。1. 构造体句法如下:ARCHITECTURE

15、构造体名 OF 实体名 IS 定义语句 内部信号,常数,数据类型,函数等的定义;BEGIN 并行处理语句 ;END 构造体名;例如: ARCHITECTURE dataflow OFselection ISBEGINq=(a AND set) OR (NOT sel AND d1);END dataflow;4.2.1 构造体的子结构描述在规模较大的电路设计中, 全部电路都用唯一的一个模块来描述是非常不方便的。为此, 电路设计者总希望将整个电路分成若干个相对比较大的模块来进行电路的描述。这样, 一个构造体可以用几个子结构, 既相对比较独立的几个模块来构成。 VHDL 语言可以有以下三种形式的子

16、结构描 述语句:1) 子程序:VHDL 提供两种子程序:函数 (FUNCTION) 和过程 (PROCEDURE) 函数函数的定义形式如下: FUNCTIONRETURNIS 定义语句 ;BEGIN ;END 函数名称;.下面是一个比较器的例子: FUNCTION max(a, b: INTEGER) RETURN INTEGER IS BEGINIF (a=b)THEN RETURN a;ELSE RETURN b;END IF;END max; 一个函数定义好后,可以在其它地方调用。过程 过程的定义形式如下: PROCEDURE IS BEGIN ; END 过程名称; .下面是一个比较器

17、的例子: FUNCTION max(a, b, c: INTEGER) IS BEGINIF (a=b)THEN c= a;ELSE c 顺序处理语句;END CASE;条件句中的“=”不是操作符,只相当于 “THEN作用。6 VHDL 中的一些重要信号6.1. 时钟信号和复位信号1) 时钟信号的描述* 若进程的敏感信号是时钟信号 ,这时时钟信号出现在 PROCESS 后的括号中 .例 : process (clock_signal)beginif (clock_edge_condition) thensignal_out=signal_in其它语句end if;end process;* 在

18、进程中用 WAIT ON 语句等待时钟这样的电路没有敏感信号 ,进程通常停留在 WAIT ON 语句上 ,只有时钟信号到来且满足一定 条件时 , 其余语句才能执行 .例:processbeginwait on (clock_signal) until (clock_edge_condition) signal_out=signal_in;其它语句end process;* 敏感表中只能有一个时钟信号* wait on 语句只能放在进程的最前面或者最后面* 时钟的边沿描述 描述时钟一定要指明是上升沿还是下降沿上升沿到来的条件IF clk= 1 AND clk LASTVALUE= 0 AND clk EVENT下降沿到来的条件IF clk= 0 AND clk LASTVALUE= 1 AND clk EVENT关于时钟信号的总结 :IF clock_signal=current_value AND clock_signal LAST ANDclock_siganl EVENT可以简单写为 :IF clock_signal=clock_siganl EVENT AND current_value6.2. 复位信号* 同步复位 当复位信号有效且在给定的时钟边沿到来时 ,触发器才被复位 .例 1:process (clock)beginif (clock_edge

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论