首页 百科知识 数字系统设计方法

数字系统设计方法

时间:2022-10-10 百科知识 版权反馈
【摘要】:在计算机辅助电子系统设计出现以前,人们一直采用传统的硬件电路设计方法来设计系统的硬件。系统设计时存在的问题只有在后期才较容易被发现。一种崭新的,采用硬件描述语言的硬件电路设计方法已经兴起,它的出现将给硬件电路设计带来一次重大的变革。

4.2 数字系统设计方法

1.传统的系统硬件设计方法

在计算机辅助电子系统设计出现以前,人们一直采用传统的硬件电路设计方法来设计系统的硬件。这种硬件设计方法有以下几个主要特征。

(1)采用自底向上的设计方法

自底向上(Bottom up)的硬件电路设计方法的主要步骤是:根据系统对硬件的要求,详细编制技术规格书,并画出系统控制流图;然后根据技术规格书和系统控制流图,对系统的功能进行细化,合理地划分功能模块,并画出系统的功能框图;接着就是进行各功能模块的细化和电路设计;各功能模块电路设计、调试完成后,将各功能模块的硬件电路连接起来再进行系统的调试,最后完成整个系统的硬件设计。上述过程从最底层开始设计,直至到最高层设计完毕,故将这种设计方法称为自底向上的设计方法。

(2)采用通用的逻辑元器件

在传统的硬件电路设计中,设计者总是根据系统的具体需要,选择市场上能买到的逻辑元器件,来构成所要求的逻辑电路,从而完成系统的硬件设计。尽管随着微处理器的出现,在由微处理器及其相应硬件构成的系统中,许多系统的硬件功能可以用软件功能来实现,从而在较大程度上简化了系统硬件电路的设计,但是,这种选择通用的元器件来构成系统硬件电路的方法并未改变。

(3)在系统硬件设计的后期进行仿真和调试

在传统的系统硬件设计方法中,仿真和调试通常只能在后期完成系统硬件设计以后,才能进行。因为进行仿真和调试的仪器一般为系统仿真器、逻辑分析仪和示波器等,因此只有在硬件系统已经构成以后才能使用。系统设计时存在的问题只有在后期才较容易被发现。这样,传统的硬件设计方法对系统设计人员有较高的要求,一旦考虑不周,系统设计存在较大缺陷,那么就有可能要重新设计系统,使得设计周期也大大增加。

(4)主要设计文件是电原理图

在用传统的硬件设计方法对系统进行设计并调试完毕后,所形成的硬件设计文件,主要是由若干张电原理图构成的文件,电原理图中详细标注了各逻辑元器件的名称和互相间的信号连接关系,该文件是用户使用和维护系统的依据。对于小系统,这种电原理图只要几十张至几百张就行了。但是,如果系统比较大,硬件比较复杂,那么这种电原理图可能要有几千张、几万张,甚至几十万张。如此多的电原理图给归档、阅读、修改和使用都带来了极大的不方便。

传统的硬件电路设计方法已经沿用几十年,是目前广大电子工程师所熟悉和掌握的一种方法。但是,随着计算机技术、大规模集成电路技术的发展,这种传统的设计方法已大大落后于当今技术的发展。一种崭新的,采用硬件描述语言的硬件电路设计方法已经兴起,它的出现将给硬件电路设计带来一次重大的变革。

2.层次化结构设计

层次化结构设计既是一种设计方法,更是一种设计思想。

在用分立元件或者中、小规模集成电路进行逻辑设计时,整个电路都是由许多集成电路块或者分立元件组成,设计者有意无意地都会接受一些结构化设计的思想,因为整个电路或者系统就是由许多模块组成的。

在用大规模集成电路进行系统设计时,所有的模块都是集成在一块大规模芯片上,系统的结构就变得不明显了。特别是在用语言对系统进行描述时,有的设计者只用一个ENTITY和一个ARCHIITECTURE就完成对整个电路或系统的描述,没有对系统作任何的模块设计。就好像写软件时,把所有的语句都放一个主程序中,没有任何的子程序或者函数的定义。这些都不是好的设计思想和方法。

(1)设计的层次

对于数字系统设计者来说,设计的层次可以从两个不同的角度来表示:系统的结构层次和系统的性能层次。

系统的结构层次是指系统是由一些模块组成的,模块的适当连接就构成了系统。同样,模块也可以是一些基本模块的连接来组成的。

系统的性能是指系统的输出对输入的响应。而系统的响应也是系统的输入经过系统内部模块的响应,逐渐地传递到输出。所以,系统的性能也是由系统内部模块的性能及其传递来决定的。

对于一个数字系统来说,到底应该分为几个层次有不同的说法。一般来说,可以分为6个层次:系统级;芯片级;寄存器级;门级;电路级和硅片级。

现在的系统设计已经逐渐向“System on Chip”发展。也就是整个系统有可能都集成在一块硅片上。尽管如此,还是要有系统层次的概念。

由于系统可以分为6个层次,系统的性能描述和系统的结构组成也可以分为6个层次。表4-1表示了这几个层次之间的对应关系。

硅片是结构的最底层,从结构描述的角度来说,硅片上不同形状的区域代表了不同类型的电子元件,如晶体管、MOS管、电阻、电容等。另外,不同形状的金属区域表示了元件之间的连接。

表4-1 设计的层次

img188

但是,只有到了电路级,电路的具体结构才能显示出来。电路级比门级描述来说是更加具体的。同样是一个与门,可以有许多种电路实现的方法,只有将门级的描述再具体到电路级的描述,才能最后在硅片上形成芯片。

从逻辑的角度来说,门级是最基础的描述。最基本的逻辑门应该是与门、或门、非门。用这三种基本逻辑门,可以构成任何组合电路以及时序电路。不过,现在也将基本触发器作为门级的基本单元,因为它是组成时序电路的最基本的单元之一。

寄存器级实际上是由逻辑部件的互相连接而构成的。寄存器、计数器、移位寄存器等逻辑部件是这个层次的基本构件,有时也称它们为功能模块,或者“宏单元”。虽然这些部件也是由逻辑门组成,但是在这个层次中,关键的是整个功能模块的特性,以及它们之间的连接。

再向上一个层次就是芯片级,从传统的观点来看,芯片级应该是最高级,芯片本身就是一个系统,芯片本身就是产品。芯片级的基本组成是处理器、存储器、各种接口、中断控制器等。当然,首先应该对这些组成模块进行描述,再用它们的连接来构成整个芯片。

最高的层次是系统级。一个系统可以包括若干芯片,如果是“System on Chip”设计,则在一个系统芯片上,也会有若干类似于处理器、存储器等这样的部件。

表4-1的中间一列是性能描述的各个层次。从系统级来说,就是对于系统整体指标的要求,例如运算的速度、传输的带宽、工作的频率范围等,这类性能指标一般通过文字来表示就可以了,不会用HDL语言来描述。

芯片级的性能描述是通过算法来表示的,也就是通过芯片可以实现什么算法,算法是可以用VHDL语言来描述的。

寄存器级的性能描述是数据流描述,这样的例子已经见过许多。

门级的性能描述是布尔方程。从VHDL描述的角度来说,VHDL的数据流描述主要是对于寄存器级的描述,但是用来表示布尔方程也是可以的。前面已经见过对于与门以及其他门电路的数据流描述。

(2)系统结构的分解

由于系统结构是分层次的,这意味着在系统设计过程中,必然伴随着对于系统的分解,而且这样的分解,可以在各个不同的层次上进行,整个系统就是由不同层次上的各种模块的连接而组成的,使得系统的结构就像一棵树,如图4-2所示。

在这样的树形结构中,应该包括两种基本的描述,一种是表示模块之间连接的“结构描述”,另一种是表示模块性能的性能描述。由图4-2系统的树形结构于每一个上层模块都是由若干下层模块的连接构成的,所以性能描述一般只用于对树形结构中的叶子模块的描述,而不论这个叶子本身是处于哪一个层次。

img189

图4-2 系统的树形结构

对于这样的树形结构的系统,存在着两种设计思想,或者说设计方法,那就是“自顶向下”(Top-down)设计和“自底向上”(Bottom-up)设计。

自顶向下设计的出发点是树的根,也就是对于整个系统性能的描述或者说是要求。按照这样的要求,进行第一次系统的分解,也就是分解为若干子系统,规定每个子系统应该实现什么功能。这样的分解可以一直进行下去,可能某一个分支已经到达了叶子模块,而其他分支还要继续分解下去,直到各自的叶子模块。

对于叶子模块必须进行性能描述,对于每棵子树,只要进行结构描述。

自顶向下的设计,强调的是在进行每一次的分解时,都是要从保证系统性能指标的实现,而不是考虑现在已经存在什么基本的模块。当然,分解后如果和已有的模块性能相同,就可以使用已有的模块,但是决不迁就,如果没有合适的模块可用,就再创建一个这样的模块,目的还是要达到系统性能上的最优化

自底向上的设计并不是像它名称所隐含的从叶子模块开始设计,设计仍然是从系统的“根”出发,仍然是要满足整体的功能。但是,在考虑系统分解的时候,要选择那些可用的模块或部件。这些模块或部件可能是标准部件,也可能是其他项目设计所产生的结果。这样处理的最大优点是设计的经济性,因为基本的模块或部件都不需要重新设计,设计成本和生产成本都可以降低。

所以,自顶向下的设计强调是性能的最佳,自底向上强调的是设计的经济性。实际的设计往往是这两种设计方法的结合。也就是性能要求和经济要求的结合。

但是在使用大规模集成电路时,特别是使用可编程逻辑器件进行设计时,自顶向下的设计就会有更多的优点。因为用这样的芯片进行设计时,对设计者的限制就很小。设计者在进行系统分解和叶子模块的描述时,没有太多的标准部件和标准模块的限制。可以尽可能按照性能要求来进行设计。当然,现在的一些厂商,也会在VHDL的设计环境中,提供一些宏单元供设计者使用,目的只是对设计者提供方便,而不是对设计者提出限制。这和自底向上设计中必须使用那些部件是完全不同的。

3.自顶向下设计方法

自顶向下的设计方法并不是一个一次就可以完成的设计过程,而是一个需要反复改进、反复实践的过程。即使是用VHDL语言对设计的整个过程进行描述,也不是描述一次就能得到最好的结果。但是,上一次描述的文件,可以作为下一次改进的基础。一般来说,并不需要将原来的工作全部推倒重来。而是应该在以前工作的基础上,求得不断的改进。

(1)自顶向下设计方法的基本设计过程

img190

图4-3 自顶向下设计方法的基本设计过程

图4-3是自顶向下设计方法的基本设计过程。这个过程可以分为系统性能描述、系统结构分解、产生系统结构模型、描述叶子模块和逻辑综合产生门级实现。

①系统性能描述

设计从系统的功能和性能要求开始,首先要将系统的功能要求转换为用VHDL对系统进行的性能描述。然后对这个描述进行模拟,对于一些比较复杂的系统,这个过程是很必要的。经过具体的描述和模拟,可以验证对于系统功能要求的理解是否正确,是否完整。另外,有时通过这样的描述和模拟,还可能发现原来对系统功能的要求的不完善或者不准确的地方。

所以,这个过程有可能要反复进行:可能是修改对系统的性能描述,也可能是修改对于系统要求的文字叙述。

如果设计的系统不是很复杂,这个过程不一定是必要的。

②系统结构分解

将系统分解为若干子系统,子系统又可以再分解为若干模块。这样的分解可以一层一层地进行下去,直到树形结构的末端,即叶子模块。

系统分解也不一定是一次就可以完成的,在系统的实现过程中,很可能发现某个层次的分解不一定合适,这时,就可以进行重新分解。

系统分解完成后,系统的层次结构就很清晰了。这时,可以用VHDL的结构描述能力,完成系统和子系统的结构描述。

③对叶子模块进行数据流描述

叶子模块也是构成系统的最基本的模块。对于这样的模块,应该用数据流进行描述。因为数据流的描述更加接近模块的物理实现,更加能体现设计者的设计能力和运用设计者的设计经验。用数据流描述的模块,经过逻辑综合工具软件的处理后,会有较好的设计效果。

现在的逻辑综合工具,一般也可以处理性能描述的模块。在以前的章节中,也对一些基本的逻辑部件做过性能描述,这些描述也能经过逻辑综合,得到具体的硬件实现。但是这种转换是比较机械的,例如“IF”语句会转换为某种逻辑结构,“CASE”语句转换为某种结构。一般来说,效果不会比数据流描述更好。

另外,各个编程逻辑器件生产厂商和VHDL软件厂商都开发了一些标准的器件模块,如果系统分解后需要这些基本模块时,应该尽量使用这些预先设计好的部件。因为这些部件的设计是他们长期经验的总结,性能和占用芯片资源等都已经得到了优化。这些部件都集成在厂商提供的VHDL库中,如果要使用的话,在有关的描述中一定要有相应的“USE”语句。

④逻辑综合

经过以上步骤所得到的VHDL描述,可以直接由逻辑综合工具来产生门级的描述。有经验的设计人员可以看到这些门级描述的结果。当使用可编程逻辑器件时,逻辑综合的结果已经映射到具体的器件中。同样,有经验的设计人员,可以看到设计结果在逻辑器件中的分布,甚至进行适当的调整。

(2)数字系统的基本划分

对于一般的数字系统,往往可以将系统划分为控制部分和处理部分。

控制部分是数字系统的核心,整个数字系统的工作都是在控制部分的控制下完成的。控制部分一般就是一个有限状态机,数字系统的工作就是由当前的状态和当前的输入来决定的。

数字系统的处理部分在许多资料上也称为“数据通道”(Data Path)。数据通道实际上就是系统的执行部分:在控制部分的控制下,完成具体的数据处理任务。

数据通道往往是系统中主要的占用芯片资源的部分。当所处理的数据的位数增加时,数据通道所占用的芯片资源会迅速地增加。因此,对于数据通道的划分和设计应该更加仔细地进行,可以比较多种方案,通过逻辑模拟,选择最好的方案。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈