snifer

[转]FPGA一体化高级设计方法

0
阅读(3745)

尽管 FPGA 为嵌入式设计带来了强大的功能与灵活性,但额外的开发流程也给

设计工作增加了新的复杂性和限制问题。整合传统的硬件-FPGA-软件设计流程
并充分利用 FPGA 的可再编程功能是我们的一个解决之道。
随着 FPGA 技术逐步延伸至军事电子系统以及嵌入式电子产业的几乎全部领域
,能发挥可编程逻辑优势的应用已经占据主流地位。通信、机载和控制系统尤
其受益于 FPGA 的设计灵活性、现场重构和并行处理功能。同时,较短的设计
周期和更加简化的验证过程则有助于加快应用投入现场的进程。

尽管 FPGA 无所不在,但能真正全面发挥FPGA 灵活设计潜力的应用却很少。之
所以存在这种局限性,原因在于 FPGA 开发很大程度上只是简单地叠加,或者
最多也只是连接于传统的软硬件工作流程上。这个孤立的 FPGA 开发阶段会导
致整个设计流程的复杂性大幅上升——并最终限制软硬件领域可用的设计选择
范围。

为了简化整体设计工作,并丰富设计选项,硬件设计、软件开发和可编程硬件
设计等独立的设计过程需集成在一起,以作为一个整体的任务进行处理。只有
在基础层面上让所有设计进程都能共享统一的设计数据库和通用的设计环境,
FPGA 的可再编程性这一最主要的独特优势才能得到充分发挥,从而将 FPGA 设
计推向前所未有的水平。全面发挥 FPGA 灵活性优势的关键在于了解其发展趋
势及所面临的设计挑战,并掌握如何让包含 FPGA 系统中的三大设计方面(硬
件、可编程硬件和软件)实现协调整合。

FPGA 从胶合逻辑向 SoC 方向发展

FPGA 刚进入嵌入式市场领域时,被认为是用于实施大量简单胶合逻辑的方便而
有效的替代技术。在这种应用中,嵌入式硬件是主要软硬件设计的附属部分,
其开发过程不涉及其他组件的设计流程,也不需要与这些流程进行交互。

不过,现在的 FPGA 器件及其使用方式已经在海量数字逻辑便捷容器概念的基
础上发生了重大变化。大容量 FPGA 现在能承载整个 SoC 设计,其中处理器、
内存以及高速数据处理等核心功能元素都在可编程领域实施。在军用嵌入式系
统中,由于受产量相对较低的影响,很难采用 ASIC 设计方案,而 FPGA 则为
充分发挥 SoC 设计方案的物理简单性和可靠性等优势提供了一条经济高效的可
行之道。

相对于简单的胶合逻辑设计而言,SoC 实施的一个重大不同点在于,软硬件开
发现在基本上都是关联于、且依赖于 FPGA 设计。这是因为 FPGA 器件和支持
外设是物理设计的中心与核心元素,而嵌入式应用软件也要装载在 FPGA 上发
挥作用。因此,FPGA 域的任何更改都会对软硬件域造成显著影响。

受限制的创新

如果将硬件、软件乃至当前的嵌入式硬件等设计的各个部分视作是彼此分开、
互不关联的任务,则无论设计域之间如何相互依存,FPGA 产品设计的常规开发
流程采用的仍然是传统方案。

某个设计域的变动往往会对其他域造成具有破坏性影响且耗时巨大的重新设计
。也就是说,必须在设计阶段早期就做出(并且锁定)软硬件分区等重大决策
,这与传统的非 FPGA 嵌入式设计别无二致。实际上,FPGA 器件和外设硬件等
物理硬件和随后的可编程硬件元素在有意义的软件开发之前都被依次一一锁定
了。

这些最初的决策决定了后续开发流程的参数和限制,因此设计的可选项会随着
流程的逐步推进而越来越少。例如,选定的 FPGA 器件(和硬件外设)将定义
包括确定采用哪种嵌入式 IP 等在内的性能上限,嵌入式硬件设计进而定义软
件可用的功能。或者说,FPGA 器件只能支持该器件厂商提供的软处理器,这进
而也定义了应用软件可用的编程选择。

此外,要想微调设计方案的性能,比如将软件算法转移到嵌入式硬件中、或者
从嵌入式处理器转为硬连接的处理器、抑或是选择不同的 FPGA 类型等,都会
导致对硬件、可编程硬件和软件等所有域进行大规模重新设计。对开发时间紧
迫的军事/航空系统而言,这种重新设计对设计周期造成的中断影响极大,因
此大多数工程师都会全力避免这种设计风险的发生。不过,高性能和设计稳定
性同样至关重要,因此检查处理器选项并充分利用软算法的优势来替代硬算法
也是必不可少的。

重建一体化

如前所述,简单地在现有的设计工作流程中添加 FPGA 开发流程难以充分发挥
FPGA 的全部优势。对于需要降低 NRE 成本、加快设计速度的应用而言,传统
设计方法所带来的局限性会抵消这种优势;而这正是 FPGA 应当发挥最大作用
的地方。

恢复设计选择和全面发挥 FPGA 优势的第一步就是让硬件设计、软件开发和可
编程硬件设计等统一起来。通过使用来自整体设计统一数据模型中的一体化设
计系统和应用,设计域可随各域中设计的变化而实现交互和及时响应。在实践
中,各个域采用的都是同一设计和组件库数据中的子集。由于更改可以方便地
(甚至是自动地)反映在所有设计领域中,因而可以显著简化设计更改,如在
软件与硬件之间进行功能转移,或探索其他器件等。

例如,在统一设计数据池中,针对选定 FPGA 器件的设计数据和配置文件可同
时适用于硬件和 FPGA 设计领域。如果 FPGA 器件或其引脚配置在 FPGA 设计
阶段进行了更改,该信息会立即用于硬件设计的实施。这样,我们探索不同设
计选择就能变得更加有效,而且硬件和FPGA设计域之间的引脚交换等高级设计
功能也得以简化。