第一章数字系统硬件设计概述自计算机诞生以来,数字系统设计历来存在两个分枝,即系统硬件设计和系统软件设计。同样,设计人员也因工作性质不同,被分成两群:硬件设计人员和软件设计人员。他们各自从事各自的工作,很少涉足对方的领域。特别是软件设计人员更是如此。但是,随着计算机技术的发展和硬件描述语言HDL的出现,这种界线已经被打破。数字系统的硬件构成及其行为完全可以用HDL语言来描述和仿真。这样,软件设计人员也同样可以借助HDL语言,设计出符合要求的硬件系统。不仅如此,利用HDL语言来设计系统硬件与利用传统方法设计系统硬件相比,还带来了许多突出的优点。它是硬件设计领域的一次变革,对系统的硬件设计将产生巨大的影响。在本章将详细介绍这种硬件设计方法的变化。电子系统•所谓电子系统,通常是指由若干相互联接、相互作用的基本电路组成的具有特定功能的电路整体。•电子系统有大有小、大到航天飞机的测控系统、小到出租车计价器,它们都是电子系统。可以概括地讲,凡是可以完成一个特定功能的完整的电子装置都可称为电子系统。电子系统组成•从组成来看,一个电子系统一般包括模拟系统——传感、高低频放大、模/数、数/模变换以及执行机构等;数字系统——信息处理、决策、控制。但是,对于软硬结合的电子系统而言,它的信息处理、决策与控制部分大部分可内含有CPU的微处理机(如单片机)的电子系统来实现。•所以从组成来讲,一般可以把电子系统看成由两大部分组成:模拟子系统和数字子系统。数字系统•是对数字信息进行存储、传输、处理的电子系统•一般由若干数字电路和逻辑功能部件组成,并由一个控制部件统一指挥。逻辑部件担负系统的局部任务,完成子系统的功能。•数字系统可以是一个独立的实用装置,如数字表、数字计算机等;也可以是一个具有特定性能的逻辑部件,如计算机中的内存板,数字表中的主控板等。不论它们的复杂程度如何,规模大小怎样,其实质而言仍是数字逻辑问题。实际上是对数字量的存储、传输和处理的过程。数字系统vs模拟系统•数字系统与模拟系统相比,具有如下特点。•①稳定性。数字系统所加工处理的信息是离散的数字量,对用来构成系统的电子元器件要求不高,即能以较低的硬件实现较高的性能。•②精确性。数字系统中可用增加数据位数或长度来达到数据处理和传输的精确度。•③可靠性。数字系统中可采用检错、纠错和编码等信息冗余技术,以及多机并行工作等硬件冗余技术来提高系统的可靠性。•④模块化。把系统分成不同功能模块,由相应的功能部件来实现,从而使系统的设计、试制、生产、调试和维护都十分方便。基本数字系统结构1.1传统的系统硬件设计方法在计算机辅助电子系统设计出现以前,人们一直采用传统的硬件电路设计方法来设计系统的硬件。这种硬件设计方法主要有以下几个主要特征。�采用自下至上(BottomUP)的设计方法�采用通用的逻辑元、器件�在系统硬件设计的后期进行仿真和调试�主要设计文件是电原理图自下至上的硬件电路设计方法的主要步骤1、根据系统对硬件的要求,详细编制技术规格书,并画出系统控制流图;2、根据技术规格书和系统控制流图,对系统的功能进行细化,合理地划分功能模块,并画出系统的功能框图;3、进行各功能模块的细化和电路设计;4、各功能模块电路设计、调试完成后,将各功能模块的硬件电路连接起来再进行系统的调试,最后完成整个系统的硬件设计。从上述设计过程我们可以看到,系统硬件的设计是从选择具体元、器件开始的,并用这些元、器件进行逻辑电路设计,完成系统各独立功能模块设计,然后再将各功能模块连接起来,完成整个系统的硬件设计。上述过程从最底层开始设计,直至到最高层设计完毕,故将这种设计方法称为自下至上的设计方法。用自下至上的设计方法设计一个三人表决器第一步,选择逻辑元、器件。我们选择与非门。第二步,进行电路设计。列真值表画卡诺图化简并写出逻辑函数表达式画逻辑电路图组合逻辑电路设计方法(补充)1.设计步骤:(1)建立描述逻辑问题的真值表①分析题目所给的条件②找出问题的条件与目的及因果关系③确定输入、输出变量④列出真值表(2)由真值表写出逻辑函数表达式;(如:用最小项积之和的形式)(3)对输出逻辑函数进行化简(4)画出逻辑电路图课本的例子•设计一个六进制计数器画出状态转换图系统分析画出状态转换表,发现Q2当前的输出是Q1前一个状态的输出,而Q1当前的输出就是Q0前一个状态的输出。•Q2当前的输出是Q1前一个状态的输出,而Q1当前的输出就是Q0前一个状态的输出。这样,Q2和Q1采用D触发器。选定触发器类型•Q0的输出关系复杂一些,就必须选用JK触发器,并且利用Q1、Q2的输出作为约束条件,经组合逻辑电路作为Q0的J、K输入。(选择JK触发器的理由:JK触发器具有置0、置1、保持和翻转功能,在各类集成触发器中,JK触发器的功能最为齐全。实际应用中,具有很强的通用性)121nnQQ110nnQQ状态方程JK触发器设计1010000000111000nnnQJQKQ2121nnnnJQQKQQ状态方程驱动方程JK触发器真值表Q12121nnnnJQQKQQ驱动方程原理图1.画出状态转换图2.填写状态转换真值表3.次态卡诺图4.选定触发器类型求出输出方程、状态方程和驱动方程5.画电路图时序逻辑电路设计步骤(补充)1.2利用硬件描述语(HDL)的硬件电路设计方法代表性的硬件电路描述语言:VHDL语言,VerilogHDL语言。硬件描述语言:就是可以描述硬件电路的功能,信号连接关系及定时关系的语言。它能比电原理图更有效地表示硬件电路的特性。•硬件描述语言HDL,是一种用形式化方法描述数字电路和系统的语言。•利用这种语言,数字电路系统的设计可以从上层到下层逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。然后,利用EDA工具,逐层进行仿真验证,再把其中需要变为实际电路的模块组合,经过自动综合工具转换到门级电路网表。接下去,再用专用集成电路ASIC或可编程逻辑器件自动布局布线工具,把网表转换为要实现的具体电路布线结构。VHDL•1980年美国国防部开始开发•1987IEEE标准化IEEE-1076-1987•1993修订IEEE-1076-1993•提供从门级到系统级的硬件建模VHSICHardwareDescriptionLanguageVeryHighSpeedIntegratedCircuitVHDL语言程序的五个组成部分库说明包集合说明实体说明构造体描述配置语句库存放已编译的实体、构造体、包集合、和配置。相当于书库。包集合存放各设计模块能共享的数据类型、常数和子程序。相当于书架。实体用于说明所设计的系统的外部接口信号。构造体用于描述系统内部的结构和行为。配置用于从库中选取所需单元来组成系统设计的不同版本。基本单元LIBRARY库名;USE库名.包集合名.项目名;ENTITY实体名IS[类属参数说明];[端口说明];ENDENTITY实体名;ARCHITECTURE构造体名OF实体名IS[定义语句]内部信号,常数,数据类型,函数等的定义;BEGIN[处理语句];ENDARCHITECTURE构造体名;VHDL语言程序书写基本格式1.2.1电原理图表示与VHDL语言描述的比较二选一选择器1.2.2利用HDL语言设计系统硬件的特点�采用自上至下(TopDown)的设计方法�系统中可大量采用ASIC芯片�采用系统早期仿真�降低了硬件电路设计难度�主要设计文件是用HDL语言编写的源程序1.2.3采用自上至下(TopDown)的设计方法所谓自上至下的设计方法,就是从系统总体要求出发,自上至下地逐步将设计内容细化,最后完成系统硬件的整体设计。在利用HDL的硬件设计方法中,设计者将自上至下分成3个层次对系统硬件进行设计。第一层次:行为描述。第二层次:RTL方式描述。第三层次:逻辑综合。行为描述(Behaviour)行为描述,实质上就是对整个系统的数学模型的描述。对系统进行行为描述的目的是试图在系统设计的初始阶段,通过对系统行为描述的仿真来发现设计中存在的问题。在行为描述阶段,并不真正考虑其实际的操作和算法用什么方法来实现。考虑更多的是系统的结构及其工作过程是否能达到系统设计规格书的要求。下面以六进制计数器为例,说明一下如何用VHDL语言,以行为方式来描述它的工作特性。命名规则和注解的标记VHDL语句中大小写是没有区别的,所有语句中用大写字母或小写字母都可以。但有两种情况例外,这就是用单引号括起来的字符和用双引号括起来的字符串,这时大写字母和小写字母是有区别的。在VHDL语言中所使用的名字(名称),如信号名、实体名,构造体名、变量名等,在命名时应遵守如下规则:1)名字的最前面应该是英文字母;2)能使用的字符只有英文字母、数字和短下划线“_”;3)不能连续使用“_”符号,在名字的最后也不能使用“_”。4)其注释从两个短划线“--”符号开始到该项末尾(回车、换行符)结束。行为描述举例该段VHDL语言程序勾画出了六进制计数器的输入输出引脚和内部计数过程的计数状态变化时序和关系。这实际上是计数器工作模型的描述。当该程序仿真通过后,说明六进制计数器模型是正确的。在此基础上再改写该程序,使其语句表达式易于用逻辑元件来实现。这是第二层次所要做的工作。RTL(RegisterTranslation)方式描述RTL方式描述称为寄存器传输描述(又称数据流描述)。如前所述,用行为方式描述的系统结构的程序,其抽象程度高,是很难直接映射到具体逻辑元件结构的硬件实现的。要想得到硬件的具体实现,必须将行为方式描述的VHDL语言程序改写为RTL方式描述的VHDL语言程序。也就是说,系统采用RTL方式描述,才能导出系统的逻辑表达式,才能进行逻辑综合。当然,这里所说的“可以”进行逻辑综合是有条件的,它是针对某一特定的逻辑综合工具而言的。下面仍以六进制计数器为例,说明一下如何用VHDL语言,以RTL方式来描述它的工作特性。在该例中,JK触发器、D触发器、与门和或非门都已在库WORK.NEW.ALL中定义了,这里可以直接引用。例中的构造体直接描述了它们之间的连接关系。与行为描述比较RTL方式描述更趋于实际电路的描述。在把行为方式描述的程序改写为RTL方式描述的程序时,编程人员必须深入了解逻辑综合工具的详细说明和具体规定,这样才能编写出合格的RTL方式描述的程序。在完成编写RTL方式的描述程序以后,再用仿真工具对RTL方式描述的程序进行仿真。如果通过这一步仿真,那么就可以利用逻辑综合工具进行综合了。逻辑综合(LogicSynthesis)逻辑综合这一阶段是利用逻辑综合工具,将RTL方式描述的程序转换成用基本逻辑元件表示的文件(门级网络表)。由逻辑综合工具产生门级网络表后,在最终完成硬件设计时,还可以有两种选择。第一种是由自动布线程序将网络表转换成相应的ASIC芯片的制造工艺,做出ASIC芯片。第二种是将网络表转换成FPGA(现成可编程门阵列)的编程码点,利用FPGA完成硬件电路设计。结论:在用HDL语言设计系统硬件时,无论是设计一个局部电路,还是设计由多块插件板组成的复杂系统,上述自上至下的3个层次(的设计步骤是必不可少的。第一层次:行为描述。第二层次:RTL方式描述。第三层次:逻辑综合。自上至下设计系统硬件的过程规格设计行为级描述行为级仿真RTL级描述RTL级仿真逻辑综合、优化门级仿真、定时检查输出门级网表由设计过程可知,从总体行为设计开始到最终逻辑综合,形成网络表为止,每一步都要进行仿真检查,这样有利于尽早发现系统设计中存在的问题,从而可以大大缩短系统硬件的设计周期。这是用HDL语言设计系统硬件的最突出的优点之一。•VerilogHDL是在1983年由GDA(GateWayDesignAutomation)公司的Philmoorby首创的。•1986年Moorby提出了用于快速门级仿真的VrtilogXL算法,促使VerilogHDL语言得到迅速发展。•1989年Cadence公司收购了GDA公司,VerilogHDL成为Cadence公司的私有财产。1990