欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    硬件描述语言VHDL概述硬件描述语言VHDL概述ppt课件.ppt

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

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

    硬件描述语言VHDL概述硬件描述语言VHDL概述ppt课件.ppt

    硬件描述语言VHDL概述,硬件描述语言VHDL概述,VHDL基本结构,数据对象、类型及运算符,顺序语句、并行语句,子程序,程序包与设计库,硬件描述语言VHDL概述,HDL最早是Iverson公司于1962年提出,到上世纪80年代被各个ASIC芯片厂商广泛采用。1982年各ASIC芯片厂商相继开发出自己的HDL。如Silvar-lisco公司的HHDL、Zycad公司的ISP、Gateway Design Automation(现改为Cadence Design System)公司的Verilog等等。另外,还有许多一些高等院校及科研机构也开发了许多版本的HDL,有名的有美国国防部开发的VHDL(VHSIC HDL)、日本电子工业振兴协会的UDL/I等。,硬件描述语言(Hardware Description Language,HDL),为了标准化HDL,1987年底,IEEE确认美国国防部开发的VHDL为标准硬件描述语言(IEEE-1076)。之后,各EDA公司研制的硬件电路设计工具逐渐向VHDL靠拢。1993年,IEEE对VHDL进行了修订,公布了新版本的VHDL(即IEEE-107-1993)。现在VHDL和Verilog作为IEEE的两个标准。,硬件描述语言VHDL概述,VHDL语言是美国国防部在20世纪80年代初为实现其高速集成电路计划(Very High Speed Integrated Circuit,VHSIC)而提出的硬件描述语言(Hardware Description Language,HDL),称为VHDL。,VHDL的主要优点是:,1.覆盖面广,描述能力强,是一个多层次的硬件描述语言。,2.VHDL有良好的可读性,即可以被计算机接受,也容易被理解。,3. 生命期长。VHDL的硬件描述与工艺技术无关,不会因工艺变化而使描述过时。与工艺技术有关的参数可通过VHDL提供的属性加以描述,工艺改变时,只需修改相应程序中的属性参数即可。,硬件描述语言VHDL概述,4.支持大规模设计的分解和已有设计的再利用,一个大规模设计不可能一个人独立完成,它将由多人,多项目组来共同完成。VHDL为设计的分解和设计的再利用提供了有力的支持。,5.VHDL已成为IEEE承认的一个工业标准,事实上已成为通用硬件描述语言。目前,大多数的EDA工具几乎在不同程度上都支持VHDL,这样给VHDL的进一步推广和应用创造了良好的环境。,6.VHDL可以支持自上而下(Top Down)和基于库(Library-Based)的设计方法,而且还支持同步电路、异步电路、FPGA等的设计。其范围之广是其它HDL所不能比拟的。,硬件描述语言VHDL概述- 一、,一、 VHDL基本结构,先看一个程序例子: 设计一个3-8译码器,1.参数部分库、程序包、配置,2.接口部分实体说明,硬件描述语言VHDL概述- 一、,architecture behavior of dec is begin process(sel,en) begin yy(0)y(1)y(2)y(3)y(4)y(5)y(6)y(7)NULL; end case; end if; end process; end behavior;,3.描述部分结构体,硬件描述语言VHDL概述- 一、,VHDL语言把任意复杂的一个系统看成为一个模块。,一个模块可主要分为三个组成部分: 1.参数部分库、程序包、配置 2.接口部分实体说明 3.描述部分结构体,或者说一个VHDL程序总是包含三个部分: 1.参数部分库、程序包、配置 2.接口部分实体说明 3.描述部分结构体,硬件描述语言VHDL概述- 一、,一个VHDL程序的前面部分总是有语句:,有关库、程序包、配置的作用及使用方法在后面讲述。,LIBRARY ieee; 使用IEEE标准库 USE ieee.std_logic_1164.all; 打开一个程序包 (程序包名为ieee.std_logic_1164.all),有些程序还需要加以下语句: USE ieee.std_logic_arith.all; USE ieee.std_logic_unsigned.all;,硬件描述语言VHDL概述- 一、,数字系统中的基本单元,在VHDL中称做设计实体(design entity)。一个基本设计单元,简单的可以是一个门,复杂一点的可以是一个微处理器、一块印刷电路板上所有电路或者是整个数字系统。,设计实体由两部分组成:实体说明和结构体。,实体说明规定了设计单元的输入输出接口信号或引脚。 结构体定义了设计单元的具体构造和操作(行为)。,硬件描述语言VHDL概述- 一、,基本格式:,1.1 实体说明,方括弧内可有可无,硬件描述语言VHDL概述- 一、,1.类属参数说明,类属参数说明必须放在端口说明之前,用于为设计实体和其外部环境通信的静态信息提供通道,可以定义端口的大小、实体中子元件的数目、实体的定时特性等。,例: GENERIC (m: Time:=1 ns);,该语句指定了结构体内的m为Time类型,其值为ns。,若随后的结构体内有语句:,q= tmp after m;,则表示tmp送入q有一个延迟时间1ns。,硬件描述语言VHDL概述- 一、,2.端口说明,端口说明用于为设计实体和其外部环境的动态通信提供通道。也可以说是对外部引脚信号的名称、数据类型、输入输出方向的描述。,一般书写格式为:,1)端口名,端口名是赋予每个外部引脚的名称,通常用一个或几个英文字母,或者用英文字母加数字命名。,硬件描述语言VHDL概述- 一、,端口方向用来定义外部引脚的信号方向是输入还是输出。,2)端口方向,注意:“OUT”和“BUFFER”都可以定义输出端口,但它们之间是有区别的。,硬件描述语言VHDL概述- 一、,在VHDL语言中有10中数据类型,但是在逻辑电路设计中只用到两种:BIT和BIT_VECTOR。,3)数据类型,BIT数据类型是位逻辑数据类型,其取值只能是两个逻辑值(“1”和“0”)中的一个。,BIT_VECTOR数据类型是位数组逻辑数据类型,其取值是一组二进制位的值。,硬件描述语言VHDL概述- 一、,基本格式:,1.2 结构体,该结构体唯一的名称,缺省为behavioral,该结构体对应的实体,方括弧内可有可无,硬件描述语言VHDL概述- 一、,1.结构体名称的命名,结构体名称是对本结构体的命名,它是该结构体的唯一名称。OF后面紧跟的实体名表明了该结构体所对应的是哪一个实体。用IS来结束结构体的命名。,结构体的名称可以自由命名。但在大多数时候,通常把结构体的名称命名为behavioral(行为)、dataflow(数据流)或者structural(结构)。表示结构体的3种描述方式。,2.说明语句,定义语句位于ARCHITECTURE和BEGIN之间,用于对结构体内部所使用的信号、常数、数据类型和函数进行定义。,硬件描述语言VHDL概述- 一、,3.并行语句,并行语句处于语句BEGIN和END之间,具体描述了本结构体的行为(功能)及其连接关系(内部结构)。,并行语句的描述方式有4种:,1)算法描述。 2)数据流描述。 3)结构描述。 4)混合描述。,属行为描述(功能描述),也属行为描述(功能描述),描述内部结构,兼有功能描述和内部结构描述,硬件描述语言VHDL概述- 一、,1)算法描述(也有称为“行为描述”方式),算法描述属行为描述。是描述方式中较容易接受的。完全把硬件的设计软件化了。 行为描述表示输入与输出间转换的行为。无需包含任何结构信息。,硬件描述语言VHDL概述- 一、,算法描述如下:,ARCHITECTURE behavior OF reg IS BEGIN process (ck, reset, preset) begin if reset=0 then q=0; elsif preset=0 then q=1; elsif ckevent and ck=1 then q=d; end if; end process; END behavior;,process为进程语句,括号内信号是进程的激活条件。,进程常用来描述实体或其内部部分硬件的行为。,硬件描述语言VHDL概述- 一、,2)数据流描述(也有称为“寄存器传输描述”方式),数据流描述表示行为,也隐含表示结构。它反映从输入数据到输出数据之间所发生的逻辑变换。,ENTITY mux IS PORT (d0,d1: IN BIT; sel: IN BIT; q: OUT BIT); END mux; ARCHITECTURE dataflow OF mux IS BEGIN q=(d0 AND sel) OR (NOT sel AND d1); END dataflow;,硬件描述语言VHDL概述- 一、,3)结构描述,结构描述给出实体内部结构,即所包含的模块或元件及其互连关系以及与实体外部引线的对应关系。,和: s=a xor b,进位:c=a and b,硬件描述语言VHDL概述- 一、,半加器的描述如下:,ARCHITECTURE struct_ha OF half_adder IS COMPONENT and_gate PORT(a1,a2: IN Bit;a3: OUT Bit); END COMPONENT; COMPONENT xor_gate PORT(x1,x2: IN Bit;x3: OUT Bit); END COMPONENT; BEGIN g1: and_gate PORT MAP(a,b,c); g2: xor_gate PORT MAP(a,b,s); END struct_ha;,程序中COMPONENT 为元件说明语句,说明元件的名称及端口特性。该结构体中由两条并行的元件例化(引用)语句组成。 PORT MAP为端口映射,指明所含元件之间以及元件与实体端口之间的连接关系。被例化的元件称为例元(and_gate和xor_gate)。,硬件描述语言VHDL概述- 一、,4)混合描述,在一个结构体中,行为描述与结构描述可以混合使用。即元件例化语句可与其他并行语句共处于同一个结构体内。,ARCHITECTURE struct_ha OF half_adder IS COMPONENT and_gate PORT(a1,a2: IN Bit;a3: OUT Bit); END COMPONENT; BEGIN s= a XOR b; g1: and_gate PORT MAP(a,b,c); END struct_ha;,硬件描述语言VHDL概述- 二、,二、 数据对象、类型及运算符,2.1 对象类别与定义,在VHDL语言中,有四类对象: 1)CONSTANT(常量),可用于定义延迟、功耗、电源(即5V)、地(0V)等参数。只能进行一次赋值。 2)VARIABLE(变量),常用于高层次抽象的算法描述中。可多次赋值。 3)SIGNAL(信号),对应某一条硬件连线,可多次赋值。 4)FILE(文件),相当于文件指针,用于对文件的读写操作。(很少用到),硬件描述语言VHDL概述- 二、,1.常量(CONSTANT),常量是一个固定值。所谓常量说明就是对某一常量名赋予一个固定值。通常赋值在程序开始前进行,该值的数据类型则在说明语句中指明。一般格式如下:,CONSTANT 常量名: 数据类型: =表达式;,硬件描述语言VHDL概述- 二、,2.变量(VARIABLE),变量只能在进程语句、函数语句和过程语句结构中使用,它是一个局部量。在仿真过程中,变量的赋值是立即生效。一般格式如下:,VARIABLE 变量名: 数据类型: 约束条件:=初始值;,方括弧内可有可无,硬件描述语言VHDL概述- 二、,3.信号(SIGNAL),信号是电子电路内部硬件连接的抽象。它除了没有数据流动方向说明以外,其他性质几乎和前面所述的“端口”概念一样。信号通常在构造体、包集合和实体中说明。一般格式如下:,SIGNAL 信号名: 数据类型: 约束条件:=初始值;,方括弧内可有可无,硬件描述语言VHDL概述- 二、,4.关于信号和变量值代入的区别,信号和变量值的代入不仅形式不同,而且其操作过程也不同。 在变量的赋值语句中,该语句一旦被执行,其值立即被赋予变量。在执行下一条语句时,该变量的值就为上一句新赋的值。变量的赋值符为“:=”。 信号代入语句采用“=”代入符,该语句即使被执行也不会使信号立即发生代入。下一条语句执行时,仍使用原来的信号值。由于信号代入语句是同时进行处理的,因此,实际代入过程和代入语句的处理是分开进行的。,硬件描述语言VHDL概述- 二、,例:信号值的代入,PROCESS(a,b,c,d) BEGIN d=a; x=b+d; d=c; y=b+d; END PROCESS;,结果是:x=b+c; y=b+c;,上例中,虽然信号代入语句进行了处理,但实际代入过程是在进程执行完后进行的,因此最后所代入的值作为最终代入值。因为d的最终值是c,所以x的最终值是b+c。,硬件描述语言VHDL概述- 二、,例:变量值的代入,PROCESS(a,b,c) VARIABLE D:Std_logic_vector(3 Downto 0); BEGIN d:=a; x=b+d; d:=c; y=b+d; END PROCESS;,结果是:x=b+a; y=b+c;,上例中,变量的值一经赋值就变成新的值。因此x的最终值是b+a。,硬件描述语言VHDL概述- 二、,2.2 数据类型,在VHDL语言中,一个对象只能具有一个数据类型,施加于该对象的操作必须与该类型相匹配。 VHDL提供多种标准的数据类型。在此基础上,用户还可以自定义数据类型。,1.标准的数据类型,有十种标准的数据类型,分别是整数、实数、位、位矢量、布尔量、字符、字符串、时间、错误等级、大于等于零的整数或正整数。,硬件描述语言VHDL概述- 二、,1)整数(Integer),整数与数学中的整数含义相同。VHDL中,整数的表示范围是-2 147 483 6472 147 483 647,即从-(231-1)到(231-1)。 VHDL是一个强类型语言,要求在赋值语句中的数据类型必须匹配。整数的例子: +136,+12 456,-457,2)实数(Real),在进行算法研究或者实验时,作为对硬件方案的抽象手段,常用实数四则运算。实数的定义值范围是-1.0E+38 +1.0E+38。实数有正负数,书写时一定要有小数点。实数的例子: -1.0 ,+2.5 ,-1.0E38,硬件描述语言VHDL概述- 二、,3)位(Bit),在数字系统中,信号值通常用一个位来表示。位值的表示方法是,用字符0或者1(将值放在单引号中)表示之。位与整数中的0和1不同,1和0仅仅表示一个位的两种取值。 位数据可以用来描述系统中总线的值。,4)位矢量(Bit_vector),位矢量是用双引号括起来的一组位数据。例如: “001100” X”00BB”,X表示是十六进制。,用位矢量数据表示总线状态最形象也最方便。,硬件描述语言VHDL概述- 二、,5)布尔量(Boolean),一个布尔量具有两种状态,“真”或者“假”。虽然布尔量也是二值枚举量,但它和位不同,没有数值的含义,也不能进行算术运算。它能进行关系运算。例如,它可以在IF语句中被测试,测试结果产生一个布尔量TRUE或FALSE。 如果某个信号或者变量被定义为布尔量,那么在仿真中将自动地对其赋值进行核查。一般这一类型的数据的初始值总为FALSE。,硬件描述语言VHDL概述- 二、,6)字符(Character),字符也是一种数据类型,所定义的字符量通常用单引号括起来,如A。一般情况下VHDL对大小写不敏感,但是对字符量中的大、小写字符则认为是不一样的。例如,B不同于b。 字符量中的字符可以是az中的任一个字母,09中的任一个数以及空白或者特殊字符,如$,%等等。 包集合STANDARD中给出了预定义的128个ASCII码字符类型,不能打印的用标识符给出。字符1与整数1和实数1.0都是不同的。,7)字符串(String),字符串是用双引号括起来的一个字符序列,它也称字符矢量或字符串数组。常用于程序的提示和说明。,硬件描述语言VHDL概述- 二、,8)时间(Time),时间是一个物理量数据。完整的时间量数据应包含整数和单位两部分,而且整数和单位之间至少应留以后、个空格的位置。例 55 sec,2 min等。在包集合STANDARD中给出了时间的预定义,其单位是fs,ps,ns,s,ms,sec,min,hr。(飞秒,皮秒,纳秒,微秒,毫秒,秒,分钟,小时),9)错误等级(Severity level),错误等级类型数据用来表征系统的状态,它共有4种:NOTE(注意),WARNING(警告),ERROR(出错),FAILURE(失败)。在系统仿真过程中可以用这4种状态来提示系统当前的工作情况。,硬件描述语言VHDL概述- 二、,10)大于等于零的整数(Natural),正整数(Positive),这两类数据是整数的子类,Natural类数据只能取值0和0以上的正整数;而Positive则只能为正整数。,以上这10种标准的数据类型,在编程中可直接引用。如果用户需使用这10种以外的数据类型,则必须进行自定义。 由于VHDL语言属于强类型语言,在仿真过程中,首先要检查赋值语句中的类型和区间,任何一个信号和变量的赋值均须落入给定的约束区间中,也就是说要落入有效数值的范围中。约束区间的说明通常跟在数据类型说明的后面。,例如:,Integer RANGE 100 DOWNTO 1 Bit_vector (3 DOWNTO 0) Real RANGE 2.0 to 30.0,DOWNTO表示下降。,硬件描述语言VHDL概述- 二、,2.用户定义的数据类型,在VHDL语言中,使用户最感兴趣的一个特点是,可以由用户自己来定义数据类型。右用户定义的数据类型的定义书写格式为:,TYPE 数据类型名 ,数据类型名 数据类型定义,可由用户定义的数据类型有:,.枚举(Enumerated)类型 .整数型(Integer)类型 .实数(Real)类型 .浮点数(Floating)类型 .数组(Array)类型 .存取(Access)类型 .文件(File)类型 .记录(Recode)类型 .时间(Time)类型 ,硬件描述语言VHDL概述- 二、,1)枚举(Enumerated)类型,在逻辑电路中,所有的数据都是用“1”和“0”来表示的,但是人们在考虑逻辑关系时,只有数字往往是不方便的。在VHDL语言中,可以用符号名来代替数字。例如,在表示一周每一天状态的逻辑电路中,可以假定“000”为星期天,“001”为星期一。这对阅读程序是不太方便的。为此,可以定义一个叫“week”的数据类型。,TYPE week IS (sun,mon,tue,wed,thu,fri,sat);,由于上述的定义,凡是用于代表星期二的日子都可以用tue来代替,阅读比较直观,使用时也不易出错。,枚举类型数据的定义格式为:,TYPE 数据类型名 IS (元素,元素, );,如:TYPE std_logic IS (U,X,0,1,Z,W,L,H,-);,硬件描述语言VHDL概述- 二、,2)整数类型,实数类型(Integer,Real),整数类型在VHDL语言中已存在,这里定义的是用户所定义的整数类型,实际上可以认为是整数的一个子类。例如,在一个数码管上显示数字,其值只能取09的整数。如果由用户定义一个用于数码显示的数据类型,则可写为:,TYPE digit IS Integer RANGE 0 TO 9,由此,可以总结出整数或实数用户定义数据类型的格式可写为:,TYPE 数据类型名 IS 数据类型定义 约束范围;,硬件描述语言VHDL概述- 二、,3)用户定义的数据类型例子,TYPE bit3 IS (0,1,Z);,定义枚举类型,TYPE word IS ARRAY (31 DOWNTO 0) OF Bit;,定义数组类型,TYPE matrix IS ARRAY (1 TO 8, 1 TO 8) OF Real;,定义二维数组,TYPE voltage IS RANGE 0.0 TO 10.0;,定义子类型(实型),TYPE complex IS RECORD re: Real; im: Real; END RECORD;,定义记录类型,硬件描述语言VHDL概述- 二、,4)IEEE标准“STD_LOGIC”、”STD_LOGIC_VECTOR”,在VHDL语言中,标准的数据类型“BIT”是一个逻辑型的数据类型,这类数据取值只能是0或1。由于不存在不定状态X,故不便于仿真。另外,由于它也不存在高阻状态,因此也很难用它来描述双向数据总线。 为此IEEE在1993年制订出新的标准(IEEE STD1164),使得“STD_LOGIC”型(标准逻辑数据类型)数据可以具有如下的9种不同的值:,U, 未初始化的 X, 强未知的 强 强 Z, 高阻态 W, 弱未知 L, 弱 H, 弱 _, 忽略,硬件描述语言VHDL概述- 二、,5)IEEE标准”STD_LOGIC_ARITH”,在VHDL语言中,综合工具配带的扩展包集合中,定义了一些有用的数据类型,如无符号数据类型UNSINGED、有符号数据类型SIGNED等。 这些类型在”STD_LOGIC_ARITH”中定义。,有符号数据类型(SIGNED),SIGNED数据类型表示一个有符号的数值,综合器进行综合时将其解释成补码,它的最高位是符号位,例如:,SIGNED(“1010”) 代表-6 SIGNED(“0101”) 代表+5,5 VARIABLE var:SIGNED(0 TO 10) 表示变量var有11 位,最左位var(0)是符号位,硬件描述语言VHDL概述- 二、,无符号数据类型(UNSIGNED),UNSIGNED数据类型代表一个无符号的数值,在综合中将其解释为二进制数,其最左位是最高位。例如:,UNSIGNED(“1011”) 代表十进制的11 SIGNAL sig: UNSIGNED (5 DOWNTO 0) 最高位sig(5) VARIABLE var:UNSIGNED (0 TO 15) 最高位为var(0),如果要定义一个变量或信号的数据类型为UNSIGNED,则其位矢量长度越长,所代表的数值也越大。如一个4位变量的最大值为15,一个8位变量的最大值为255,0是它们的最小值。 不能用UNSIGNED定义负数。,硬件描述语言VHDL概述- 二、,5)数据类型的转换,在VHDL语言中,数据类型的定义是相当严格的,不同类型的数据是不能进行运算和直接代入的。 为了实现正确的代入操作,必须将代入的数据进行类型转换。这就是所谓类型变换。 变换函数通常由VHDL语言的包集合提供。 例如在“STD_LOGIC_1164”,”STD_LOGIC_ARITH”和 ”STD_LOGIC_UNSIGNED”的包集合中提供了如下的数据类型变换函数。,STD_LOGIC_UNSIGNED包集合:,函数名 功能,CONV_INTEGER(A),由STD_LOGIC_VECTOR转换成INTEGER,(注意: STD_LOGIC中的1和H转成INTEGER的1,0和L转为0,其余的也转为0),硬件描述语言VHDL概述- 二、,STD_LOGIC_1164包集合:,函数名 功能,TO_STDLOGICVECTOR(A),由BIT_VECTOR转换为STD_LOGIC_VECTOR,TO_BITVECTOR(A),由STD_LOGIC_VECTOR 转换为BIT_VECTOR,TO_STDLOGIC(A),由BIT转换为STD_LOGIC,TO_BIT(A),由STD_LOGIC 转换为BIT,硬件描述语言VHDL概述- 二、,STD_LOGIC_ARITH包集合:,函数名 功能,CONV_STD_LOGIC_VECTOR(A,位长),CONV_INTEGER(A),由UNSIGNED,SIGNED 转换为INTEGER,硬件描述语言VHDL概述- 二、,VHDL中类型的转换必须通过类型表识符显式的进行。,VARIABLE i: Integer; VARIABLE r: Real; SIGNAL s0: Bit:=0; SIGNAL s1: Bit:=1; SIGNAL s_array: Bit_Vector (0 TO 1); i:=Integer(r); r:=Real(i); s_array=Bit_Vector(s0,s1);,例如:,硬件描述语言VHDL概述- 二、,2.3 常数的表示,VHDL语言中的数有整数、浮点数、字符、字符串、位串及物理数六种类型。 整数和浮点数均可用十进制、十六进制、八进制和二进制表示。十六进制中会出现数符AF。整数和浮点数均可含十进制指数,两者的区别仅在于,整数无小数点,浮点数含小数点。 十进制数的定义格式为: 整数.整数指数,整数可表示为: 数字下划线数字,指数可表示为: E+(或-)整数,(注意:在相邻的数字之间插入下划线,对十进制数值并无影响,而且允许在数字之前冠以若干个零,但是不允许在数字中存在空格。),硬件描述语言VHDL概述- 二、,12 合法 000012 合法(等效于12) 12_345 合法(等效于12345) 1.2_345 合法(等效于1.2345) 3E5 合法 3.4E-7 合法 12 345 非法,例如:,硬件描述语言VHDL概述- 二、,非十进制数的定义格式为:,基数#基于该基的整数.基于该基的整数#E指数,基数必须为十进制形式的整数,指数也必须为十进制形式的整数,基于该基的整数可表示为: 扩展数字下划线扩展数字,扩展数字:数字(或字母AF),(注意:对以基表示的数而言,在相邻的数字之间插入下划线对其数值并无影响。基数的最小值是2,最大值是16。),硬件描述语言VHDL概述- 二、,16#1#E3 合法(等效于十进制数4096) 8#1#E3 合法(等效于十进制数64 ) 2#1#E3 合法(等效于十进制数8) 16#3E8# 合法(等效于十进制数1000) 8#1750# 合法(等效于十进制数1000) 2#1111101000# 合法(等效于十进制数1000) 16#0.F#E0 合法(等效于十进制数0.9375) 2#1.1111_1111#E4 合法(等效于十进制数31.9375),例如:整数值255的表示方法:,2#1111_1111# 等效于(2#11111111#) 8#00377# 等效于(8#377#) 016#0FF# 等效于(16#FF#),又例:,硬件描述语言VHDL概述- 二、,字符、字符串和位串均用ASCII字符表示。,单个字符用单引号括起来,如0、1、Z。,字符串则用双引号括起来,如“abcd”。,位串是用字符形式表示的多位数码,是用双引号括起来的一串数字序列,序列前冠以B(二进制)、O(八进制)和X(十六进制)的基数说明。如 B“101010101” O“525” X“155” 表示的都为十进制数的341,硬件描述语言VHDL概述- 二、,2.4 运算符,VHDL中提供功能强大的运算符,可分为4类:逻辑运算符、算术运算符、关系运算符、其它运算符。,硬件描述语言VHDL概述- 二、,从 高 到 低,硬件描述语言VHDL概述- 二、,从 高 到 低,可使用圆括号改变运算次序。,硬件描述语言VHDL概述- 二、,1.逻辑运算符,在VHDL中逻辑运算符共有6种,它们分别为: NOT取反; AND与;OR或; NAND与非;NOR或非;XOR异或。,这6种逻辑运算符可以对“STD_LOGIC”和“BIT”等的逻辑型数据、“STD_LOGIC_VECTOR”逻辑型数组及布尔型数据进行逻辑运算。必须注意,运算符的左边和右边,以及代入的信号的数据类型必须是相同的。,在VHDL中,当一个语句中存在两个以上的逻辑表达式时,左右没有优先级差别(不象C语言中运算有自左至右的优先级顺序的规定)。例如,在下例中,如去掉式中的括号,那么从语法上来说是错误的: X=(a AND b) OR (NOT c AND d);,硬件描述语言VHDL概述- 二、,当然也有例外。,在所有逻辑运算符中,NOT的优先级最高。,如果一个逻辑表达式中只有“AND”,”OR”, “XOR”运算符,那么改变运算顺序将不会导致逻辑的改变。此时,括号是可以省略的。例如: a=b AND c AND d AND e; a=b OR c OR d OR e; a=b XOR c XOR d XOR e; a=(b NAND c) NAND d) NAND e; (必须要括号) a=(b AND c) OR (a AND e); (必须要括号),硬件描述语言VHDL概述- 二、,2.算术运算符,在VHDL中共有10种算术运算符,它们分别为: +加; - 减;*乘;/除;MOD求模; REM取余;+正(一元运算);- 负(一元运算); *指数;ABS取绝对值。,加、减、乘、除运算符可用于整数、浮点数和物理类型。 指数运算的左边可以是整数或浮点数,但右边必须为整数,只有在左边为浮点数时,其右边才可以为负数。 取绝对值运算可以用于任何数值类型。 求模和取余运算只能用于整数类型。 一元运算的操作数可以为任何数值类型(整数、浮点数和物理类型)。,硬件描述语言VHDL概述- 二、,移位运算和循环移位运算的定义如下:,移位运算符和循环移位运算符为二元运算符,只能定义在一维数组上,其左运算数(左元)的元素类型必须为位型(Bit)或布尔型(Boolean),而右运算数(右元)必须为整数类型。若右运算数为0,则无任何动作。如“ S RRL 0”将不发生任何动作;若右运算数为负数,则移位次数为该数的绝对值,如“S SRL 6”与“S SRL 6”等价。,硬件描述语言VHDL概述- 二、,3.关系运算符,在VHDL中共有6种算术运算符,它们分别为: = 等于;/= 不等于; 大于;= 大于等于。,其中等号“=”和不等号“/=”可以适合所有类型的数据。 其它关系运算符则可使用于整数、浮点数、位(STD_LOGIC)等枚举类型和位矢量(STD_LOGIC_VECTOR)等数组类型。 注意:在利用关系运算符对数据类型进行比较时,比较过程是从最左边的位开始,自左至右按位进行比较。在位长不同的情况下,只能按自左至右的比较结果作为关系运算的结果。例:,SIGNAL a:STD_LOGIC_VECTOR (3 DOWNTO 0); SIGNAL b:STD_LOGIC_VECTOR (2 DOWNTO 0); ab) THEN ,比较的结果是b大于a,显然这样的比较结果是不符合实际情况的。,- 为注释符,硬件描述语言VHDL概述- 二、,4.合并运算符,合并运算符“&”用于位的连接。 例如,将4个位用合并运算符“&”连接起来就可以构成一个具有4位长度的位矢量。两个4位的位矢量用合并运算符“&”连接起来就可以构成8位长度的位矢量。,左图可以描述为: tmp_b=b AND (en,第一个语句表示b的4位矢量由en进行选择得到一个4位矢量的输出。第二个语句表示4位矢量a和4位矢量b再次连接(合并)构成8位的位矢量y的输出。,硬件描述语言VHDL概述- 三、,三、 顺序语句,用VHDL语言进行设计时,按描述语句的执行顺序对其分类,可以将VHDL语句分为顺序执行语句和并行执行语句。(有关并行执行语句,将在3.5中祥叙),VHDL的顺序语句有赋值语句、IF语句、CASE语句、LOOP语句、WAIT语句、断言语句和过程调用语句。,顺序语句是指完全按照程序中书写的顺序执行各语句,并且在结构层次中前面语句的执行结果会直接影响后面各语句的执行结果。,顺序语句只能出现在进程或子程序中,由它定义进程或子程序所执行的算法。,硬件描述语言VHDL概述- 三、,3.1 变量与信号赋值语句,在VHDL语言中,有两种赋值语句,一种称为变量赋值,另一种称为信号代入。,1.变量赋值 格式为: 目的变量:=表达式; 将右边表达式值立即赋给左边的目的变量。 例: a:=2; b:=3.0; c:=d+e;,硬件描述语言VHDL概述- 三、,2.信号代入,格式为: 目的信号量=表达式; 将右边表达式值经一定时间间隔(最小为)之后赋给左边的目的信号量。 例: a=b; 该语句表示将信号量b的当前值赋予目的信号量a. 注意:代入语句的符号“=”,和关系运算的小于等于符“=”非常相似,要正确判别不同的操作关系,应根据上下文的含义和说明。 另外,代入符号两边信号量的类型和位长度应该是一致的。,硬件描述语言VHDL概述- 三、,3.2 IF语句,IF语句是根据所指定的条件来确定执行哪些语句的,其书写格式可以分为3种类型。,1. IF语句的门闩控制 格式为: IF 条件 THEN 顺序语句; END IF; 当程序执行到该IF语句时,要判断IF语句所指定的条件是否成立。如果条件成立,则执行顺序语句;否则程序跳过顺序语句,而直接执行IF语句的后继语句。 这里的条件起到门闩的控制作用。,硬件描述语言VHDL概述- 三、,例:,该IF语句所描述的是一个门闩电路。A是门闩控制信号量;b是输入信号量;c是输出信号量。 当门闩控制信号量a为1时,输入信号量b的任何值的变化都将被赋予输出信号量c。当a不等于1时,c=b语句不被执行,c将维持原始值,而不管信号量b的值发生什么变化。,IF (a=1) THEN c=b; END IF;,硬件描述语言VHDL概述- 三、,这种描述经逻辑综合,实际上可以生成D触发器。例:,LIBRARY IEEE; USE I

    注意事项

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

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




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开