欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    VHDL结构及语言要素.ppt

    • 资源ID:5452202       资源大小:345KB        全文页数:58页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    VHDL结构及语言要素.ppt

    -邹云海-,1,第九讲 VHDL结构及语言要素(1),文字规则数据对象数据类型操作符,2006-10,2,一.VHDL文字规则1、数字型文字(1)整数文字:十进制整数 如:5,678,156E2(=15600),45_234_287(=45234287)(2)实数文字:带小数的十进制数 如:23.34,2.0,44.99E-2(=0.4499)88_67_551.23_909(8867551.23909)注:_用以提高数字可读性;数字间不允许空格,2006-10,3,(3)以数制基数表示的文字 格式:基数#数字文字#E指数(5部分组成)如:10#170#(=170)2#1111_1110#(=254)16#E#E1(=2#1110_0000#=224)或:(=1416=224)16#F.01#E+2(=(15+1/(16 16)16 16=3841.00),2006-10,4,(4)物理量文字 如:60 s、100 m、177 A 注:整数可综合实现;实数一般不可综合实现;物理量不可综合实现;,2006-10,5,2、字符串型文字 按字符个数多少分为:字符:用单引号引起来的ASCII字符,可以是 数值,也可以是符号或字母。如:A,*,Z 字符串:用双引号引起来的一维字符数组,2006-10,6,字符串分为:(1)文字字符串:“文字”如:“ERROR”,“XXXXXXXX”,“ZZZZZZZZ”,“X”,“BOTH S AND Q EQUAL TO L”,,2006-10,7,(2)数位字符串:(由双引号引起来的数字序列)称为位矢量,代表二进制、八进制、十六进 制的数组。其位矢量的长度为等值的二进制数的 位数。格式:其中基数符号有三种:B:二进制基数符号。O:八进制基数符号,每一个八进制数一个 3位的二进制数。X:十六进制基数符号,每一个十六进制数 代表 一个4位的二进制数。,基数符号“数值”,B“1_1101_1110”二进制数数组,长度为9 O“34”八进制数数组,长度为6 X“1AB”十六进制数数组,长度为12,2006-10,8,3、标识符 定义常数、变量、信号、端口、子程序或 参数的名字。基本标识符的要求(87标准):以英文字母开头;不连续使用下划线“_”;不以下划线“_”结尾;由26个大小写英文字母、数字09及 下划线“_”组成的字符串。,2006-10,9,基本标识符中的英文字母不分大小写;VHDL的保留字不能作为标识符使用。合法标识符如下:my_counter、Decoder_1、FFT、Sig_N、Not_Ack、State0,非法标识符如下:_Decoder_1、2FFT、Sig_#N、Not-Ack、ALL_RST_、data_BUS、return、entity,2006-10,10,扩展标识符(93标准):以反斜杠来界定,免去了87标准中基本标识符的一些限制。使描述更加直观、方便 可以以数字打头,允许包含图形符号,允许使用VHDL保留字,区分字母大小写等。如:74LS163、Sig_#N、entity、ENTITY,有些VHDL工具并不支持扩展标识符,2006-10,11,4、下标名及下标段名 下标名:用于指示数组型变量或信号的某一个 元素。格式:标识符(表达式)下标段名(段名):用于指示数组型变量或信号的某一 段元素。格式:标识符(表达式 to/downto 表达式)to:下标序列由低到高;downto:下标序列由高到低如:a:std_logic_vector(7 downto 0)a(7),a(6)a(0)a(7 downto 0),a(7 downto 4),a(5 downto 3),2006-10,12,5.注释用以提高程序可读性以-开头,直至本行结尾注释在程序段中以特征颜色标记显示,不参与程序编译如:-定义了器件的端口名称及类型,2006-10,13,二.数据对象(page59-unit4.2)三种对象:常量(Constant)变量(Variable)信号(Signal)三种对象的物理含义:常量代表数字电路中的电源、地、恒定逻辑值等常数;变量代表暂存某些值的载体,常用于描述算法;信号代表物理设计中的某一条硬件连接线,包括输入、输出端口。,2006-10,14,三种对象的特点及说明场合:信号:全局量,可设置传输延迟,作模块间的信息载体。用于architecture、package、entitiy。变量:局部量,不可设置传输延迟,最后靠信号传递信息。用于process、function、procedure。常量:全局量,可用于上面两种场合。使实体中某些量易于修改和阅读。,2006-10,15,1、常量说明常量说明:对某一个常量名赋予一个固定的值。格式:例:constant data:bit_vector(3 downto 0):=“1010”constant width:integer:=8;constant x:new_bit:=x;常量数据类型必须与表达式的数据类型一致。,constant 常数名:数据类型:=表达式;,2006-10,16,常量的可视性(作用范围):,库、程序包,实体(Entity),结构体1,进 程1,结构体2,进 程2,常量是全局量,其作用范围取决于常量被定义的位置。,2006-10,17,2、变量说明 变量是一个局部量,只能在进程和子程序中定义、使用。其作用范围仅限于定义了变量的进程和子程序中。定义变量格式:例:variable a,b:bit;variable count:integer range 0 to 255:=10;变量的初值可用于仿真,但综合时被忽略。变量赋值语句格式:目标变量名:=表达式如:a:=1;b:=not a;,variable 变量名:数据类型:=初始值;,2006-10,18,3、信号说明 电子硬件系统运行的基本特性:各部分电路工作的并行特性;信号传输过程中的延时特性;多驱动源的总线特性;时序电路中触发器的记忆特性等。信号是电子系统内部硬件连接和硬件特性的抽象表示。用来描述硬件系统的基本特性。信号定义格式:信号赋值格式:目标信号名=表达式;,signal 信号名:数据类型 约束条件:表达式;,2006-10,19,例:signal a,b:bit;signal init:integer:=-1;signal s1:std_logic:=0;signal s2:std_logic_vector(15 downto 0);注:a.综合时初值被忽略。b.信号是全局量。可在结构体、实体、块中说明和使用信号。可容纳当前值,也可保留历史值(对应触发器的记忆功能)c.在进程和子程序中只能使用信号,不能说明(定义)信号。,2006-10,20,例:进程中信号与变量的使用,2006-10,21,信号与端口的区别:除没有方向说明外,信号与 实体的“端口(PORT)”概念相似。端口是一种隐形的信号。entity exam is port(signal a,b:in std_logic;signal c:out std_logic);end entity exam;端口是一种有方向的信号。即输出端口不能读出数据,只能写入数据;输入端口不能写入数据,只能读出数据。信号本身无方向,可读可写。,2006-10,22,三.VHDL数据类型(page65unit4.3)VHDL是一种强数据类型语言。要求设计实体中的每一个常数、信号、变量、函数以及设定的各种参量都必须具有确定的数据类型,并且相同数据类型的量才能互相传递和作用。VHDL数据类型分为四大类:标量类型(SCALAR TYPE)复合类型(COMPOSITE TYPE)存取类型(ACCESS TYPE)文件类型(FILES TYPE),2006-10,23,数据类型又分为:预定义数据类型 用户自定义数据类型1、VHDL的预定义数据类型1)布尔量(boolean)布尔量具有两种状态:false 和 true 常用于逻辑函数,如相等(=)、比较()等中作逻辑比较。只能参与关系运算,无算术运算。如:bit 值转化成boolean 值:boolean_var:=(bit_var=1);,2006-10,24,2)位(bit)bit 表示一位的信号值。放在单引号中,如 0 或 1。3)位矢量(bit_vector)使用时需注明位宽 bit_vector 是用双引号括起来的一组位数据。如:“001100”X“00B10B”4)字符(character)用单引号将字符括起来。variable character_var:character;.Character_var:=A;,2006-10,25,5)整数(integer)integer 表示所有正的和负的整数。硬件实现时,利用32位的位矢量来表示。可实现的整数范围为:-(231-1)to(231-1)VHDL综合器要求对具体的整数作出范围限定,否则无法综合成硬件电路。如:signal s:integer range 0 to 15;使用range子句,从而确定综合后的二进制位数 信号 s 的取值范围是015,可用4位二进制数表示,因此 s 将被综合成由四条信号线构成的信号。,2006-10,26,6)自然数(natural)和正整数(positive)natural 是 integer类型的子类型,表示非负整数。positive 是 integer 类型的子类型,表示正整数。定义如下:subtype natural is integer range 0 to integerhigh;subtype positive is integer range 1 to integerhigh;,2006-10,27,7)实数(REAL)或称浮点数 取值范围:-1.0E38+1.0E38 实数类型仅能用于VHDL仿真器,一般综合器不支持。8)字符串(string)string 是 character 类型的一个非限定数组。用双引号将一串字符括起来。如:variable string_var:string(1 to 7);string_var:=“Rosebud”;,2006-10,28,9)时间(TIME)由整数和物理单位组成 如:55 ms,20 ns10)错误等级(SEVERITY_LEVEL)仿真中用来指示系统的工作状态,共有四种:NOTE(注意)WARNING(警告)ERROR(出错)FAILURE(失败),2006-10,29,2、IEEE预定义标准逻辑位与矢量1)std_logic 类型 是标准bit数据类型的扩展 由 ieee 库中的std_logic_1164 程序包定义,为9值逻辑系统,如下:(U,X,0,1,Z,W,L,H,-)U:未初始化的,X:强未知的,0:强0,1:强1,Z:高阻态,W:弱未知的,L:弱0,H:弱1,-:忽略 use ieee.std_logic_1164.all;,2006-10,30,由 std_logic 类型代替 bit 类型可以完成电子系统的精确模拟,并可实现常见的三态总线电路。2)std_logic_vector 类型 极大方便了总线描述 由 std_logic 构成的数组。定义如下:type std_logic_vector is array(natural range)of std_logic;赋值的原则:相同位宽,相同数据类型。Example:程序4-5,2006-10,31,3、其它预定义标准数据类型,Synopsys公司程序包 STD_LOGIC_ARITH中:1)无符号型(UNSIGNED)定义如下:type unsigned is array(natural range)of std_logic;UNSIGNED(“1000”)=8 最左位是最高位:variable var:unsigned(0 to 10);var(0)是最高位 signal sig:unsigned(5 downto 0);sig(5)是最高位 Use;,2006-10,32,2)有符号型(SIGNED)定义如下:type signed is array(natural range)of std_logic;最高位为符号位,综合器认作补码。SIGNED(“0101”)=5,SIGNED(“1011”)=-5 variable var:signed(0 to 10);var(0)是符号位3)小整型(SMALL_INT):0 TO 1,2006-10,33,4、用户自定义类型 用户自定义类型是VHDL语言的一大特色。可由用户定义的数据类型有:(1)枚举类型;(2)整数和实数类型;(3)数组类型;(4)记录类型;(5)子类型.,2006-10,34,用类型定义语句TYPE和子类型定义语句SUBTYPE实现用户自定义数据类型。TYPE语句格式:type 数据类型名 is 数据类型定义 of 基本数据类型;例:type byte is array(7 downto 0)of bit;variable addend:byte;type week is(sun,mon,tue,wed,thu,fri,sat);,2006-10,35,SUBTYPE语句格式:subtype 子类型名 is 基本数据类型 range 约束范围;例:subtype digits is integer range 0 to 9;由subtype 语句定义的数据类型称为子类型。,2006-10,36,TYPE byt IS STD_LOGIC(15 downto 0);SUBTYPE dig3 IS ARRAY(7 downto 0)ofSTD_LOGIC;,ERROR!TYPE定义的数据类型应该是全新的,即VHDL预定义库中未被定义过的数据类型,这里的STD_LOGIC已经被定义成标准位了。,ERROR!子类型的定义只在基本数据类型上做一些约束,并没有定义新的数据类型,这是与TYPE最大的不同。,2006-10,37,1)枚举类型(page74)枚举该类型的所有可能的值。格式:,type 类型名称 is(枚举文字,枚举文字);,2006-10,38,枚举类型的编码(page74 para3)综合器自动实现枚举类型元素的编码,一般将第一个枚举量(最左边)编码为0,以后的依次加1。编码用位矢量表示,位矢量的长度将取所需表达的所有枚举元素的最小值。如:type color is(blue,green,yellow,red);编码为:blue=“00”;green=“01”;yellow=“10”;red=“11”;,2006-10,39,2)整数类型 用户定义的整数类型是标准包中整数类型的子范围。格式:例:type my_integer is integer range 0 to 9;3)数组类型 数组:同类型元素的集合。VHDL支持多维数组。多维数组的声明:type byte is array(7 downto 0)of bit;type vector is array(3 downto 0)of byte;限定数组、非限定数组、属性:,type 类型名称 is range 整数范围;,2006-10,40,限定数组:其索引范围有一定的限制。格式:非限定数组:数组索引范围被定义成一个类型范围。格式:例:type bit_vector is array(integer range)of bit;variable my_vector:bit_vector(5 downto-5);,type 数组名 is array(数组范围)of 数据类型,type 数组名 is array(类型名称 range)of 数据类型,2006-10,41,属性(page122)VHDL为多种类型定义了属性。语法如下:对象属性 VHDL为数组预先定义的属性:left right high low length range reverse_range,2006-10,42,对应变量:variable my_vector:bit_vector(5 downto-5);各属性如下:my_vectorleft 5 my_vectorright-5 my_vectorhigh 5 my_vectorlow-5 my_vectorlength 11 my_vectorrange(5 downto-5)my_vectorreverse_range(-5 to 5),2006-10,43,4)记录类型 记录是不同类型的名称域的集合。格式如下:访问记录体元素的方式:记录体名.元素名,type 记录类型名 is record 元素名:数据类型名;元素名:数据类型名;end record;,2006-10,44,例:constant len:integer:=8;subtype byte_vec is bit_vector(len-1 downto 0);type byte_and_ix is record byte:byte_vec;ix:integer range 0 to len;end record;signal x,y,z:byte_and_ix;signal data:byte_vec;signal num:integer;.x.byte=“11110000”;x.ix=2;data=y.byte;num=y.ix;z=x;,2006-10,45,5)子类型 子类型是已定义的类型或子类型的一个子集。格式:例:bit_vector 类型定义如下:type bit_vector is array(natural range)of bit;如设计中只用16bit;可定义子类型如下:subtype my_vector is bit_vector(0 to 15);注:子类型与基(父)类型具有相同的操作符和子 程序。可以直接进行赋值操作。,subtype 子类型名 is 数据类型名范围;,2006-10,46,5、数据类型转换()VHDL是一种强类型语言,不同类型的数据对象必须经过类型转换,才能相互操作。1)类型转换函数方式 通过调用类型转换函数,使相互操作的数据对象的类型一致,从而完成相互操作。,2006-10,47,2006-10,48,2)直接类型转换方式 对相互间非常关联的数据类型(如整型、浮点型),可进行直接类型转换。格式:数据类型标识符(表达式)如:variable a,b:real;variable c,d:integer;a:=real(c);d:=integer(b);,2006-10,49,四.VHDL中的表达式(page83)表达式:由操作符和操作数构成,完成算术或 逻辑运算。1、操作符 VHDL操作符的分类:逻辑操作符(Logical Operator)、关系操作符(Relational Operator)、算术操作符(Arithmetic Operator)、符号操作符(Sign Operator)、重载操作符(Overloading Operator),2006-10,50,1)逻辑操作符 6种:and、or、nand、nor、xor、not要求:操作数类型必须相同。可为如下类型:bit、bit_vector、std_logic、std_logic_vector、boolean 数组操作数的维数、大小必须相同。注:当有两个以上的逻辑表达式时,左右没有优先 级差别,必须使用括号,如:x=(a and b)or(not c and d);例外:当逻辑表达式中只有“and”、“or”、“xor”运算符时,可以省略括号。如:,2006-10,51,a、=用于比较相同父类的两个操作数,返回boolean值。,2006-10,52,3)加减操作符 加操作符“+”、减操作符“-”、串联(并置)操作符“&”串联操作符“&”通过连接操作数来建立新的数组。操作数可以是一个数组或数组中的一个元素。例:signal a,d:bit_vector(3 downto);signal b,c,g:bit_vector(1 downto 0);signal e:bit_vector(2 downto 0);signal f,h,i:bit;a=not b&not c;-array&array d=not e&not f;-array&element g=not h&not i;-element&element,2006-10,53,4)一元操作符 仅有一个操作数的操作符。包括:“+”、“-”5)乘除操作符 用于整数类型:“*”、“/”、“mod”、“rem”综合的限制:“/”、“mod”、“rem”三种操作符的右操作数必须为 2的正整数次幂,即 2n。实际电路用移位实现。,2006-10,54,2、操作数 操作数:操作符进行运算时所需的数据。操作数的种类:标志符;集合;属性;表达式;函数 调用;索引名;文字;限定表达式;记录和域;片段名;类型转换,2006-10,55,3、重载操作符 VHDL是强类型语言,相同类型的操作数才能进行操作。VHDL自身定义的算术和布尔函数仅对内部数据类型(standard 程序包中的数据类型)有效。即:算术运算符+,-,=仅对integer类型有效。逻辑运算符AND,OR,NOT仅对 bit 类型有效。如:variable a,b,c:integer;variable x,y,z:bit;c:=a+b;z:=x and y;问题:a,b,c 与 x,y,z 之间,或与 std_logic 等其它数据类型之间能否相互操作?,2006-10,56,重载操作符定义:对已存在的操作符重新定义,使其能进行不同类型操作数之间的运算,称为重载操作符。定义重载操作符的函数称为重载函数。重载操作符由原操作符加双引号表示。如“+”重载操作符的定义见 IEEE 库的程序包:std_logic_arith、std_logic_unsigned、std_logic_signed,2006-10,57,2006-10,58,重载操作符的使用:,

    注意事项

    本文(VHDL结构及语言要素.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开