|
|
| | -文章搜索 - 最新文章 - | |
现场可编程门阵列(FPGA)设计 |
| 发布时间:2006年3月6日 点击次数:2766 |
| 来源: 作者: |
FPGA设计是指使用相应的EDA开发软件对FPGA器件进行开发的过程。最早的设计方法是自底向上的,即首先确定库中可用的元件,再使用这些元件进行模块的设计,完成各模块后进行连接,从而形成整个系统。最后经过调试和测量来考察系统是否达到所需的性能指标。 随着技术和需求的发展,自底向上的方法已经不能适应复杂数字系统的设计。目前广泛使用的是自顶向下的设计方法和流程:首先从系统设计入手,在顶层进行功能划分和结构设计,并用硬件描述语言对高层次的系统行为进行描述,在系统级采用仿真手段验证设计的正确性,之后再逐级设计下一层的结构,用综合优化工具生成具体门电路的网表。这种逐级进行设计和验证的方法可以及早发现问题并修改系统设计,缩短开发周期、节约成本。 FPGA设计流程 FPGA设计的一般流程如图1所示,包括设计准备、设计输入、功能仿真、设计处理、时序仿真、器件编程与测试几个步骤。 设计准备 在数字系统设计之前,首先要进行方案论证、系统设计、器件选择等准备工作。设计人员根据任务的功能和性能指标需求,对器件的资源、成本以及功耗等方面进行折衷,选择合适的设计方案和FPGA器件。 设计描述与输入 设计输入就是指设计人员将所设计的系统或电路以开发软件要求的某种形式表示出来,并输入计算机的过程。设计描述和设计输入通常使用图形和硬件描述语言两种形式。 图形输入方式 图形方式的设计输入主要是使用EDA软件进行原理图、状态图、波形图等图形的编辑和修改。 硬件描述语言输入方式 硬件描述语言输入方式使用文本进行设计描述,包括普通硬件描述语言和行为级硬件描述语言。比较有代表性的普通硬件描述语言是ABEL,它支持逻辑方程、真值表、状态机等逻辑表达方式,主要用于简单可编程逻辑器件的设计输入。 功能仿真 功能仿真也称为前仿真或行为仿真。用户所设计的电路在综合之前应该首先进行逻辑功能的验证,这种仿真没有器件内部逻辑单元和连线的实际延时信息,只是初步验证系统的逻辑功能。 设计处理 确定设计描述的功能无误后,就可以使用EDA软件对设计描述和相应的性能约束进行处理,设计处理是FPGA设计开发中的重要环节。在设计处理的过程中,EDA软件对设计输入文件进行语法和设计规则检查、逻辑简化、优化、综合、适配、布局布线、时间参数提取,最后产生器件编程用的数据文件。 时序仿真 时序仿真又称为后仿真或延时仿真,是高速FPGA设计过程中必不可少的仿真验证阶段。由于不同FPGA器件内部的延时不一样,不同的布局布线方案也将影响电路各部分的延时,这些延时可能会导致系统和电路功能的变化。因此在设计处理以后,需要对系统和各模块进行时序仿真,分析时序关系,检查和消除竞争冒险、并对器件的实际工作性能进行估计。 器件编程与测试 器件编程也可以称为配置。时序仿真完成之后,就可以使用EDA软件生成FPGA器件编程时所需的数据文件。器件的编程就是将编程数据下载到相应的FPGA器件中去。 器件在编程结束后,还可以对器件进行校验、加密等操作工作。对于支持JTAG技术,具有边界扫描测试BST(Boundary-Scan Testing)能力和在线编程能力的器件来说,编程和测试过程都比较方便。 FPGA设计的要求 作为一个优秀的FPGA设计,必须具有以下几方面特征: 满足系统的设计规范和性能要求 满足用户对系统性能指标和设计规范的需求,是一个FPGA设计成功的最基本要求。 源代码可读性高 可读性好的FPGA设计(原理图或硬件描述语言描述的源文件)应该包含有足够的说明和注释信息,比如,各个模块的说明、每张原理图之间的关系、硬件描述的模块之间的互连关系等等。另外,状态机设计的文档应该包括状态图或功能描述,布尔方程的实现过程也应该写在源代码中。 可读性好的设计在调试、测试和维护上将节省大量的时间,已经经过验证的电路很容易重用,节省开发时间。 完备的开发文档 为了保证FPGA设计的可重复性,设计文档除了详尽的系统设计说明之外,还必须包括一些其他的必要信息,比如软件开发系统的版本号、软件的各个选项及参数设置。另外,各种操作和修改的过程都应该以文档的方式记录下来。如果不这样做,最终的实现就会因人而异、因开发系统而异,整个系统的性能也变得不稳定,甚至无法评估。 FPGA设计的基本原则 在EDACN的FPGA技术论坛上,一些经验丰富的设计人员总结了FPGA设计中几条非常重要的基本原则,现列举如下,供大家参考借鉴。 硬件资源与处理能力的折衷 在设计中,可以通过并行处理来提高处理能力,而并行的硬件将消耗更多的FPGA内部资源;也可以通过模块复用来降低硬件资源的消耗,带来的结果就是系统运行速度的降低。在具体设计中,应该根据系统性能指标的要求,在资源消耗和处理能力之间取得合理的折衷,在保证系统功能和性能的同时降低资源消耗,从而降低功耗和成本。 应该明确FPGA逻辑设计所采用的硬件描述语言与软件语言(如C,C++等)是有本质区别的。在使用硬件描述语言进行FPGA设计时,不应该片面追求代码的整洁,简短。而正确的编码方法是:首先要对所需实现的硬件电路的结构与连接有十分清晰的理解和设想,然后再用适当的HDL语句表达出来即可。 系统原则 在FPGA设计中,应该对设计的全局在宏观上进行合理的安排,比如时钟域、模块复用、约束、面积、速度等问题。这些系统上的考虑不仅关系到是否能够最大程度地发挥项目成员的协同设计能力,而且直接决定着设计的综合、实现效果和相关的操作时间。 同步设计原则 目前的商用FPGA都是面向同步电路设计而优化的,其上实现异步电路并不能充分体现出异步电路应有的优势。而同步时序电路可以很好地避免毛刺,因此,提倡在设计中全部使用同步逻辑电路。 FPGA设计新发展 随着FPGA的门数、速度、结构复杂度、各种IP核供应等方面的不断进步、数字系统设计规模超越几百万门,更多的设计者将混合使用系统级和平台级的FPGA器件及其内部嵌入的处理器、存储器或数字信号处理器。FPGA设计的要求也必须作出相应的变化,从而使设计者能够使用FPGA器件实现更复杂、更高速的系统。 分层次的模块化设计方法 分层次的、基于模块的设计方法将系统分为多个层次,采用模块作为基本设计单元,实现系统的开发和设计。在这种设计流程中,设计者面对的是各种不同层次的功能模块,这样就为复杂的几百万门级系统的设计和处理提供了更高的抽象级别以及更灵活的实现方式。 电子系统级(ESL)设计与验证方法学 ESL设计是能够让电子系统设计工程师以紧密耦合方式开发、优化和验证复杂系统架构和嵌入式软件的一套方法学,它还提供寄存器传输级实现的验证基础。 |
|
|
|
|
[CPLD/FPGA] 相关文章: ACTEL的PROASIC3器件为百万门FPGA降低总系统成本70%简介: Actel公司宣布正式运付其低成本的一百万系统门ProASIC3器件,以满足业界对具成本效益和功能齐全FPGA的需求。与以SRAM为基础的产品比较,ProASIC3 A3P1000能提供更优异的总系统成本、性能、功耗和安全性。ProASIC3器件充分发挥了Actel以Flash为基础架构的优势,还支持软ARM7处理器内核的执行,是讲求功耗、成本和尺寸系统设计的最佳解决方案。 Actel的ProASIC3系...... XILINX与TED推出面向数字显示器的可编程开发平台 赛灵思推出业界首个可编程EXPRESSCARD解决方案 用CPLD实现单片机读写模块 XILINX面向多功能智能手机市场推出首款可编程演示平台 |
|
|
|