电子设计自动化—EDA.ppt_第1页
电子设计自动化—EDA.ppt_第2页
电子设计自动化—EDA.ppt_第3页
电子设计自动化—EDA.ppt_第4页
电子设计自动化—EDA.ppt_第5页
已阅读5页,还剩159页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1,电子设计自动化EDA,2,电子设计自动化EDA,教材: EDA 技术及应用 讲课: 电话: e-mail:,3,几点疑问?,Q1: EDA 是什么? Q2: 为什么要学习EDA? Q3: 我们要学习什么内容? Q4: 怎样学好这门课程? ,4,课程背景 当前,电子系统设计的复杂程度不断增大、性能要求越来越高,传统的设计方法已无法满足日益复杂的设计要求。20世纪90年代,电子设计自动化(EDA)技术得到了飞速发展并已成为现代电子设计技术中令人瞩目的热点和电子工程师的必备技能。,5,教学目的,1.紧紧跟踪现代电子技术的发展步伐,改善知识结构。,3.提高数字系统设计能力,为今后工作和实践打下良好

2、基础。,2.了解CPLD/FPGA器件的基本结构和使用方法,熟悉EDA工具软件的使用方法,掌握一门硬件描述语言。,6,本课程主要教学内容:,1. EDA的基本知识 2. 数字系统设计的硬件描述语言VHDL。 3. 可编程逻辑器件的结构、原理和使用方法。 4. 学习数字系统设计的一般方法。 5. EDA工具软件的使用方法。,7,主要参考书目 1. VHDL入门、解惑、经典实例、经验总结 黄 任 北航出版社 2. EDA技术实用教程 (第三版) 潘 松 科学出版社 3. CPLD系统设计技术入门与应用 黄正瑾 电子工业出版社 4. VHDL实用教程 潘 松 电子科技大学 5. VHDL与数字电路设

3、计 卢 毅 科学出版社,8,第1章 EDA技术概述,1.1 EDA技术及其发展过程 1.2 硬件描述语言 1.3 可编程逻辑器件及其发展趋势 1.4 基于EDA 技术进行数字系统设计的优越性 1.5 EDA 技术的发展方向,9,1.1 EDA技术及其发展过程,EDA(Electronic Design Automation) 是电子设计自动化的英文缩写。它是指以计算机为工具,在EDA软件平台上,根据设计者描述的源文件(原理图文件、硬件描述语言文件或波形图文件),自动完成系统的设计,包括编译、仿真、优化、综合、适配(或布局布线)以及下载。,设计者的任务:利用软件的方式来完成对系统硬件功能的描述及

4、实现。,10,1.1.1 EDA技术的发展过程,EDA技术的发展大致可分为三个阶段:,第一代: CAD(Computer Aided Design计算机辅助设计) 大约在20世纪70年代,MOS工艺得到广泛应用,出现可编程技术和器件,开始利用计算机取代手工劳动,辅助进行集成电路版图编辑、PCB布局布线等工作。 EDA工具的供应商只有几家,产品主要面向PCB(Printed Circuit Board)布线设计,如Tango软件等。,11,第二代: CAE(Computer Aided Engineering计算机辅助工程) 大约在20世纪80年代,复杂PLD开始应用,当时,Mentor公司、L

5、ogic System公司进入EDA市场,提供带有电路图编辑工具和逻辑模拟工具的EDA软件,主要用于电路设计没有完成之前的功能检验问题,一般是以数字电路的分析和测试工具为代表。在各种硬件描述语言的应用和标准化方面取得了重大进步。,12,第三代:20世纪90年代以后,工艺水平已经达到深亚微米级,硬件描述语言的标准化得到进一步确立,这时的EDA工具门类齐全,能够提供系统设计需要的全部工具,兼容各种硬件实现方案,支持标准硬件描述语言,能完成逻辑综合、设计优化、行为仿真、参数分析和测试工具等。复杂电子系统设计进入了SOC和SOPC时代。,13,1.1.2 EDA技术的基本特征,1、“自顶向下”(up

6、to down)设计方法,是指从系统的总体要求出发,按照一定的标准将整个系统划分成若干个子系统,再将各个子系统划分成若干个功能模块,然后针对各个功能模块进行逻辑、电路设计,最后完成系统硬件的整体设计。 系统-子系统-功能模块-逻辑、电路,系统:大到计算机系统,小到一个简单的数字密码锁控制电路,皆可称为系统。 逻辑功能模块:由逻辑器件构成,能执行某个单一功能的电路,如计数器、译码器、加法器等。 逻辑器件:通常指门、触发器等;,14,自底向上(bottom up)设计方法,是指在整体划分的基础上,先进行单元设计,在精心的单元设计的基础上,逐级向上完成功能模块、子系统设计,直至最后完成系统硬件的整体

7、设计。,系统-子系统-功能模块-逻辑、电路,15,2、用硬件描述语言来描述数字电路与系统,硬件描述语言用来描述硬件电路的功能、信号连接关系及时序的信息。用硬件描述语言可在系统级、RTL(Register Transfer Level 寄存器传输级)级和门级各个层次上对电路和系统进行描述。,16,3、综合及优化,综合就是把较高层次的描述转换到较低层次描述的过程。行为综合指由行为描述到寄存器传输级描述的转换过程;逻辑综合是指从寄存器传输级到门级电路描述的转换过程。,优化是指对综合产生的门级网表,根据布尔方程等效的原则用更小更快的综合结果替代一些复杂的逻辑电路单元,提高设计的性能。,17,综合是进行

8、可编程逻辑器件设计的一个很重要的步骤。设计过程中的每一步都可称为一个综合环节。,(1) 从自然语言转换到VHDL语言算法表示,即自然语言综合; (2) 从算法表示转换到寄存器传输级(Register Transport LevelRTL),即从行为域到结构域的综合,即行为综合; (3) 从RTL级表示转换到逻辑门(包括触发器)的表示,即逻辑综合; (4) 从逻辑门表示转换到版图表示(ASIC设计),或转换到FPGA的配置网表文件,可称为版图综合或结构综合。有了版图信息就可以把芯片生产出来了。有了对应的配置文件,就可以使对应的FPGA变成具有专门功能的电路器件。,18,library ieee;

9、 use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity counter10 is port(en,reset,clk:in std_logic; q:buffer std_logic_vector(3 downto 0); co:out std_logic); end counter10; architecture behav of counter10 is begin process(clk,reset,en) begin if reset=1 then q=0000; elsif clkevent and

10、clk=1 then if en=1 then if q1001 then q=q+1; else q=0000; end if; end if; end if; end process; co=1 when q=1001 else 0; end behav;,19,RTL级综合结果,20,4、开放性与标准化的框架结构,框架,是指软件平台。 框架的关键是建立与硬件平台无关的图形用户界面以及工具之间的通信、设计数据和设计流程的管理平台。,任何一个EDA系统只要建立一个符合标准的开放式框架结构,就可以接纳其他厂商的EDA工具一起进行设计工作。,21,库是由EDA设计公司与半导体厂家合作开发的。库包

11、括各种类型,如:模拟库、综合库、版图库等。,自动设计过程的支持;设计重用(Reuse)。,5、库的引入,IP核(Intellectual Property)知识产权 软核:用HDL描述,用户可以修改。 硬核:以版图形式描述的设计模块,用户不能改动。 固核:介于软核和硬核之间,允许用户重新定义一些性能参数。,22,1.1.3 EDA技术的常用设计工具,逻辑综合 逻辑验证,EDA工具在EDA技术应用中占据了极其重要的位置,按照功能划分,EDA工具大致可分为设计输入工具、检查/分析工具、优化/综合工具、仿真工具、PCB设计工具、适配器(布局布线器)以及下载器(编程器)等多个模块。,前端仿真 版图工具

12、,自动测试 提取验证,23,基于可编程逻辑器件的EDA工具应包括:输入工具、编译器、仿真器、综合器、适配器和下载器。,输入- Design Entry 原理图输入、HDL文本输入、波形输入 编译-Compilation 仿真 Simulation 功能仿真Functional Simulation 时序仿真Timing Simulation 综合- Synthesis 适配- Fitter 下载-编程 (Program)、配置(Configure),24,时序仿真与功能仿真,时序仿真,功能仿真,是接近真实器件运行特性的仿真,仿真文 件中己包含了器件硬件特性参数,因而,仿真 精度高。,是直接对V

13、HDL、原理图描述或其他描述形 式的逻辑功能进行测试模拟,以了解其实现的 功能是否满足原设计的要求的过程,仿真过程 不涉及任何具体器件的硬件特性。,25,功能仿真,时序仿真,26,综合器的功能就是将设计者在EDA平台上完成的某系统的设计文件转换成该系统的门级电路描述(硬件电路)。综合器是软件描述和硬件实现的一座桥梁。 适配器的功能是将综合器产生的网表文件安排在指定的器件中,产生最终的下载文件。,一般在可编程逻辑器件的应用中,综合器由软件厂商(第三方)提供,而适配器则需要由器件供应商自己提供。,27,集成的EDA开发工具,28,常用的综合工具,29,设计文件 process(clk) begin

14、 if (clkevent and clk=1) then if (reset) then begin out cont cont cont cont cont cont = “000”; end case end end end,仿真,综合,适配,EDA软件,下载,硬件电路,30,时序仿真,VHDL 仿真器,基于FPGA的VHDL设计流程图,31,1.2 硬件描述语言,HDL(Hardware Description Language) 设计思想 +语言 +工具 = 产品设计 几种常用的HDL: VHDL; Verilog-HDL; ABEL; AHDL; System-Verilog; S

15、ystemC;,硬件描述语言(HDL)是用来描述硬件电路的功能、信号连接关系及时序关系的语言。用于数字电路及数字系统的设计。,32,1.3 可编程逻辑器件及其发展趋势,可编程逻辑器件简称PLD(Programable Logic Device),它是EDA技术发展的一个重要支持点,PLD的发展推动了EDA工具的发展,也改变了电子系统的设计方法。PLD的发展过程经历了如下几个阶段:,1. 20世纪70年代初期:生产出了最早的可编程逻辑器件PROM和PLA 2. 20世纪70年代末期: AMD公司的PAL器件上市 3. 20世纪80年代初期: 世界上第一片电可擦写的GAL器件问世 4. 20世纪8

16、0年代中期: 推出世界上第一片FPGA器件,同时推出EPLD器件 5. 20世纪90年代初期: 具有在系统可编程能力的CPLD器件问世 6. 20世纪90年代以后: PLD进入高速发展时期,主要表现在: 向集成度更高、速度更快、频带更宽的方向发展; 向嵌入标准和通用功能方向发展; 向绿色元件方向发展低电压、低功耗。,33,1.4 基于EDA技术进行数字系统设计的优越性,一数字系统的概念,现代的电子设备,单纯用模拟电路实现的已经很少见了。通常情况是在系统的前端(如信号放大)和后端(如驱动负载)等局部采用模拟电路,而其余部分均采用数字电路。也就是说,对大多数电子设备而言,其主体部分是数字系统。,系

17、统这个名词的定义是比较含混的,大到计算机系统,小到一个简单的数字密码锁控制电路,皆可称为系统。 通常将门、触发器称为逻辑器件; 将由逻辑器件构成,能执行某个单一功能的电路,如计数器、译码器、加法器等称为逻辑功能部件;,34,通常说来,系统与部件之间的区别在于功能是否单一:一个存储器尽管规模很大,可达数兆字节,但因其功能单一,只能称为部件;而只需几片MSI器件即可实现的数字密码锁控制电路却应称之为系统。,近年来,数字系统的设计大多仿效计算机组成方式,将整个系统分为控制器和受控器二部分(或分成控制器、处理器和存储器三个部分)。 在这种结构下,系统与部件的区别就在于其中有无控制器:一个数字电路,无论

18、其规模大小,必须具有控制器才可称之为系统。,而由若干逻辑部件组成,能实现复杂功能的电路称为数字系统;有些规模较大的系统还可分成若干子系统。,35,1.早期(20世纪60年代中期-70年代中期)的数字系统设计一般采用具有固定功能的标准集成电路如TTL和CMOS电路。用户只能根据需要选择合适的器件,设计的灵活性极差,搭成的系统体积大、可靠性低且开发周期长。,2. 70年代中期兴起的以微处理器(包括单片机)为核心的软件编程设计的热潮至今仍有相当广阔的市场, 微处理器是一种通用型器件,只要配以一定的程序和一些附属电路,原则上可以实现任意复杂的逻辑功能。其优点是设计方便灵活,系统所用器件数较少,程序修改

19、方便,开发周期短,成本低,试制时承担的风险小。但它也有不可克服的缺点:,(1)速度低。 (2)程序“跑飞”; (3)保密性差。,二数字系统的硬件实现,36,基于芯片的设计分全定制(Full Custom)和半定制(Semi-Custom)两种。 全定制设计是由设计人员使用版图编辑工具,从系统级、电路级直到晶体管级的版图尺寸、位置及连线,完成整个芯片的全部设计。 优点是:可以优化芯片性能、提高芯片的元件密度、降低功耗等。只要设计得当全定制集成电路的性能应该是最好的。 集成电路生产工艺流程中需经数次光刻或蚀刻等处理,每次处理都需做一块掩膜,设计制作掩膜的成本相当高,因此全定制设计方法的风险大,设计

20、周期长,通常只有生产批量达数万片以上,全定制设计才有价值。,3. 基于芯片又称专用集成电路(ASIC-Applications Specific Integrated Circuit )的设计方法:大约始于20世纪80年代中期。基于芯片的设计方法开创了电子系统设计新的一页,已逐渐成为电子系统设计的主流方法。,37,半定制设计是一种约束性设计方法,它是在半导体厂家预先设计的基本单元基础上进行的二次设计。 半导体厂家预先设计的基本单元有多种,其中最常用的是使用可编程逻辑器件(PLD)进行设计。 可编程逻辑器件是近年来发展迅速的数字芯片。特点:已经完成了全部工艺制造,可直接从市场上购买,在PLD中,

21、厂家预先设计好一批具有一定逻辑功能的单元,这些单元以库的形式由EDA工具提供。 系统设计者可将所设计的电路通过计算机和开发工具生成关于阵列连接的信息,并将这些信息通过编程器写到芯片中去,因而又称为可编程ASIC。 优点:设计时间短、费用低、风险小。由于PLD器件的规模相当庞大,因而往往一个系统可以在一个片内实现,并且可以得到较高的性能。 采用基于芯片的设计方法实现的系统无论是体积、速度还是可靠性和保密性都是前述器件无法比拟的。,38,39,40,传统技术一般是采用如下步骤进行: 功能设计 硬件搭试 制作样机 样机调试 完成 其中中间的三个部分是相当繁琐的,往往因接线紊乱或接触不良带来各种各样的

22、问题,所用器件越多,搭试越困难,当规模大到一定程度,这种搭试将无法进行。,采用EDA技术的设计流程是: 功能设计 功能仿真 制作样机 样机调试 完成 从表面上看,传统设计方法中最为麻烦的“硬件搭试”变成了EDA技术中的“功能仿真”,即交给计算机上进行调试,由计算机给出调试结果和错误类型,使调试工作相对变得轻松。,三. 采用传统技术和EDA技术实现数字系统的过程比较,41,实际情况远非如此: 首先,传统方法中的“功能设计”全部是在电路级实现的,而EDA技术中的“功能设计”到目前为止不仅可以在电路级进行描述,而且可以在行为级和系统级进行描述。,第二,仿真测试技术是EDA技术中最为瞩目和最具现代电子

23、设计技术特征的功能。 使用计算机可以对所设计的电子系统进行测试,可深入器件内部,完成实际系统的安装后还能进行边界扫描测试。此外还可以对系统的时延、驱动能力、电磁兼容特性、机械特性和热特性进行仿真。 利用仿真工具,设计者可以预知设计结果,减少设计的盲目性。,42,第四,具有自主知识产权。 传统方法中使用的器件全部采购自市场,产品无保密性。 EDA技术中的设计是以PLD或全定制集成电路为基础的,设计者拥有自主知识产权。,第三,具有可重构功能。所谓重构是指同一硬件系统可以构造出多种不同的功能。 可重构技术现已在计算机、神经网络、导弹制导、通讯等应用中采用。有人认为,可重构技术是最终解决电子信息处理系

24、统自适应能力的关键。,第五,对设计者的硬件知识和硬件经验要求低。 传统方法的电子设计与硬件的相关性很强。 EDA技术中的设计一般使用HDL和EDA设计平台,具有与硬件无关的特点,设计者可以忽略硬件的具体实现。,43,1.5 EDA技术的发展方向,1.ASIC芯片尺寸小、 功能强、耗电省, 但设计复杂,需要 批量生产要求。 2.PLD开发费用低, 现场可编程,但体 积大,功耗大。,1.系统级集成 2.线宽减小,寄生 效应影响显著 3.设计效率的提高 4.计算机平台性能 的提高,1.高速度 2.高密度 3.低功耗 4.低电压,44,第5章 VDHL程序设计介绍,45,硬件描述语言(HDL)是用来描

25、述硬件电路的功能、信号连接关系及时序关系的语言,也是一种用形式化方法来描述数字电路和设计数字系统的语言。常用的硬件描述语言有ABEL、AHDL、VHDL、Verilog HDL、System-Verilog和System C等等。,VHDL -Very high speed integrated circuit Hardware Description Language,超高速集成电路(VHSIC)硬件描述语言 美国国防部在80年代初研究VHSIC计划时组织开发的,并成功用于军方的设计项目. 2.IEEE 标准: IEEE Std 1076-1987 (called VHDL 1987) IE

26、EE Std 1076-1993 (called VHDL 1993),由于当时工业界的迫切需要,IEEE标准化委员会于1987年将其确定为标准硬件描述语言,1993年,又对此标准作了进一步修定.,46,(1)行为描述能力强 描述简单、方便 (2)丰富的仿真语句和函数库 可在高层次上进行仿真模拟 (3)支持大规模设计和分解已有设计的再利用功能 实体、程序包、设计库等是并行工作和设计分解的基础 (4)EDA工具支持它的综合、仿真和优化 系统级、算法级、RTL级、逻辑级、开关级等 (5)对设计描述具有相对独立性 与具体的工艺技术和硬件结构无关 (6)良好的可扩展性 可轻易改变设计的规模和结构,3.

27、 VHDL语言特点,47,VHDL:行为级描述 描述层次高,适宜电路高级建模,设计工作量小 综合过程:行为级RTL级门电路级 VerilogHDL:RTL级描述 描述层次低,适宜描述门级电路,设计工作量大 综合过程:RTL级门电路级 ABEL-HDL: RTL级描述 描述层次和综合过程同Verilog 多用在小规模的PLD 设计中,如GAL等 在全定制集成电路设计中不如VHDL、Verilog-HDL使用普遍,4.常用的三种硬件描述语言的比较,48,5.1 VHDL程序的基本结构,49,library ieee; use ieee.std_logic_1164.all; use ieee.st

28、d_logic_unsigned.all; entity counter10 is port(en,reset,clk:in std_logic; q:buffer std_logic_vector(3 downto 0); co:out std_logic); end counter10; architecture behav of counter10 is begin process(clk,reset,en) begin if reset=1 then q=0000; elsif clkevent and clk=1 then if en=1 then if q1001 then q=q

29、+1; else q=0000; end if; end if; end if; end process; co=1 when q=1001 else 0; end behav;,50,在VHDL设计中,实体是其最基本的结构。 实体类似于原理图中的一个部件符号,并不描述设计的具体功能,只定义了该设计所需的全部输入/输出信号。 对系统进行分层设计时,各层的设计模块都可作为实体。 顶层的系统模块是顶级实体,低层次的设计模块是低级实体。 描述时,高级实体可将低一级实体当作元件来调用。,5.1.1 实体(Entity),51,【程序5.1.1】 ENTITY mux21a IS PORT( a, b

30、: IN BIT ; s : IN BIT; y : OUT BIT) ; END ENTITY mux21a ;,实体说明的格式:,参数说明部分;,ENTITY IS 端口说明部分; END ENTITY ;,实体说明以“ENTITY IS” 开始,至 END ENTITY ” 结束。,52,其中:,ENTITY mux21a IS PORT( a, b : IN BIT; s : IN BIT; y : OUT BIT); END ENTITY mux21a ;,(2)端口模式:说明信号的方向,有以下几种模式: IN 输入信号; OUT 输出信号; INOUT 双向信号; BUFFER 输

31、出信号,但可在内部反馈使用(缓冲); BUFFER是INOUT的子集,但作输入用时,信号不是由外部驱动,而是从输出反馈得到。,参数说明主要为设计实体指定参数,如端口宽度、器件延迟时间等;,端口说明描述的是设计实体和外部的接口,具体说就是对端口名称、端口模式和端口数据类型进行说明。,(1)端口名称:输入输出信号的名称,在实体中必须是唯一的。,53,(3)端口数据类型:端口信号的数据类型 明确地指定和严格地定义端口信号的数据类型是VHDL的重要特点, 即所谓的强数据类型,这是学习VHDL应特别注意之处,ENTITY mux21a IS PORT ( a, b : IN BIT; s : IN BI

32、T; y : OUT BIT ); END ENTITY mux21a ;,VHDL中常见的数据类型有以下几种: BIT 位类型,取值0、l BIT_VECTOR 位向量类型,是BIT的组合 STD_LOGIC 工业标准的逻辑位类型,取值0、1、X、Z等 STD_LOGIC_VECTOR 工业标准的逻辑位向量类型,是STD_ LOGIC的组合 INTEGER 整数类型,可用作循环的指针或常数 BOOLEAN 布尔类型,取值FALSE、TRUE,54,例:用VHDL描述图5.1.2所示实体,d15:0是16位输入总线; clk、reset、oe是输入信号; q115:O是16位三态输出总线; q

33、215:0是16位双向总线; int是输出信号,并反馈到内部使用; opt是三态输出信号。,55,Example 的实体说明如下: 【程序5.1.2】 ENTITY example IS END example;,PORT ( d: IN STD_ LOGIC_VECTOR (15 DOWNTO 0); clk, reset, oe: IN STD_LOGIC; q1: OUT STD_LOGIC_VECTOR (15 DOWNTO 0); q2: INOUT STD_LOGIC_VECTOR(15 DOWNTO 0); int: BUFFER STD_LOGIC; opt: OUT STD_

34、LOGIC );,56,5.1.2 结构体(Architecture ),1.结构体的概念 结构体描述的是实体内部的逻辑功能。,【程序5.1.3】 ARCHITECTURE one OF mux21a IS BEGIN y = a WHEN s = 0 ELSE b; END ARCHITECTURE one;,57,结构体说明部分;,(1)OF后的实体名应与实体说明中的实体名一致,结构体的基本格式:,(2)功能描述语句是结构体中的主要部分,用于描述所实现实体的 功能,功能描述语句可包括四种不同类型的并行语句:,(3)说明语句是对结构体的功能描述语句中将要用到的信号、数据 类型、常数、元件、函

35、数和过程等加以说明,进程语句,信号赋值语句,子程序调用语句,元件例化语句,ARCHITECTURE OF IS,END ARCHITECTURE ;,BEGIN,【程序5.1.3】 ARCHITECTURE one OF mux21a IS BEGIN y = a WHEN s = 0 ELSE b; END ARCHITECTURE one;,58,2.结构体的描述方式,(1)行为描述方式:Behavior 对设计实体的数学模型的描述,其抽象程度最高。 类似于高级编程语言,无需知道电路的具体结构。 优点是只需描述输入与输出的行为,不关注具体的电路实现。,(2)数据流描述方式:Dataflow

36、(也称寄存器传输级描述) 从信号到信号的数据流动的路径形式进行描述。 设计人员对设计实体的功能实现要有一定的了解,有时还需对电路的具体结构有清楚的认识。 优点是易于进行逻辑综合,综合效率较高。,在VHDL中,允许设计人员采用不同的描述风格来进行设计实体中结构体的书写,结构体的描述方式通常有三种:,59,(3)结构描述方式:Structural 指在多层次的设计中,通过调用库中的元件或是已设计好的模块来完成实体功能的描述。 结构描述方式只表示元件(或模块)和元件(或模块)之间的互连,就像网表一样。 优点是可以将已有的设计成果用到当前的设计中去,因而大大提高设计效率,对于可分解的大型设计,结构描述

37、方式是首选方案。,另外也可以使用上述三种描述方式的组合来进行结构体的描述,即混合描述方式。,60,【程序5.1.4】 ENTITY rsf IS PORT (set, reset:IN BIT; q,qb :BUFFER BIT); END rsf;,下面以 RS 触发器为例说明三种描述方式的使用方法,R-S触发器的实体描述:,61,【程序5.1.5】 ARCHITECTURE rs_behav OF rsf IS BEGIN PROCESS(set, reset) - - 进程 VARIABLE last_state: BIT; - - 给输出q一个状态变量定义 BEGIN IF set =

38、 1 AND reset = 1 THEN Last_state : = last_state; ELSIF set = 0 AND reset = 1 THEN Last_state : = 1; ELSIF set = 1 AND reset = 0 THEN Last_state : = 0; END IF; q = last_state; - - 给输出信号赋值 qb = NOT (last_state); END PROCESS; END rs_behav;,行为描述方式:,进程,敏感信号表,62,进程语句PROCESS: PROCESS(set, reset) 括号中的set, r

39、eset信号称为敏感信号,是该进程的激活条件,注意: 进程中的语句是顺序语句,它们之间不是并行关系,执 行时是按书写的先后次序顺序执行的。 行为描述方式描述的是与硬件电路结构无关的算法关 系,所以应该按算法的流程顺序执行。,只要set和reset信号有一个发生变化,该进程中的语句就会被顺序地执行一遍,63,数据流描述方式:,【程序5.1.6】 ARCHITECTURE rs_dataflow OF rsf IS BEGIN q = NOT( qb AND set ); qb = NOT( q AND reset); END rs_dataflow;,q和qb两句信号赋值语句之间是并行的关系,即

40、只要输人set和reset发生了变化,这两个语句就会同时被执行,产生相应的输出。,和一般程序设计语言的顺序执行的情况不同,这里是和硬件电路的工作情况是一致的。,64,【程序5.1.7】 ARCHITECTURE rs_struc OF rsf IS COMPONENT nand2 - - 元件说明 PORT (a,b: IN BIT ; c: OUT BIT ); END COMPONENT; BEGIN u1:nand2 port map(a = set, b = qb, c = q); - - 元件例化语句 u2:nand2 port map(a = reset, b = q, c = q

41、b); END rs_struc;,结构描述方式:,65,5.1.3 库、程序包,VHDL的基本结构由前述的实体和结构体组成,但实际中的VHDL程序除上述两个基本部分以外通常还包括另外三个部分:库、程序包和配置 库:主要用来存放已经编译的实体、结构体、程序包等; 程序包:主要用来存放各个设计都能共享的数据类型、子程序、常数和元件等;,66,VHDL库中的各个设计单元:实体、结构体、程序包和配置都可以作为其他设计的资源,一个设计可以使用多个库中的设计单元。 当一个设计要使用库中的已编译单元时,必须要在每个设计的VHDL源代码的开头说明要引用的库,然后使用USE子句指明要使用库中的哪一个设计单元。

42、,(1)库说明语句格式: library ; 以library 开头,后面紧跟着设计中要使用的库的名字 库说明语句使该库对于设计可见,(2)USE子句格式: use .all; 库名是前面库说明语句中说明的库 程序包名是设计中要使用的库中的设计单元 all表示使用程序包中的所有资源,1. 库(Library),67,ENTITY example IS PORT ( d: IN STD_ LOGIC_VECTOR (15 DOWNTO 0); clk, reset, oe: IN STD_LOGIC; q1: OUT STD_LOGIC_VECTOR (15 DOWNTO 0); q2: INO

43、UT STD_LOGIC_VECTOR (15 DOWNTO 0); int: BUFFER STD_LOGIC; opt: OUT STD_LOGIC ); END example;,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;,【程序5.1.8】,68,(3)库的种类 VHDL程序设计时可使用的库主要有两大类: 设计库和资源库。 设计库对当前设计是可见的,使用时无需进行说明。 资源库是用来存放常规元件和常用模块的库,使用时首先要进行说明。,69,资源库: 在资源库中,IEEE库是最常用的一个,该库中含有 std_logic_1164、std_logi

44、c_signed、std_logic_unsigned 和 std_logic_arith等程序包。,STD库:VHDL的标准库,该库定义了两个标准程序包: standard中定义了bit、bit_vector、character和time等数据类型。 textio中主要包括了对文本文件进行读写操作的过程和函数。,设计库:包括STD库和WORK库。,WORK库:VHDL的工作库。 主要用于存放用户设计和定义的一些设计单元和程序包。 该库是用户的临时仓库,用户设计项目的半成品、成品以及先 期设计的元件都放在该库中。,70,在VHDL中,设计的实体说明和结构体中定义的数据类型、子程序说明、属性说明

45、和元件说明等部分只能在该设计实体中使用,而对于其他设计实体是不可见的。为减少重复定义工作,VHDL提出了程序包的概念,用来存放能够共享的数据类型、子程序说明、属性说明和元件说明等。,程序包说明部分:主要对数据类型、子程序、常量和元件等进行说明,PACKAGE 程序包名 IS - 程序包首 程序包说明部分 END 程序包名;,程序包体部分:用来规定程序包的实际功能。,(1)程序包的结构:,PACKAGE BODY 程序包名 IS - 程序包体 程序包体说明部分以及包体内容 END 程序包名;,2.程序包,71,预定义的程序包,STD_LOGIC_1164程序包: 是IEEE库中最常用的程序包,其

46、中包含了一些数据类型、子类型和函数的定义。这些定义将VHDL扩展成一个可以描述多值逻辑的硬件描述语言。该程序包中最常用的两个数据类型是:STD_LOGIC和STD_LOGIC_VECTOR。,(2)常用的预定义程序包:,72,STANDARD和TEXTIO程序包: Standard和textio程序包是std库中的预编译程序包。 Standard中定义了许多基本的数据类型等。Textio程序包主要供仿真器使用。可以用文本编辑器建立一个数据文件,文件中包含仿真时需要的数据,仿真时用textio程序包的子程序存取这些数据。,STD_LOGIC_UNSIGNED和STD_LOGIC_SIGNED程序

47、包: Std_logic_unsigned和std_logic_signed程序包都是Synopsys公司的程序包,预先编译在IEEE库中。此程序包定义了可用于Integer型及Std_logic和std_logic_vector型混合运算的运算符。还定义了一个从std_logic_vector到integer型的转换函数。,STD_LOGIC_ARITH程序包: STD_LOGIC_ARITH程序包预先编译在IEEE库中,是Synopsys公司的程序包。此程序包在STD_LOGIC_1164程序包的基础上扩展了3个数据类型,UNSIGNED、SIGNED和SMALL_INT,并为其定义了相关

48、的算术运算符和转换函数。,73,library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all;,74,5.1.4 配置,配置可以把特定的 结构体指定给一个确定的实体。,例如当对实体进行仿真时可为同一实体配置不同的结构体以比较其差别;或者为例化的各元件实体配置指定的结构体,从而形成一个所希望的例化元件层次构成的设计实体。,配置语句的一般格式如下:,CONFIGURATION OF IS FOR END FOR; END ;,75,例题:,LIBRAR

49、Y IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY nand IS PORT (a,b:IN STD_LOGIC; c:OUT STD_LOGIC); END ENTITY nand;,ARCHITECTURE two OF nand IS BEGIN c=1WHEN (a=0) AND (b=0) ELSE 1WHEN (a=0) AND (b=1) ELSE 1WHEN (a=1) AND (b=0) ELSE 0WHEN (a =1) AND (b=1) ELSE 0; END ARCHITECTURE two;,ARCHITECTURE one OF

50、 nand IS BEGIN c = NOT(a AND b); END ARCHITECTURE one;,CONFIGRATION second OF nand IS FOR two END FOR; END second;,CONFIGRATION first OF nand IS FOR one END FOR; END first;,-,-,76,5.2 VHDL语言要素,5.2.1 VHDL的文字规则,与其他计算机高级语言一样,VHDL也有自己的文字规则 VHDL文字主要包括数字、标识符、字符和字符串等。,1.标识符,标识符主要用来为常数、变量、信号、端口、子程序和参数等命名。,有

51、效的字符:包括26个大小写英文字母,数字包括09 以及下划线“_” 任何标识符必须以英文字母开头 下划线“_”的前后必须有英文字母或数字 标识符中的英语字母不分大小写,例: Decoder_1 , FFT, sig_n, Not_ACK 是正确的 而 _Decoder_1 , 2FFT, sig_#n,return 是错误的,其规则如下:,77,2. 数字,(1)整数:整数都是十进制的数, 如:5,678,0,156E2(=15600),45_234_287 (=45234287),(2)实数:实数也都是十进制的数,但必须带有小数点, 如:1.335, 88_670_551.453_909(=

52、88670551.453909),1.0,44.99E-2(=0.4499),(3)以数值基数表示的数: 用这种方式表示的数由五部分组成:基 # 整数 # 指数 第一部分:用十进制数标明数值进位的基数; 第二部分:数值隔离符“#”; 第三部分:表达的数值; 第四部分:指数隔离符“#” ; 第五部分:用十进制数表示的指数部分,若为0可省略不写。,78,例如: 10#170# ; - (表示第三部分为十进制数,等于 170) 16#FE#; - (表示第三部分十六进制数 ,等于 254) 2#1111_1110#;- (表示第三部分为二进制数,等于 254) 8#376#; - (表示第三部分为八

53、进制数,等于 254) 16#E#E1 ; - (表示十六进制数,等于14161,等于224),3. 字符和字符串,(1) 字符是用单引号括起来的ASC码 一般情况下VHDL对字母的大小写不敏感,但对字符的大小写是敏感 的,例:A 和 a 是不同的。 (2) 字符串是用双引号括起来的字符序列 在VHDL中字符串常用来作为说明文字出现。 例:“it is time out”, “ ERROR”, “Both S and Q equal to 1” 注意:“a” 和 a是不同的,79,B:二进制基数符号 O:八进制基数符号 X:十六进制基数符号(0F) 采用位串的优点是为了增加源代码的可读性。,例

54、:B1_1101_1110 - 二进制数数组,位矢数组长度是9 O15 - 八进制数数组,位矢数组长度是6 X“AD0” - 十六进制数数组,位矢数组长度是12 B101_010_101_010 - 二进制数数组,位矢数组长度是12 0AD0 - 表达错误,缺X,4.位串,位串是用双引号括起来的数字序列,数字序列前面加上一个基数说明符:,80,5.2.2 数据对象(DATA OBJECTS),VHDL是一种硬件描述语言,硬件电路的工作过程实际上是信号的传输和存储的过程,所以VHDL最基本的描述对象是信号。为了便于描述,还定义了另外两类数据对象:变量和常量。,1. 常量(CONSTANT),常量

55、是指在设计实体中不会发生变化的值 常量定义的一般表述: CONSTANT 常量名:数据类型 := 表达式 ;,例如: constant a,b : INTEGER := 2; constant VCC : REAL : 3.3;,注意: 常量一旦被赋值就不能再改变 常量可以在程序包、实体说明、结构体和进程的说明区域进行说明 常量所赋的值应与其所定义的数据类型一致,否则出错,81,2. 变量(VARIABLE),变量主要用于对暂时数据进行存储,它不能将信息带出对它作出定义的当前单元。 (1)变量定义的一般格式: VARIABLE 变量名:数据类型 := 初始值;,例:VARIABLE a : s

56、td_logic; VARIABLE b ,c : integer := 2; VARIABLE count1,count2,count3 : integer range 0 to 255 := 0; 例中定义a为标准逻辑位变量,b, c为整数型变量,初始值为2等。,82,注意: (1)赋值语句右边的表达式必须是一个与目标变量具有相同数据类型的数值。 (2)变量是一个局部量,只能在进程和子程序中使用。 (3)变量的赋值是一种理想化的数据传输,是立即发生的,不存在任何延时的行为。,(2)变量的赋值 变量可以被连续地进行赋值,变量的赋值采用的符号是 “:=”,格式如下: 变量名 := 表达式; 例

57、:a := “1010101” ; -位矢量赋值 b := 0 ; -位赋值 x := 100.0 ; -实数赋值,83,3. 信号(SIGNAL),信号是描述硬件系统的基本数据对象,它是设计实体中并行语句模块间动态交换数据的手段。在物理上信号对应着硬件设计中的一条连接线。 信号定义语句格式: SIGNAL 信号名: 数据类型 := 初始值 ;,例:SIGNAL clk : std_logic := 0; SIGNAL a : integer range 0 to 15; SIGNAL data : std_logic_vector(15 downto 0); 信号的初始值不是必须的,而且仅在

58、VHDL的行为仿真中有效,信号的定义范围是实体、结构体和程序包,84,信号赋值采用如下格式: 信号名 = 表达式; 例: x = 9; y = x; 在进程中,可以允许同一信号有多个赋值源,即在同一进程中存在多个同名的信号被赋值,其结果只是最后的赋值语句被启动。, SIGNAL a,b,c,y,z: integer ; PROCESS(a,b,c ) BEGIN y = a*b; - 不对y进行赋值 z = c-x; y = b; - y的最后赋值 END PROCESS; ,85,信号(SIGNAL) 基本用法:在电路中作为信号连线使用 适用范围:在整个结构体内的任何地方都能适用 行为特性:赋值具有一定的延迟 在进程中,只在进程的的最后才对信号赋值,信号与

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论