嵌入式标准产品既能减少系统设计师的总设计量,又能使他们在最短时间内完成复杂的设计。
- 解决设计灵活性问题
- 功能仿真
- 综合、布局及布线
- 时序和验证
- 回音质量
- 设计实现
- 减少工作量
作者:Wai-Leng Lim
新一代系统级可编程产品如嵌入式标准产品(ESP)、专用可编程产品(ASPP)、现场可编程系统芯片(FPSC)都实现了在一个器件上集成嵌入式功能和可编程逻辑门及存储器的功能,因而设计工程师能在短时间内快速开发出节省成本的复杂系统。然而工程师也面临着一系列新的挑战,包括配置嵌入式功能、把嵌入式功能与他们自己的定制逻辑设计相结合、功能及时序仿真以及硬件测试和调试。
ESP包含有三个最基本的功能模块,即嵌入式标准功能、通用可编程逻辑阵列和嵌入式存储器。ESP器件中嵌入式功能的典型实现方法是利用标准单元或全定制设计方案,与采用可编程逻辑门实现同样功能相比,这种方法具有较高的性价比,并能实现更多的功能。同时它们还能提供可编程逻辑阵列不可能实现的特殊模拟功能。使用嵌入式功能的更大好处是,ESP制造商已对它们的功能和时序进行了严格的测试,实际上已预先验证了最终设计的最基本部分。
解决设计灵活性问题
虽然某些ESP器件的嵌入式功能具有一定程度的可定制性,但显然它们的灵活性没有通用可编程逻辑做得好。ESP器件是利用同一个器件上的通用可编程逻辑来弥补灵活性的欠缺。可编程逻辑使设计师在保留嵌入式功能的同时能完全定制部分设计。因而ESP器件具有性能优越、功能可靠、成本低和灵活可编程逻辑等特点。
ESP器件的设计流程与高密度通用可编程逻辑器件(如大规模FPGA)的设计流程相类似,但在几个关键问题上仍有所不同(图1)。ESP的设计流程包括设计输入、功能仿真、逻辑综合、布局和布线、时序仿真和硬件验证。我们将更详细地解释每一步及其在ESP设计中的特别之处。
下列技术有助于ASIC和FPGA设计师处理大型设计的复杂性问题,它们是模块化设计、层次化设计和设计复用。基于ESP的设计需要用到这些方法,因而ESP设计的第一步是将设计任务划分为若干个逻辑子功能。在层次化设计的最高层,有两大模块:嵌入式功能和用户的定制逻辑。实际上,嵌入式功能在可编程逻辑设计中有点类似于“黑盒子” 例化模块(instantiated block)。
下一步就是对可编程逻辑设计定义由顶而下直到最底层的各个功能模块的功能。然后对每个模块进行画图、编码、验证和添加到设计中。ESP器件的片上存储器(典型情况为双口SRAM)通常也集成到可编程逻辑设计中,可在任意层中作为一个例化模块。
一旦设计划分完毕,各模块编码完成,下一步就可以配置嵌入式功能。配置有可能很简单,只需遵循嵌入式功能软件的用户向导即可,但也有可能会很复杂,类似于自主开发运行在嵌入式功能硬件平台上的软件IP。
功能仿真
设计师在层次化设计的最高层将嵌入式功能与定制逻辑集成起来进行功能仿真。如果仔细构造了设计的可编程逻辑部分,整个设计的功能仿真应该非常简单,因为嵌入式功能已由ESP器件制造商进行了严格的功能性定义和测试。
正如大部分由第三方提供ASIC或FPGA软件IP的情况一样,ESP器件里的嵌入式功能一般都带有软件仿真模型和测试平台。这样即使嵌入式功能是个黑盒子,在设计仿真的各个阶段都可以很容易地评估它们的功能。
综合、布局及布线
逻辑综合阶段与ASIC或FPGA的设计几乎是一样, 但ESP设计在这一步占用的时间较少,因为占设计绝大部分(根据门数来算)的嵌入式功能并不需要综合。
ESP的布局和布线过程与FPGA类似,而结构上的区别以及构造ESP使用的技术又使这两者有所不同。嵌入式功能不需要布局和布线过程。嵌入式功能在一个基于ESP的设计中将占用90%的逻辑门数,因此比起一个相同大小而完全用通用可编程逻辑门实现的设计,ESP设计的布局和布线过程所花的总时间将大大缩短。
然而,设计工程师必须运行布局和布线工具来实现设计的可编程逻辑部分。ESP在此过程的特别之处在于要处理嵌入式功能和用户定制逻辑之间的信号连接,如果处理不当将会影响整个设计的顺利完成,因此要对它进行严格的检验。
与采用许多分立器件完成的设计相比,ESP设计的最大优点之一在于它能极大地提高系统性能。这种性能提高来自于消除了芯片内/外的延迟,但更重要的是在功能模块之间提供了更宽的信号传输路径。比如,在一个典型ESP器件中,嵌入式功能和用户可编程逻辑之间可以很容易地连接300到500个信号线。虽然一些大型的通用PLD器件具有差不多同样数目的I/O口,但沿裸片一侧的I/O口数目还不到ESP器件的一半。
更麻烦的是,某些可编程逻辑技术(特别是SRAM)只有有限的内连(interconnection)资源,即使布线分布在通用器件的四侧,也仍然会造成布线瓶颈。由于在重复设计时布局布线软件会对I/O口的信号重新布线,设计工程师通常不得不改变印制电路板的布局来实现FPGA设计的布局和布线。但对于ESP器件来说这种方法几乎是不现实的,因为信号是在嵌入式功能和可编程逻辑之间传输,布局布线完全发生在ESP器件的内部。
其它技术,例如Vialink可编程金属,允许在ESP器件内部放置大量的内连资源,可减少甚至消除ESP边界布线问题。因而在设计开发过程中为基于ESP的设计选择正确的可编程技术是最重要的决策之一(图2)。
时序和验证
成功地实现布局和布线后,下一步设计流程就是时序仿真。与功能仿真一样,ESP设计的时序仿真速度要比通用可编程逻辑器件的仿真速度快,因为器件制造商在出厂时一般都完成了嵌入式功能的运行和时序特性的验证,而嵌入式功能通常是设计中最复杂的因素。
可是在某些情况下,ESP器件的嵌入式功能是一个必须由设计人员自己配置的硬件平台,它可通过一套基于PROM的开关或是通过软件IP来配置。这些可配置的嵌入式功能给予设计人员一定的灵活性,但同时也要求实施更完全的时序验证。用基于PROM的开关能更轻易地解决时序问题,因为制造商已经测试了几乎所有可能的开关设置。然而用户选择一个制造商未特别测试过的组合还是有可能的,因为100位的PROM能产生多达2100种可能的开关设置。
用软件IP来配置要相对复杂些,因为根据软件IP在嵌入式硬件平台上的不同实现,设计中的关键路径会随之改变。尽管如此,与在通用可编程逻辑中实现软件IP功能的时序验证相比,这种情况比较简单,因为嵌入式功能通常比通用逻辑有较少的可能配置。
通常嵌入式功能的功能仿真需要测试平台和仿真模型,时序仿真可以充分评估它们的运行特性。
不同于可随时测量各点信号的基于多种分立器件的设计,ESP器件的许多信号都是在内部传输的,因而与通用可编程逻辑器件相比它的功能和时序仿真步骤将更加严格。仿真时这些信号都是可视化的,而在硬件验证时却是不可见的。因为其集成度高,ESP器件支持非常复杂的设计,因而更需要仔细地仿真。
ESP器件设计开发过程的最后一步是硬件验证。有趣的是,它占用的时间最少,只是简单地检查前面各个步骤是否正确执行就可以了。
如果设计在硬件方面不能正确进行,最好回过头去在仿真过程中进行问题的再现,而不是直接调试硬件。工程师要通过硬件调试直接找出问题之所在,一定程度上受到集成度及内部信号的制约。如果必须通过硬件调试,设计者可以临时修改设计,把内部信号通过I/O引脚从可编程逻辑阵列部分引出,从而提高内部设计的可视性。
虽然基于ESP设计的硬件调试通常要比调试分立器件甚至基于FPGA的设计更为困难,但系统级验证较简单却是它的优点,因为一旦ESP工作正常,系统设计的大部分工作可能就已经完成了。
回音质量
下面是一个DSP设计的实例,可以说明在实际应用中的设计流程,设计中采用Quicklogic公司的QuickDSP系列ESP器件。
数字网络的回音抵消是对VoIP系统的一个重要要求,消除回音和由于用户传输线的阻抗不匹配而引起的回音对于VoIP系统保持高质量的服务非常重要。消除回音的典型步骤是:首先将发送通道中的话音数据样本(经过ADPCM或CS-CELP编码器编码的数据)和回音自由反馈路径的话音数据样本用LMS(最小均方)算法相比较,然后系统必须产生一套用以决定自适应有限脉冲响应(FIR)滤波器特性的系数来模拟回音。模拟回音信号可以用来减去从返回路径回到发送端的原始回音,从而有效地消除发送端的回音。回音抵消的质量和自适应FIR滤波器再生回音的能力是一致的。设计上的挑战是如何构造一个自适应滤波器,在网络中发生最大回音延迟时,它仍能保持有效的回音抵消。
QuickDSP嵌入式标准产品包括10-18个嵌入式硬件算术单元,以及高性能的可编程逻辑和可配置的双口SRAM。硬件算术单元称为嵌入式计算单元或ECU。每个ECU包括一个8位乘法器、一个16位加法器和一个16位寄存器,并支持包括乘法、加法、乘法/加法、乘法/寄存器、加法/寄存器在内的8种不同的运行模式。一个3位指令可以用来配置每一个独立于其它ECU的ECU单元,而且也能在正常运行时动态地改变。每个ECU的数据都可以从可编程逻辑阵列、存储器阵列、其它任意的ECU或任意的器件I/O管脚输入或输出。
在上例中,ECU是与回音抵消自适应FIR滤波器系数相乘的关键单元。滤波器本身可由器件内可编程逻辑阵列中的ECU和逻辑电路组合而成,滤波器的系数则存储在片内SRAM中。虽然设计很复杂,但所需的Verilog或VHDL源代码形式的逻辑电路可由软件开发工具和一个DSP功能产生器自动生成??不需要手工设计滤波器。
设计实现
像所有的复杂设计一样,我们设计的第一步是把设计划分为两大基本模块:一个是嵌入式功能,另一个是通用可编程逻辑阵列。此方案的特别之处在于,嵌入式功能模块(自适应FIR滤波器)也需要可编程逻辑和存储器。这使我们的设计划分比一般的设计稍微复杂,不过在设计流程中它并不会引起其它问题。
鉴于自适应FIR滤波器模块的特殊性,我们首先设计这部分功能。设计者可以采用诸如Matlab或QuickFilter之类的软件工具定义滤波器类型及其带通特性,然后工具就会生成合适的滤波器系数并显示频域和时域响应。
设计者对自适应滤波器的工作满意后,就可以开始设计其它部分的模块,它们完全基于可编程逻辑和存储器的设计。一旦所有的模块都完成定义和画图(原理图)或编码(基于HDL的设计输入)后,就能进行功能仿真了。这个过程将反复进行,直到设计者确信整个设计都没有问题。
所有模块的功能都验证完毕后,它们就能在最高层上构成一个单独的设计并进行综合。解决了所有综合中的错误和告警后,设计者就能进入布局和布线阶段了。
在布局和布线阶段,设计者应当解决由跨越各种ECU/可编程逻辑和ECU/嵌入式存储器边界的信号引起的布线拥挤问题。
布局和布线顺利完成后,设计者应该通过仔细的时序仿真全面评估设计的时序特性。通常ECU的信号时序取决于软件滤波器的设计方法,当滤波器运行时,时序还会有所改变。因而设计者应仔细地仿真滤波器运行的所有环节。
完成我们设计例子的最后一步是硬件验证。如果上述所有步骤都认真完成,这一步将会顺利通过,器件应该在上电时完全正常地工作。但是,如果设计不正常,最好的调试方法是回到仿真步骤找出问题之所在。
减少工作量
ESP在一个器件上结合了嵌入式功能、可编程逻辑和存储器,为工程师们提供了一个高性能和高集成度的设计解决方案。采用这些器件的设计非常复杂,因而造成设计开发过程要比采用通用可编程逻辑器件的开发稍微复杂,它更强调仿真在硬件验证中的重要作用。然而,比起纯粹基于可编程逻辑阵列的设计,只要仔细执行设计过程,整个设计可在较短的时间内完成,因为ESP器件的制造商已经实现并验证了嵌入式功能。这样既减少了系统设计工程师总的设计量,又能使他们在最短时间里完成复杂的设计。
Wai-Leng Lim是Quicklogic公司DSP工程部的职员,其工作重点是为DSP嵌入式标准产品设计技术策略。







京公网安备 11011202001138号
