VHDL语言及程序设计

上传人:我*** 文档编号:136518798 上传时间:2020-06-28 格式:PPT 页数:65 大小:308KB
返回 下载 相关 举报
VHDL语言及程序设计_第1页
第1页 / 共65页
VHDL语言及程序设计_第2页
第2页 / 共65页
VHDL语言及程序设计_第3页
第3页 / 共65页
VHDL语言及程序设计_第4页
第4页 / 共65页
VHDL语言及程序设计_第5页
第5页 / 共65页
点击查看更多>>
资源描述

《VHDL语言及程序设计》由会员分享,可在线阅读,更多相关《VHDL语言及程序设计(65页珍藏版)》请在金锄头文库上搜索。

1、VHDL硬件描述语言及应用,-一种很好的数字系统硬件电路的形式化描述实现,VHDL语言概述,HDL:Hardware Description Language VHDL:由美国国防部开发,1987年由IEEE标准化,1993年进一步修订 Verilog:1983年由Gateway Design Automation公司开发, 1990年被推向公众领域, 1995年成为IEEE标准 建议:VHDL比较严谨,Verilog比较自由,初学还是用VHDL比较好,初学用Verilog会比较容易出错,VHDL中的注意事项,在VHDL语言中,大小写不加区分,但在代码中巧妙应用大小写,可以使代码变得易于阅读和

2、规范 实体名必须与VHDL文件名相同,否则编译会出错 信号与变量,过程与函数的区分,VHDL语言程序的基本构成,库、包集合:用于存放预先编译好的程序包(PACKAGE)和数据集合体,以便不同的VHDL设计使用 实体说明:规定设计单元的输入输出接口信号和引脚 构造体:定义设计单元的具体构造和操作,VHDL语言程序的基本构成示例,库、包集合说明,实体说明,构造体,库和包集合的使用,库的说明总是放在设计单元的最前面,调用方法: LIRARY 库名 USE 库名.所要调用的程序包名.ALL 具体可打开安装目录C:alteraquartus60librariesvhdl下相应的文件进行学习 常用库和包集

3、合:IEEE库中的包集合STD_LOGIC_1164,STD_LOGIC_ARITH,STD_LOGIC_UNSIGNED,其中后两个包在日本synopsys(新思)公司目录中,该公司在FPGA行列还推出了prime time静态时序分析工具 STD库中STANDARD包集合是VHDL的标准配置,使用时可以不说明 WORK库:VHDL现行工作库,可以理解为用户当前编辑的目录中所有可用的包和数据集,实体(ENTITY),实体类似于原理图中的一个部件符号,它并不描述设计的具体功能,只是定义所需的全部输入/输出信号。实体格式如下: ENTITY 实体名 IS GENERIC(常数名:数据类型:设定值

4、) 类属说明 PORT 端口说明 (端口信号名1: 模式 类型; 端口信号名2: 模式 类型; 端口信号名3: 模式 类型; 端口信号名4: 模式 类型); END 实体名; 实体名:实体名必须与VHDL文件名相同,否则编译会出错,Exemple of ENTITY,GENERIC所定义的元件叫做参数化元件,即元件的规模或特性由GENERIC的常数决定,利用GENERIC可以设计更加通用的元件,弹性地适应不同的应用,端口信号名在实体之中必须是唯一的,信号名应是合法的标识符,分别有IN、OUT、INOUT、BUFFER、LINKAGE,常用的有INTEGER、STD_LOGIC、STD_LOGI

5、C_VECTOR,ARCHITECTURE,所有能被仿真的实体都由结构体(ARCHITECTURE)描述,即结构体描述实体的结构或行为,一个实体可以有多个结构体,每个结构体分别代表该实体功能的不同实现方案 结构体格式: ARCHITECTURE 结构体名 OF 实体名 IS 定义语句(元件例化); BEGIN 并行处理语句; END 结构体名; 结构体名是对本结构体的命名,它是该结构体的惟一名称,虽然可以由设计人员自由命名,但一般都将命名和对实体的描述结合起来,例如:行为描述(BEHAVE),寄存器传输级(RTL),Exemple of ARCHITECTURE,ARCHITECTURE的BL

6、OCK子结构,子结构的使用使设计者可以把整个电路分成若干个相对独立的模块来进行描述 子结构有:BLOCK,PROCESS,SUBPROGRAMS BLOCK与ARCHITECTURE相当于整体原理图与子原理图关系,结构内部语句是并发的,如希望BLOCK有条件执行,可采用卫式BLOCK,如下:,ARCHITECTURE的PROCESS子结构,PROCESS中的语句是顺序执行的,一个结构体中可以有多个PROCESS,它们之间可以通过信号进行通信 PROCESS的启动受敏感信号控制,敏感信号的变化会直接导致PROCESS的启动,ARCHITECTURE的SUBPROGRAM子结构,与高级语言中的子程

7、序概念差不多,可以反复调用,但不能重入,结构内语句为顺序执行,有Procedure和Function之分 多个过程和函数汇集在一起构成包集合,几个包集合汇集在一起构成库,VHDL中的数据对象,在逻辑综合中,VHDL常用的数据对象有信号、变量及常量 信号SIGNAL:为全局变量,定义格式: SIGNAL 信号名: 数据类型:=初始值; 赋值格式: 目标信号名=表达式 常在结构体中用赋值语句完成对信号赋初值的任务,因为综合器往往忽略信号声名时所赋的值 常量:全局变量,在设计中描述某一规定类型的特定值不变,如利用它可设计不同模值的计数器,模值存于一常量中,对不同的设计,改变模值仅需改变此常量即可,就

8、如上一章所说的参数化元件。 定义格式: CONSTANT 常数名:数据类型:=表达式 变量(VARIABLE):用于声明局部值或用于子程序中,变量的赋值符号为“:=”, 定义格式: VARIABLE 变量名: 数据类型:=初始值,VHDL中的信号与变量,信号是实际的,是内部的一个存储元件(SIGNAL)或者是外部输入(IN、OUT、INOUT、BUFFER) 变量是虚的,仅是为了书写方便而引入的一个名称,常用在实现某种算法的赋值语句当中 如果在一个进程中多次为一个信号赋值,只有最后一个值会起作用 ,这与SIGNAL的硬件特性有关 变量赋值时,变量的值改变是立即发生的 信号赋值用“=”,变量赋值

9、用“:=”,VHDL的数据类型,VHDL是一种强类型语言,对于每一个常数、变量、信号、函数及设定的各种参量的数据类型(DATA TYPES)都有严格要求,相同数据类型的变量才能互相传递和作用,标准定义的数据类型都在VHDL标准程序表STD中定义,实际使用中,不需要用USE语句以显式调用 VHDL常用的数据类型有三种:标准定义的数据类型、IEEE预定义标准逻辑位与矢量及用户自定义的数据类型,标准定义的数据类型,Boolean布尔量:取值为FALSE和TRUE CHARACTER字符:ASCII字符,编程时用单引号括起来,如A STRING字符串:字符失量,双引号括起来,如“ADFBD” INTE

10、GER整数:32位,范围从-(231-1)到(231-1); REAL实数:实数类型仅能在VHDL仿真器中使用,综合器不支持 BIT位:取值为0或1; TIME时间:范围从-(231-1)到(231-1),表达方法包含数字、(空格)单位两部分,如(10 PS); BIT_VECTOR位矢量:其于BIT数据的数组,使用矢量必须注明宽度,即数组中的元素个数和排列,如SIGNAL A: BIT_VECTOR(7 DOWNTO 0) NATUREAL自然数:整数的一个 POSITIVE正整数: SEVRITY LEVEL错误等级:在VHDL仿真器中,错误等级用来设计系统的工作状态,共有四种可能的状态值

11、:NOTE,WARNING,ERROR和FAILURE,IEEE预定义的标准逻辑位与矢量,STD_LOGIC:工业标准的逻辑类型,取值为0、1、Z、X(强未知)、W(弱未知)、L(弱0)、H(弱1)、(忽略)、U(未初始化),只有前四种具有实际物理意义,其他的是为了与模拟环境相容才保留的 STD_LOGIC_VECTOR:工业标准的逻辑类型集,STD_LOGIC的组合,用户自定义的数据类型,用户自定义的数据类型有枚举类型、整数类型和实数类型、数组类型、记录类型四种 枚举类型: TYPE 数据类型名 IS (枚举文字,枚举文字,. . . .) 整数类型与实数类型是标准包中预定义的整数类型的子集

12、,由于综合器无法综合未限定范围的整数类型的信号或变量,故一定要用RANGE子句为所定义整数范围限定范围以使综合器能决定信号或变量的二进制的位数。 格式: TYPE 数据类型名 IS RANGE 约束范围; 数组类型:数组是同一类型数据集合,记录内元素类型可以不同 TYPE 数据类型名 IS ARRAY(下限 TO 上限) OF 类型名称,多维数组不能生成逻辑电路,只能用于仿真图形 记录类型: TYPE 记录类型名 IS RECODE 元素名: 数据类型名; 元素名: 数据类型名; 。 END RECODE,用户自定义的数据类型举例,RANGE其范围一般由调用者传递的参数决定,用户自定义的子类型

13、,对已定义类型作一些范围限制(也可以与原数据类型完全一致),定义格式为: SUBTYPE 子类型名 IS 数据类型名(范围),数据类型转换,VHDL中,不同数据类型不能直接进行运算和代入,要进行运算或代入必需对类型进行转换,使之一致,BIT_VECTOR与STD_LOGIC_VECTOR,代入STD_LOGIC_VECTOR的值只能是二进制,代入BIT_VECTOR的值除二进制外还可以是八进制和十六进制,数据类型的限定,VHDL中有时可以用上下文关系来判断某一数据的数据类型,如果不能判断出来,就必需对数据进行类型限定,类似C中的强制类型转换,运算符:算术运算符,关系运算符,逻辑运算符与连接运算

14、符,运算符的使用,逻辑运算、算术运算、关系运算的左右以及代入的数据类型一定要相同 VHDL中左右没有优先级的差异,如 x=(a AND b) OR (NOT c AND d) 能真正综合的算术运算符只有“+”,“-”,“*”;“MOD”,“REM”,“/”分母是2乘方时可综合,由于硬件特性,后4种应慎用,最好作适当变通 “=”应通过上下文关系判定是关系运算符还是代入符 位的连接也可以采用集合的方式,把并置符改成“,”即可,如:temp_4=(1,0,1,0);其中temp_4为4位宽的位失量,但这种方式不能用于位失量连接,如:temp_4顺序处理语句 ; WHEN 条件取值 =顺序处理语句 ;

15、 WHEN OTHERS =顺序处理语句 ; END CASE;,顺序语句,FOR模式的LOOP语句,格式: LOOP标号: FOR 循环变量 IN 离散范围 LOOP 顺序处理语句; END LOOP LOOP标号;,顺序语句,WHILE模式的LOOP语句,格式: LOOP标号: WHILE条件LOOP 顺序处理语句; END LOOPLOOP标号;,顺序语句,NEXT和EXIT语句,这两种语句都是用于跳出LOOP循环的,NEXT语句是用来跳出本次循环的,而EXIT语句是用于跳出全部循环的。 格式: NEXT或EXIT LOOP标号 WHEN条件,顺序语句,NEXT与EXIT使用说明,NEXT语句一般用于LOOP的内循环控制 EXIT没有循环标号,退出当前LOOP EXIT有循环标号,程序跳至标号处 EXIT+循环标号+WHEN,当WHEN为真时跳至标号处,如无标号跳出当前LOOP,顺序语句,NULL与 RETURN语句,NULL空操作语句,书写格式为“NU

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号