1数字系统设计与CPLD应用数字系统设计与CPLD应用技术2数字系统设计与CPLD应用1数字系统设计方法概述2可编程逻辑器件的基本原理目录3可编程逻辑器件的设计4Altera可编程逻辑器件5Altera可编程逻辑器件开发软件6硬件描述语言VHDL初步3数字系统设计与CPLD应用参考教材1.《可编程逻辑器件原理、开发与应用》赵曙光等编著西安电子科技大学出版社2.《集成电路设计VHDL教程》赵俊超等编写北京希望电子出版社3.《CPLD系统设计技术入门与应用》黄正谨等编著电子工业出版社4数字系统设计与CPLD应用参考教材5数字系统设计与CPLD应用参考教材6数字系统设计与CPLD应用参考教材7数字系统设计与CPLD应用实验装置8数字系统设计与CPLD应用0.1绪言0.2数字系统设计方法论第0章数字系统设计方法概述9数字系统设计与CPLD应用0.1.1数字系统的基本概念数字系统是指对数字信息进行存储、传输和处理的电子系统。数字系统通常由输入电路、输出电路、控制电路、数字处理器和时基电路组成。数字系统可用图0—1来描述,其中输入量X和输出量Z均为数字量。§0.1绪言图0—1数字系统示意图输入信号输出信号状态信号控制信号输出电路控制信号输入数据输入电路数字处理电路时基电路控制电路状态信号输出数据10数字系统设计与CPLD应用和模拟系统相比较,数字系统具有如下特点:1.稳定性;2.精确性;3.可靠性;4.模块化。数字系统的设计一般可从三个方面入手:1.选用通用集成电路设计系统;2.利用可编程逻辑器件(PLD)设计系统;3.采用专用集成电路(ASIC)设计系统。11数字系统设计与CPLD应用0.1.2数字系统的基本模型1)数字系统的动态模型:是采用状态转移图、状态方程、时序图等描述方法建立的数字系统模型。2)数字系统的算法模型:是采用对系统完成的功能进行分解,形成一系列的子系统,然后根据子系统所能建立的简单运算,再通过一定的算法组合建立的数字系统模型。算法通常就是对数字系统进行有规律、有序分解的一种描述。12数字系统设计与CPLD应用建立数字系统的动态模型属于数字系统的传统设计方法。随着设计规模的逐渐增大,系统的输入输出变量急剧的增加,系统的状态将会变得更加的复杂,因此,采用这种的方法很难完成大规模的复杂设计。当今的产品开发设计人员通常采用建立数字系统的算法模型来设计数字系统。13数字系统设计与CPLD应用§0.2数字系统设计方法论•数字系统设计的两个分支:1.系统硬件设计2.系统软件设计。•随着计算机技术的发展和硬件描述语言HDL(HardwareDescriptionLanguage)的出现,硬件设计方法又有了新的变化。•数字系统的硬件、软件设计可以在一开始就进行通盘考虑,进行早期仿真,大大提高了系统设计的效率。14数字系统设计与CPLD应用0.2.1数字系统设计方法的三种模式自顶向下(Top-Down)功能级行为级寄存器传输级在中间相遇逻辑级版图级自底向上(Bottom-Up)15数字系统设计与CPLD应用0.2.2自底向上的硬件电路设计方法所谓自底向上(Bottom-Up)的设计方法就是利用现有的通用数字器件,从子系统设计开始,从小到大地逐步设计,最后完成系统硬件的整体设计。自底向上的设计方法属于传统的设计方法。在电子系统计算机辅助设计(EDA)出现之前,人们一直采用传统的硬件电路设计方法来设计数字系统的硬件。16数字系统设计与CPLD应用传统的硬件设计设计方法归纳起来有如下几个主要特征:1.采用自底向上(Bottom-Up)的设计方法;2.采用通用的逻辑器件、元器件;3.在系统硬件设计的后期进行仿真和调试4.主要设计文件是电路原理图。17数字系统设计与CPLD应用硬件电路设计的传统流程18数字系统设计与CPLD应用1.采用自底向上(Bottom-Up)的设计步骤自底向上的硬件电路设计方法的主要步骤是:1).根据系统对硬件的要求,详细编制技术规格书,并画出系统控制流图;2).根据技术规格书和系统控制流图,对系统的功能进行细化,合理地划分功能模块,并画出系统的功能框图;3).进行各功能模块的细化及其电路设计;各功能模块电路设计、调试完成后,将各功能模块的硬件电路连接起来再进行系统的调试;4).完成整个系统的硬件设计、画出电原理图。19数字系统设计与CPLD应用例0-1设计一个六进制计数器采用自底向上(Bottom-Up)的设计方法在各功能模块的电路设计中的体现最能说明问题。所以摆在设计者面前的一个首要问题是如何选择现有的通用逻辑元、器件构成六进制计数器。那么,设计六进制计数器将首先从选择逻辑元、器件开始。20数字系统设计与CPLD应用自底向上(BottomtoUp)的主要设计步骤第一步:选择逻辑元、器件。由数字电路的基本知识可知,可以用与非门,或非门,D触发器,JK触发器等基本逻辑元、器件来构成一个计数器。设计者根据电路尽可能简单,价格合理,购买和使用方便及各自的习惯来选择构成六进制计数器的逻辑元、器件。本例中我们选择JK触发器和D触发器作为构成六进制计数器的主要逻辑元、器件。21数字系统设计与CPLD应用第二步:进行电路设计。假设六进制计数器采用约翰逊计数器。3个触发器连接应该产生8种状态,现在只使用6个状态,将其中的010和101两种状态禁止掉。这样,六进制计数器的状态转移图如图0—2所示。图0-2六进制计数器状态转移图22数字系统设计与CPLD应用表0—1触发器状态变化表触发器状态计数脉冲Q2Q1Q0前一状态当前状态前一状态当前状态前一状态当前状态100000120001113011111411111051110006100000第三步:根据状态转移图列出状态变化表23数字系统设计与CPLD应用第四步:由状态转移表得下列方程:假设这里Q2、Q1分别用两个D触发器,Q0用JK触发器。10120120122QQQQQQQQQQQ00120120121QQQQQQQQQQQ0120120120QQQQQQQQQQ24数字系统设计与CPLD应用表0—2Q2、Q1输出和Q0的J、K输入关系表触发器状态计数脉冲Q2Q1Q1Q0前一状态前一状态JK前一状态当前状态10010012001011301001141101105110100610000025数字系统设计与CPLD应用第五步:由状态方程选通用器件画电路图表0—3六进制约翰逊计数器原理图26数字系统设计与CPLD应用2.采用通用的逻辑元器件在传统的硬件电路设计中,设计者总是根据系统的具体需要,选择市场上能买到的通用的SSI、MSI(如74系列、CC4000系列等),来构成所要求的逻辑电路,从而完成系统的硬件设计。尽管随着微处理器的出现,在由微处理器及其相应硬件构成的系统中,许多系统的硬件功能可以用软件功能来实现,从而在较大程度上简化了系统硬件电路的设计,但是,选择通用的SSI、MSI来构成系统硬件电路的方法并未改变。27数字系统设计与CPLD应用3.在系统硬件设计的后期进行仿真和调试在传统的系统硬件设计方法中,仿真和调试通常只能在后期,即完成系统硬件设计以后,才能进行。因为进行仿真和调试的仪器一般为系统仿真器、逻辑分析仪和示波器等,因此只有在硬件系统已经构成以后才能使用。系统设计时存在的问题只有在后期才能较容易发现。这样,传统的硬件设计方法对系统设计人员有较高的要求。一旦考虑不周,系统设计存在较大缺陷,那么就有可能要重新设计系统,使得设计周期也大大增加。28数字系统设计与CPLD应用4.主要设计文件是电路原理图在用传统的硬件设计方法对系统进行设计并调试完毕后,所形成的硬件设计文件,主要是由若干张电原理图构成的文件。在电原理图中详细标注了各逻辑元、器件的名称和互相间的信号连接关系。该文件是用户使用和维护系统的依据。对于小系统,这种电原理图只要几十张至几百张就行了。但是,如果系统比较大,硬件比较复杂,那么这种电原理图可能要有几千张、几万张,甚至几十万张。如此多的电原理图给归档、阅读、修改和使用都带来了许多麻烦。29数字系统设计与CPLD应用0.2.3利用硬件描述语言(HDL)的硬件电路设计方法所谓硬件描述语言(HDL-HardwareDescriptionLanguage),就是可以描述硬件电路的功能、信号连接关系及定时关系的语言。它可以比电原理图更有效地表示硬件电路的特性。目前ASIC(ApplicationSpecificIntegratedCircuit)芯片研制和生产厂家相继开发了用于各自目的的硬件描述语言。其中已被IEEE标准化,且最具代表性的是美国国防部开发的VHDL语言(VHSICHardwareDescriptionLanguage)及Viewlogic公司的Verilog-HDL语言。30数字系统设计与CPLD应用硬件描述语言HDLHardwareDescriptionLanguage用于设计硬件电子系统的计算机语言,它用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式,与传统的门级描述方式相比,它更适合大规模系统的设计。AbelHDLAHDLVerilogHDLVHDLHardwareCVHDL超高速集成电路硬件描述语言VeryHighSpeedICHardwareDescriptionLanguage包括系统行为级、寄存器传输级和逻辑门级多个设计层次支持结构、数据流、行为三种描述形式的混合描述覆盖了以往各种硬件描述语言的功能整个自顶向下或自底向上的电路设计过程都可以完成31数字系统设计与CPLD应用例如,一个二选一的选择器的电原理图如图0-4所示图0-4二选一选择器的电原理32数字系统设计与CPLD应用用VHDL语言描述的二选一选择器如下:ENTITYmuxISPORT(d0,d1,sel:INBIT;q:OUTBIT);ENDmux;ARCHITECTUREconnectOFmuxISBEGINcalc:PROCESS(d0,d1,sel)VARIABLEtmpl,tmp2,tmp3:BIT;BEGINtmp1:=d0ANDsel;tmp2:=d1AND(NOTsel);tmp3:=tmplORtmp2;q=tmp3;ENDPROCESS;ENDconnect;33数字系统设计与CPLD应用ENTITYmuxIS:::ENDmux;ARCHITECTUREstructOFmuxIS:::ENDstruct;实体结构体34数字系统设计与CPLD应用利用HDL语言设计系统硬件的方法,归纳起来有以下几个特点:1.采用自顶向下(Top-Down)的设计方法;2.系统中可大量采用ASIC芯片;3.采用系统早期仿真;4.降低了硬件电路设计难度;5.主要设计文件是用HDL语言编写的源程序。35数字系统设计与CPLD应用1.采用自顶向下(Top-Down)的设计方法所谓采用自顶向下(Top-Down)的设计方法,就是从系统总体要求出发,自上至下地逐步将设计内容细化,最后完成系统硬件的整体设计。在利用HDL语言的硬件设计方法中,设计者将自上至下分成3个层次对系统硬件进行设计,36数字系统设计与CPLD应用系统子功能块1子功能块2……子功能块n逻辑块11逻辑块12……逻辑块1m逻辑块21……逻辑块111……TOP-DOWN自顶向下设计逻辑块1m1……37数字系统设计与CPLD应用第一层次是行为描述。所谓行为描述,实质上就是对整个系统的数学模型进行描述。一般来说,对系统进行行为描述的目的是试图在系统设计的初级阶段,通过对系统行为描述的仿真来发现设计中存在的问题。在行为描述阶段并不真正考虑其实际的操作和算法用什么逻辑电路来实现。考虑更多的是该数学模型能否达到系统设计规格书的要求。38数字系统设计与CPLD应用第二层次是RTL描述,也称寄存器传输描述(又称数据流描述)。由于用行为方式描述的系统程序,其抽象程度高,所以很难直接映射而得到具体的逻辑器件的硬件实现。要想得到硬件的具体实现,必须将行为方式描述的VHDL语言程序改写为RTL描述的