数字系统设计与Verilog HDL
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 数字系统设计技术

数字系统的设计方法发生了深刻的变化。传统的数字系统通常是采用搭积木式的方式设计的,即由一些固定功能的器件加上一定的外围电路构成模块,由这些模块进一步形成各种功能电路,进而构成系统。构成系统的“积木块”是各种标准芯片,如74/54系列(TTL)、4000/4500系列(CMOS)芯片等,这些芯片的功能是固定的,用户只能根据需要从这些标准器件中选择,并按照推荐的电路搭成系统。在设计时,几乎没有灵活性可言,设计一个系统所需的芯片种类多且数量大。

PLD器件和EDA技术的出现,改变了这种传统的设计思路,使人们可以立足于PLD芯片来实现各种不同的功能,新的设计方法能够由设计者自己定义器件的内部逻辑和引脚,将原来由电路板设计完成的工作大部分放在芯片的设计中进行。这样不仅可以通过芯片设计实现各种数字逻辑功能,而且由于管脚定义的灵活性,减轻了原理图和印制板设计的工作量和难度,增加了设计的自由度,提高了效率。同时这种设计减少了所需芯片的种类和数量,缩小了体积,降低了功耗,提高了系统的可靠性。

在基于 EDA 技术的设计中,通常有两种设计思路,一种是自顶向下的设计思路,一种是自底向上的设计思路。

1.2.1 Top-down设计

Top-down设计,即自顶向下的设计。这种设计方法首先从系统设计入手,在顶层进行功能方框图的划分和结构设计。在功能级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,然后用综合工具将设计转化为具体门电路网表,其对应的物理实现可以是PLD器件或专用集成电路(ASIC)。由于设计的主要仿真和调试过程是在高层次上完成的,这一方面有利于早期发现结构设计上的错误,避免设计工作的浪费,同时也减少了逻辑功能仿真的工作量,提高了设计的一次成功率。

在 Top-down 的设计中,将设计分成几个不同的层次:系统级、功能级、门级、开关级等,按照自上而下的顺序,在不同的层次上,对系统进行设计与仿真。图 1.2 是这种设计方式的示意图。如图中所示,在Top-down的设计过程中,需要有EDA工具的支持,有些步骤EDA工具可以自动完成,比如综合等,有些步骤EDA工具为用户提供了操作平台。Top-down的设计必须经过“设计—验证—修改设计—再验证”的过程,不断反复,直到得到的结果能够完全实现所要求的逻辑功能,并且在速度、功耗、价格和可靠性方面实现较为合理的平衡。不过,这种设计也并非是绝对的,在设计的过程中,有时也需要用到自下而上的方法,就是在系统划分和分解的基础上,先进行底层单元设计,然后再逐步向上进行功能块、子系统的设计,直至构成整个的系统。

图1.2 Top-down设计方式

如图1.3所示是用Top-down的设计方式设计CPU的示意图。首先在系统级划分,将整个CPU划分为几个模块,如ALU、PC、RAM模块等,对每个模块再分别进行设计与描述,然后通过 EDA 工具将整个设计综合为门级网表,并实现它。在设计过程中,需要进行多次仿真和验证,不断修改设计。

图1.3 CPU的Top-down设计方式示意图

1.2.2 Bottom-up设计

Bottom-up 设计,即自底向上的设计,这是一种传统的设计思路。这种设计方式,一般是设计者选择标准集成电路,或者将各种基本单元,如各种门电路以及加法器、计数器等模块做成基本单元库,调用这些基本单元,逐级向上组合,直到设计出满足自己需要的系统为止。这样的设计方法就如同一砖一瓦建造金字塔,不仅效率低、成本高,而且容易出错。

Top-down的设计由于更符合人们逻辑思维的习惯,也容易使设计者对复杂的系统进行合理的划分与不断的优化,因此是目前设计思想的主流。而Bottom-up的设计往往使设计者关注了细节,而对整个的系统缺乏规划,当设计出现问题时,如果要修改的话,就会比较麻烦,甚至前功尽弃,不得不从头再来。因此,在数字系统的设计中,主要采用 Top-down 的设计思路,而以Bottom-up设计为辅。

1.2.3 IP复用技术与SoC

当电子系统的设计越来越向高层发展的时候,基于IP复用(IP Reuse)的设计技术越来越显示出优越性。IP(Intellectual Property),其原来的含义是指知识产权、著作权等,在IC设计领域可将其理解为实现某种功能的设计,IP核(IP模块)则是指完成某种功能的设计模块。

IP核分为硬核、固核和软核三种类型。软核指的是在寄存器级或门级对电路功能用HDL进行描述,表现为VHDL或Verilog HDL代码,软核与生产工艺无关,不涉及物理实现,为后续设计留有很大的空间,增大了IP的灵活性和适应性。用户可以对软核的功能加以裁剪以符合特定的应用,也可以对软核的参数进行设置,包括总线宽度、存储器容量、使能或禁止功能块等。硬核指的是以版图形式实现的设计模块,它基于一定的设计工艺,通常用GDS II格式表示,不同的客户可以根据自己的需要选用特定生产工艺下的硬核。固核是完成了综合的功能块,通常以网表的形式提交客户使用。软核使用灵活,但其可预测性差,延时不一定能达到要求;硬核可靠性高,能确保性能,如速度、功耗等,能够很快地投入使用。

如图1.4所示,由微处理器核(MPU Core)、数字信号处理器核(DSP Core)、存储器核(RAM/ROM)、A/D、D/A核以及USB接口核等构成一个单片系统(SoC)。用户在设计一个系统时,可以自行设计各个功能模块,也可以用IP模块来构建。作为设计者来说,想要在短时间内开发出新产品,一个比较好的方法就是使用IP核完成设计。目前还有专门的组织VSIA(Virtual Socket Interface Association,虚拟插座接口协会)来制定关于IP产品的标准与规范。

图1.4 系统芯片(SoC)示意图

如上所述,基于IP复用的开发给设计者带来了诸多好处,如节省时间、缩短开发周期、避免重复劳动等。当然,IP的发展还存在一些问题,比如IP版权的保护、IP的保密以及IP间的集成等。但基于IP复用的设计技术无疑会成为电子系统开发的重要手段之一。

系统芯片(SoC),或者称为芯片系统、片上系统,是指把一个完整的系统集成在一个芯片上;或者说是用一个芯片实现一个功能完整的系统。系统芯片可以采用全定制的方式来实现,把设计的网表文件提交给半导体厂家流片就可得到,但采用这种方式风险性高,费用大,周期长。还有一种方式就是采用可编程逻辑器件来实现。CPLD和FPGA的集成度越来越高,速度也越来越快,设计者可以在其上通过编程完成自己的设计。今天,已不仅能用它们实现一般的逻辑功能,还可以把微处理器、DSP、存储器、标准接口等功能部件全部集成在其中,真正实现System on Chip。

微电子制造工艺的进步,为SoC的实现提供了硬件基础,而EDA软件技术的提高,则为 SoC 创造了必要的开发平台。目前,EDA 的新工具、新标准和新方法正在向着高层化发展,过去已将设计从晶体管级提高到了逻辑门级,后来,又提高到了寄存器传输级,现在则越来越多地在系统级完成。

在数字系统进入SoC时代后,设计方法也随之而产生变化。如果把器件的设计看成是设计者根据设计规则用软件来搭接已有的不同模块的话,那么早期的设计是基于晶体管的(Transistor Based Design)。在这一阶段,设计者最关心的是怎样减小芯片的面积,所以又称为面积驱动的设计(Area Driving Design,ADD)。随着设计方法的改进,出现了以门级模块为基础的设计(Gate Based Design)。在这一阶段,设计者在考虑芯片面积的同时,更多关注门级模块之间的延时,所以这种设计又称为时延驱动的设计(Time Driving Design,TDD)。20世纪90年代以来,芯片的集成度进一步提高,系统芯片SoC的出现,使得以IP模块复用为基础的设计逐渐流行,这种设计方法称为基于模块的设计方法(Block Based Design,BBD)。在应用 BBD 方法进行设计的过程中,逐渐产生的一个问题是,在开发完一个产品后,怎么能尽快开发出其系列产品。这样就产生了新的概念PBD,PBD是基于平台的设计方法(Platform Based Design),PBD是一种基于IP的,面向特定应用领域的SoC设计环境,可以在更短的时间内设计出满足需要的电路。PBD的实现依赖于如下关键技术的突破:如高层次\系统级的设计工具,软硬件协同设计技术,等等。图 1.5 是上述设计方法演变的示意图。

图1.5 设计方法的演变