FPGA开发流程每一环节的物理含义和实现目标.docx
《FPGA开发流程每一环节的物理含义和实现目标.docx》由会员分享,可在线阅读,更多相关《FPGA开发流程每一环节的物理含义和实现目标.docx(17页珍藏版)》请在三一办公上搜索。
1、FPGA开发流程每一环节的物理含义和实现目标FPGA的开发流程是遵循着ASIC的开发流程发展的,发展到目前为止,FPGA的开发流程总 体按照图1进行,有些步骤可能由于其在当前项目中的条件的宽度的允许,可以免去,比如 静态仿真过程,这样来达到项目时间上的优势。但是,大部分的流程步骤还是需要我们循规 蹈矩的去做,因为这些步骤的输入是上一个步骤的结果,输出是下一个步骤的输入的关系, 这样的步骤就必不可少了。图1有人看到这个流程图的时候,第一个发自内心的感叹是“啊,怎么这么麻烦啊,特别是之前 从事软件开发转过来的。对于他们来讲,很少有接触到一种技术有如此多的环节来实现。但 是这并不能说明FPGA开发的
2、具体难度,与软件开发有输入、编译、链接、执行步骤对应的 就是设计输入、综合、布局布线、下载烧写,FPGA开发只是为了确保这核心实现主干路每 一个环节的成功性加了其他的修饰(约束)和验证而已。下面,我们将以核心主干路为路线, 一一介绍每个环节的物理含义和实现目标。设计输入设计输入方式从图1 FPGA开发流程中的主干线上分离出第一步设计输入横向环节,并做了进一步的细节 的处理,如图2,从图上看到,设计输入方式有三种形式,有IP核、原理图、HDL,由此展 开设计输入方式的探讨。图2原理图输入原始的数字系统电路的设计可能大家还不可能想象,是用笔纸一个个逻辑门电路甚至晶体管 搭建起来的,这样的方式我们称
3、作原理图的输入方式。那个时候,硬件工程师们会围绕的坐 在一块,拿着图纸来讨论电路。幸亏那时候的数字电路的还不是很复杂,要是放到今天,稍 微大一点的系统,也算得上是浩大工程,稍微有点电路要修改的话,这个时候你要是一个没 耐心或是一个急性子的人可能就就会丧失对这个领域的兴趣。话说回来,那个年代出来的老 工程师们,电路基础功夫确实很扎实。事情总是朝着好的方向发展的,后来出现了大型计算机,工程师们开始将最原始的打孔的编 程方式运用到数字电路设计当中,来记录我们手工绘画的电路设计,后来存储设备也开始用 上了,从卡片过度到了存储文本文件了,那个时候网表文件大致是起于那个时候。需要注意的问题是原理图和网表文
4、件的关系,原理图是我们最开始方便我们设计的一个输入 方式,而网表文件是计算机传递原理图信息给下一道流程或是给仿真平台进行原理图描述仿 真用的。设计输入方式不一样,但是对于功能仿真来讲,最终进度到仿真核心的应该是同一 个文件,那么这个文件就是网表文件了。有了计算机的辅助,数字电路设计起来可以说进步了一大截,但是如果依然全部是基于逻辑 门晶体管的话,还是比较繁琐。于是后来出现了符号库,库里包含一些常用的具有通行的器 件,比如D触发器类的等等,并随着需求的发展,这些符号库不断的在丰富。与在原理图 里利用这些符号库构建电路对应的是,由原理图得到的这个网表文件的描述方式也相应的得 到扩展,那么这里网表文
5、件里对电路符号的描述就是最开始的原语了。作为最原始的数字电路ASIC设计输入的方式,并从ASIC设计流程延续到FPGA的设计流程, 有着它与生俱来的优点,就是直观性、简洁性,以致目前依然还在使用。但是需要注意的是, 这也是相对的,具体讨论见下一小节。HDL输入HDL全称是硬件描述语言Hardware Description Language,这种输入方式要追溯的话得到20 世纪90年代初了。当时的数字电路的规模已足以让按照当时的输入方式进行门级抽象设计 顾左顾不了右了,一不小心很容易出错,而且得进行多层次的原理图切割,最为关键的是如 何能做到在更抽象的层次上描述数字电路。于是一些EDA开始提供
6、一种文本形式的,非常严谨,不易出错的HDL输入方式开始提供了。 特别是在1980年的时候,美国军方发起来甚高速集成电路(Very-High-Speed Integrated Circuit) 计划,就是为了在部队中装备中大规模需求的数字电路的设计开发效率,那么这个VHSIC硬 件描述语言就是我们现在的VHDL语言,它也是最早成为硬件描述语言的标准的。与之相对 的是晚些时间民间发起的Verilog,后来到1995年的时候,它的第一个版本的IEEE标准才出 台,但是沿用至今。前面提到HDL语言具有不同层次上的抽象,这些抽象层有开关级、逻辑门级、RTL级、行为 级和系统级,如图3.其中开关级、逻辑门
7、级又叫结构级,直接反映的是结构上的特性,大量 的使用原语调用,很类似最开始原理图转成门级网表。RTL级又可称为功能级。系统级级为fr皱 %It:). 雄遐美开11 IAI图3HDL语言除了前面提到的两种外,历史上也出现了其他的HDL语言,有ABEL、AHDL、硬件 C语言(System C语言、Handle-C)、System verilog等。其中ABEL和AHDL算是早期的语言, 因为相比前面两种语言来讲,或多或少都有些致命的缺陷而在小范围内使用或者直接淘汰掉 了。而因为VHDL和Verilog在仿真方面具有仿真时间长的缺陷,System verilog和硬件C语 言产生了,从图3看,Sy
8、stem Verilog是在系统级和行为级上为Verilog做补充,同时硬件C 语言产生的原因还有就是有种想把软件和硬件设计整合到一个平台下的思想。IP(Intellectual Property)核什么是IP核?任何实现一定功能的模块叫做IP(Intellectual Property)。这里把IP核作为一种输 入方式单独列出来,主要考虑到完全用IP核确实是可以形成一个项目。它的产生可以说是 这样的一个逆过程。在随着数字电路的规模不断扩大的时候,面对一个超级大的工程,工程师们可能是达到一种 共识,将这规模巨大而且复杂的设计经常用到的具有一定通用性的功能给独立出来,可以用 来其他设计。当下一次
9、设计的时候,发现这些组装好的具有一定功能的模块确实挺好用的, 于是越来越多的这种具有一定功能的模块被提取出来,甚至工程师之间用来交换,慢慢大家 注意到它的知识产权,于是一种叫做IP知识产权的东西出来了,于是集成电路一个全新领 域(IP设计)产生了。IP按照来源的不同可以分为三类,第一种是来自前一个设计的内部创建模块,第二种是FPGA 厂家,第三种就是来自IP厂商;后面两种是我们关注的,这是我们进行零开发时考虑的现有 资源问题,先撇开成本问题,IP方式的开发对项目周期非常有益的,这也是在FPGA应用领 域章节陈列相关FPGA厂家IP资源的原因。FPGA厂家和IP厂商可以在FPGA开发的不同时期提
10、供给我们的IP.我们暂且知道他们分别是 未加密的RTL级IP、加密的RTL级IP、未经布局布线的网表级IP、布局布线后的网表级IP. 他们的含义在后面陆续介绍FPGA的开发步骤的时候,相信大家能够恍然大悟。需要说明的 是,越是FPGA靠前端步骤的时候提供的IP,他的二次开发性就越好,但是它的性能可能是 个反的过程,同时也越贵,毕竟任何一个提供者也不想将自己的源码程序提供给他者,但是 为了不让客户走向其他商家,只能提高价卖了,同时加上一些法律上的协议保护。那么越朝FPGA开发步骤的后端,情况就相反了,越是后端,IP核就会进一步做优化,性能就越好, 但是一些客户不要的功能就不好去了。FPGA厂商提
11、供一般常用的IP核,毕竟为了让大家用他们家的芯片,但是一些特殊需要的IP 核还是需要付费的。当然这里需要说明的是FPGA厂商的IP是很少可以交叉用的,这一点很 容易想,对厂家来讲不会做这种给竞争者提供服务事情的。IP厂商一般会高价的提供未加密 的RTL级源码,有时FPGA厂商为了扩大芯片市场占有率,会购买第三方的IP做进一步的处 理后免费提给该FPGA芯片使用者的。输入方式使用探讨在上面我们介绍了三种输入方式,有些地方会讲到第四种输入方式,就是门级网表文件输入 的形式,我们这里并没有把它归为一种输入方式,原因在于,本身这些门级网表文件的产生 还是源于介绍的三种输入方式中的一种或是几种混合的方式
12、。所以这里没有把它归为一类。 好了,在上面三种输入方式介绍的基础上,我们来探讨一下这令人眼花缭乱的输入方式,探 讨的目的就是为了让我们更好的使用他们。首先,来总结一下三者的优缺点,其实是两种,因为IP核不管是哪个层次,或者在原理图 中被以符号的形式被例化,或者在HDL中被模块例化。所以这里集中探讨的是原理图和HDL 的优缺点。原理图的优点就是结构直观性,HDL的优点是严密性、支持甚宽的抽象描述层次、 易于移植、方便仿真调试等等,缺点就是不具备对方的优点。当时出现HDL的时候,人们 确实是想着原理图该退出历史舞台了,但是到现在它还依然存在着。存在即是有道理的,存 在就得用它,但是又得使用HDL,
13、于是存在一种混合编程的形式。除了顶层模块用原理图之 外,其他的内部子模块全部使用HDL来描述,HDL描述的模块可以通过工具转换成符号, 然后在顶层模块中引用这些符号,这就完成混合编程。图4在接触的很多FPGA的初学者很容易被原理图的输入方式给迷惑,甚至爱的深沉,加上本身 其他输入方式的繁琐的输入的厌恶,更是爱的无法自拔。当开始强制性要求开始时养成多用 HDL输入的习惯的时候,有些甚至有着痛心疾首般的痛苦,但是随着学习的深入,做的东西 越来越大,尝到HDL输入方式带来的甜头的时候,就会觉得那个苦没有白吃。我觉得原理图输入方式从现在的一些线索看来,在今后的某一天将会服役终结。首先是找到 了原理图自
14、身带有优势的替代品,那就是主流FPGA集成环境中的综合器和第三方综合器都 具有RTL视图生成功能,这个视图完全展示了项目的结构组成,可以上下分层,最大的好处 就是可以检查核实写的RTL级代码的综合后电路情况。还有一条线索是,大家用的仿真软件 Modelsim并没有提供原理图输入的支持,是原理图的设计必须在集成环境成转换成RTL级 代码或是综合成网表形式来做仿真,也是一件繁琐的事。原理图的离开只是时间问题。至于目前HDL选择哪一种比较好,这个问题放到开始将HDL基础语法知识的地方进行探讨。 这里要说明的是,并不是我们这里讲Verilog使用就否定其他的HDL语言。各种HDL的争端 从未停止过,现
15、在还是依然存在四种开发人,第一种是使用Verilog/System Verilog的人,第 二种是使用VHDL的人,第三种就是使用System C的人,第四种是混合型的人,到底哪种好, 也有也许是时间问题吧,时间证明一切。5.2综合不管你是采用单一的输入方式,还是采用的是混合编程(这种在很多跨公司合作项目中会碰 见,也许A公司用的是VHDL,B公司用的是Verilog,那这个项目中很大可能采用混合型), 我们统称得到设计输入后,都得把设计输入得到一个可以和FPGA硬件资源相匹配的一个描 述。假设FPGA是基于LUT结构的,那么我们就得到一个基于LUT结构门级网表。在这个过 程中,又可以分为如图
16、两个步骤。图5需要说明的是在Altera的开发流程中,将编译、映射过程按照我们叙述的合称综合,而在 Xilinx开发流程中,由设计输入得到门级网表的过程叫做综合,而映射过程归结到其叫做实 现的某一子步骤中。但是整体的流程还是遵循这个顺序的,只是叫法一些外表性的不一样而 已。5.2.1编译原理图、HDL、IP核这些都将通过编译后生成门级的网表,这里生成门级网表的过程其实是 早起ASIC的步骤,直接生成门电路网表。这个时候的网表文件和具体的器件无关,也就是 说,生成的门电路网表也是一种平台移植的媒质。5.2.2映射我们通过编译得到一张门级网表之后,与早先ASIC开发流程中在这个门级网表布线后去做
17、掩膜不同,接下来就得考虑如何与我们选择的硬件平台结合起来,毕竟我们使用的硬件平台是由一个一个的LUT(假设这类FPGA)组成的。那么这个结合的过程就是映射过程。这个过程其实很复杂,首先需要把形成的网表逻辑门给规划成一些小的组合,然后再去映射 到LUT中,这个过程中规划按照一定的算法和章程进行。不同的算法和章程就会得到不同的 映射,不同的映射就会为后面的过程提供不同的选择,最终生成性能不一样的电路了。我们把讲基于SRAM技术的FPGA的二选一多路器拿出来举个例子,如图6,可以按照红色 线将二选一多路器完全劈成两边,原来的一个表就可以规划到其他两个表或表内容中,因为 被劈成的两部分可单独成表,也可
18、以被规划到其他电路形成的表里。图6映射的工程比较复杂,运算量也很大,也是为什么FPGA开发过程中,一直存在的一个问题, 形成最终的可配置二进制文件的时间非常长,特别是一些大一点的项目,时间消耗比较长的 一个点就是映射了,至于具体的映射算法就超出了书的范围了。再强调的是,映射是和器件 有关的,即使是同一个系列,不同型号的FPGA内部就够也是有区别的,好比从外观看都是 一个单元楼内的单元房,但是每个单元房内装修、家具摆设等都是不一样的。5.3布局布线5.3.1布局讲到这一块,正好有这么一个例子来讲解这个概念。近来报道朝鲜希望在俄罗斯远东地区租 用数十万公顷的土地用来培育农产品。咱先撇开今后的购买的
19、成功与否,假设成功了,并且 有了这个详细的希望培育的农作物的品种及数量,有各式各样的蔬菜、主粮、禽类畜养场、 果树等等。我们前面做的那些流程得到的LUT门级网表就好比这样的清单。得到这样的清单之后,我们再假设在这十万公顷的土地上,阳光、水资源、温差都有一定的 分布。大家知道农作物的的成长和高量产或者与阳关有关,或者与水资源有关,或者与温差 有关,并且禽类的畜养材料与农作物的副产有关。所以接下来要做的事情就是根据现有的自 然条件和农产品的所需环境特点合理布局,哪些地适合做什么。紧接着我们回到FPGA开发中来,我们通过前面的步骤得到的清单就是LUT门级网表。网表 里提供的仅仅是从逻辑关系上一些LU
20、T结构的连接。我们需要将这些LUT结构配置到FPGA 具体的哪个位置。需要说明的是,FPGA里任何硬件结构都是按照横纵坐标进行标定的,图 中选中的是一个SLICE,SLICE里面存放着表和其他结构,它的位置在X50Y112上。不同的资 源的坐标不一样,但是坐标的零点是公用的。Si Fr Ail r tiai 口 ?就LDTEBl I SLKT_IE0ril2图7在FPGA里布局需要考虑的问题是,如何将这些已有的逻辑上连接的LUT及其它元素合理的 放到现有的FPGA里,达到功能要求的时候保证质量。具体点就比如,乘法器这样的电路适 合放在RAM附近,当然,硬件乘法器的硬件布局一般也是在存储器附近,
21、有利于缩短乘法 的延时时间,什么样的电路需要配置高速等等。十万公顷的地布局规划好了,农产品就会有很好的丰收,同样FPGA开发布局布好了,由FPGA 搭建起来的电路就会更加稳定和扩展性。5.3.2布线上小节中,我们把十万公顷的地给安排好了,哪些地该种什么。具体实施之前还有一些是必 须做的,比如农作物的浇灌,没有一个很好的灌溉系统是一个问题再比如丰收了得采摘吧, 这个时候,能够让大卡车到达每一块农地的公路枢纽也是需要解决的问题。将每一块或者相 关的田地连接的灌水系统和公路的建设,就好比我们这个布线的过程。我们在FPGA内通过布局,知道那些LUT具体分布到哪个SLICE,但是一方面如何让这些SLIC
22、E 连接起来,二方面如何让输入的信号到达相应的开始处理点和如何让输出到达输出IO上, 并且连接的电路整体性能好,这就是布线这个环节需要完成的内容。要达到布线最优话,当 然这里面设计到布线算法和很多细节问题,比如涉及到布线资源、PLL资源分布。但是这些 对我们理解布线这个概念没有很多益处,暂且不深入,本质上就是一个线路求最优的问题。5.4约束约束,在图1上看到,在综合和布局布线这两个流程环节里都出现了,我们暂且规定其为约 束一和约束二,或者说综合约束和布局布线约束,布局布线约束又可以分为位置约束、时序 约束。约束,就是对这些环节操作定制规则。一般开发环境会对这些约束有个默认,这些默 认的设置对大
23、部分情况下还是适用的,但是通常布局布线约束中的I/O约束是我们每一个工 程都必须给定的。同时开发工具开放其他约束接口,允许我们设置这些规则,具体的有哪些 约束怎么去做在后面介绍工具使用的时候进行讨论,这里先明白这些约束的基本概念。综合约束相信大家已经下意识的将综合约束和综合过程挂在一起了,没错,综合约束确实是在综合过 程中做的,用来指导综合过程,包括编译和映射。我们已经知道综合过程是将RTL级电路描 述转换到FPGA上的硬件单元(LUT)中,形成以FPGA存在的硬件单元构成的电路。我们还是拿前面有过的例子来说明,不同的约束将导致生成性能不同的电路。综合这么一个 完成式*能的电路,没有加资源共享
24、得到的电路如图8左边所示的电路,而加了资源共享 的约束后,得到的电路结构如图8右边的电路。F= L4J f W 一44图8通过之前的分析,得到左边的电路结构资源消耗多但是速度快,而右边的结构消耗资源少, 但是速度慢,乘法器需要分时复用。当然这只是一个例子,但是足以说明,不同的综合指导原则也就是综合约束,将会产生不同 的电路。当得到的电路性能不能满足需求的时候,适当考虑综合约束,来达到一个速度和面 积的转换的效果,实现性能的提升。电路实现的速度和消耗的面积是贯穿在FPGA开发过程 中两个矛盾的问题,综合约束是其中一种小范围内实现速度和面见平衡点移动的方式。位置约束没错,你又想对了,位置约束和我们
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FPGA 开发 流程 每一 环节 物理 含义 实现 目标

链接地址:https://www.31ppt.com/p-4884622.html