![](https://img.jishulink.com/msimage/202304/c154bd0d876c57b43ca14b8a47ff9608.jpg?image_process=/format,webp/quality,q_40/resize,w_760)
接上篇》》》》》》》》 4)逻辑综合:这个步骤是将高级抽象层次的语言描述转化成较低层次的电路结构。也就是说将硬件描述语言描述的电路逻辑转化成与门、或门、非门、触发器等基本逻辑单元的互连关系,也就是我们常说的门级网表。综合是创造性的转化过程,它不但能翻译我们的电路,还能够优化我们的电路,比如去除电路描述中冗余的电路结构,或者复用功能相同的电路结构。综合的目标和要求可以通过约束文件来指定,比如时序约束、面积约束、功耗约束等。 5)前仿真:这个步骤也叫做综合后仿真,仿真时,把综合生成的标准延时文件反标注到综合仿真模型中去。因为综合后只能体现基本的逻辑门之间的互连关系,并不是实物电路,没有连线长度信息,所以前仿真只能评估门延时带来的影响,不能估计路径延时,前仿真结果和布线后实际情况还有一定的差距,并不十分准确。目前的综合工具较为成熟,一般的设计可以省略这一步。但如果布局布线后发现电路功能与设计意图不符,就需要回溯到前仿真来确定问题所在。 6)实现与布局布线:这个步骤是将综合生成的逻辑网表配置到具体的FPGA芯片上,布局布线是其中最重要的过程。布局将逻辑网表中的硬件原语和底层单元合理地配置到芯片内部的固有硬件结构上,并且往往需要在速度最优和面积最优之间作出选择。布线根据布局的拓扑结构,利用芯片内部的各种连线资源,合理正确地连接各个元件。布局布线后就可以进行静态时序分析了,静态时序分析的方法是在布局布线后的实际电路中寻找寄存器和寄存器之间的最长路径延迟,通过最大延迟可以得出系统最大时钟速率。 7)后仿真:这个步骤也称为时序仿真,是将布局布线的延时信息反标注到设计网表中来检测有无时序违规现象(即不满足时序约束条件或者器件固有的时序规则,如建立时间、保持时间等)。经过布局布线后,门与门之间的连线长度也确定了,所以后仿真包含的延迟信息最全,也最精确,能更好地反映芯片的实际工作情况。 8)板级仿真与验证:这个步骤主要应用于高速电路设计中,对高速系统的信号完整性、电磁干扰等特征进行分析。板级仿真需要利用专业的软件工具和仪器设备来进行。 9)芯片编程与调试:这个步骤是设计的最后一步,将EDA软件产生的数据文件(位数据流文件)下载到FPGA芯片中,进行实际的测试。芯片编程需要满足一定的条件,如编程电压、编程时序和编程算法等方面。调试时,需要利用逻辑分析仪、示波器等仪器设备来观察和分析芯片的工作状态,检查是否有功能错误或性能问题,如果有,就需要返回到前面的步骤进行修改和优化。
四、FPGA的设计技巧 1)遵循良好的编码规范:编码规范是指一套约定俗成的编写HDL代码的规则和习惯,它可以提高代码的可读性、可维护性和可重用性,也可以避免一些常见的错误和问题。一些常用的编码规范有:使用有意义的变量名、注释和空格;使用一致的缩进和对齐方式;使用明确的赋值语句和运算符优先级;使用合理的信号类型和范围;使用同步复位和时钟边沿触发等。 2)使用层次化和模块化的结构:层次化和模块化是指将一个复杂的设计分解为若干个相对简单的子模块,然后将这些子模块按照一定的逻辑关系连接起来,形成一个完整的设计。这样做可以提高设计的清晰度和可管理性,也可以方便地进行测试、修改和重用。一些常用的层次化和模块化的方法有:使用顶层模块、中间层模块和底层模块;使用总线、接口和协议;使用库、包和组件等。 3)利用参数化和生成语句:参数化和生成语句是指使用一些特殊的语法或关键字来定义一些可变的参数或条件,然后根据这些参数或条件来生成不同的代码或结构。这样做可以提高代码的灵活性和通用性,也可以减少代码的冗余和重复。一些常用的参数化和生成语句有:使用generic、parameter、define等定义参数;使用for loop、generate、case等生成结构等。 4)避免时序冒险和组合逻辑回路:时序冒险是指由于信号在不同路径上传输延迟不同,导致输出信号在一个时钟周期内发生多次跳变或错误变化的现象。组合逻辑回路是指由于信号在多个组合逻辑门之间形成环路,导致输出信号依赖于自身状态而不稳定或振荡的现象。这些现象都会影响FPGA的正确性和稳定性,甚至导致硬件损坏或故障。一些常用的避免时序冒险和组合逻辑回路的方法有:使用同步设计原则;使用触发器、锁存器、寄存器等存储元件;使用延迟器、滤波器、去抖动器等处理元件;使用状态机、计数器、定时器等控制元件等。 5)使用有效的调试手段:调试是指在设计过程中检查和修正错误或问题的过程,它是保证FPGA正确工作的重要环节。调试可以分为软件调试和硬件调试两种。软件调试是指在仿真环境中使用一些工具或方法来观察和分析FPGA的运行情况,找出潜在的错误或问题。硬件调试是指在实际的硬件设备上使用一些工具或方法来观察和分析FPGA的运行情况,找出实际的错误或问题。一些常用的调试手段有:使用断点、单步执行、变量监视、波形显示等软件工具;使用示波器、逻辑分析仪、信号发生器等硬件工具;使用测试平台、测试向量、测试套件等测试方法等。
五、FPGA技术研发趋势 如今,FPGA技术依然在不断演进,主要从以下四个维度在不断突破研发瓶颈。首先,制程技术的进步:制程技术是影响FPGA性能、功耗、成本和可靠性的重要因素。随着制程技术的不断发展,FPGA可以采用更小的晶体管尺寸,从而提高集成度、降低功耗、缩小芯片面积、提高运行速度和信号完整性。目前,主流的FPGA厂商如赛灵思(Xilinx)和英特尔(Intel)已经推出了基于7nm和10nm工艺的FPGA产品,未来还有望进入5nm甚至3nm工艺。 第二,系统级集成的需求:随着应用领域的不断拓展,FPGA需要与其他类型的芯片进行系统级集成,以提供更强大和更灵活的功能。例如,在人工智能、云计算、边缘计算等领域,FPGA需要与CPU、GPU、DSP、ASIC等芯片进行协同计算,以提高性能和效率。为了实现系统级集成,FPGA需要采用更先进的封装技术,如2.5D或3D堆叠技术,以实现高密度、高带宽和低延迟的互连。 第三,平台化和可编程性的提升:为了满足不同应用场景和用户需求,FPGA需要提供更高层次的抽象和可编程性,以降低开发门槛和时间。例如,赛灵思推出了ACAP(Adaptive Compute Acceleration Platform)平台,它是一种新型的FPGA架构,可以通过软件工具和库来配置和优化不同类型的计算引擎,如逻辑、存储、DSP、AI等。ACAP平台可以实现更快速、更灵活、更智能的计算加速。 第四,新兴应用领域的驱动:随着科技的进步和社会的发展,FPGA面临着新兴应用领域的挑战和机遇。例如,在5G通信、物联网、自动驾驶、医疗设备等领域,FPGA需要提供更高的带宽、更低的延迟、更强的安全性和更好的适应性。为了适应这些应用领域,FPGA需要不断创新和优化其架构、功能和接口。
|