您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > VHDL与数字电路设计
VHDL与数字电路设计主讲:崔刚北京工业大学电控学院电工电子中心2005年9月1目录概述第一章VHDL的程序结构和软件操作第二章数据类型与数据对象的定义第三章并行赋值语句第四章顺序赋值语句第五章组合逻辑电路的设计第六章时序逻辑电路的设计第七章子程序、库和程序包第八章CPLD和FPGA的结构与工作原理第九章数字钟电路的设计本节主要内容传统数字电路设计方法EDA设计方法PLD器件PLD器件设计流程文本设计输入—VHDL程序设计数字电子技术的基本知识回顾组合逻辑电路编码器、译码器、数据选择器、加法器、数值比较器等时序逻辑电路同步时序逻辑电路异步时序逻辑电路寄存器、移位寄存器、计数器、序列信号发生器一、传统设计方法(1)首先确定可用的元器件;(2)根据这些器件进行逻辑设计,完成各模块;(3)将各模块进行连接,最后形成系统;(4)而后经调试、测量观察整个系统是否达到规定的性能指标。传统的设计方法是基于中小规模集成电路器件进行设计(如74系列及其改进系列、CC4000系列、74HC系列等都属于通用型数字集成电路),而且是采用自底向上进行设计:EDA(ElectronicsDesignAutomation)即电子设计自动化技术,是利用计算机工作平台,从事电子系统和电路设计的一项技术。EDA技术为电子系统设计带来了这样的变化:(1)设计效率提高,设计周期缩短;(2)设计质量提高;(3)设计成本降低;(4)能更充分地发挥设计人员的创造性;(5)设计成果的重用性大大提高,省去了不必要的重复劳动。二、EDA设计方法自顶向下的设计方法数字电路的EDA设计是基于PLD进行设计的,支持自顶向下的设计方法:(1)首先从系统设计入手,在顶层进行功能划分和结构设计;(2)然后再逐级设计底层的结构;(3)并在系统级采用仿真手段验证设计的正确性;(4)最后完成整个系统的设计,实现从设计、仿真、测试一体化。传统设计方法vsEDA设计方法传统设计方法EDA设计方法自底向上手动设计软硬件分离原理图设计方式系统功能固定不易仿真难测试修改模块难移植共享设计周期长自顶向上自动设计打破软硬件屏障原理图、HDL等设计方式系统功能易改易仿真易测试修改模块可移植共享设计周期短三、PLD器件(一)出现的背景如果能把所设计的数字系统做成一片大规模集成电路,则不仅能减小电路的体积、重量、功耗,而且会使电路的可靠性大为提高。为某种专门用途而设计的集成电路叫做专用集成电路,即所谓的ASIC(ApplicationSpecificIntegratedCircuit的缩写)。在用量不大的情况下,设计和制造这样的专用集成电路成本很高,而且设计、制造的周期也较长。可编程逻辑器件的研制成功为解决上述问题提供了比较理想的途径。(二)PLD概述PLD是可编程逻辑器件(ProgrammableLogicDevice)的英文缩写。可编程逻辑器件是一种数字集成电路的半成品,在其芯片上按一定排列方式集成了大量的逻辑门和触发器等基本逻辑元件。通过编程可以设置其逻辑功能。PLD编程:利用开发工具对PLD进行加工,即按设计要求将这些片内的元件连接起来,使之完成某个逻辑电路或系统的功能,成为一个专用集成电路(ASIC—ApplicationSpecificIntegratedCircuit)。PLD开发系统PLD开发系统包括硬件和软件两部分。硬件部分:计算机、下载电缆或编程器;软件部分:集成开发系统。Altera公司:MaxplusⅡ、QuartusⅡXilinx公司:Foundation、ISELattice公司:SynarioSystem、ispEXPERTSystem四、PLD设计流程设计准备设计输入设计处理器件编程功能仿真时序仿真器件测试PLD设计准备在设计之前,首先要进行方案论证和器件选择等设计准备工作。设计者首先要根据任务要求,判断系统的可行性。系统的可行性要受到逻辑要求合理性、成本、开发条件、器件供应等方面的约束。若系统可行,则根据系统所完成的功能及复杂程度,对器件本身的资源和成本、工作速度及连线的可布性等方面进行权衡,选择合适的设计方案和合适的器件类型。设计输入将所设计的电路的逻辑功能按照开发系统要求的形式表达出来的过程称为设计输入。通常,设计输入有如下三种方式:(1)原理图输入方式适用于对系统及各部分电路很熟悉的场合。(2)硬件描述语言输入方式硬件描述语言是用文本方式描述设计,硬件描述语言有ABEL、AHDL、VHDL、Verilog等,其中VHDL和Verilog已成为IEEE标准。(3)波形输入方式设计处理逻辑优化把逻辑描述转变为最适合在器件中实现的形式,优化使设计所占用的资源最少。逻辑综合根据设计描述,对给定的硬件结构组件,最终获得门级电路甚至更底层的电路描述文件,即将多个模块化设计文件合并为一个网表文件。适配确定优化后的逻辑能否与器件中的宏单元和I/O单元适配。分割将大的设计分割为多个便于器件内部资源实现的逻辑小块的形式。设计校验设计校验过程包括功能仿真和时序仿真。功能仿真时序仿真器件编程器件编程就是将开发系统生成的目标文件下载到可编程逻辑器件中,来定义内部模块的逻辑功能以及它们的相互连接关系。两种编程方式:编程器下载电缆PLD开发系统PLD开发系统包括硬件和软件两部分。硬件部分:计算机、下载电缆或编程器;软件部分:集成开发系统。Altera公司:MaxplusⅡ、QuartusⅡXilinx公司:Foundation、ISELattice公司:SynarioSystem、ispEXPERTSystem设计举例设计内容:十进制计数器电路设计。PLD器件:ACEX1K系列的EP1K30QC208。开发系统:MAX+plusⅡ系统。编程方式:下载电缆。实验下载板18:18:24设计过程1、设计输入VHDL演示12、逻辑验证演示23、设计处理引脚设定演示34、器件编程连接下载电缆演示4三、PLD电路设计的特点1、设计简单,方便;2、电路系统可以集成在一片芯片上;3、电路设计不依赖于器件进行设计;4、电路系统很容易完善和升级。器件选择:(1)电路系统所完成的功能及复杂程度;(2)器件本身的资源和成本、性能参数、器件编程工艺等方面进行权衡。VHDL是非常高速集成电路硬件描述语言(VeryHighspeedIntegratedCircuitHardwareDescriptionLanguage)的英文缩写。五、文本设计输入—VHDL程序设计语法和风格:(1)类似与现代高级编程语言,如C语言。(2)VHDL描述的是硬件,它包含许多硬件特有的结构。VHDL设计VS电路图设计VHDL与电路图设计电路的方式不同,和电路图设计方式相比:(1)易于修改;(2)设计能力更强;(3)VHDL语言很方便:独立于器件设计;相同的程序代码可以用于不同厂家生产的器件。VHDL程序的基本结构include“stdio.h”;include“math.h”;intmain(void){inta,b,c;a=8;b=9;c=a+b;returnc;}Librarystd;Usestd.standard.all;Entityand2isPort(a,b:inbit;c:outbit);Endand2;Architecturea1ofand2isBeginc=aandb;Enda1;VHDL程序C程序VHDL程序的基本结构(1)LIBRARY和PACHAGE声明区;(2)ENTITY定义区;(3)ARCHITECTURE定义区;Library(库)是用于存放预先编译好的Package(程序包)。Package(程序包)中定义了基本的常数,数据类型,元件及子程序等。作用:声明在实体和结构体定义中将用到的数据类型、元件或子程序等。声明格式:Library库名;Use库名.PACKAGE名.All;(1)LIBRARY和PACKAGE声明区作用:ENTITY(实体)用于定义电路的外观,即I/O端口的类型和数量。定义格式:Entity实体名isPort(a:inbit;b:inbit;c:outbit);End实体名;(2)ENTITY定义区端口名数据类型端口模式端口模式(MODE)有以下几种类型:IN;OUT;INOUT;BUFFER端口模式可用下图说明:(黑框代表一个设计或模块)INOUTBUFFERINOUT(2)ENTITY定义区(3)ARCHITECTURE定义区实体的实现。即说明电路执行什么动作或实现功能。定义格式:Architecture结构体名of实体名is[声明语句;(内部信号、变量、常数,元件,子程序声明)]Begin并行描述语句;End结构体名;二输入与门电路设计范例abc电路真值表abc000100010111二输入与门电路设计范例Librarystd;Usestd.standard.all;Entityand2isPort(a:inbit;b:inbit;c:outbit);Endand2;--实体定义结束。双减号--为VHDL程序的注释符,类似C语言中的//注释符。二输入与门电路设计范例ArchitectureNaofand2isBeginc=’0’whena=’0’andb=‘0’else’0’whena=’1’andb=‘0’else’0’whena=’0’andb=‘1’else‘1’;符号=为信号直接赋值符。EndNa;--结构体NaArchitectureNbofand2isBeginc=aandb;--and为逻辑与操作EndNb;--结构体Nb第一章VHDL的程序结构和软件操作1-1VHDL程序的基本结构1-2Max+plusⅡ的操作1-1VHDL程序的基本结构include“stdio.h”;include“math.h”;intmain(void){inta,b,c;a=8;b=9;c=a+b;returnc;}Librarystd;Usestd.standard.all;Entityand2isPort(a,b:inbit;c:outbit);Endand2;Architecturea1ofand2isBeginc=aandb;Enda1;VHDL程序C程序1-1VHDL程序的基本结构(1)LIBRARY和PACHAGE声明区;(2)ENTITY定义区;(3)ARCHITECTURE定义区;(4)CONFIGURATION定义区。Library(库)是用于存放预先编译好的Package(程序包)。Package(程序包)中定义了基本的常数,数据类型,元件及子程序等。作用:声明在实体和结构体定义中将用到的数据类型、元件或子程序等。声明格式:Library库名;Use库名.PACKAGE名.All;(1)LIBRARY和PACKAGE声明区作用:ENTITY(实体)用于定义电路的外观,即I/O端口的类型和数量。定义格式:Entity实体名isPort(a:inbit;b:inbit;c:outbit);End实体名;(2)ENTITY定义区端口名数据类型端口模式(2)ENTITY定义区标识符的定义原则:(1)标识符由字母、数字和下划线组成,a7_;(2)在标识符不区分大小写,ab和AB是一样的;(3)第一个字符必须是字母,即a666;(4)不允许有两个连续的下划线,a__b错误;(5)末尾不能是下划线,mname_错误;(6)标识符不能和关键字相同,如Entity,is等。端口模式(MODE)有以下几种类型:IN;OUT;INOUT;BUFFER端口模式可用下图说明:(黑框代表一个设计或模块)INOUTBUFFERINOUT(2)ENTITY定义区(3)ARCHITECTURE定义区定义了实体的实现。即电路的具体描述,说明电路执行什么动作或实现功能。定义格式:Architecture结构体名of实体名is[声明语句;(内部信号、变量、常数,元件,子程序声明)]Begin并行描述语句;End结构体名;(4)CONFIGURATION定
本文标题:VHDL与数字电路设计
链接地址:https://www.777doc.com/doc-4905614 .html