在5G无线、卫星通信、雷达探测、航天测控等复杂系统设计中,FPGA工程师扮演着重要角色。
对于一个FPGA团队来说,需要根据项目需要完成产品的设计和验证,保证项目的交付。为了在越来越复杂的系统设计中,FPGA工程师之间保持高效沟通和工作推进,这就需要找到一个适合的设计方法论。目标是通过在设计团队之间建立一个通用的方法来提高FPGA设计团队的生产力,同时允许跨团队交换设计模块。
FPGA设计中的三个关键因素:
FPGA工程管理
FPGA设计方法
FPGA芯片选择
首先,需要建立FPGA中实现系统设计的可预测性路线图。实现可预测结果的三个步骤是:
适当的项目计划和范围。
准确选择FPGA芯片,以确保当今和未来的项目可以使用正确、成熟的技术。
遵循FPGA设计开发的最佳实践,以缩短设计周期,并确保设计按时完成,设计模块可以在未来的项目中以最小的代价进行复用。
所有三个元素需要顺利地一起工作,以确保成功的FPGA设计,如图1所示。
图1 成功进行FPGA设计的三个步骤
供应商的选择应该是两家公司之间的长期合作关系,特别是设计软件和IP Core的授权。通过共享路线图和共同管理现有项目,不仅可以确保当前项目的成功,还可以及时为未来的项目提供正确的解决方案。一个基于经验的微调过程,以确保项目的成功。
FPGA设计方法,这是最佳实践方法的主要焦点。这涵盖了从基础到高级技术的完整FPGA设计流程。这种方法是独立于FPGA供应商,因为适用于FPGA的设计实践,但同时需要结合FPGA的设计软件,比如Vivado和Quartus的设计环境不同,相关的设计流程有所不同。对于FPGA工程师而言,设计流程大同小异,可以快速切换。图2所示的图表显示了最佳实践设计方法论。
图2 FPGA设计最佳实践设计方法
Board Layout、RTL设计、IP重用、功能验证和时序收敛,往往是设计团队拥有不同设计方法的领域,工程师需要获得一致的结果和缩短设计周期。
FPGA设计中面临的许多挑战并不是FPGA设计所特有的,而是设计中常见的挑战。与ASIC设计相比,FPGA设备本身确实提供了独特的挑战和机会。FPGA设备性能的提高导致针对FPGA的设计更加复杂,ASIC工程师与FPGA工程师可以相互转换。这导致许多设计团队将ASIC设计原则迁移到FPGA设计。总的来说,这对FPGA设计流程有好处。然而,它需要与FPGA带来的设计流程的好处相平衡。FPGA的可编程特性为在系统中执行更多的验证打开了大门。当正确使用时,这可以大大加快验证周期,但如果滥用,它会延长设计周期。I/O的可配置特性提供了ASIC设计中不存在的挑战。同时,行业使用的EDA工具在功能和成本上,FPGA和ASIC也有所不同。
FPGA工程师需要熟悉FPGA厂商软件,比如Vivado或者Quartus设计软件。FPGA工程师通常负责编写和验证设计的RTL代码,负责在FPGA中实现设计,并帮助在最终系统中进行联调。FPGA工程师在PCB设计中扮演着重要的角色。负责从FPGA设计软件生成FPGA引脚输出。因此,FPGA工程师需要与硬件PCB设计工程师进行原理图确认,任何修改都需要提供更新的引脚分配,并最终进行实现和验证。
在实际的FPGA设计过程中,FPGA工程师除了最基本的RTL代码设计、仿真和调试外,还需要非常熟悉项目所涉及的技术路线、信号处理过程、系统架构等,常常也需要参与到系统方案的设计制定,并给出最佳实现方案。
因此,对于FPGA工程师而言,最难的不是写RTL代码,而是在一个复杂系统设计中,需要涉及技术方案制定、架构设计、深入理解技术协议、模块设计与验证、系统集成、整个系统的联调,以及与其他部门的协作。
此外,需要有好的领导来带领FPGA团队,避免非专业领导过多干预FPGA团队的正常工作。
在系统设计过程中,经常会遇到各种问题,尤其是在系统调试阶段,FPGA常常成为“背锅侠”。FPGA工程师又要通过各种手段去证明自己的设计没问题,还需要定位出问题出现的原因。每一款产品的成功推出,背后都是一部“研发风云录”。
总结起来,为了实现复杂系统设计,FPGA工程师需要:
制定详细的设计方案和系统架构
掌握FPGA信号处理与接口设计方法
做好工程管理和维护
掌握仪器设备的使用和问题排故