EDA技术及应用多媒体ppt课件.ppt

上传人:小飞机 文档编号:1480477 上传时间:2022-11-30 格式:PPT 页数:263 大小:4.87MB
返回 下载 相关 举报
EDA技术及应用多媒体ppt课件.ppt_第1页
第1页 / 共263页
EDA技术及应用多媒体ppt课件.ppt_第2页
第2页 / 共263页
EDA技术及应用多媒体ppt课件.ppt_第3页
第3页 / 共263页
EDA技术及应用多媒体ppt课件.ppt_第4页
第4页 / 共263页
EDA技术及应用多媒体ppt课件.ppt_第5页
第5页 / 共263页
点击查看更多>>
资源描述

《EDA技术及应用多媒体ppt课件.ppt》由会员分享,可在线阅读,更多相关《EDA技术及应用多媒体ppt课件.ppt(263页珍藏版)》请在三一办公上搜索。

1、,EDA多媒体教学课件,本课件相关参考书目, 朱正伟 等编著,清华大学出版社, 徐光辉等编著,电子工业出版社出版, 王金明等编著,电子工业出版社出版, 潘 松 等编 编著,科学出版社出版,EDA课件主要内容,第1章 绪论,第2章 可编程逻辑器件,第3章 原理图输入设计方法,第4章 VHDL设计初步,第5章 VHDL设计进阶,第6章 有限状态机设计,第7章 数字电子系统设计实践,一、EDA、EDA技术及其应用与发展,EDA Electronic Design Automation,EDA /= Protel、PSPISE、EWB、?,规范化 标准化 设计效率高 充分利用计算机,远离经验和硬件 硬

2、件描述语言综合器 仿真测试库 适配器 下载器,第1章 绪论,与传统电子设计技术和单片机技术相比, EDA技术及电路系统的优越性表现在:,1、自主知识产权,2、开发技术标准化、规范化、IP Core(Intellectual Property) 的可利用性,3、自顶向下的设计方案,设计效率高和规模大,4、现代电子开发技术的发展方向,全方位仿真、充分利用现代计算机技术,7、CPLD的纯硬件加密的可靠性要好得多,,5、先进的编程下载技术-isp, 和硬件测试技术-JTAG,6、对于硬件经验要求不高,仅需集中精力于系统本身功能的实现,8、高速性能好,9、高可靠性,10、可设计成单片系统- SYSTEM

3、 ON A CHIP - SOC,下表表明用FPGA实现的8阶8位FIR滤波器的处理速度可达104MSPS,而用DSP芯片实现的滤波器要达到相当速度,则需要指令执行速度为832MIPS的DSP芯片。遗憾的是目前还没有指令执行速度在100MIPS以上的DSP芯片,除非有十多个DSP芯片一起工作,二、EDA实验的3个层次,1、逻辑行为的实现,2、控制与信号传输功能的实现,3、算法的实现,如:译码器、红绿交通灯控制、表决器、显示扫描器、电梯控制、乒乓球等电路的设计,时钟频率一般低于4MHz,如:各类信号发生器、A/D采样控制器、FIFO、RS232或PS/2通信、FPGA/CPLD与单片机综合控制等

4、电路的设计,时钟频率一般在25MHz左右,如:离散FFT变换、数字滤波器、浮点乘法器、高速宽位加法器、数字振荡器、数字锁相环、调制解调器、图象DSP等电路的设计,时钟频率一般在50MHz以上,硬件描述语言,HDL - Hardware Description Language,常用硬件描述语言:,1、ABEL-HDL,2、AHDL,3、VHDL,4、Verilog HDL,硬件描述语言与 软件描述语言(C、ASM、PASCAL)间 有许多不同之处 .,IEEE标准,EDA工具软件,1、ALTERA: MAX+PLUSII、QUARTUS,2、LATTICE: isp EXPERT SYSTEM

5、、 isp Synario Starter ispDesignExpert,3、XILINX: FOUNDATION,4、FPGA Express、Synplify、Leonardo Spectrum .,EDA公司 : CADENCE、EXEMPLAR、MENTOR GRAPHICS、OrCAD、SYNOPSYS、SYNPLICITY、VIEWLOGIC、.,三、常用EDA工具,2.综合器,3.仿真器,4.适配器,5.编程器,1.设计输入编辑器,四、EDA的工程设计流程,VHDL/原理图文本编辑器,VHDL综合器,FPGA/CPLD适配器,FPGA/CPLD编程下载器,FPGA/CPLD器件

6、和电路系统,时序与功能仿真器,VHDL仿真器,ALTERACadenceExemplarSynopsysSynplicityViewlogic.,五、MAX+PLUSII简述,MAX+PLUSII开发环境,WHAT A BIGAREA!,ALTERA EDA工具发展情况,PLD/EDA工具功能发展情况,Performance/Features,1985,1988,1991,FIRST GENERATIONDesign MethodsEquationsSchematicsOperating EnvironmentDOSASCII Graphics,SECOND GENERATIONDesign

7、MethodsSchematicsEquationsAHDLOperating EnvironmentDOSDirect Graphics,THIRD GENERATIONDesign MethodsAHDLVHDL, Verilog HDLOperating EnvironmentWindowsUNIXWindows Graphics,什么是MAX+PLUS II?,一个全面集成的 CPLD 开发系统提供与器件结构无关的开发环境支持 所有的 Altera产品(所有器件使用一个库)广泛满足设计需求设计输入综合布局和布线 (装入)仿真定时分析器件编程提供广泛的联机帮助支持多种平台 ( PC机和工

8、作站 )支持多种 EDA软件和标准,MAX+PLUS II 能做什么?,在一个独立的环境下运行,其他功能,与其他 EDA工具良好接口,工程设计的构成,- 编译器可以直接读取某些顶层设计EDIF网表文件VHDL网表文件Xilinx网表文件使用图形编辑器将OrCAD编辑的原理图保存为.gdf文件,顶层设计,EDIF格式、 VHDL文件、 OrCAD原理图和Xilinx文件创建符号或者嵌入文件在图形编辑器里嵌入符号或者在文本编辑器里嵌入文件其他的知识产权文件JEDEC文件、 ABEL文件和 PALASM文件转换工具在 Altera公司的ftp服务器上,子设计 (下层模块),编译器的输入和输出文件,设

9、计输入总结,MAX+PLUS II 的操作环境,应用系统投产,设计说明书,编译设计文件,综合、适配与优化,定时验证,时序仿真,器件编程,应用系统硬件测试,设计输入,MAX+PLUSII设计流程,设计输入,第三方 EDA 工具EDIF文件利用开发工具FPGA-Express,或SYNPLIFY等生成 OrCAD编辑的原理图,Xilinx公司XNF格式的文件,多种设计输入方法,MAX+PLUS II原理图设计输入文本设计输入使用 VHDL、AHDL等硬件描述语言,设计输入文件,建立一个新工程,每个设计都都是一个工程,都必须有一个工程名工程名必须与设计文件名一致(相符),第2章 可编程逻辑器件,20

10、世纪80年代以来出现了一系列生命力强、应用广泛、发展迅猛的新型集成电路,即可编程逻辑器件,( PLD-Programmable Logic Devices)。它们是一种由用户根据自己要求来构造逻辑功能的数字集成电路,一般可利用计算机辅助设计,即用原理图状态机布尔方程硬件描述语言(HDL)等方法来表示设计思想,经一系列编译或转换程序,生成相应的目标文件,再由编程器或下载电缆将设计文件配置到目标文件中,这时可编程器件就可作为满足用户要求的专用集成电路使用了。PLD适宜于小批量生产的系统,或在系统开发研制过程中采用。因此在计算机硬件、自动化控制、智能化仪表、数字电路系统等领域中得到了广泛的应用。它的

11、应用和发展不仅简化了电路设计,降低了成本,提高了系统的可靠性和保密性,而且给数字设计方法带来了重大变化。,一、可 编 程 逻 辑 器 件 概 述,可编程逻辑器件 (PLD) 是用来实现定制逻辑功能的、用户可自由配置的数字集成电路 (ICs) 。,可编程逻辑器件可以利用其内部逻辑结构实现任何的布尔表达式或者寄存器功能。,相反, 象TTL 器件等现有的逻辑集成电路( Ics)只能提供特定的逻辑功能,不能通过修改来满足具体电路的设计要求 。,现在,PLD制造商已经能够供应集成度和性能比分离元件高,而单位功能成本低于分离元件的可编程器件。,可编程逻辑器件 已经成为比分离元件以及类似专用集成电路( AS

12、ICs )的全定制或者半定制器件更受欢迎的 产品。,1、基于乘积项的结构模块,2、基于查找表的结构模块,二、构成可编程逻辑的两种主要方法:,三、基于乘积项的结构模块,可编程的“与”阵列,固定的“或”阵列用于逻辑综合及取“反”的“异或“门容量受乘积项数量的限制输入引线多,结构原理与特点:,小规模可编程逻辑器件,早期的PLD: 1、PAL: Programmable Array Logic 右图逻辑:O2 = !I2&!I1&I0 # I2&I0 # I1&!I0 O1 = I2&!I1&!I0 # I1&!I0O0 = !I1&!I0 # I2&!I1&!I0,PAL结构逻辑功能可变化的硬件结构

13、。,2、GAL: General Array Logic Device最多有8个或项,每个或项最多有32个与项3、EPLDErasable Programmable Logic Device,PAL是由一个可编程的“与”平面和一个固定的“或”平面构成的,或门的输出可以通过触发器有选择地被设置为寄存状态,乘积项逻辑,逻辑宏单元,输入/输出口,输入口,GAL结构,时钟信号输入,三态控制,可编程与阵列,固定或阵列,一个N输入查找表 (LUT,Look Up Table)可以实现N个输入变量的任何逻辑功能,如 N输入“与”、 N输入“异或”等。输入多于N个的函数、方程必须分开用几个查找表( LUT)实

14、现,什么是查找表?,四、基于查找表的结构模块,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,输入 A 输入 B 输入C 输入D,查找表输出,16x1RAM,查找表原理,多路选择器,五、FPGA和CPLD,FPGA - Field Programmable Gate Array CPLD - Complex Programmable Logic Device,大规模可编程逻辑器件使电子设计进入了一个崭新的时代,ALTERA MAX 7000S 系列的特点,MAX 7000S 支持系统级集成用于产品制造的系统内可编程特性(ISP)用于产品测试的边缘扫描测试标准(JTAG)相同器件

15、系列的引脚纵向兼容引脚和结构与最初的MAX 7000系列兼容所有MAX 7000S 器件的增强功能6 个输出使能2 个全局时钟可选的集电极开路输出转换速度控制,MAX7000S 系列的内部互连结构,Logic Array Block,可编程连线阵列,MAX7000S 系列的宏单元结构,PRN,CLRN,ENA,逻辑阵列,全局清零,共享逻辑扩展项,清零,时钟,清零选择,寄存器旁路,并行扩展项,通往 I/O模块,通往 PIA,乘积项选择矩阵,来自 I/O引脚,全局时钟,来自 PIA的 36个信号,快速输入选择,2,FPGA结构特点,连续布线和分段布线的比较,分段布线 性能不可预测,并且,设计每重复

16、一次,性能都会改变,Source,Dest #1,Dest #2,传统 FPGA的分段布线,Source,Dest #1 : (2段连线),第一次布线:,Source,Dest #2 : (4段连线),第二次布线:,四倍的延迟!,ALTERA FLEX 系列结构图,.,IOC,IOC,.,IOC,IOC,逻辑单元,快速通道互连,逻辑阵列块 (LAB),.,IOC,IOC,.,IOC,IOC,.,IOC,IOC,.,IOC,IOC,.,IOC,IOC,.,IOC,IOC,FLEX 10K系列FPGA结构图,.,IOC,IOC,.,IOC,IOC,.,IOC,IOC,.,IOC,IOC,.,IOC

17、,IOC,.,IOC,IOC,EAB,EAB,嵌入式阵列块,FPGA/CPLD不同芯核电压器件流行趋势,六、如何选用CPLD/FPGA?,适于实现复杂的组合逻辑适于实现复杂的状态机适于实现控制量多的逻辑适于实现完全编码的状态机扇入系数大应用举例:存储总线控制器译码逻辑,适于实现数据通路功能适于实现寄存器用量大的设计适于实现算术功能:加法器、计数器等适于实现“One Hot” 方式编码的状态机应用举例:DSP 功能PCI 接口,乘积项结构/CPLD,查找表结构/FPGA,七、FPGA/CPLD生产商,ALTERA,FPGA: FLEX系列:10K、10A、10KE,EPF10K30E APEX系

18、列:20K、20KE EP20K200E ACEX系列:1K系列 EP1K30、EP1K100CPLD: MAX7000/S/A/B系列:EPM7128S MAX9000/A系列,FPGA: XC3000系列, XC4000系列, XC5000系列 Virtex系列 SPARTAN系列:XCS10、XCS20、XCS30CPLD: XC9500系列:XC95108、XC95256,XILINX,LATTICEVANTIS(AMD),ispLSI系列:1K、2K、3K、5K、8K ispLSI1016 、ispLSI2032、 ispLSI1032E、ispLSI3256A MACH系列 isp

19、PAC系列:,其他PLD公司:ACTEL公司: ACT1/2/3、40MXATMEL公司:ATF1500AS系列、40MXCYPRESS公司QUIKLOGIC公司,CPLD,SO MUCH IC!,FPGA CPLD,第3章 原理图输入设计方法,MAX+plusII的图形编辑器为用户提供所见即所得的设计环境,提供了功能强大,直观便捷和操作灵活的原理图输入设计功能,同时还配备了适用于各种需要的元件库,更为重要的是,MAX+plusII还提供了原理图输入的多层次设计功能,使用户能设计更大规模的电路系统。与传统的数字电路设计相比,MAX+plusII提供的原理图输入设计功能具有显著的优势。,一、原理

20、图设计方法,以原理图进行设计的主要内容在于元件的引入与线的连接。当设计系统比较复杂时,应采用自顶向下的设计方法,将整个电路划分为若干相对独立的模块来分别设计。当对系统很了解且对系统速率要求较高时,或设计大系统中对时间特性要求较高的部分时,可以采用原理图输入方法。这种输入方法效率较低,但容易实现仿真,便于对信号的观察及电路的调整。,内附逻辑函数,子目录“edif”下存放的是一些符合EDIF格式的元件。,l子目录“prim”下存放的是数字电路中一些常用的基本元件库,例如AND、OR、VCC、GND、INPUT、OUTPUT等。,l 子目录“mf”下存放的是数字电路中一些中规模器件库,包括常用的74

21、系列逻辑器件等。将这些逻辑电路直接运用在逻辑电路图的设计上,可以简化许多设计工作。,l 子目录“mega_lpm”下存放的是一些比较大的并可做参数设置的元件,使用中需要对其参数进行设置,在一些特殊的应用场合,可以调用该目录下的元件。,原理图编辑工具,原理图编辑流程,建立设计文件夹 进入原理图设计系统 输入元件 元件的编辑 连线 命名 保存文件 将当前设计项目设置成工程文件,设计项目的处理,项目编译,选择器件,引线端子适配,引线端子锁定,设计项目的校验-仿真,节点输入对话框,波形编辑常用控件按钮,器件编程,二、1位全加器设计向导,1位全加器可以用两个半加器及一个或门连接而成,因此需要首先完成半加

22、器的设计。以下将给出使用原理图输入的方法进行半加器底层元件设计和层次化设计全加器的主要步骤与方法,其主要流程与数字系统设计的一般流程基本一致。,首先建立新目录!,为设计工程建立一个新的目录-WORK 库,新建目录,打开原理图编辑窗,选原理图编辑器,用鼠标双击图面,基本逻辑器件库,双击之,二输入与门,用键盘打入输入引脚名,并回车,同样方法引进输出引脚,完成半加器原理图,将半加器原理图存盘,文件取名为 adderh.gdf,将半加器变成一单一元件,并入库,注意,选此目录,可将当前文件变成原理图软件入库!,将当前设计文件设定为工程文件,注意,此路径的指示文件始终指向当前的工程文件!,开始编译/综合工

23、程文件-半加器,消掉此设置,按“START”键,开始编译!,为顶层设计文件-全加器的设计 另建一原理图编辑窗,双击此元件,打开原理图编辑窗,设计全加器原理图,存盘!,将当前文件设置成工程文件!,编译/综合前选定适配元件,消去QUARTUS设置,选择适配器件,再选择适当的器件,以下假设所选的器件是EPF10K10LC84,选择器件系列,编译!,选择波形编辑器,仿真测试全加器的逻辑功能,建立波形仿真文件,输入测试信号,输入测试信号,全加器端口信号,按此键,设置输入信号电平,启动仿真器,启动仿真器,时序仿真,逻辑测试正确,引脚锁定和编程下载,第4章 VHDL语言初步,一、什么是VHDL?,Very

24、high speed integrated Hardware Description Language (VHDL)是IEEE、工业标准硬件描述语言用语言的方式而非图形等方式描述硬件电路容易修改容易保存特别适合于设计的电路有:复杂组合逻辑电路,如: 译码器、编码器、加减法器、多路选择器、地址译码器.状态机等等.,二、VHDL的功能和标准?,VHDL 描述输入端口输出端口电路的行为和功能VHDL有过两个标准:IEEE Std 1076-1987 (called VHDL 1987)IEEE Std 1076-1993 (called VHDL 1993),Altera VHDL,Altera M

25、ax+Plus II 支持VHDL 1987 and 1993两者版本Max+Plus II 只支持上述两种IEEE standard VHDL语言的可综合子集,VHDLManual,三、关于VHDL,超高速集成电路(VHSIC)硬件描述语言IEEE 标准高级的硬件行为描述语言尤其适合描述大的或者复杂的设计可以在文本编辑器中使用“Insert VHDL Template” 功能插入VHDL模板,四、VHDL 设计流程 : V-S-F-P,A、用VHDL设计一个2选1多路通道,C、用VHDL设计4位加法器,D、用VHDL设计4位计数器,E、用VHDL设计7段16进制译码器,五、通过实例学VHDL

26、,B、用VHDL设计一个D触发器,STEP BY STEP,III WIN!,A、设计一个2选1多路通道,程序包,实体,结构体,信号传输符号,VHDL基本语法小结 1, 库和程序包: IEEE库、STD_LOGIC_1164程序包, 实体: ENTITY name END ENTITY name;, 端口信号模式: IN 、OUT、INOUT、BUFFER, 信号数据类型,和信号传输符号“ = ”: STD_LOGIC、BIT、INTEGER、BOOLEAN ., 结构体: ARCHITECTURE name OF entity_name END ARCHITECTURE;, 文件存盘取名:

27、MUX21.VHD,B、用VHDL设计一个D触发器,ddf1,引进内部节点信号,进程和敏感信号,检测CLK上升沿,将数据输出端口,顺序语句,比较用4种不同语句的D触发器VHDL程序,LIBRARY IEEE;USE IEEE.std_logic_1164.all;ENTITY tdff ISPORT(clk, d: in std_logic; q : out std_logic);END tdff;architecture behaviour OF tdff ISBEGINPROCESSBEGINwait until clk = 1;q = d;END PROCESS;END behaviou

28、r;,Entity test1 isport (clk, d : in bit; q : out bit);end test1;architecture test1_body of test1 ISbeginprocess (clk)begin if (clk = 1) then q = d; end if;end process;end test1_body;,LIBRARY IEEE;USE IEEE.std_logic_1164.all;Entity test1 isport (clk, d : in bit; q : out bit);end test1;architecture te

29、st1_body of test1 ISbeginprocess (clk,d)begin if rising_edge(clk) then q = d; end if;end process;end test1_body;,They are all the same,DFF,VHDL基本语法小结 2, 定义信号 SIGNAL: SIGNAL A1 : STD_LOGIC;, 预定义属性 EVENT: CLKEVENT, PROCESS语句结构: 顺序语句,行为描述语句, 敏感信号表,PROCESS语句特点, IF语句,不完整性IF语句特点, 时序电路描述, 时钟上升沿测试语句结构: CLKE

30、VENT AND CLK = 1 ,C、用VHDL设计4位加法器,注意标准逻辑位矢量的表达方式!,并行赋值语句,4位加法器原理图,加数,被加数,低位进位,和,溢出进位,4位加法器级联成8位加法器,8位被加数,8位加数,进位,8位和,溢出进位,VHDL基本语法小结 3, 预定义运算符加载函数: STD_LOGIC_UNSIGNED程序包;, 标准逻辑位矢量数据类型: STD_LOGIC_VECTOR( 7 DOWNTO 0),并置操作符:“ & ” a = 1 0 b(1) e(2) IF a d = 10100011” THEN, 并行赋值语句, 总线连接的原理图画法,D、用VHDL设计4位计

31、数器,取整数数据类型,为什么?,整数取值范围,端口信号模式取BUFFER,为什么?,注意整数和位的不同表达方式!, 定输出信号数据类型为整数类型: INTEGER,必须定义整数取值范围, RANGE 15 DOWNTO 0,VHDL基本语法小结 4, 端口信号模式取缓冲型: BUFFER, 整数和位的表达方式: 1 + 5 ; 1;“1011”, 号加号算术符的适用范围: Q = Q + 1 ;, 位矢量的表达:INTEGER、STD_LOGIC_VECTER,4位锁存器,组合电路加1器,锁存信号,输出反馈,综合后的计数器电路RTL图,4位计数器设计小结, 用两种不同的表达方式描述同一计数器,

32、 后一种表达方式更具一般性, 计数器由组合电路模块和时序电路模块构成: 加1组合电路、锁存器;计数时钟其实是锁存信号, BUFFER并非是一种特殊的硬件端口结构, 只是一种功能描述。, 注意BUFFER与INOUT 不同。,E、用VHDL设计7段16进制译码器,用CASE语句完成真值表的功能,向7段数码管输出信号,最高位控制小数点,注意,此语句必须加入,4位加法计数器,7段译码器,8位总线输出,信号输出,VHDL基本语法小结 5, 定义信号 SIGNAL: SIGNAL A1 : STD_LOGIC;, 预定义属性 EVENT: CLKEVENT, PROCESS语句结构: 顺序语句,行为描述

33、语句, 号敏感信号表,PROCESS语句特点: STD_LOGIC、BIT、INTEGER、BOOLEAN ., IF语句,不完整性IF语句特点, 时序电路描述,第5章 VHDL设计进阶,数字的表达可以是整数文字 、实数文字、以数制基数表示的文字和物理量文字。字符是用单引号引起来的ASCII字符,可以是数值,也可以是符号或字母,如:R, A,*,0。而字符串则是一维的字符数组,须放在双引号中。,一、 VHDL语言要素,1、VHDL文字规则,标识符是VHDL语言中各种成分的名称,这些成分包括常量、变量、信号、端口、子程序或参数等。定义标识符需要遵循以下规则:l 有效的字符:包括26个大小写英文字

34、母,数字09以及下划线“_”。l 任何标识符必须以英文字母开头。l 必须是单一下划线“_”,且其前后都必须有英文字母或数字。l 标识符中的英文字母不分大小写。l 允许包含图形符号(如回车符、换行符等),也允许包含空格符。l VHDL的保留字不能用于作为标识符使用。,以下是几种合法和非法标识符的示例。合法的标识符:Decoder_1,FFT,abc123。非法的标识符:_Decoder_1 -起始为非英文字母2 FET -起始为数字Not-RST -符号“-”不能作为标识符的构成RyY_RST_ -标识符的最后不能是下划线Data_ _BUS -标识符中不能有双下划线Begin -关键词不能作为

35、标识符res -使用了无效字符“”,下标名用于指示数组型变量或信号的某一元素,而下标段名则用于指示数组型变量或信号的某一段元素,其语句格式如下: 数组类型信号名或变量名(表达式lTO/DOWNTO 表达式2); 下面是下标名及下标段名使用示例: SIGNAL a, b, c:BIT_VECTOR(0 TO 7); SIGNAL m: INTEGER RANGE 0 TO 3; SIGNAL y,z:BIT; y=a(m);-m是不可计算型下标表示 z=b(3); -3是可计算型下标表示 c(0 TO 3)a(4 TO 7);-以段的方式进行赋值 c(4 TO 7)= a(0 TO 3);-以段

36、的方式进行赋值,常量的定义形式如下: CONSTANT 常量名:数据类型:=表达式; 例如: CONSTANT fbt:STD_LOGIC_VECTOR :=“010110”; -标准位矢类型 CONSTANT vcc:REAL:=5.0; -实数类型 CONSTANT dely:TIME:=25ns; -时间类型 常量定义语句所允许的设计单元有实体、结构体、程序包、块、进程和子程序。,2、VHDL数据对象,(1)常量(CONSTANT),定义变量的语法格式如下:VARIABLE 变量名:数据类型:=初始值;例如:VARIABLE a :INTEGER RANGE 0 TO 15;VARIAB

37、LE b,c : INTEGER:=2; VARIABLE d :STD_LOGIC; 变量赋值的一般表达式如下:目标变量名:=表达式;变量作为局部量,其适用范围仅限于定义了变量的进程或子程序的顺序语句中,(2)变量(VARIABLE),信号的定义格式如下: SIGNAL 信号名:数据类型:=初始值;以下是信号的定义示例: SIGNAL s1:STD_LOGIC:=0;-定义了一个标准位的单值信号s1,初始值为低电平 SIGNAL s2,s3: BIT; -定义了两个位(BIT)的信号 s2和 s3 SIGNAL s4:STD_ 信号的赋值语句表达式如下:目标信号名=表达式;信号的使用和定义范

38、围是实体、结构体和程序包。在进程和子程序中不允许定义信号。,(3)信号(SIGNAL),(6)信号赋值和变量赋值分别使用不同的赋值符号“=”和“:=”,信号类型和变量类型可以完全一致,也允许两者之间相互赋值,但要保证两者的类型相同。,(4)信号与变量的区别,(1)信号赋值至少有延时,而变量赋值没有延时。,(2)信号除当前值外有许多相关的信息,而变量只有当前值。,(3)进程对信号敏感而对变量不敏感。,(4)信号可以是多个进程的全局信号;而变量只在定义它们的顺序域可见(共享变量除外)。,(5)信号是硬件中连线的抽象描述,它们的功能是保存变化的数据和连接子元件,信号在元件的端口连接元件。变量在硬件中

39、没有类似的对应关系,它们用于硬件特性的高层次建模所需要的计算中。,(4)用户自定义数据类型 :枚举类型 ,整数与实数类型 ,数组类型 ,记录类型,3、VHDL数据类型,(1)VHDL的预定义数据类型 :布尔(BOOLEAN)数据类型,位(BIT)数据类型,位矢量(BIT_VECTOR)数据类型 ,字符(CHARACTER)数据类型 ,整数(INTEGER)数据类型,自然数(NATURAL)和正整数(POSITIVE)数据类型 ,实数(REAL)数据类型 ,字符串(STRING)数据类型 ,时间(TIME)数据类型,(2)IEEE预定义标准逻辑位与矢量 :标准逻辑位 STD_LOGIC数据类型

40、,标准逻辑矢量STD_LOGIC_VECTOR数据类型,(3)其他预定义标准数据类型 :无符号数据类型(UNSIGNED TYPE),有符号数据类型(SIGNED TYPE)。,数据类型的转换 函数转换法,在VHDL语言中的类型标记转换法是直接使用类型名进行数据类型的转换,这与高级语言中的强制类型转换类似。其语句格式如下:数据类型标志符(表达式);下面几个语句说明了标记类型转换的例子。VARIABLE a:INTEGER;VARIABLE b:REAL;a:=INTEGER(b); b:=REAL(a);,类型标记转换法,4、VHDL操作符,表53VHDL操作符优先级,变量赋值语句和信号赋值语

41、句的语法格式如下: 变量赋值目标 :=赋值源; 信号赋值目标 =赋值源;,二、VHDL顺序语句,1、赋值语句,信号和变量的赋值,例:SIGNAL s1,s2:STD_LOGIC;SIGNAL svec:STD_LOGIC_VECTOR(0 TO 3);PROCESS(s1,s2)VARIABLE v1,v2:STD_LOGIC;BEGIN v1:=1; -立即将变量v1置位为1 v2:=1; -立即将变量v2置位为1 s1=1; -信号s1被赋值为1 s2=1; -由于在本进程中,这里的s2不是最后一个赋值语句故不作任何赋值操作,svec(0)=v1; -将变量v1在上面的赋值1,赋给svec

42、(0) svec(1)=v2; -将变量v2在上面的赋值1,赋给svec(1) svec(2)=s1; -将信号s1在上面的赋值1,赋给svec(2) svec(3)=s2; -将最下面的赋予s2的值0,赋给svec(3) v1:=0; -将变量v1置入新值0 v2:=0; -将变量v2置入新值0 s2:=0; -由于这是信号s2最后一次赋值,赋值有效,此0将-上面准备赋入的1覆盖掉END PROCESS;,IF语句是一种条件语句,它根据语句中所设置的一种或多种条件,有选择地执行指定的顺序语句,常见的IF语句有以下种形式。 (1) IF 条件 THEN 语句 END IF; (2) IF 条件

43、 THEN 语句 ELSE 语句 END IF; (3) IF 条件THEN 语句 ELSIF 条件THEN 语句 ELSE 语句 END IF;,2、转向控制语句,(1)IF语句,例LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 ISPORT( a,b,c,d:IN STD_LOGIC_VECTOR (3 DOWNTO 0); s:IN STD_LOGIC_VECTOR(1 DOWNTO 0); X:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END mux4;ARCHITECTURE behave OF mux

44、4 ISBEGIN Mux4:PROCESS(a,b,c,d),BEGIN IF s=00 THEN-第3种IF语句,实现多选1功能 X=a; ELSIF s=01 THEN X=b; ELSIF s=10 THEN X=c; ELSE X=d; END IF;END process mux4;END behave;,CASE语句是VHDL提供的另一种形式的条件控制语句,它根据所给表达式的值选择执行语句集。CASE语句与IF语句的相同之处在于:它们都根据某个条件在多个语句中集中进行选择。CASE语句与IF语句的不同之处在于:CASE语句根据某个表达式的值来选择执行体。CASE语句的一般形式为C

45、ASE 表达式 ISWHEN 值1= 语句A;WHEN 值2= 语句B;.WHEN OTHERS= 语句C;END CASE,(2)CASE语句,(4)CASE语句执行中必须选中,且只能选中所列条件语句中的一条。,CASE语句使用中应注意以下几点:,(1)WHEN条件句中的选择值或标识符所代表的值必须在表达式的取值范围内。,(2)除非所有条件句中的选择值能完整覆盖CASE语句中表达式的取值,否则最后一个条件句中的选择必须用关键词OTHERS表示以上已列的所有条件句中未能列出的其它可能的取值。,(3)CASE语句中的选择值只能出现一次,不允许有相同选择值的条件语句出现。,例-4选1多路选择器描述

46、方式2LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY test_case ISPORT(s1,s2:IN STD_LOGIC;a,b,c,d: IN STD_LOGIC;z:OUT STD_LOGIC);END test_case;,ARCHITECTURE behave OF test_case ISSIGNAL s:STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN Szzzzz=x; END CASE;END PROCESS;END behave;,LOOP语句就是循环语句,它用于实现重复的操作,由FOR循环或WHILE

47、循环组成。FOR语句的执行根据控制值的规定数目重复;WHILE语句将连续执行操作,直到控制逻辑条件判断为TRUE。下面给出FOR循环语句和WHILE循环语句的一般形式。(a)FOR 循环FOR循环语句的一般形式为:循环标号: FOR 循环变量 IN 循环次数范围 LOOP 顺序处理语句END LOOP循环标号; FOR循环语句中的循环变量的值在每次循环中都将发生变化,而IN后面的循环次数范围则表示循环变量在循环过程中依次取值的范围。,(3)LOOP语句,【例5-11】-8位奇偶校验电路LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY p_check

48、 IS PORT(a: IN STD_LOGIC_VECTOR(7 DOWNTO 0); y: OUT STD_LOGIC);END p_check;ARCHITECTURE behave OF p_check IS SIGNAL tmp: STD_LOGIC;,BEGIN PROCESS(a) BEGIN tmp=0; FOR n IN 0 TO 7 LOOP-FOR循环语句 tmp=tmp XOR a(n); END LOOP; y=tmp; END PROCESS;END behave;,WHILE循环语句的一般形式为:循环标号:WHILE 条件LOOP 顺序处理语句END LOOP循环

49、标号;在WHILE循环中,如果条件为“真”,则进行循环;如果条件为“假”,则结束循环。WHILE循环语句在这里可用于替代FOR循环语句,但需要有附加的说明、初始化和递增循环变量的操作。请注意:一般的综合工具可以对FOR LOOP循环语句进行综合;而对WHILE LOOP循环语句来说,只有一些高级的综合工具才能对它进行综合,所以,一般使用FOR LOOP循环语句,而很少使用WHILE LOOP循环语句。,(b)WHILE循环,【例5-12】-8位奇偶校验电路LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY p_check2 IS PORT(a: IN

50、 STD_LOGIC_VECTOR(7 DOWNTO 0); y: OUT STD_LOGIC);END p_check2;ARCHITECTURE behave OF p_check2 IS SIGNAL tmp: STD_LOGIC; BEGIN,PROCESS(a) VARIABLE i:INTEGER:=0; BEGIN tmp=0; WHILE i8 LOOP-WHILE循环 tmp=tmp XOR a(i); i:=i+1; END LOOP; y=tmp; END PROCESS;END behave;,EXIT语句与NEXT语句具有十分相似的语句格式和跳转功能,它们都是LOOP

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号