解密歌斐资产:8年总资本管理规模1500亿,80家GP3600+初创公司,中国新兴产业深度支持者
06-18
随着器件尺寸、功能和可靠性的不断提高,FPGA越来越多地应用于现代数字系统中。
利用FPGA进行数字电路设计已成为数字电路系统领域的主要设计方法之一。
FPGA设计是指利用相应的EDA开发软件开发FPGA器件的过程。
最早的设计方法是自下而上的,即首先确定库中可用的组件,然后使用这些组件来设计模块,完成后将各个模块连接起来形成整个系统。
最后,通过调试和测量,检查系统是否达到了要求的性能指标。
随着技术和需求的发展,自下而上的方法已经不能适应复杂数字系统的设计。
目前广泛采用的是自上而下的设计方法和流程:从顶层的系统设计、功能划分和结构设计开始,利用硬件描述语言描述高层系统行为,并利用仿真方法进行验证。
系统级别。
确保设计的正确性后,逐步设计下一层结构,并使用综合优化工具生成具体门电路的网表。
这种分步设计和验证的方法可以及早发现问题并修改系统设计,缩短开发周期并节省成本。
FPGA设计流程 FPGA设计的总体流程如图1所示,包括设计准备、设计输入、功能仿真、设计处理、时序仿真、器件编程和测试。
设计准备 数字系统设计之前,首先要进行方案论证、系统设计、器件选型等准备工作。
根据任务的功能和性能指标要求,设计人员在器件资源、成本和功耗方面进行折衷,选择合适的设计方案和FPGA器件。
设计描述与输入 设计输入是指设计者将设计的系统或电路以某种形式的开发软件需求表达出来并输入计算机的过程。
设计描述和设计输入通常采用图形和硬件描述语言的形式。
图形输入方式 图形方式的设计输入主要利用EDA软件对原理图、状态图、波形图等图形进行编辑修改。
原理图输入法是描述设计最直接的方式。
它利用元件库中的元件来绘制系统或电路的原理图,符合人们的思维习惯。
这种设计输入方式要求设计人员具有丰富的硬件知识,熟悉FPGA器件的结构。
主要优点是系统结构清晰直观,便于信号观察和电路调整;缺点是设计效率低,产品升级、FPGA器件更换、EDA软件更换时需要重新输入原理图,而硬件描述语言输入法不存在这方面的问题。
状态图主要用于以图形方式设计有限状态机。
图形化有限状态机设计简单、直观、快速。
波形输入模式主要用于创建和编辑波形设计文件,以及输入仿真向量和功能测试向量。
硬件描述语言输入法 硬件描述语言输入法采用文本来描述设计,包括普通硬件描述语言和行为级硬件描述语言。
比较有代表性的通用硬件描述语言是ABEL,它支持逻辑方程、真值表、状态机等逻辑表达式,主要用于简单可编程逻辑器件的设计输入。
行为硬件描述语言是目前常用的高级硬件描述语言。
有两个主要的 IEEE 标准:VHDL 和 Verilog HDL。
其突出优点是:逻辑设计与具体工艺无关,可以让设计者在系统设计和逻辑验证阶段就确定方案的可行性;行为级描述,有利于大规模、复杂数字系统的设计;并具有较强的逻辑描述和模拟功能,输入效率高;不同FPGA器件和EDA软件之间的转换更加方便;无需非常熟悉底层电路和FPGA器件结构。
功能模拟 功能模拟也称为预模拟或行为模拟。
用户设计的电路在综合之前应首先验证逻辑功能。
本次仿真没有设备内部逻辑单元和连接的实际延时信息,只是初步验证系统的逻辑功能。
为了完成功能仿真,需要首先使用波形编辑器或硬件描述语言创建仿真所需的波形文件和测试向量(尽可能包括所有可能影响设计功能的输入信号组合) )。
仿真结果将以波形图的形式直观地显示在计算机屏幕上,并生成报告。
由此,设计者可以观察各个信号的变化,从而判断电路是否达到了预期的功能。
如果发现错误,则应返回设计输入阶段修改逻辑设计。
设计处理 确认设计描述的功能正确后,可以使用EDA软件对设计描述和相应的性能约束进行处理。
设计处理是FPGA设计和开发的重要环节。
在设计处理过程中,EDA软件对设计输入文件进行语法和设计规则检查、逻辑简化、优化、综合、适配、布局布线、时间参数提取,最终生成用于器件编程的数据文件。
首先,EDA软件检查设计输入的语法和设计规则,然后对逻辑方程进行简化和优化,通过综合和适配将优化的设计映射到器件相应的逻辑单元,并生成网表文件。
布局布线将映射生成的物理单元在目标器件上进行布局连接,并提取相应的时间参数。
时间参数提取将生成包含当前设计的时间参数的网表,用于时序仿真。
另外,通过时间参数提取输出的时序报告可以反映当前设计是否满足时序约束。
设计加工的效果主要取决于设计者的风格和工具综合能力。
使用EDA软件进行设计处理时,需要注意:首先,优化目标可以是速度、资源、功耗等,而这些指标是相互制约的。
其次,合成器目前支持的硬件描述语言的语法有限,过于抽象的语法无法合成。
因此,设计者应该具有良好的硬件描述语言编码风格。
时序仿真 时序仿真也称为后仿真或延迟仿真,是高速FPGA设计过程中必不可少的仿真验证阶段。
由于不同FPGA器件的内部延迟不同,不同的布局和布线方案也会影响电路各部分的延迟,而这些延迟可能会导致系统和电路功能的变化。
因此,在设计过程结束后,需要对系统及各模块进行时序仿真,分析时序关系,排查并消除竞争风险,预估器件的实际工作性能。
由于时序仿真需要参考的参数较多,因此会比功能仿真花费更长的时间。
电路延迟的最坏情况用于时序仿真。
因此,经过时序仿真验证的设计一般都能在实际器件上正确运行。
设备编程和测试 设备编程也可以称为配置。
时序仿真完成后,即可使用EDA软件生成FPGA器件编程所需的数据文件。
器件编程就是将编程数据下载到对应的FPGA器件中。
器件编程需要满足一定的条件,如编程电压、编程时序、编程算法等。
FPGA的一次性编程需要专门的编程器来完成器件的编程。
基于SRAM的FPGA可以通过EPROM或其他存储设备进行配置。
在线编程FPGA器件不需要专门的编程器,只需要一根编程下载线和相应的编程软件。
设备编程完成后,还可以对设备进行验证、加密等操作。

对于支持JTAG技术、具有BST(边界扫描测试)能力和在线编程能力的器件,编程和测试过程更加方便。
对FPGA设计的要求 作为一个优秀的FPGA设计,必须具备以下特点: 满足系统的设计规范和性能要求 满足用户对系统性能指标和设计规范的需求。
这是成功的 FPGA 设计最基本的要求。
源代码可读性强 可读性好的FPGA设计(用硬件描述语言描述的原理图或源文件)应该包含足够的描述和注释信息,比如各个模块的描述、各个图片之间的关系原理图、硬件中描述的模块之间的互连关系等。
另外,状态机设计的文档应包括状态图或功能描述,布尔方程的实现过程也应写在源代码中。
具有良好可读性的设计将节省大量调试、测试和维护的时间。
经过验证的电路易于重复使用,节省开发时间。
完整的开发文档 为了保证FPGA设计的可重复性,设计文档中除了详细的系统设计描述外,还必须包括其他一些必要的信息,例如软件开发系统的版本号、各软件组件选项和参数设置。
另外,各种操作和修改过程都应记录在文件中。
如果不这样做,最终的实现会因人而异、因开发系统而异,整个系统的性能会变得不稳定甚至无法评估。
FPGA设计的基本原则 在EDACN的FPGA技术论坛上,一些经验丰富的设计人员总结了FPGA设计中几个非常重要的基本原则,下面列出供大家参考。
硬件资源与处理能力之间的权衡 设计中可以通过并行处理来提高处理能力,但并行硬件会消耗更多的FPGA内部资源;还可以通过模块重用来减少硬件资源。
消耗,结果就是系统运行速度的降低。
在具体设计中,应根据系统性能指标的要求,在资源消耗和处理能力之间做出合理的折衷,在保证系统功能和性能的同时,减少资源消耗,从而降低功耗和成本。
硬件思想 应该清楚的是,FPGA逻辑设计中使用的硬件描述语言与软件语言(如C、C++等)是有本质区别的。
在使用硬件描述语言进行FPGA设计时,不要片面追求代码的整洁和简单。
正确的编码方法是:首先对要实现的硬件电路的结构和连接有非常清晰的认识和想象,然后用适当的HDL语句表达出来。
系统原理 在FPGA设计中,应从宏观角度合理安排整体设计,如时钟域、模块复用、约束、面积、速度等问题。
这些系统考量不仅关系到项目成员的协同设计能力能否发挥到极致,而且直接决定了设计综合、实施效果和相关运行时间。
模块化设计是系统原理的良好体现。
它不仅是一种设计工具,更是一种设计思想和设计方法。
它是一种自上而下、模块划分、分工协作的设计思想。
集中表达是当代大型复杂系统推荐的设计方法。
目前,许多EDA厂商已经改进了模块化设计工具。
同步设计原理 目前商用FPGA针对同步电路设计进行了优化,在其上实现异步电路并不能充分体现异步电路的优势。
同步时序电路可以很好地避免毛刺。
因此,建议在所有设计中使用同步逻辑电路。
FPGA设计的新发展 随着FPGA门数、速度、结构复杂度、各种IP核供应等的不断进步,数字系统设计规模超过百万门,更多的设计者将使用FPGA系统级和平台级 FPGA 器件与嵌入式处理器、存储器或数字信号处理器的组合。
FPGA 设计要求也必须相应改变,允许设计人员使用 FPGA 器件来实现更复杂、更高速的系统。
在通常的FPGA设计中,首先对整个系统进行架构设计,然后将硬件部分设计交给硬件工程师进行寄存器传输级(RTL)设计,将软件部分设计交给软件工程师进行编程,使用C++语言。
然而,随着设计规模的扩大、芯片复杂度和性能要求的提高,传统方法的使用将面临许多困难。
因此,FPGA模块化设计和系统级设计理念不断得到发展和完善。
层次化模块化设计方法 层次化、模块化的设计方法将系统划分为多个层次,以模块为基本设计单元来实现系统的开发和设计。
在这个设计过程中,设计者面临着各个层次的功能模块,这为复杂的数百万门级系统的设计和处理提供了更高的抽象层次和更灵活的实现方法。
分层模块化设计方法有很多优点。
满足了同时缩短市场响应时间、降低成本的需求。
首先,基于模块的设计方法在设计实现上引入了最大程度的并行性,允许顶层设计和单模块设计同时进行;其次,这种方法使设计人员更容易重用设计,包括设计模块和IP核重用。
电子系统级 (ESL) 设计和验证方法 ESL 设计是一组方法,使电子系统设计工程师能够以紧密耦合的方式开发、优化和验证复杂的系统架构和嵌入式软件。
它还为验证寄存器传输级实现提供了基础。
ESL 的目标是系统级模型的协作软件和硬件设计。
在过去的几年里,ESL设计一直被认为是一个难以实现的目标。
不过,目前业界在ESL设计方面已经取得了一定的进展。
随着SystemC被提交给IEEE P工作组,SystemC现已被接受并成为广泛使用的系统级建模标准。
许多世界领先的系统和半导体公司都采用了 ESL 设计,为其产品提供必要的先进功能和高性能。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-18
06-18
最新文章
PCBA质检员的日常工作内容
美国法院裁定VoIP不属于电信服务,需征税
雷达嵌入式工控主板如何使用?工控主板故障分析
摩托罗拉在西班牙促销Z8手机
中宇买下了一台三星机型,品牌和规模是合作的主要原因
舰载军用加固计算机热设计
谷歌开始对仍由HTC生产的谷歌手机进行内部测试
英国EE分享LTE发展经验教训,面临终端-语音-回传三大挑战