超越SoC的设计创新
大多数软、硬件工程师都很熟悉 FPGA,这点应该勿庸置疑。这种熟悉不见得是实质性的熟悉,而是从概念上比较了解,也就是说 FPGA 功能的快速发展和成本的不断下降是大家都不容忽略的优势。同时,他们也认识到这种可编程器件显然能方便地作为各种数字电路以及逻辑处理的高灵活度、低成本的载体。
基本说来,在设计方案中发挥 FPGA 的功能就是简单地映射出所需的逻辑,然后将其下载至适当容量大小的器件中。这有些像大型处理器系统主体设计的辅助支持工作,而且在该层面上也确实发挥着自身的支持性作用。
近期一些应用开始充分利用 FPGA 的高吞吐量和并行计算功能进行数据处理工作,不过这种工作仍属于发挥支持性作用,而不是主要作用。例如,我们往往在设计工作后期才决定采用基于 FPGA 的 DSP 模块,而且是将其作为主设计规划与工艺流程的附属部分来开发。
随着 FPGA 功能获得长足发展,我们已开始采用能够在可编程空间内实施处理器、存储器、高速数据处理以及外设等核心功能模块的 SoC 设计方案。随着FPGA器件各代工艺技术从 65 纳米向先进的 40 纳米方向发展,而且门的容量达到数百万个,FPGA 目前已开始走向发挥主导作用的前台,能够支持真正的大型设计,达到专业化 ASIC 器件的实施水平。
从某种程度上说,这要归功于 FPGA 厂商推动的技术发展,拉近了 FPGA 与 ASIC 器件之间的性能与效率差距。对于大多数投入中低规模量产的产品而言,基于 FPGA 的方案显然比 ASIC 更实际,这主要是因为后者的 NRE 成本已然非常高昂,而且还在不断升高。不过,目前高产量产品仍然主要选用 ASIC 器件。
发挥潜力的障碍
不过,如果我们简单地认为 FPGA 就是 ASIC 设计方案的低成本与多功能备选方案的话,那么我们就会忽视 FPGA 可提供的巨大潜力。FPGA 的更高级潜力集中体现在 FPGA 从根本上与 ASIC 存在的技术差异性,即 FPGA 的关键技术组件具有强大的可再编程能力。要充分发挥其这一潜力需要采用不同的设计理念和设计方法,这就远远超出了传统 SoC 的设计思路和 ASIC 的原有方案。
FPGA 型产品设计的传统开发进程反映了传统的设计理念,即将设计方案的各个部分(软件、硬件及嵌入式硬件)作为彼此独立、不相联系的任务。这就是说,传统方案与 ASIC 开发工作差不多,软硬件分组等重大设计决策都是在设计周期的早期阶段做出的(并在早期阶段就固定了)。
其结果是,物理硬件(FPGA 器件与外设硬件)以及可编程硬件元素在进行有意义的软件开发之前就已经锁定了。这些初期决策确定了后续开发工作的参数和局限性,因而导致越到开发后期设计选择的局限性就越大。通过修改软硬件分组、将嵌入式处理器改为硬连接处理器抑或是选择不同的 FPGA 器件类型等来进行细节调整设计方案的理念是不存在的。
在上述基本层面进行任何设计方案调整都必须对包括硬件、可编程硬件和软件在内的所有设计领域进行大量重新设计,这对设计工作造成的冲击是极其巨大的,因此我们必须不惜一切代价避免这种设计巨变。简而言之,只能在可编程硬件的限制框架内创建软件,而可编程硬件则又相应局限于固定的物理硬件。
在当今设计中,软件定义着产品的独特优势与竞争元素(功能性与最终用户体验),因此传统的 SoC 设计方案会人为地制造软件开发的局限性,影响设计最具价值的成分。对基于 FPGA 的设计而言,产品最核心的资产当属应用软件和嵌入式 FPGA 硬件所决定的“软”属性。
智能层
如果对 FPGA 平台采用传统的 SoC 设计方案,就会面临 ASIC 方法的大多数局限性,但是 FPGA 自身的巨大灵活性则能带来更多可能。特别是如果 FPGA 开发进程与软硬件开发进程密切相关、共享相同的设计环境和设计数据池的话,就更能发挥灵活性优势。
例如,如果 FPGA 的架构能够采用高灵活性接口层,有效地将设计的“软”元素与主机硬件相隔离,那么就能充分发挥各种可能性,可以尽可能地降低应用软件和可编程硬件设计变动对周围硬件系统所造成的影响。
这是发挥最新高容量 FPGA 器件功能的进一步合理举措,可让可编程元素进一步成为设计方案的核心,而不仅是传统 SoC 系统的简单载体。可编程元素实际上可以发挥更大的作用。
此外,FPGA 利用这种方案还能发挥外设、I/O 协处理器以及接口连接的作用。除了构成传统 SoC 系统的高级功能元素之外,FPGA 还可作为设计方案中软硬元素之间的连接机制。处理器、存储器或 DSP 可作为软内核或物理硬件实施,甚至也可同时兼顾二者实施,同时 FPGA 提供的可再编程层能够将其联系在一起。
这些更为丰富的 FPGA 元素通常可作为处理器以及存储器和外设等硬件之间的接口,可将不同功能器件之间的接口实现“标准化”,这样设计人员就不必烦心考虑 I/O 配置和总线系统等低级而复杂的硬件问题了。事实上,这些层可提取外设或处理器接口,从而能够在不影响周围硬件的情况下简化对功能器件的更改。
在实践中,基于 Wishbone 总线架构之上的 FPGA 内核可同时支持处理器和外设。内核能够高效地将器件“打包”,从而提取处理器接口,使其在架构上相当于其他处理器,而且能确保在不影响与其相连的外设的情况下对处理器方便地进行修改。除了基于 FPGA 的“软”器件之外,还可将上述理念进一步扩展适用于混合型硬核处理器、外部处理器以及片外分立式外设以及存储器器件等。
高级设计
在不必考虑大多数低级硬件架构问题的情况下,我们可以有机会采用高级 FPGA 设计捕获系统,使设计人员只需简单地将逻辑功能模块连接在一起。符合 Wishbone 标准的元件(从库中拉出)可在原理图上连在一起,甚至也可在更高级的设计抽象上组合,通过简单的示意图(反映功能或器件)组成类似于流程图的配置。
请注意,这种高级设计方案各加能够充分发挥 FPGA 的可再编程功能。任何添加层和接口都可自动与功能设计本身一起包含在 FPGA 结构中。与固定芯片 SoC 产品设计所使用的传统过程不同的是, FPGA 的硬件设计可以动态开发,而不会对设计方案的其他组成部分构成严重影响。
此外,这种方案从软件开发人员的角度来说也非常重要。以编写编写存取或控制外设器件的软件为例,我们需要全面了解器件在底层硬件级上的工作情况,其中包括需要哪些器件寄存器、采用哪些器件专用的命令、使用哪些通信协议,以及如何处理中断等。
为了满足这一需求,可以在层栈管理器中标准化的硬件接口层中添加驱动层与应用层的驱动软件。与 Wishbone包装内核相似,也可在构建时间时将这些驱动层下载到 FPGA中,为您解决低级硬件接口连接的复杂性问题。
相反,许多硬件开发人员也拥有充足的编程知识完成应用软件开发,但是他们受阻于操作系统、通信协议栈、用户界面框架等方面的知识。上述层与驱动系统移除了这些障碍,它将软硬件设计联系了起来,从而使所有工程师都能够在现有的技巧基础上开发出更高级的产品。
可编程单元
此外,FPGA 的高灵活技术也是可通过将软件程序与算法转移到硬件中来最大限度发挥其加速作用的理想环境。FPGA 开发环境中的 C 到硬件转换可以是一个动态过程,而不是 ASIC SoC 备选方案那样的固定预设过程。软件设计和 FPGA 设计共存于同一环境时,选定的软件功能可在 FPGA 硬件中“复制”为相应的协处理器。可以随时启用备用选项来判断性能的改善情况。
除了将并行处理等功能带到软设计区域的明显优势之外,还可充分发挥 FPGA 物理器件引脚的固有可编程特性优势来降低电路板布线复杂性,并简化外部连接。
例如,通常情况下,在实际布局中物理器件的放置会使 FPGA 与外设之间的连接极为复杂,这在一定程度上与 BGA 封装的高密度有关,我们可通过 FPGA的本身解决这个问题。这里可采用 FPGA 的引脚的重新分配与内部布线来解决电路板布线的技术难题,还可以降低电路板空间占用与板子的层数要求。这一理念同样依赖于在平台层面上互连的软件-硬件-FPGA 开发环境,只有这样才能支持硬件 FPGA 域之间的智能与自动引脚交换。
这里我们确实需要从根本上解决超越传统 SoC 设计方法限制的问题。要想实现本文所描述的系统,就需要可将所有设计进程集中在同一领域的高级设计系统。通过统一设计应用,采用整体设计的统一数据模型,就可消除嵌入式软件、可编程硬件以及物理硬件等不同设计领域之间的分割。
用来实施的单纯 SoC 设计方法与传统系统都有极大的局限性,不能充分发挥 FPGA 的潜力。系统设计必须超越当前这种不灵活的分离式设计方法,让 FPGA(实际上是多个 FPGA)成为整体设计的可再编程中央平台。
只有在统一的产品设计环境中采用这种方法,设计应用软件才能提高可移植性,实现软硬件的真正协调设计,而且在了解相关要求后在设计周期后期决定重要硬件。这样创建出来的具有高度灵活性的动态设计环境,可以帮助更多工程师创建出极具竞争力的特色创新电子产品。
评论
查看更多