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

    EDAppt课件—数字系统设计.ppt

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

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

    EDAppt课件—数字系统设计.ppt

    1,数字系统设计,2,第一章:数字系统设计方法,3,1.1数字系统范畴,消费类电子产品计算机通信汽车电子工业产品军用产品,4,数字系统设计研究的内容,系统方案设计硬件设计 前段信号处理 逻辑控制单元 输出回路设计软件设计系统调试产品化设计产品认证,5,数字系统技术现状,单片机技术DSP技术 Digital Signal Processor嵌入式系统ASIC技术 Application Specific Integration Circuits可编程ASIC技术 CPLD/FPGA,6,几个基本概念,EDA Electronic Design Automation 开发平台 Development Kit 仿真技术 Simulate TechnicalSOC 片上系统 System on ChipIP知识产权模块 IntellectualProperty SMT Surfers Match Technology,7,单片机技术现状,RISC技术 Reduced Instruction Set Computer外围接口 总线技术 I2C CAN BUS低功耗小型化嵌入式趋势,8,嵌入式系统的定义(E),专用计算机系统(非PC智能电子设备) 以应用为中心 以计算机技术为基础 软件硬件可裁剪 适应应用系统对功能、可靠性、成本、体积、 功耗严格要求知识集成系统(CSEA)技术密集资金密集高度分散不可垄断面向应用不断创新,9,嵌入式系统的分类,按表现形式分: (硬件范畴)芯片级嵌入(含程序或算法的处理器)模块级嵌入(系统中的某个核心模块)系统级嵌入按实时性要求分: (软件范畴)非实时系统(PDA)软实时系统(消费类产品)硬实时系统(工业和军工系统),10,嵌入式系统的基本要素,嵌入式处理器系统嵌入式处理器各种类型存储器模拟电路及电源接口控制器及接插件嵌入式软件系统实时操作系统(RTOS)板级支持包(BSP)设备驱动(Device Driver)协议栈(Protocol Stack)应用程序(Application),11,嵌入式处理器,嵌入式处理器的发展趋势经济性(成本)微型化(封装、功耗)智能化(功能、速度)嵌入式处理器的分类和现状微控制器(MCU)微处理器(MPU)数字信号处理器(DSP)混合处理器和片上系统(SOC)可编程片上系统(SOPC),12,硬件设计工具(EDA工具),系统级设计工具Cadence的SPWSystem View模拟电路系统仿真工具PspiceEWBPCB设计工具ProtelPADs 的Power PCB & Tool KitMentor的Expedition & Tool Kit可编程逻辑器件设计工具Mentor FPGA Advantage & ModelSimXilinx Foundation ISE & Tool Kit各种综合和仿真第三方工具,13,最新进展之:嵌入式Internet技术,定义:嵌入式Internet是近几年发展起来的一项新兴概念和技术,是指设备通过嵌入式模块而非PC系统直接接入Internet,以Internet为介质实现信息交互的过程,通常又称为非PC Internet接入。应用: 智能家居(家电上网)工业远程监控与数据采集 Internet Reconfigurable Logic(IRL)及其相关应用等等,14,图:嵌入式Internet应用,最新进展之:可编程片上系统(SOPC),SOPC:可编程逻辑器件在嵌入式应用中的完美体现SOPC的技术基础超大规模可编程逻辑器件及其开发工具的成熟FPGA密度提高FPGA成本足以与ASIC抗衡FPGA设计、综合、仿真、测试工具性能飞速提高微处理器核以IP的形式嵌入到FPGA中IP Core开发理念的发展与深入人心信号处理算法、软件算法模块、控制逻辑等均可以IP Core形式体现目前已经成熟的SOPC开发平台:Xilinx SpartanII FPGA和MicroBlaze软处理器IP CoreXilinx VirtexII Pro FPGA和PowerPC硬处理器IP CoreAltera 等其它FPGA和处理器IP Core,16,图:SOPC 示例,goReader Internet eBook,Samsung AnyWebInternet Screen Phone,eRemoteIntelligent Home Controller,Tektronix TDS7000 Digital Oscilloscopes,Nixvue Digital AlbumDigital Photo Album,一些典型的嵌入式系统应用实例,返回,18,数字系统设计与仿真的层次,系统设计的层次算法级-电路板级-芯片级设计与仿真方法 EDA方法设计与仿真工具 SystemView Matlab OrCAD Protel Maxplus Foundation 硬件仿真 仿真板 用户版,19,1.2数系统字设计的一般步骤,1.2.1引例 1.2.2数字系统设计的基本步骤1.系统逻辑功能的确定(1)待设计系统信息、特征等。(2)控制信号的作用、格式及控制信号与输入、输出数据之间的关系。(3)数据处理或控制过程的技术指标。,20,2.系统的描述,2.系统的描述3.算法的设计:把系统的复杂运算分解成一组有序进行的子运算。4.电路结构选择:寻求一个可以实现上述算法的电路结构。,21,设计与仿真的层次,22,可编程ASIC技术,23,可编程ASIC技术,可编程ASIC技术概论Altera可编程ASIC器件Xilinx可编程ASIC器件,24,电子设计自动化Electronic Desige Automation(EDA),Viewlogic VHDLSummit VHDLSynopsys VHDLCadence Verilog HDLOrCADData I/O AbelCOMPASS,Xilinx FoundationAltera MAX+PlusIILattice PDS+AMD MicrosimPilkington FPAA FPMA,25,集成电路的发展是从小规模中规模大规模超大规模,发展的方向是两方面:通用集成电路,专用集成电路定制半定制1.标准单元 2.门阵列 3.可编程逻辑器件编程方式:1.一次编程 熔丝开关, 反熔丝开关 2.多次编程 浮栅编程 3.无限次编程 基于SRAM编程元件 1.静态存储器 2.反熔丝开关 3.浮栅编程技术:浮栅,叠栅,电可改写,闪速存储单元,26,FPGA与PAL的比较,1.FPGA有更多的I/O管脚,多达几百条,不会出现PAL逻辑没有使用完之前,I/O已经用完;2.有更多的触发器,可以构造许多的寄存器和计数器;3.可以构成系统级特性,如数据总线等;4.可以集成多个PAL以上;5.减少印刷板面积,降低系统成本;6.降低功耗;7.系统有较少的元件在印刷板上,可靠性增加;8.可编程和可再利用性,PAL只能一次编程,FPGA和CPLD多次编程;9.加密能力增加。,27,CPLD和FPGA与TTL电路的比较,1.CPLD和FPGA相当于20到500以上个TTL电路集成到一个器件内,有较高的密度;2.设计者以自己的设计方法设计所需的逻辑系统,所以增加了灵活性;3.集成之后,可以显著改善系统的可靠性;4.可以方便地通过计算机软件平台,对所设计的系统进行修改和仿真,不用对印刷板进行修改;5.系统集成到可编程逻辑器件以后,可减少印刷板的层次和缩小印刷板的面积。,28,CPLD和FPGA与定制比较,1.前者较后者有较低的开发和设计成本,可以在办公室的PC机上进行设计,配置到芯片;2.前者是可编程的,风险能降低到最小,后者每次的修改设计,用于定制掩模的费用多达几万到几十万人民币;3.前者可再编程的时间是很短的,省去了定制掩模范投片制造带来的时间延误;4.前者可再编程特性,可以做到出厂前器件100%测试,保证了器件的质量;5.对大量的产品,为降低成本,前者很容易转到固定连线的门阵列。,29,30,主要EDA设计工具和网址,31,掌握要点,数字系统设计的内容是什么?电子系统的主要设计方法有哪些?什么是EDA技术?电子系统设计与仿真的几个层次是什么?你知道哪些主流设计工具?怎样在不同系统选择不同的设计方案?,32,练习一,上网查找EDA相关网站及相关设计、仿真工具重点查找网站 ,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,可编程ASIC的设计方法,原理图方法HDL(VHDL、ABEL、Verilog )状态机波形图功能模块设计IP调用,141,142,传统的电路系统设计方法的步骤从状态图的简化,写出最简逻辑表达式,到绘出电路原理图。这在不是较大的电路系统中,工程师可以用一定的时间,了解电路的原理。若电路系统非常庞大,工程师就不容易在电路原理图上了解电路的原理,而且对绘图者也是一项非常烦琐的工作。因此众多软件公司开发研制了具有自己特色的电路硬件描述语言(Hardware Description Language,HDL),这些硬件描述语言必然有很大的差异,工程师一旦选用某种硬件描述语言作为输入工具,就被束缚在这个硬件设计环境之中,不能在众多的软件工具中选择一个最佳组合作为自己的最优设计环境。因此,硬件设计工程师需要一种强大的、标准化的硬件描述语言,作为可相互交流的设计环境。,143,美国国防部在80年代初提出了VHSIC(Very High Speed Integrated Circuit)计划,其目标之一是为下一代集成电路的生产,实现阶段性的工艺极限以及完成10万门级以上的设计,建立一项新的描述方法。1981年提出了一种新的HDL,称之为VHSIC Hardware Description Language,简称为VHDL,这种语言的成就有两个方面:,1. 描述复杂的电路系统;2. VHDL成为硬件描述语言的标准。,144,VHDL的主要优点是:,1.覆盖面广,描述能力强,是一个多层次的硬件描述语言。即设计的原始描述可以是非常简练的描述,经过层层细化求精,最终成为可直接付诸生产的电路级或版图参数描述,整个过程都可以在VHDL的环境下进行。,2.VHDL有良好的可读性,即可以被计算机接受,也容易被理解。用VHDL书写的原文件,即是程序,又是文档,即是技术人员之间交换信息的文件,又可作为合同签约者之间的文件。,3.VHDL本身的生命期长,因为VHDL的硬件描述与工艺技术无关,不会因工艺变化而使描述过时。与工艺技术有关的参数可通过VHDL提供的属性加以描述,工艺改变时,只需修改相应程序中的属性参数即可。,145,4.支持大规模设计的分解和已有设计的再利用,一个大规模设计不可能一个人独立完成,它将由多人,多项目组来共同完成。VHDL为设计的分解和设计的再利用提供了有力的支持。,VHDL的主要优点是:,5.VHDL已成为IEEE承认的一个工业标准,事实上已成为通用硬件描述语言。,146,第一节 VHDL的基本组成,VHDL可以把任意复杂的电路系统视作一个模块,一个模块可主要分为三个组成部分:,每个模块中的程序包有IEEE标准的标准程序包或设计者自身设计的程序包,而且调用的数量不限。模块中的程序包是设计中的子程序和公用数据类型的集合,是构成设计工具的工具箱,工具箱中最基本的工具是数据类型包,调用此标准程序包的VHDL语言是:,一、参数部分程序包,147,例1:,LIBRARY ieee;,USE ieee.std_logic_1164.all;,这两句设置在VHDL程序的前面,表示以后在实体或结构体中要用到数据类型包中的数据类型。,148,模块中仅有一个设计实体,它提供该设计模块的公共信息,是VHDL设计电路的最基本部分。VHDL设计的电路系统是可以分层次的,所以设计的模块系统实体即可以是顶层实体,又可以是最底层实体。,二、接口部分设计实体:,ENTITY kxor IS,PORT(a1,b1:IN std_logic;,c1:OUT std_logic);,END kxor;,例 2,149,实体部分的大写单词ENTITY、IS、PORT、IN、OUT和END为关键字。在ENTITY.END之间表示实体内容,ENTITY后的字符串kxor表示实体的名称,即电路的符号名。端口(引脚)信息关键字PORT中的语句有三个端口,描述了信号的流向,分别是两个输入(IN)模式a1和b1,一个是输出(OUT)模式c1,端口信息除了输入输出之外,还可以是双向、缓冲器等。std_logic表示信号取值的类型为标准逻辑位,除了标准逻辑位之外,还可以是实数、整数、无符号数、物理以及以上数据类型组成的记录和数组集合,信号类型也可以是设计者定义。,150,三、描述部分结构体:,当异或门的符号和外部端口a1、b1和c1确定之后,就要确定实体的内部电路,使之与实体相对应。电路描述部分称之为结构体ARCHITECTURE,它描述实体硬件的互连关系、数据的传输和变换以及动态行为。一个实体可以对应多个结构体,每个结构体可以代表该硬件的某一方面特性,例如行为特性,结构特性。,ARCHITECTURE kxor_arc OF kxor IS,例3,BEGIN,c1 = (NOT a1 AND b1) OR (a1 AND NOT b1);,END kxor_arc;,151,152,第二节 VHDL数据类型和属性,VHDL硬件描述语言中涉及到了许多信号,变量和常量,它们用来保持一个数据。,保持数据的信号,变量和常量,在VHDL中称为目标,每一个目标都有一个数据类型确定目标保持的那一类数据。,VHDL是一种非常严格的数据类型化语言,规定每个信号,常量或变量和每个表达式有一个唯一的确定数据类型,一般说,在表达式中分配数值给目标时的数据类型不可以被混用。,每个目标和表达式的类型静态地确定。,153,在VHDL中有三类目标:信号、变量和常量。,信号和变量可以赋予一系列的值,而常量一次仅被分配一个值。,变量和信号又有不同,赋予信号的数值要到未来的某个时刻,信号才接受当前的数值,而赋予变量的数值,变量立即接受当前的数值。,目标的一般形式如下:, : := ;,154,目标:是一个或多个代表着目标种类的字符串,多个目 标时用“,”号分开。, : := ;,目标种类:信号、变量和常量。,信号:它可以表示把元件的端口连接在一起的互连线。 变量:用于对暂时数据的局部存储,变量只在进程和子 程序内部定义。 常量:对某些特定类型数据赋予的数值。,表达式:表达式是为了规定目标的初始值,这是缺省部分。,目标类型:为了规定目标的特征,VHDL含有很宽范围的数据类型。VHDL除了有基本的数据类型之外,设计者还可以建立自己新的数据类型,类型说明部分规定类型名和类型范围,它的一般形式是:,155,TYPE IS ;,标量类型、复合类型、子类型、文件类型和寻址类型。,标量类型包括所有的简单类型:如整数、实数等,复合类型包括数组和记录,寻址类型在一般编辑语言中等价为指针,文件类型用设计者定义的文件类型为设计者提供说明的文件对象,子类型主要是对现有类型加以限制,VHDL可用数据类型有五类:,156,一、 标量数据类型,标量数据类型是基本的数据类型,它包括整数类型、实数类型、物理类型和枚举类型。,一个目标的数值有可能经常更换或者说是包含多个值,但一个目标一次只能被一种类型说明。,物理类型要提供一个基本单位,然后在这个基本单位上定义多个或零个次级单位,每个次级单位都是基本单位的整数倍。,枚举类型在形式上是定义括弧括起来的字符串文字表,一个字符串文字在枚举类型定义中只能出现一次,但允许同样一个字符串文字出现在不同的枚举类型的字符串文字表中,枚举类型的字符串文字表中的文字是由设计者定义的,这些字母可以是单个字母,也可以是一个字符串,例如BREAKFAST, Lunch, a等。,157,下面举两个VHDL程序加深理解标量类型的使用。,USE work .scale.all; ENTITY scale1 IS PORT(out1:OUT current; load1:IN load; END scale1;,158,ARCHITECTURE scale1_arc OF scale1 IS SIGNAL a1:REAL; BEGIN a1 = 1.0; -OK a1 = 1; -Error a1 = -1.0E10; -OK a1 = 2.5E-20; -OK a1 = -1E+8; -Error a1 = 5.3 ns; -Error,159,PROCESS(a) VARIABLE b:INTEGER; BEGIN b := -1; -OK b := 1.0; -Error END PROCESS; out1 = 100 ua WHEN (load1= small) ELSE 1 ma WHEN (load1= med) ELSE 10 ma WHEN (load1= big) ELSE 100 ua; END scale1_arc;,160,PACKAGE meals_pkg IS TYPE meal IS(breakfast,lunch,dinner);END meals_pkg;,例2:,USE work . meals_pkg . all;ENTITY meals IS PORT(previous_meal:IN meal; next_meal:OUT meal);END meals;,ARCHITECTURE meals_arc OF meals ISBEGIN WITH previous_meal SELECT next_meal = breakfast WHEN dinner, lunch WHEN breakfast, dinner WHEN lunch;END meals_arc;,161,二、复合数据类型,复合类型是由数组类型和记录类型组成,它们的元素是标量类型的元素。数组类型是由相同的标量元素组成,即同构复合类型,数组可以是一维二维或多维。例如,TYPE matrix IS ARRAY(row,column) OF std_logic;TYPE r_ma IS ARRAY( 1 TO 10, 1 TO 40) OF std_logic;,TYPE word IS ARRAY(15 DOWNTO 0) OF BIT;,TYPE column IS RANGE 1 TO 40;,TYPE row IS RANGE 1 TO 10;,CONSTANT ROM : BIT_VECTOR(0 TO 15);,162,ARCHITECTURE rom_arc OF rom ISBEGIN PROCESS(cs,x1,x2,x3,x4) VARIABLE n:NATURAL RANGE 0 TO 15; CONSTANT rom0:std_logic_vector(0 TO 15):= “0101010101010101”; CONSTANT rom1:std_logic_vector(0 TO 15):= “0011001100110011”; CONSTANT rom2:std_logic_vector(0 TO 15):= “0000111100001111”; CONSTANT rom3:std_logic_vector(0 TO 15):= “0000000011111111”;,下面举一个VHDL程序说明一维数组实现164的ROM。,LIBRARY ieee;USE ieee.std_logic_1164.all;,ENTITY rom IS PORT(cs,x1,x2,x3,x4:IN std_logic; d0,d1,d2,d3:OUT std_logic);END rom;,163,BEGIN IF cs= 1 THEN n:=0; IF x1 = 1 THEN n:= n+1; END IF; IF x2 = 1 THEN n:= n+2; END IF; IF x3 = 1 THEN n:= n+4; END IF; IF x4 = 1 THEN n:= n+8; END IF; d0 = rom0(n) AFTER 10 ns; d1 = rom1(n) AFTER 10 ns; d2 = rom2(n) AFTER 10 ns; d3 = rom3(n) AFTER 10 ns; ELSE d0 = Z AFTER 10 ns; d1 = Z AFTER 10 ns; d2 = Z AFTER 10 ns; d3 = Z AFTER 10 ns; END IF; END PROCESS; END rom_arc;,164,在结构体说明区(ARCHITECTURE和BEGIN之间)被说明的目标,仅可以在此结构体中引用或在结构体中的任何进程语句中被引用,称此目标为局部信号。,数据类型的全局化和局部化,前面已经讨论VHDL描述语言的组成是由程序包、实体、结构体(结构体中有进程)、以及子程序而组成,不同的目标可以在指定的组成部分内加以说明。,如果一个目标在实体说明部分被说明,那么在本实体和本实体内部的任何结构体和任何进程中都可以引用在实体中说明的目标,称为全局信号;,165,VHDL中不同的目标和类型规定在不同的构造中可以被说明。信号:实体、结构体说明区、程序包和子程序。变量:进程语句说明区和子程序。常量:实体、结构体、进程语句说明区和程序包和子程序。标量类型:实体、结构体、进程语句说明区和程序包和子程序。复合类型:实体、结构体、进程语句说明区和程序包和子程序。文件类型:子程序和进程语句说明区。寻址类型:进程语句说明区。,166,VHDL的属性,VHDL中的属性使得VHDL程序更加简明扼要,更加容易理解,VHDL的属性在时序程序中几乎处处可见,如值类属性的左边界、右边界、上下边界以及值类属性的长度,还可以检测信号上升沿和下降沿以及前一次发生的事件等等。,VHDL的属性可归纳为,信号类属性、函数类属性、 值类属性、类型类属性和范围类属性。本节介绍值类属性及函数信号类属性。,167,TYPE bit IS ARRAY(63 DOWNTO 32) OF BIT; VARIABLE left_range,right_range,uprange,lowrange:INTEGER;BEGIN left_range:= bitLEFT; -returns 63 right_range:= bitRIGHT; -returns 32 uprange:= bitHIGH; -returns 63 lowrange:= bitLOW; -returns 32,值类属性:值类属性用于返回数组的边界或长度,首先举一例数组边界的例子说明类型属性。例8:,168,TYPE bit IS ARRAY(0 TO 7) OF BIT;TYPE bit1 IS ARRAY(8 TO 31) OF BIT; VARIABLE len1,len2:INTEGER;BEGIN len1:=bitLENGTH; -return 8 len2:=bit1LENGTH; -return 24,下面再举一个值类数组属性的例子,让其返回数组范围的总长度。例:,169,它可用来检查一个信号的变化,并且变化刚刚发生,既推断出在信号上发生了一个跳变。,函数信号属性:函数信号属性用来返回有关信号行为功能的信息,它反映一个信号是否正好有值的变化或事件的发生,如clkEVENT,这个属性为“EVENT”,对检查时钟边沿触发是很有效的。,下面举一个例子,说明函数信号属性的用法,IF clk= 1 AND clkEVENT THEN q = d;END IF;,上述语句中用到了函数信号属性clkEVENT,说明如果时钟信号clk为高电平,并且事件刚刚发生,也就是说是时钟上升沿有效,此时q得到d的信号。,170,第三节 VHDL的行为描述,在VHDL硬件描述语言中,描述电路逻辑的程序称为行为描述,行为描述有并行行为描述、进程行为描述和顺序行为描述。,三个行为即可以是相互独立,成为单一的行为描述体,又可以相互联系,成为混合描述体,如进程行为描述行为之间是并行行为,进程行为体的内部是顺序行为。,171,一、VHDL的并行行为,在典型的编程语言如C或Pascal中,每个赋值语句按规定的次序,一个接在另一个之后顺序执行,执行的次序由源文件决定。,在VHDL中,结构体的内部没有规定语句的次序,执行的次序仅由对语句中的敏感信号发生的事件决定,且语句是同时执行,产生其并行型。,结构体中并行赋值语句的一般格式如下:, ,该一般形式读作对象得到表达式的值,其作用是将表达式的信号值分配给对象,也就是说每当表达式的信号值变化时执行该语句。,每个表达式都至少有一个敏感信号,每当敏感信号改变其值时,这个信号赋值语句就执行,,172,在所有的并行语句中,两个以上的并行赋值语句在字面上的顺序并不表明它们的执行顺序,,例如下面的两个结构体在功能上是等价的。,ENTITY exe IS PORT(a1,a2:IN BIT; b1,b2:OUT BIT);END exe;,ARCHITECTURE exe_arc1 OF exe ISBEGIN b1 = a1 AND b2; b2 = NOT a1 OR a2;END exe_arc1;,ARCHITECTURE exe_arc2 OF exe ISBEGIN b2 = NOT a1 OR a2; b1 = a1 AND b2;END exe_arc2;,173,另一种并行信号赋值语句是选择信号赋值语句,它们的每一个赋值语句都需要给出一个表达式,同时给出与该表达式的每个可能值相关联的信号,选择信号赋值语句的一般形式如下: WITH SELECT WHEN , WHEN , WHEN ;,174,一个典型的四路数据选择器的VHDL程序说明WITH一般形式的用法,ENTITY sels IS PORT(d0,d1,d2,d3:IN BIT; s :IN INTEGER RANGE 0 TO 3; out1 :OUT BIT);END sels;,ARCHITECTURE sels_arc OF sels ISBEGIN WITH s SELECT out1 = d0 WHEN 0, d1 WHEN 1, d2 WHEN 2, d3 WHEN 3;END sels_arc;,175,仍以四路数据选择器为例,讨论另一个较为复杂的并行信号赋值语句的例子,以便更详细地说明并行概念,下面是四输入数据选择器的第二个VHDL程序。例:,LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY mux4 IS PORT(I0,I1,I2,I3,A,B:IN std_logic; Q :OUT std_logic);END mux4;,ARCHITECTURE mux4_arc OF mux4 IS SIGNAL sel :INTEGER ;BEGIN Q = I0 AFTER 10 ns WHEN sel= 0 ELSE I1 AFTER 10 ns WHEN sel= 1 ELSE I2 AFTER 10 ns WHEN sel= 2 ELSE I3 AFTER 10 ns ;,sel = 0 WHEN A= 0 AND B= 0 ELSE 1 WHEN A= 1 AND B= 0 ELSE 2 WHEN A= 0 AND B= 1 ELSE 3 ;END mux4_arc;,176,二、VHDL的进程行为,VHDL除了并行行为之外,还有顺序行为。顺序行为执行的顺序是一个接在另一个之后严格执行。,顺序行为的语句存在于VHDL程序中的进程行为之中。,而进程行为之间是并行行为语句。,进程行为语句的一般形式如下:, :PROCESS BEGIN WAIT ON ; WAIT UNTIL ; WAIT FOR ; END PROCESS;,177,进程行为的说明区定义该进程所需要的局部数据环境、它包括子程序说明、属性说明和变量说明等,在这里只给出变量说明的一个例子,变量说明的一般形式为,VARIABLE : ;,下面进程说明区中说明了变量count,进程也可对变量赋值。,PROCESS VARIABLE count:INTEGER:= 0; BEGIN count:= count+1; WAIT FOR 1000 ns; END PROCESS;,178,整个实体模块中的每个进程行为语句,可以在任何时候被激活,所有被激活的进程是并行执行的,下面举一个三八通用译码器程序的例子,说明进程语句如何工作。,LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_arith.all; ENTITY decoder IS PORT(sel : IN UNSIGNED(2 DOWNTO 0); dout : OUT UNSIGNED(7 DOWNTO 0); END decoder;,ARCHITECTURE decoder_arc OF decoder IS SIGNAL sel1 :INTEGER; BEGIN PROCESS(sel) BEGIN,sel1 dout = (0,0,0,0,0,0,0,1) AFTER 5 ns;,179,WHEN 1 = dout dout dout dout dout dout dout = (1,0,0,0,0,0,0,0) AFTER 5 ns; END CASE; END PROCESS; END decoder_arc;,此例不像上例那样等待时间到1000ns以后再激活进程,而是只要sel的值一发生改变就激活进程,从第一句执行直到满足条件后再被挂起。,180,下例是另一种激活进程的方式:,ENTITY reg IS PORT(d,clk:IN BIT; q1,q2:OUT BIT); END reg; ARCHITECTURE reg_arc OF reg IS BEGIN,PROCESS BEGIN WAIT UNTIL clk= 1; q1 = d; END PROCESS;,PROCESS BEGIN WAIT UNTIL clk= 0; q2 = d; END PROCESS; END reg_arc;,进程行为语句之间是并行关系,进程行为语句内部是顺序关系。,VHDL的每个结构体中可以有多个进程行为语句。,它的关键之处是:,181,三、VHDL的顺序行为,顺序行为语句可分为两大类:条件控制类,循环控制类,在这两类中选出六种 IF、CASE、FOR、WHILE.LOOP、EXIT和ASSERT进行讨论,IF THEN ; ELSIF THEN ; ELSIF THEN ; ELSE ; END IF;,1、IF语句,IF语句的一般形式为:,182,ARCHITECTURE alarm_arc OF alarm ISBEGIN,下面举例说明IF条件语句的用法。例:,用VHDL设计一家用告警系统的控制逻辑,它有来自传感器的三个输入信号smoke、door、water和准备传输到告警设备的三个输出触发信号fire_alarm、burg_alarm、water_alarm以及使能信号en和alarm_en。,VHDL程序描述如下:,LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY alarm IS PORT(smoke,door,water:IN std_logic; en,alarm_en :IN std_logic; fire_alarm,burg_alarm,water_alarm:OUT std_logic);END alarm;,183,PROCESS(smoke,door,water,en,alarm_en) BEGIN IF (smoke= 1) AND (en= 0) THEN fire_alarm = 1; ELSE fire_alarm = 0; END IF;,IF (door= 1) AND (en= 0) AND (alarm_en= 0) THEN burg_alarm = 1; ELSE burg_alarm = 0; END IF;,IF (water= 1) AND (en= 0) THEN water_alarm = 1; ELSE water_alarm = 0; END IF;,END PROCESS; END alarm_arc;,184,2、CASE 语句,CASE语句的一般形式:,CASE IS WHEN ; WHEN | ; WHEN ; WHEN OTHERS ;END CASE;,CASE语句是VHDL提供的另一种形式的控制语句,每当单个表达式的值在多个起作用的项中选择时,用此语句是较合适的,它根据所给表达式的值或域,选择“=”后面的执行语句。,185,用CASE语句应该注意三个问题:,一,是关键字WHEN的数量不作限制,但不容许两个语句用一个值;,二,是所有WHEN后面的值在CASE语句中合起来的值域中的全部;,三,是WHEN的次序可以任意排定,186,3、FOR语句,FOR循环语句的一般形式为:, :FOR IN LOOP ; END LOOP ;,下面举一两位二进制乘方电路,用VHDL描述如下:,例:,FOR I IN 1 TO 3 LOOP a(i):= i*i; END LOOP;,此例中循环语句变量为 I,循环范围为“1 TO 3”,语句部分是乘方。,187,4、WHILE.LOOP语句,WHILE.LOOP循环语句的一般形式为:, :WHILE LOOP ; END LOOP ;,循环的条件是布尔表达式,并且为假时结束循环,即每次在执行循环前检查条件为真时执行循环。,例,WHILE (X 10) LOOP X:= X1; END LOOP;,188,5、断言语句,断言语句对VHDL描述中的模型添加限制条件,报告一条文本的字符串。,断言语句检查一个布尔表达式为真或为假,如果为真,该语句任何事都不做,如果为假,断言语句将输出设计者规定的字符串到标准的输出终端。,另外,还可以规定输出的严重级别,级别共分四种:,注意(note),告警(warning),出错(error),失败(failure),按严重级别分类断言语句是设计者分析自己设计的电路的好办法,而且按断言语句的报告找到描述语言出错的位置。,断言语句不构造硬件,主要用于模块的预期处理,所以和综合设计的硬件系统无关。,189,断言语句的一般形式如下:,ASSERT REPORT SEVERITY ;,条件为假时,系统的输出设备上将输出REPORT后面设计者规定的字符串信息,以及SEVERITY后面的严重级别。,断言语句是非常有用的,它类似于C和Pascal语言中的陷井,当一些重要的限制未得到满足,或者发现不能处理的错误时,就会终止模拟分析过程,提供错误条件的性质和有用信息。,下面用VHDL语言设计RS触发器和断言语句在程序中的作用

    注意事项

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

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开