1、EDA原理及VHDL实现 (该课程为校级精品课程),何宾 2011.09,课程内容,第1章 数字系统EDA设计概论 第2章 可编程逻辑器件设计方法 第3章 VHDL语言基础 第4章 数字逻辑单元设计 第5章 数字系统高级设计技术(*) 第6章 基于HDL设计输入 第7章 基于原理图设计输入 第8章 设计综合和行为仿真 第9章 设计实现和时序仿真,课程内容,第10章 设计下载和调试 第11章 数字时钟设计及实现(*) 第12章 通用异步接收发送器设计及实现(*) 第13章 数字电压表设计及实现(*) 第14章 软核处理器PicoBlaze原理及应用(*)注:带*的内容可根据课时的安排选讲,课程授
2、课时间安排,该课程计划总学时:56其中:理论教授课时:40实验课时:16(大约安排实验6-7个),课程教学用书,理论教学参考用书:1.何宾编著,清华大学出版社。2011.09。实验教学参考用书:1. 何宾编著,,清华大学出版社。2009.072. 何宾编著,清华大学出版社 课程网络资源:http:/,课程所要解决的问题?,回忆大二所学数字电路课程,还留在你们心 中的回忆: 烦琐的卡诺图的化简(令你们和我一样抓狂) 如果让你手工化简多变量呢?估计你要崩溃 想想在做电子课程设计中,你们要花大量的时间和精力把区区几个74LSXX的门电路,用大量的导线连接在一起。这个过程估计你们谁也头疼。你们也一定也
3、知道在你们教科书的末尾好象提到 了一个称为硬件描述语言HDL的东西。老师没 讲,忽略了,为什么啊?(这门课将要揭密),课程所要解决的问题?,当你们经历了以上的痛苦后,不知道你们想过下 面的问题没有? 能不能让计算机帮助化简卡诺图?而且是多个变量?能不能用一种芯片实现多个分离小规模数字IC的功能,并且在芯片内部将这些功能连接? 设计数字系统能不能象C语言那样,只关心“如何描述”一个数字系统,而不是“如何具体实现”数字系统。,课程的重要性,该课程的学习对后续多门课程的学习起着重要的 作用,比如微机原理、单片机、数字信 号处理 、通信原理等和“数字”0和1有关课 程。该课程是从事电子系统设计相关专业
4、学生必须掌 握的内容。大学生电子设计竞赛也把该课程内容作为参赛学 生应该掌握的内容之一。你们慢慢体会吧,数字系统EDA技术发展概述,电子设计自动化(Electronics Design Automation, EDA)技术是一门迅速发展的新技术。EDA设计就是在计算机上通过特定功能的软件开 发工具,协助设计人员以全自动或半自动化方式完成 所要求电子系统的设计。,数字系统EDA技术发展概述,EDA技术所涉及的领域相当广泛,业界一般将 EDA技术分成:狭义EDA技术广义EDA技术,数字系统EDA技术发展概述,狭义EDA技术,就是指以大规模可编程逻辑器件为 设计载体,以硬件描述语言为系统逻辑描述的主
5、要表达方 式,以计算机、大规模可编程逻辑器件的开发软件及实验 开发系统为设计工具,通过有关的开发软件,自动完成用 软件方式设计的电子系统到硬件系统的:逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、 逻辑布局布线、逻辑仿真,直至对于特定目标芯片的适配 编译、逻辑映射、编程下载等工作最终形成集成电子系统或专用集成芯片的一门新技 术,或称为IES/ASIC自动设计技术。,数字系统EDA技术发展概述,广义EDA技术,是通过计算机及其电子系统的辅助 分析和设计软件,完成电子系统某一部分的设计过 程。因此,广义EDA技术除了包含狭义的EDA技术 外,还包括: 计算机辅助分析CAA技术(如PSPICE,EW
6、B,MATLAB等), 印刷电路板计算机辅助设计PCB-CAD技术(如PROTEL,ORCAD等) 其它高频和射频设计和分析的工具等,数字系统设计技术发展历史,在过去的60年中,数字逻辑改变了整个世界, 整个世界朝着数字化方向发展。今天我们所熟悉的 计算机在第二次世界大战后才出现在人类世界中。表1.1给出了在计算机和数字逻辑发展历史上的 重大事件。从该表可以看出数字逻辑设计技术经过了近400 年的逐步进化的过程。,数字系统设计技术发展历史,数字系统设计技术发展历史,数字系统设计技术发展历史,数字系统设计技术发展历史,摩尔定律-“统治半导体世界的法则”,在1965年戈登.摩尔给出了世界上著名的“
7、摩尔定 律”,并且于1975年进行了修正,在过去的35年以 来,被证明是非常正确的。该定律的内容是:集成电路上可容纳的晶体管数 目,约每隔18个月便会增加一倍,性能也将提升一 倍,当价格不变时;或者说,每一美元所能买到的电 脑性能,将每隔18个月翻两倍以上。这一定律成为半 导体工艺不断发展的指南。,摩尔定律-“统治半导体世界的法则”,图1.1 摩尔定律与集成电路的发展趋势,数字系统设计技术发展历史,今天你们每个人都离不开一样东西-“电脑”,也就 是“微处理器”,但是以后在坐的各位,你们会发现 你们也离不开另一样东西-“可编程逻辑器件”,我这 门课程所介绍的东西。你们也一定很好奇,别着急,听我后
8、面慢慢介 绍。,现代数字系统设计发展阶段,现在数字系统设计的发展是随着计算机的出 现、集成电路制造水平和电子系统设计方法的发展 而不断发展的,主要经历了:计算机辅助设计(CAD,Computer Assist Design) 计算机辅助工程设计(CAE,Computer Assist Engineering) 电子设计自动化(EDA,Electronic Design Automation)这几个阶段的特点和标志是什么?,集成电路芯片的发展历史,集成电路的发展分为了四个主要的阶段:1)在上世纪六十年代早期出现了第一片集成电路, 其集成的晶体管数量少于100个,该集成电路称为小规 模集成电路(S
9、mall-Scale Integrated Circuit, SSI)。2)在上世纪六十年代后期出现了中规模集成电路 (Medium-Scale Integrated Circuit, MSI),其集成的 晶体管数量达到几百个。3)在上世纪70年代中期,出现了大规模集成电路 (Large-Scale Integrated Circuit, LSI),其集成的晶 体管数量达到几千个。,集成电路芯片的发展历史,4)在上世纪80年代早期,出现了超大规模集成电路 (Very-large-scale-integrated, VLSI),其集成的晶体管 的数量超过了100,000个。到上世纪80年代后期,
10、集成的晶体管数量超过了 1,000,000个。到上世纪90年代,集成的晶体管数量超过了 10,000,000,而到了2004年,这一数量已经超过了100,000,000个。 现在这一数量突破1,000,000,000个。,可编程逻辑器件的发展历史,1第1阶段上世纪70年代,可编程器件只有简单的可编程只读 存储器(PROM)、紫外线可擦除只读存储器 (EPROM)和电可擦只读存储器(EEPROM)3种, 由于结构的限制,它们只能完成简单的数字逻辑功 能。,可编程逻辑器件的发展历史,2第2阶段上世纪80年代,出现了结构上稍微复杂的可编程 阵列逻辑(PAL)和通用阵列逻辑(GAL)器件, 正式被称为
11、PLD,能够完成各种逻辑运算功能。,可编程逻辑器件的发展历史,3第3阶段上世纪90年代,Xilinx和Altera分别推出了与标准门 阵列类似的FPGA和类似于PAL结构的扩展性CPLD。4.第4阶段本世纪初,在该阶段出现了SOPC技术,是PLD和 ASIC技术融合的结果。可编程逻辑器件厂商也提供了 SOPC解决方案。典型的,Xilinx和Altera也推出了相应SOPC FPGA 产品,制造工艺达到65nm/40nm/28nm工艺水平,系 统门数也超过百万门。,数字系统设计方法概论,传统的数字系统的设计方法是画出逻辑图,这个图 包含SSI的门和MSI的逻辑功能,然后人工通过真值表和 通过卡诺
12、图进行化简,得到最小的表达式,然后在基于 TTL的LSI芯片上实现数字逻辑的功能。,数字系统设计方法概论,然而从图1.1可以看出,到了上世纪80年代后期和90 年代早期,这种设计方法遭遇了阻力。为什么呢?问题就是如何能画一个原理图,这个原理图包含成千 上万个门。正如在新的设计中可编程逻辑设备取代TTL芯 片那样,需要一种新的设计方法来设计数字电路。今天,计算机辅助设计工具(Computer-aided Tools, CAD),也称为EDA工具在当今的数字电路设计中是必须 的。,数字系统设计方法概论,在过去数十年越来越清楚的表明,今天的数字系统 的设计人员是通过写软件来设计数字电路的。这是最 重
13、要的例子,说明了从传统数字系统设计方法向现代 的基于EDA工具的设计方法的转变。,数字系统设计方法概论,今天的数字系统设计工程师使用硬件描述语言 (Hardware Description Language, HDL)来设计数字系 统。最广泛使用的HDL语言是VHDL和Verilog HDL。这 些语言允许设计人员通过写程序描述逻辑电路的行为来 设计数字系统。程序能用来仿真电路的操作和在CPLD、FPGA或者专 用集成电路ASIC上综合出一个真正的实现。,SOP和POS表达式,术语“乘积”和“和”来自数学,用来描述与(AND) 和或(OR)逻辑操作。“乘积”定义为多个变量之间的AND关系。“和
14、”定义为任意数量逻辑变量的OR关系。任何逻辑系统能用两种逻辑等效的方法表示,即积 之和(Sum of Product, SOP)形式和和之积(Product of Sum, POS)形式。,SOP表达式,对于真值表的每一列,能生成一个乘积项,称为最 小项。最小项通过对输入变量相关的值“相与”AND得到。 如果真值表特定的一行的变量值为1,则包含变量的名 字,比如x。如果真值表特定的一行的变量值为0,则 包含变量名字的取反,比如x,SOP表达式,SOP表达式,如果关心输出为1的行, 可以发现当m1或者m2为真时, 输出z为真。因此,可以写z, 通过简单的OR上最小项(这些 最小项输出为1)。输出
15、z可以表示为:z=m1|m2=(x&y) | (x&y),SOP表达式,POS表达式,POS表达式,注意在这种情况下z是非NOT最小项 m0和非最小 项m3,从前面的最小项的定义,使用德摩根De Morgan定理,得到: NOT m0=m0=(x & y)=(x|y)=x|y 称NOT m0为最大项M0。,POS表达式,得到z的POS表达式为:z=M0 & M3=(x | y) & ( x | y),POS表达式,传统数字系统设计流程,传统的数字系统设计基于 传统的“人工”方式完成,当 设计目标给定后,给出设计 目标的真值表描述,然后使 用卡诺图对真值表进行化 简,得到最小的表达式,然 后使用
16、TTL的LSI电路实现最 小的表达式,最后使用调试 工具和仪器,对系统进行调 试。,传统数字系统设计流程,下面将通过一个例子来说明这个 传统的设计过程。1)设计目标:在一个共阳极的7段 数码管上显示相对应的0-F的值。2)设计目标的真值表描述:图1.2 首先给出了七段数码管的符号表示,当 其是共阳极时,只有相应的段给低电平 0时,该段亮,否则灭。,传统数字系统设计流程,传统数字系统设计流程,3)使用卡诺图对真值表进行化简,图1.3给出对于7段数码管e段的卡诺图化简过程。 得到e段的最简单的逻辑表达式: e=x3& x0 | x3&x2&x1 | x2&x1&x0。按照步骤3的过程分别得到a,b
17、,c,d,f,g的最简逻辑表达 式,这些最简表达式使用积之和(Sum of Product, SOP)和和之积(Product of Sum, POS)表示。,传统数字系统设计流程,4)使用相应的TTL门电路来实现各段的最小表 达式。5)将这些门电路连接到7段数码管的各段,并 进行调试。,传统数字系统设计流程,从上面的流程可以看出,所有的过程都需要人工完 成,试想对于一个包含上百个逻辑门的多输入变量的结 构,根本无法使用人工化简卡诺图实现。同时后续的电 路调试和设计也需要很高的电路布局和布线的技巧,总 而言之,这样的设计对于复杂数字系统来讲效率太低 了。我们需要进一步考虑的问题是,如何使用计算
18、机帮 助设计者简化设计过程,自动地化简卡诺图,并且在芯 片内部自动实现布局布线。要实现这些要求,就必须使 用基于可编程逻辑器件的现代数字系统设计流程。,计算机最小化技术,从前面的数字系统设计流程中,可以看出使用卡诺 图很容易在不超过4个逻辑变量的布尔函数中找到最少数 目的乘积项。然而许多的实际问题是,多于4个逻辑变量,并且卡 诺图并不能帮助进行逻辑表达式的化简。计算机软件程序能够帮助对多于4个逻辑变量的布尔 函数进行简化。这些计算机方法使用基于表格的技术。 这些方法能自动的用机器进行计算。了解这些方法的工 作原理,将提供额外的智慧来简化布尔函数。在本节所介绍的方法叫做“奎因-麦克斯基(Quin
19、e- McCluskey)”方法。还有其它算法比这个算法的化简速 度更快,但是不能保证生成最优化的化简。,计算机最小化技术 -表格表示,以乘积和形式出现的乘积项,这个乘积项用于表示 布尔函数,称之为蕴含项。这是由于它暗示,如果任何 乘积项为1时,函数将为1。比如,对于这个函数:f=x & y & z | x & z | x & y其中:x & y & z,x & z和x & y三个乘积项称为 蕴含项。在这种情况下,第一个乘积项是最小项m5。如 果最小项5用二进制数表示为101,这三个二进制数字分 别对应三个变量xyz(其中1对应的是变量的真值,0()对 应的是变量的假值)。这样101是x &
20、y & z的另一种描述 方式。,计算机最小化技术 -表格表示,如果在一个乘积项中不包含一些变量时,插入一个 破折号“-”表示该变量,比如对于x & z表示为0-0,x & y表示为01-。因此称这这些为表格表示或者表格形式的乘积项。,计算机最小化技术 -表格表示,下面例子对图1.4的卡罗图用表格表示。该例子中在4 个圈起来输出为1的每个乘积项使用了表格进行表示。 这样很容易对每个圈起来的集合的卡罗图符号得到表格 的表示。表格中最开始的两位是行标号,后两位是列标 号。如果圈起来的集合覆盖一个特殊位位置的0和1, 该位位置变成-。,计算机最小化技术 -表格表示,通过扩展卡诺图中所圈1的集合来产生乘
21、积项是可 能的。比如,任意扩展它将覆盖图中的0,然后产生 乘积项或者蕴含项,叫做本源蕴含项。这样的本源蕴 含项中不能从乘积项中去除变量,并且暗含着逻辑功 能。下面将研究如何通过计算机找到这些本源蕴含项 的方法。,计算机最小化技术 -本源蕴含项,该图中包含两个本源蕴含项x和y & z,其表格 表示为1-和-10。下面将给出找到本源蕴含项的方法。,计算机最小化技术 -本源蕴含项,1. 如表1.3所示下面首先列出函数中所有的最小项。 这些最小项以递增的顺序排列。在第一栏中划了一条线 用来区分最小项里有1个1,两个1和3个1 .,计算机最小化技术 -本源蕴含项,下一步将比较第一栏中的每个最小项,方法是
22、每个最 小项和该栏中其它最小项进行比较,这个最小项和其它最 小项只相差一个数字位。由于以递增的顺序排列最小项, 因此比较相邻区域的最小项(用线分割)。,计算机最小化技术 -本源蕴含项,在这个例子中,所有的找到的本源蕴含项用来产生 最小项函数。但并不总是这种情况。有时存在冗余的本 源蕴含项,这些蕴含项不需要覆盖函数中的所有最小 项。下面将给出一个例子来说明不需要使用所有的本源 蕴含项来生成最小项函数。,计算机最小化技术 -必要的本源蕴含项,考虑图1.6表示的布尔函数。下面通过Quine- McCluskey方法来化简这个函数。,计算机最小化技术 -必要的本源蕴含项,计算机最小化技术 -必要的本源
23、蕴含项,表1.5 找到必要本源蕴含项的步骤,计算机最小化技术 -必要的本源蕴含项,只有那些有一个X的特殊的蕴含项,用于作为最终 函数的一部分。称这些本源蕴含项称为必要的本源蕴含 项。 注意在表1.5中只有两个最小项5和8,只有一个X。 这些X对应于两个本源蕴含项0-1和-0-0,这两个蕴含项 画“”,表示其作为必要的本源蕴含项 .注意,覆盖了除14和15外的所有最小项,表中清楚 表明了,本源蕴含项111-将覆盖最小项14和15,因此将 这个本源蕴含项添加到两个本源蕴含项中,得到最终的 简化函数。,计算机最小化技术 -必要的本源蕴含项,该最简函数表示为:f=x & z | w & z | w &
24、 x & y,现代数字系统设计流程,如图1.7所示,其设计 流程包括:设计目标、设 计输入、功能仿真、综合 优化、综合后仿真、实现 (FPGA设计)或适配 (CPLD设计)、时序仿 真、设计下载和系统调试 与验证等步骤,HDL硬件描述语言概念,硬件描述语言(Hardware Description Language)是 硬件设计人员和电子设计自动化(EDA)工具之间的界 面,其主要目的是用来编写设计文件,建立电子系统行为 级的仿真模型。即利用计算机的巨大能力对Verilog HDL或VHDL建模 的复杂数字逻辑进行仿真,然后再自动综合,生成符合要 求且在电路结构上可以实现的数字逻辑网表(Net
25、list), 根据网表和某种工艺的器件自动生成具体电路,最后生 成该工艺条件下这种具体电路的时延模型。仿真验证无误 后,该模型可用于制造ASIC芯片或写入CPLD和FPGA器 件中。,HDL硬件描述语言概念,在HDL语言出现之前,已有了许多程序设计语言, 如汇编、C、Pascal、Fortran、Prolog等。它们适合于描述过程和算法,不适合作硬件描述。这些高级语言和HDL语言的一个最重要的本质区别:C语言是在CPU上运行的, CPU的运行是靠程序计数 器推动的,当然也是串行执行的。HDL语言最终是要在芯片内生成数字电路, 数字电路 的工作是靠信号流推动的, 信号流是可以并行存在的, 当然
26、也是并行执行的. 所以, HDL生成的数字电路工作速度比C代码快几十 倍甚至上百倍.(移位寄存器的C语言实现和HDL实现是最 好的例子),HDL硬件描述语言概念,传统的用原理图设计电路的方法已逐渐消失,取而代 之,HDL语言正被人们广泛接受,出现这种情况有以下 几点原因:(1)电路设计将继续保持向大规模和高复杂度发展的 趋势。 (2)电子领域的竞争越来越激烈,刚刚涉入电子市场 的成员要面对巨大的压力:提高逻辑设计的效率,降低设 计成本,更重要的是缩短设计周期。 (3)使用硬件语言描述将使检测各种设计方案变成一 件很容易、很方便的事情,因为对方案的修改只需要修改 HDL程序就行了,这比修改原理图
27、要方便得多。,HDL语言特点,1. HDL语言既包含一些高层程序设计语言的结构形 式,同时也兼顾描述硬件线路连接的具体构件。2. HDL语言是并发的,即具有在同一时刻执行多任务 的能力。一般来讲编程语言是非并行的,但在实际硬件中 许多操作都是在同一时刻发生的,所以HDL语言具有并发 的特征。3. HDL语言有时序的概念。一般来讲,编程语言是没 有时序概念的,但在硬件电路中从输入到输出总是有延迟 存在的,HDL语言需要建立时序的概念。4. 通过使用结构级或行为级描述可以在不同的抽象层 次描述设计,HDL语言采用自顶向下的数字电路设计方 法,主要包括3个领域5个抽象层次.,HDL语言特点 -Ver
28、ilog和VHDL比较,Verilog HDL和VHDL是目前两种最常用的硬件描述语 言,同时也都是IEEE标准化的HDL语言。总的来说,它 们有一下几点不同:1. 从推出的过程来看,VHDL偏重于标准化的考虑, 而Verilog HDL则和EDA工具结合得更为紧密。VHDL是为了实现美国国防部VHSIC计划所推出的各 个电子部件供应商具有统一数据交换格式标准的要求。Verilog HDL的商业气息更浓,它是在全球最大的 EDA/ESDA供应商Cadence公司的支持下针对EDA工具专 门开发的硬件描述语言。,HDL语言特点 -Verilog和VHDL比较,2. Verilog HDL至今已有
29、20多年的历史了,因此 Verilog HDL拥有广泛的设计群体,成熟的资源远比 VHDL丰富。同时Verilog HDL是从高级设计语言C语言 发展而来的,相比VHDL而言更容易上手,其编码风格 也更为简洁明了,是一种非常容易掌握的硬件描述语 言。,HDL语言特点 -Verilog和VHDL比较,3. 目前版本的Verilog HDL和VHDL在行为级抽象建模 的覆盖范围方面也有所不同。一般认为Verilog HDL在系统抽象方面比VHDL要强一 些. Verilog HDL比较适合算法级(Algorithm)、寄存器 传输级(RTL)、逻辑级(Logic)以及门级(Gate)的设 计;VHDL更适合特大型系统级(System)的设计。,习题,1、了解数字逻辑发展历史上的重大事件。2、说明现代数字系统设计的发展阶段。3、说明半导体集成电路和可编程逻辑器件的发展阶 段。4、说明SOP和POS表达式的定义。5、说明传统数字系统设计流程-麦克斯基算法进 行最小化化简的步骤。6、说明现代数字系统设计流程。7、说明VHDL和Verilog语言的特点。,