VHDL设计初步(EVITA版).ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《VHDL设计初步(EVITA版).ppt》由会员分享,可在线阅读,更多相关《VHDL设计初步(EVITA版).ppt(247页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、VHDL 设计初步设计初步云南大学信息学院电子信息技术基础实验教学中心周克峰 谢戈 余江13声明信号 3.1外部信号与内部信号外部(external)信号把系统与外部环境连接起来,形成系统的接口(端口)。在 entity 中声明。内部(internal)信号对系统外部不可见,完全嵌入在系统内部,是内部结构的一部分,在内部电路之间提供信号。在 architecture 中声明。2entity.-外部信号声明 .end entity.architecture.-内部信号声明 .end architecture.33.2声明接口信号把系统与外部环境连接起来的信号,在VHDL中称为端口,定义在系统 e
2、ntity 部分的 port 子句中在 entity 内,每一个信号都定义为一个端口每一个信号都必须有一个唯一的信号名,以及一个类型port 还必须具有信号流方向的指示,即 mode43.3端口模式 mode5种:in、out、inout、buffer、linkagemode 应该明确声明,否则默认为 inVHDL中,每个端口都要指定一个适当的 mode语法:port_name:mode port_type所有端口用一个 port 子句,声明之间用分号(;)分隔。最后的一个没有分号。5entity.-外部信号声明 port(a,b,c:in Bit;DATA :in Bit_vector(0
3、to 7);RESULT :inout Bit_vector(0 to 7);z :in Bit;EXTBUS :out Bit_vector(4 downto 0);end entity.63.4内部信号声明与外部信号在 entity 中声明对应,内部信号在architecture 中描述必须在每个声明中使用 signal,与其它对象区分端口声明中 signal 不是必须的内部信号不需要 mode 声明7architecture.-内部信号声明 signal x,y :Bit;signal INTBUS:Bit_vector(0 to 4);.end architecture.83.5内部信
4、号的可见性信号的可见性(visibility)由声明的位置决定:1.package 中声明的,所有使用包的设计单元可见2.entity 中声明的,指定的 architecture 中可见3.architecture 中声明的,只对该结构可见4.结构内部的 block 中声明的,只对这个模块可见9Signal 104练习 1.一条 8 位的总线,用标准类型 byte 来表示。2.连接系统及其外部环境的信号定义为 port。3.总线宽度由定义中的位的顺序隐含地确定。4.对VHDL信号的前一个值进行检查是有可能的。5.在向量中定义的位顺序并不重要。114练习(续一)6.系统内部的信号在实体中声明为
5、generic,因为它们必须 generated(被产生)出来。7.内部信号声明包括对信号名、模式和类型的声明。8.信号可以定义为:信息的传输者。9.如果信号在包中声明,然后由一个实体使用,那么同样必须在这个实体的结构中使用 use 子句。10.电子设备(比如计算机)中唯一的信号就是电子信号。124练习(续二)11.实体中声明的信号,对所有指派给该实体的结构可见。12.总线与向量是同一概念的两种不同叫法。13.向量中位顺序的左边界必须始终小于右边界。14.每个端口必须指定一个端口模式。15.系统的所有信号都是在系统的实体中定义。13第 4 章系统接口规范141实体头部 1.1实体名称使用有意义
6、的、最能表示系统用来做什么的、名词短语用大、小写字母混合书写15标识符命名规则:必须在一行内写完必须以字母开始只能由字母、数字和下划线(_)组成不能以下划线开始或结束,也不能并排标识符中不能有空格不区分大、小写字母保留字不能用作标识符(包括特定名称在内)可以使用扩展标识符(由“”包围)16实体名举例:Counter_4Bit Mux_4_To_1 ALU UART_Transmit Receiver171.2VHDL中的注释没有文档、资料的设计不是好设计!以两个连字符(-)开始,到本行行尾结束可位于任何位置,但不能从标识符或保留字的中间开始1819201.3系统说明文档设计曾经是VHDL开发的
7、主要原因之一语言本身不需要,源自习惯性,良好风格,广泛接受以注释的形式编写位于VHDL文件的开始处没有“标准”,但有几个基本要素21221.4结束实体entity 框架的最后一部分是实体的结束以 end 语句结束建议在 end 子句后加上:entity 和/或实体名以一个分号(;)结束本行!232端口子句2.1端口的含义定义:用于一个模块(如一个实体)与其外部环境之间进行动态通讯动态通讯的通道。VHDL语言参考手册24端口组成部分:用 port 子句来定义可选的关键字 signal后面跟着一个逗号(,)的端口名端口模式(mode)端口的类型可选,对端口进行说明的注释可选,以“:=”符号为前导的
8、端口初始值25从例中可见:模式和类型相同的多个端口,可以在一条端口语句中声明,端口名之间用逗号(,)分隔多个端口声明可在同一条端口语句中完成,之间用分号(;)分隔port 子句中最后一个端口声明的后面,没有分号!262.2端口模式由数据流通过端口的方向来指定。in只接收数据。信号可读,写非法。完全综合out只发送数据。信号可写,读非法。完全综合inout双向端口。信号可读、写。完全综合buffer类似于 inout。但只能写。能综合linkage双向端口。严格的读写约束,几乎不用。27282.3建立端口说明适当的端口说明,与良好的端口描述一样重要。尤其是在系统层次化的描述中具有能对功能给出一些
9、提示性的名称行末注释给出端口的一些其他信息29不好的实体举例30良好的实体举例313类属子句3.1什么是类属定义:用于将要从一个模块的外部环境传递静态信息静态信息到该模块内的通道。VHDL语言参考手册32类属为不同的参数提供常量值,就象从系统的外部看到的一样。1.类属声明必须放在系统实体内2.类属常用来说明一个常量值3.实际中,可以用于时序参数、循环计数器33343.2generic 子句类属在实体的 generic 子句中定义,位于实体的 port 子句之前类属子句由 generic 关键字和一个圆括号括起来的类属列表组成与端口类似,类属列表中的各个类属项用分号(;)分隔35类属声明的组成:
10、后面跟着一个逗号(,)的类属名类属的类型可选,以“:=”为前导的类属值。如果此时没给出,则必须在元件例化中给出可选,对类属进行说明的注释3637383.3类属的应用(举例)类属可用于VHDL代码中的任何需要静态值的地方,强烈建议用类属和常量代替代码中的“硬编码”。Size数组、总线之类复合对象的大小、循环计数器,以及类似的应用Parameters电子设备描述中使用的任何时序参数,如:延迟、建立时间、保持时间、开关时间39类属应用举例:对象大小40类属应用举例2:循环计数器41类属应用举例3:时序参数423.4练习 1.实体名可以出现在结束实体的子句的后面。2.一个端口必定要么是输入端口,要么是
11、输出端口。3.类属代码在仿真期间可以做动态地改变。4.注释以双连字符号(-)开始和结束。5.端口是实体与外部环境之间的静态通讯连接。433.4练习(续一)6.端口模式指定了通过该端口的数据流的方向。7.类属支持从实体外部环境输入静态值到实体中。8.VHDL是对大小写敏感的语言。9.类属可用于同一实体中的端口声明(比如:总线宽度)。10.在VHDL中没有标识符可以含有空格。443.4练习(续二)11.对每个类属都必须指定一个适当的模式。12.实体可以用“end;”子句来结束。13.端口就是信号。14.在行尾用注释对每个端口作出说明是VHDL语言标准要求的。15.VHDL允许定义端口的初始值。45
12、第 5 章描述系统行为的VHDL概念461内容简介1.VHDL的基本数据类型2.改变输入(的)信号值的概念3.信号赋值4.常量472非逻辑型的数据类型2.1引言数字系统内部信息、数据的存储、传输、处理形式Bit、Bit_vector表示单个字符,8个二进制位表示存储器地址,至少20个二进制位(MB)48位阵列:按字节(byte)或字(word)地址译码器:十六进制0 x000 x3FF控制逻辑:存取时间10 ns(100 MHz)49标量(类)型(scalar)枚举(类)型(enumeration)物理(类)型(physical)复合(类)型(complex)文件类型(file)存取类型(ac
13、cess)502.2标量类型总称,指的是:那些在任何时刻(瞬间)只具有单一数据值(single value)的数据类型所有的标量值都是有顺序的不是指定在一个范围之间,就是枚举列出51Boolean 类型类型FalseTrue与逻辑类型 Bit 是两个完全不同的类型False/True 不等于 0/1 52Character 类型ISO 8859-1(Latin-1)8位字符集192个字符0、+、A、5354Integer 类型 数值范围取决于具体实现(implementation)必须涵盖:-2147483647 to 2147483647 实际中,一般限定为完成类型的某个子集-12、0、21
14、47483646、-100、1655Real 类型(浮点类型,Floating Point)同样依赖于具体实现数据值用一个范围来定义(能实现的最小者)精度:能实现(十进制数)小数后6位0.0、1.000001、-1.0E556枚举枚举 类型用列表的方式把用到的数据值一一列出57582.3用户定义的枚举类型type FSMStates is(Idle,Fetch,Decode,Execute);59使用枚举需要注意:枚举类型声明中的值,必须“原模原样”一一列出,不能有省略号、双引号!602.4物理类型VHDL中的特有,如:时间、间隔、电流、温度不仅给出对象的值,而且后面还有单位VHDL中只预定义
15、了 time描述性极强,但却不可综合描述性极强,但却不可综合61622.5预定义数组复合类型之一必须由类型相同的元素组成的、有规则的一种结构VHDL预定义数组:Bit_vector(元素类型为Bit)String(元素类型为Charactor)63数组中元素的数量由数组的范围指定由左、右边界以及边界之间下标的方向表示无限范围,range type Real_Matrix_1 is array(POSITIVE range)of REAL;有限范围,(1 to 10)type Real_Matrix_2 is array(1 to 10)of REAL;对数组元素使用下标方式引用64type M
16、y_DATA_BUS is array(7 downto 0)of Bit;Signal DataBus:My_DATA_BUS;Signal DataBus:Bit_vector(7 downto 0);65数组元素定义时,单个的用单引号,多个的用双引号662.6用户定义数组VHDL中,用户可以用任意的维数来声明一个数组。但是,超过三维的数组就变得不具可读性。二维数组的定义:signal name:array(d1,d2)of elemtype;-d1:维数1的下标范围,d2:维数2的下标范围67数组典型应用表示存储器(“向量之向量”)682.7记录复合类型之一可以由类型不同的元素组成的、有
17、规则的一种结构记录中的元素按名称引用(不按下标)record_name.element_name69703表达式与运算符3.1简介表达式用于对输入信号进行一定的变换以产生输出信号表达式是由运算符及相应数目的操作数组成的公式运算符要求类型匹配的操作数,否则非法系统行为描述可看作是表达式的有序集合713.2逻辑运算符and、or、nand、nor、xor、xnornot操作数:类型相同的 Bit、Bit_vector、Boolean结果:与操作数类型相同723.3数值运算符+、-、*、/、mod、rem、*、abs操作数:类型相同的 Integer、Real(*:第二操作数必须是Integer)对
18、 time 类型:+、-两个数都要是 timetime值可“*”Integer或Real,或“/”Integer结果均是 time73747576773.4关系运算符=、/=、=操作数:相同类型的Boolean、Bit、Bit_vector、Character、Integer、Real、Time、String结果:总是 Boolean向量比较时的长度问题(左边第一位起)783.5移位运算符逻辑:SLL(左移)、SRL(右移)算术:SLA(左移)、SRA(右移)循环:ROL(左移)、ROR(右移)操作数:一维数组(向量)、Bit、Boolean结果:与操作数相同SLL-n SRL n、ROR-n
19、 ROL n79803.6串联运算符(连接)&操作数:任意类型的一维数组、单个的值结果:与操作数相同,长度相加结果中的元素从左操作数开始,总长度与声明同81824直接信号赋值4.1信号赋值表达式目标信号=赋值表达式赋值符号总是从右边指向左边!83x=y=z;-a=b or c;-k=1;-m=“0101”;-n=m&k;-844.2可延迟的赋值after子句可附加到所有信号赋值语句中赋值生效前必须经过一定的时间量85864.3惯性延迟inertial delay默认的延迟模型,after子句自动设置模型特性:若输入连续变化的时间间隔小于延迟时间,则该输入变化将被忽略87888990914.4传
20、输延迟transport加在信号值和after子句的前面模型特性:输入信号连续两次变化之间的时间间隔,不影响系统的响应92939495964.5两种模型比较惯性延迟不需要声明,传输延迟需要transport惯性延迟忽略比延迟短的脉冲,传输延迟传递所有变化两者都用after来定义延迟两者都可用于任何类型的信号9798991005常量5.1声明常量通常,在结构中声明constant关键字常量名常量的类型声明在“:=”符号之后指定的常量值结束本行的分号(;)1011025.2常量的使用主要目的:代替“硬编码”使用方法:与类属相同复杂对象的大小,如:数组、总线控制循环计数器指定时序参数10310410
21、55.3常量与类属比较两者都传递静态信息,但类属可以动态使用,常量则不行两者在多个结构的情况下,值改变的影响范围不同声明位置及形式不同:类属在实体中,可以使用列表;常量一般在结构中,每个常量一个声明(多个constant)可见性上不同(由声明的位置决定)1066练习1.整个向量的值要写在双引号中,而向量片段(slice)的值则要写在单引号中。2.信号赋值的符号根据设计人员的需要不是指向左边就是指向右边()。3.常量可以用在表达式中。4.有限状态机的状态集合通常声明为一个枚举类型。5.数组的所有元素必须是相同的类型。1076练习(续一)6.一个实数乘以一个整数的乘法在VHDL中是允许的。7.若信
22、号线上的脉冲比延迟时间宽,则惯性延迟模型与传输延迟模型都将正确地给出相同的结果。8.标量类型不是用范围来定义,就是用它们的元素枚举来定义。9.如果新值与旧值相等,那么常量就可以被赋以这个新值。10.Boolean值True等价于Bit值1。1086练习(续二)11.声明常量时,指定其值就足够了,因为它的类型由这个值隐含决定。12.如果物理类型是标准的time类型,则其值是可综合的。13.运算符始终为特定的类型而定义。14.惯性延迟是VHDL中的默认延迟模式。15.逻辑运算符只能应用于单个的位。109第 6 章用过程来指定行为110过程(process)是什么?它如何定义和执行?l过程的概念以及
23、如何描述它的行为l过程执行与程序执行的区别lVHDL中第二个重要的对象变量(variable),及与信号的差别l改变过程执行顺序的方法条件、分支、循环1111过程简介1.1行为描述行为:把输入数据变换成输出结果的活动 行为描述:对输入数据如何变换成输出结果这一系统行为的描述 112所以,行为描述是指:为了得到预期的结果而必须被执行的一系列操作。1131.2什么是过程?在为设计描述建立程序的同时,也给出了要一步一步完成、或者说要顺序完成的一系列动作。过程就是建立此类一系列顺序操作的形式方法(格式是非常有结构)1141.3过程的结构name:process(sensitivity list)dec
24、larationsbegin sequential statementsend process name;115过程结构举例:MUX2TO1:process(A,B,SEL)constant High:Bit:=1;begin Y=A;if(SEL=1)then Y .;when choices_2=.;.when others=.;end case;149case 语句的使用:条件是一个值为离散型的表达式(任意的枚举或整数类型),或者是一个一维数组 每个可选的动作分组由 when choices=子句引导。其中的 choices 字段指出条件表达式的可能值,这些值可以是单个的值、值的范围或其
25、它可能的事物。但是,它们之间不能互相重叠但是,它们之间不能互相重叠。150ProgrGate:process(Mode,PrGIn1,PrGIn2)begin case Mode is when“000”=PrGOut PrGOut PrGOut PrGOut PrGOut PrGOut PrGOut=0;end case;end process ProgrGate;1524.5条件循环只要开始处的条件为 true,循环就不断地反复执行(在最后一条语句完成后跳转到循环开头)while condition loop .;.;end loop;首先检测条件,若为 true 就执行循环内的语句;若为
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VHDL 设计 初步 EVITA
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内