EDA技术VHDL语言PPT课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《EDA技术VHDL语言PPT课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 技术 VHDL 语言 PPT 课件
- 资源描述:
-
1、LOGO.1第二章 VHDL语言的基本要素及基本结构LOGO2022-5-12.2第二章 VHDL的语言要素及基本结构v 要求:v 1掌握: VHDL的命名规则:基本标示符、下标名、段名及注释; VHDL对象(客体)分类定义及其性质 ; VHDL语言的数据类型:位、位矢量、整形数;枚举类型;IEEE标准的STD_LOGIC、STD_LOGIC_VECTOR; 运算操作符; VHDL程序的组成 VHDL语言设计的基本单元及其构成 VHDL构造体描述的几种方法 库及IEEE库中包集合的使用v 2熟悉: VHDL语言的其它数据类型、子程序、包集合及配置 v 3了解: 标示符:扩展标识符;数据类型转换
2、 LOGO2022-5-12.3实体说明:entity:描述所设计系统的外部接口信号,是可见的。构造体:architecture描述所设计系统的内部的结构和行为,是不可见的。配置:configuration选取所需单元组成系统的不同版本包集合:package存放各设计模块都能共享的数据类型、常数、子程序和函数。库:library存放已经编译好的实体、构造体、包集合和配置VHDL语言程序最基本组成是实体说明和构造体LOGO2022-5-12.4VHDL的语言要素VHDL的语言要素包含客体(或对象)数据类型操作数运算操作符VHDL规定:(1)不区分大小写(“”和内的字符除外);(2)每条语句以一个
3、分号;结束;(3 3)不是所有语句前都可以加标号;(4 4)一条语句后可以加注释,在注释内容前加两个短划线。 LOGO2022-5-12.52.1 VHDL语言的命名规则v 2.1.1 数字型文字v (1)整数文字v (2)实数文字v (3)以数制基数表示的文字v格式:数制#数值#指数值v例如:10#170#E1-十进制1700v16#FE#-十进制254v2#1101_0001#-十进制209v8#376#-十进制254v 16#E#E1- (十六进制数表示, 14*161等于224)v (4)物理量文字(VHDL综合器不接受此类文字)。 60 s(60秒),100 m(100米),k(千欧
4、姆),177 A(177安培)LOGO2022-5-12.62.1.2 字符串型文字v 字符串型文字包含文字字符串、数位字符串v 数位字符串:位矢量,由数据类型为BIT的元素组成的一维数组 书写格式:基数符“数值” 基数符:B二进制数;O八进制数;X十六进制数 例如:data1 = B “1_1101_1110”; data2 = O “15” ; data3 = X “AD0”; data4 = B “101_010_101_010”; data5 = “101_010_101_010” ; -表达错误,缺B; data5 = “101010101010” ; -表达正确,没有“_”默 认为
5、二进制数; data6 = “0AD0”; -表达错误,缺X LOGO2022-5-12.72.1.3 标识符v 用来定义实体、结构体、对象(常数、变量、信号)、端口、子程序、语句标号或参数的名字。v VHDL的基本标识符书写遵循规则: 由26个大小写英文字母、数字09以及下划线“_”组成; 以英文字母开头; 不连续使用下划线“_”,不以下划线“_”结尾的; 标识符中的英语字母不分大小写; VHDL的保留字(或关键字)不能作为标识符使用。v VHDL 93标准还支持扩展标识符,但是目前仍有许多VHDL工具不支持扩展标识符。由一对反斜杠之间的任何字符序列组成,取消了标准标示符的所有限制。v 合法
6、标示符:Decoder_1 , FFT , Sig_N , Not_Ack , State0 , Idlev 非法标识符: _Decoder_1 , 2FFT , Sig_#N , Not-Ack , v RyY_RST_ , data_ _BUS , returnLOGO2022-5-12.82.1.4 下标名v下标名指的是数组型变量或信号的某一个元素。 格式:标示符(表达式)v标识符必须是数组型的变量或信号的名字,表达式所代表的值必须是数组下标范围中的一个值,这个值将对应数组中的一个元素。v例如:SIGNALa,b:BIT_VECTOR(0 TO 3); SIGNAL m :INTEGER
7、 RANGE 0 TO 3; SIGNAL y,z :BIT; y = a (m) ; - - 不可计算型下标表示 z = b (3 ) ; - -可计算型下标表示LOGO2022-5-12.92.1.5 段名v段名是多个下标名的组合,对应数组中某一段的元素格式:标示符(表达式 方向 表达式)方向:TO 或 DOWNTOSIGNAL a ,z :BIT_VECTOR(0 TO 7) ; Signal b:bit_vector(4 downto 0); z(0 TO 3)= a(4 TO 7) ;-z(0)(0)= a(4)(4)、z(1)(1)= a(5)LOGO2022-5-12.102.2
8、 VHDL的数据类型及运算操作符v VHDL语言同其它语言一样有多种数据类型和运算符,且它们的定义也大多相同。VHDL语言的特点是用户可以自己定义数据类型。 如:type count is integer RANGE 0 to 10;LOGO2022-5-12.112.2.1 VHDL客体(对象)及其分类客体(对象) :可以赋予一个值的对象或者是数据类型所定义的对象。客体主要包括3类信号:变量:常数:代表元件间的硬件连接线全局变量代表暂存某一值的载体局部变量数字电路中的电源和地等全局变量物理意义LOGO2022-5-12.121、VHDL语言对象(客体)常数v 一般某一值在程序中多处用到,为了
9、增加程序的可读性、可修改性,给该常数定义一个常数名,在书写程序时用定义的常数名代替该常数。v 可以在实体、结构体、程序包、块、进程和子程序中定义(说明)。v 在包集合中定义的常量可以暂不设具体数值,它可以在包体中设定。v 常量的使用范围取决于它被定义的位置程序包:实体:构造体:块:由调用该程序包中的任何实体、构造体引用仅作用于该实体仅作用于该构造体仅作用于该块进程:仅作用于该进程子程序:仅作用于该子程序LOGO2022-5-12.131、VHDL语言对象(客体)常数v常数说明的一般格式: CONSTANT 常量名:数据类型=表达式; 如: CONSTANT FBUSBIT_VECTOR=“01
10、01”; CONSTANT VCCREAL=5.0; CONSTANT DELYTIME=25 ns;v注意:常数被赋值的类型一定要和定义的数据类型一致,如第二条语句中的5.0若变为5则不正确。LOGO2022-5-12.142、VHDL语言客体变量v 是一个局部量,只能在进程和子程序(过程和函数)中定义和使用。v 变量不能将信息带出对它作出定义的当前设计单元。v 变量在硬件中没有明确的对应物,只是对数据暂存。v 变量的赋值是立即发生,不存在任何延时的行为。v 常用在实现某种算法的赋值语句中,赋值符号为“:=”v 变量说明语句格式:variable 变量名1,变量名2,:数据类型 约束条件:=
11、表达式;v 注意:n 1、语句中用 括起部分可有可无n 2、表达式:给变量赋初值n 3、变量赋值符号为“:=”n 4、变量赋值立即生效,因此变量赋值不能够加延时条件n 5、逻辑综合时初值无效n 6、多个变量具有相同的数据类型和约束条件时可以在同一条变量定义语句中定义LOGO2022-5-12.15变量定义赋值举例Variable x,y:integer;Variable x:integer range 0 to 255:=10;Variable temp1,temp2:integer;变量赋值语句:变量定义语句:Temp1:=temp2;Temp1:=temp2 after 10ns ; 此语
12、句对吗?LOGO2022-5-12.163、VHDL语言客体信号v 信号可以作为模块间的信息交流通道,与硬件中互连元件端口的的连线相对应;v 信号及其相关的语句描述了硬件系统的基本特征; 如硬件系统运行的并行性;信号传输过程中的惯性延时特性;多驱动源的总线行为等。信号赋值不立即生效v 信号的定义格式如下: SIGNAL 信号名: 数据类型 约束条件=初始值; 初始值仅在VHDL的行为仿真中有效,逻辑综合无效 信号代入符号为“=”,但是赋初值符号为“:=” 信号赋值不立即生效,因此信号代入能够加延时条件n 多个信号具有相同的数据类型和约束条件时可以在同一条信号定义语句中定义v 具有全局性特性,可
13、以在以下区域定义和使用: 实体:作用于该实体中所有的结构体 结构体:作用于整个结构体 包集合:作用于调用此包集合的所有实体v 除了没有方向说明以外,信号与实体的端口(PORT)概念是一致的。LOGO2022-5-12.17VHDL语言客体信号v SIGNAL Sys_clk:bit= 0; -定义了一个位BIT的信号S1,初始值为低电平v SIGNAL ground:BIT=0; -定义了一个位BIT的信号ground,初始值为低电平 以上两条信号定义语句可以改写成一条信号定义语句: Signal Sys_clk,ground:STD_LOGIC= 0;v SIGNAL S4: STD_LOG
14、IC_VECTOR(15 DOWNTO 0); -定义了一个标准逻辑位矢量(数组、总线)信号,共有16个元素v SIGNAL S5: integer range 0 to 9;; -定义了一整型数据类型的信号s5,其取值只能是0到9的整数v 信号赋值可以加延时条件: SIGNAL S1bit ; SIGNAL s2 :bit; S2=s1 after 10 ns;LOGO2022-5-12.184、信号、变量、常量的比较v从硬件电路系统来看 常量相当于电路中的恒定电平,如GND或VCC接口 变量和信号则相当于组合电路系统中门与门间的连接及其连线上的信号值。v从行为仿真和VHDL语句功能上看 信
15、号可以设置延时量,而变量则不能; 变量只能作为局部的信息载体,而信号则可作为模块间的信息载体。 变量的设置有时只是一种过渡,最后的信息传输和界面间的通信都靠信号来完成。 LOGO2022-5-12.19信号、变量、常量的比较v从综合后所对应的硬件电路结构来看 信号将对应更多的硬件结构,变量在硬件上一般没有对应实物。 VHDL综合器并不理会它们在接受赋值时存在的延时特性。vVHDL仿真器允许变量和信号设置初始值,但在实际应用中,VHDL综合器并不会把这些信息综合进去。 因为实际的FPGA/CPLD芯片在上电后,并不能确保其初始状态的取向。因此,对于时序仿真来说,设置的初始值在综合时是没有实际意义
16、的。LOGO2022-5-12.20D触发器的四种不同描述v Entity dff1 isv port(clk,d:in bit;v q:out bit);v End dff1;v Architecture bhv of dff1 isv Beginv D1:process(clk)v variable qq:bit;v Beginv if clkevent and clk=1 thenv qq:=d;v q=qq;v end if;v End process;v End bhv;v Entity dff2 isv port(clk,d:in bit;v q:out bit);v End df
17、f2;v Architecture bhv of dff2 isv signal qq:bit;v Beginv D1:process(clk)v Beginv if clkevent and clk=1 thenv qq=d;v end if;v End process;v q=qq;v End bhv;dclkqDff1dclkqDff2dff1综合后的结果dff2综合后的结果LOGO2022-5-12.21D触发器的四种不同描述v Entity dff3 isv port(clk,d:in bit;v q:out bit);v End dff3;v Architecture bhv of
18、 dff3 isv Beginv D1:process(clk)v variable a,b:bit;v Beginv if clkevent and clk=1 thenv a=d;v b:=a;v q=b;v end if;v End process;v End bhv;dclkqDff3Dff4v Entity dff4 isv port(clk,d:in bit;v q:out bit);v End dff4;v Architecture bhv of dff4 isv signal a,b:bit;v Beginv D1:process(clk)v Beginv if clkeven
19、t and clk=1 thenv a=d;v b=a;v q=b;v end if;v End process;v End bhv;dclkqdclkqdclkqabDff3综合后结果Dff4综合后结果LOGO2022-5-12.225、信号和变量使用的区别赋值(代入)语句的符号不同:= 变量赋值符号= 信号代入符号操作过程不同:变量在上一条语句赋值,下一条语句即可使用。变量不能列入进程语句的敏感表。信号代入语句的处理和代入过程是分开进行的。信号语句即使被处理也不会立即发生代入,下一条语句用到该信号,仍使用原来的信号值。在进程语句中,当进程结束或遇到wait语句时,信号代入过程才被执行。信号
20、可以列入进程的敏感表LOGO2022-5-12.23例2-5 Process(A,B,C,D) BeginD=A; X=B+D;D=C; Y=B+D; End process;Process(A,B,C)Variable D:std_logic_vector(3 downto 0); BeginD:=A;X=B+D;D:=C;Y=B+DEnd process;例1结果:X=B+C; Y=B+C;例2结果:X=B+A; Y=B+C;WAIT FOR 10nsWAIT FOR 10ns注意:在同一个进程中,同一信号赋值目标有多个赋值源时,只获得最后一个赋值源的赋值。 加入WAIT语句后,信号赋值立
21、即生效。结果同例2结果。LOGO2022-5-12.242.2.2 VHDL中的数据类型1、VHDL语言的数据类型的载体:常数、变量、信号VHDL是一种强类型语言,要求设计实体中的每一个常数、信号、变量等都必须具有确定的数据类型,并且相同数据类型及量才能互相传递和作用。VHDL作为强类型语言的好处是使VHDL编译或综合工具很容易地找出设计中的各种常见错误。VHDL中的数据类型可以分成三大类。(不同书分类方法不完全一致)三类标准数据类型:10种用户自定义数据类型:8种IEEE预定义标准逻辑位与矢量LOGO2022-5-12.251、标准数据类型v标准数据类型是最基本的数据类型,包括:实数类型、整
22、数类型、位类型、字符类型和时间类型等,共10种。 重点:整数类型和位类型v这些数据类型都已在VHDL的标准程序包standard和std_logic_1164及其他的标准程序包中作了定义,并可在设计中随时调用。LOGO2022-5-12.261)标准数据类型整数(INTEGER)型v 取值范围是-21 473 647+21 473 647范围: (231 1) (231 1)32位v 对于VHDL仿真器,整数作为有符号数;v 对于VHDL综合器,整数作为无符号数处理; 要求用RANGE子句为所定义的数限定范围,然后据此决定表示此信号或变量的二进制数的位数。 如语句“SIGNAL A INTEG
23、ER RANGE 0 TO 15;”规定信号A的取值范围是015共16个整数值,可用4位二进制数来表示,因此A将被综合成由四条信号线构成的信号。v 整数常量的书写方式: 2 -十进制整数 10E4 -十进制整数 16#D2# -十六进制整数 2#11011010# -二进制整数LOGO2022-5-12.272)标准数据类型实数(REAL) 型v类似于数学上的实数,或称浮点数。 取值范围为-1.0E38+1.0E38。 通常情况下,仅能在VHDL仿真器中使用 VHDL综合器不支持实数,因为实数类型的实现相当复杂,目前在电路规模上难以承受。v实数常量的书写方式举例如下: 65971.333333
24、 -十进制浮点数 43.6E-4 -十进制浮点数LOGO2022-5-12.283)标准数据类型位(BIT)型v取值只能是1或0;位值的表示方法是:0或1;v位数据类型的数据对象,如变量、信号等,可以参与逻辑运算,运算结果仍是位的数据类型。vVHDL综合器用一个二进制位表示BIT。 LOGO2022-5-12.294)标准数据类型位矢量(BIT_VECTOR)型v 位矢量是基于BIT数据类型的数组 STANDARD 程序包中BIT _VETOR类型定义如下: TYPE BIT _VETOR IS ARRAY(NATURAL RANGE)OF BIT;v 使用位矢量必须注明位宽-数组中的元素个数
25、和排列方向; 例如:SIGNAL ABIT_VECTOR(7 DOWNTO 0); 信号A被定义为一个具有8位位宽的矢量,它的最左位是A(7),最右位是A(0)。 例如:SIGNAL ABIT_VECTOR(0 TO 7); 信号A被定义为一个具有8位位宽的矢量,它的最左位是A(0),最右位是A(7)。v 位矢量的表示方法是:双引号括起来的一组位数据,如:“01100”或x“00bb”十六进制表示前加x。LOGO2022-5-12.305)标准数据类型布尔(BOOLEAN)型v定义布尔数据类型的源代码如下:vTYPE BOOLEAN IS(FALSE,TRUE);v取值有FALSE和TRUE两
展开阅读全文