您的位置 首页 汽车

详解FPGA开发流程中每一环节的物理意义和实现目标

详解FPGA开发流程中每一环节的物理含义和实现目标-FPGA的开发流程是遵循着ASIC的开发流程发展的,发展到目前为止,FPGA的开发流程总体按照图1进行,有些步骤可能由于其在当前项目中的条件的宽度的

  要知道,要把一件作业做好,不论是做哪们技能仍是办什么手续,了解这个作业的流程十分要害,它决议了这件作业的顺利进行与否。相同,咱们学习FPGA开发数字体系这个技能,先放下运用这个技能的根底编程言语的详细语法、运用东西和运用技巧不谈,咱先来弄清楚FPGA的开发流程是什么。

  FPGA的开发流程是遵从着ASIC的开发流程开展的,开展到现在为止,FPGA的开发流程全体依照图1进行,有些进程或许因为其在当前项目中的条件的宽度的答应,可以免除,比方静态仿真进程,这样来抵达项目时刻上的优势。可是,大部分的流程进程仍是需求咱们安分守己的去做,因为这些进程的输入是上一个进程的成果,输出是下一个进程的输入的联系,这样的进程就必不可少了。

  

  有人看到这个流程图的时分,榜首个发自内心的感叹是“啊,怎样这么费事啊,特别是之前从事软件开发转过来的。关于他们来讲,很少有触摸到一种技能有如此多的环节来完结。可是这并不能阐明FPGA开发的详细难度,与软件开发有输入、编译、链接、履行进程对应的便是规划输入、归纳、布局布线、下载烧写,FPGA开发仅仅为了保证这中心完结骨干路每一个环节的成功性加了其他的润饰(束缚)和验证罢了。下面,咱们将以中心骨干路为道路,逐个介绍每个环节的物理意义和完结目标。

  规划输入

  FPGA开发—规划输入办法

  从图1 FPGA开发流程中的骨干线上别离出榜首步规划输入横向环节,并做了进一步的细节的处理,如图2,从图上看到,规划输入办法有三种办法,有IP核、原理图、HDL,由此打开规划输入办法的评论。

  

  原理图输入

  原始的数字体系电路的规划或许咱们还不或许幻想,是用笔纸一个个逻辑门电路乃至晶体管建立起来的,这样的办法咱们称作原理图的输入办法。那个时分,硬件工程师们会环绕的坐在一块,拿着图纸来评论电路。幸而那时分的数字电路的还不是很杂乱,要是放到今日,略微大一点的体系,也算得上是浩大工程,略微有点电路要修正的话,这个时分你要是一个没耐性或是一个急性子的人或许就就会损失对这个范畴的爱好。话说回来,那个时代出来的老工程师们,电路根底功夫的确很厚实。

  作业总是朝着好的方向开展的,后来呈现了大型计算机,工程师们开端将最原始的打孔的编程办法运用到数字电路规划傍边,来记载咱们手艺绘画的电路规划,后来存储设备也开端用上了,从卡片过度到了存储文本文件了,那个时分网表文件大致是起于那个时分。

  需求留意的问题是原理图和网表文件的联系,原理图是咱们最开端便利咱们规划的一个输入办法,而网表文件是计算机传递原理图信息给下一道流程或是给仿真渠道进行原理图描绘仿真用的。规划输入办法不相同,可是关于功用仿真来讲,终究进展到仿真中心的应该是同一个文件,那么这个文件便是网表文件了。

  有了计算机的辅佐,数字电路规划起来可以说前进了一大截,可是假如仍然悉数是依据逻辑门晶体管的话,仍是比较繁琐。所往后来呈现了符号库,库里包含一些常用的具有通行的器材,比方D触发器类的等等,并跟着需求的开展,这些符号库不断的在丰厚。与在原理图里运用这些符号库构建电路对应的是,由原理图得到的这个网表文件的描绘办法也相应的得到扩展,那么这儿网表文件里对电路符号的描绘便是最开端的原语了。

  作为最原始的数字电路ASIC规划输入的办法,并从ASIC规划流程延续到FPGA的规划流程,有着它与生俱来的长处,便是直观性、简洁性,致使现在仍然还在运用。可是需求留意的是,这也是相对的,详细评论见下一末节。

  FPGA开发—HDL输入

  HDL全称是硬件描绘言语Hardware DescripTIon Language,这种输入办法要追溯的话得到20世纪90时代初了。其时的数字电路的规划已足以让依照其时的输入办法进行门级笼统规划顾左顾不了右了,一不小心很简略犯错,并且得进行多层次的原理图切开,最为要害的是怎样能做到在更笼统的层次上描绘数字电路。

  所以一些EDA开端供给一种文本办法的,十分谨慎,不易犯错的HDL输入办法开端供给了。特别是在1980年的时分,美国军方主张来甚高速集成电路(Very-High-Speed Integrated Circuit)方案,便是为了在部队中配备中大规划需求的数字电路的规划开发功率,那么这个VHSIC硬件描绘言语便是咱们现在的VHDL言语,它也是最早成为硬件描绘言语的规范的。与之相对的是晚些时刻民间主张的Verilog, 后来到1995年的时分,它的榜首个版别的IEEE规范才出台,可是沿用至今。

  前面说到HDL言语具有不同层次上的笼统,这些笼统层有开关级、逻辑门级、RTL级、行为级和体系级,如图3。其间开关级、逻辑门级又名结构级,直接反映的是结构上的特性,许多的运用原语调用,很相似最开端原理图转成门级网表。RTL级又可称为功用级。

  

  HDL言语除了前面说到的两种外,历史上也呈现了其他的HDL言语,有ABEL、AHDL、硬件C言语(System C言语、Handle-C)、System verilog等。其间ABEL和AHDL算是前期的言语,因为比较前面两种言语来讲,或多或少都有些丧命的缺陷而在小范围内运用或许直接筛选掉了。而因为VHDL和Verilog在仿真方面具有仿真时刻长的缺陷,System verilog和硬件C言语产生了,从图3看,System Verilog是在体系级和行为级上为Verilog做弥补,一同硬件C言语产生的原因还有便是有种想把软件和硬件规划整合到一个渠道下的思维。

  FPGA开发—IP(Intellectual Property)核

  什么是IP核?任何完结必定功用的模块叫做IP(Intellectual Property)。这儿把IP核作为一种输入办法独自列出来,首要考虑到彻底用IP核的确是可以构成一个项目。它的产生可以说是这样的一个逆进程。

  在跟着数字电路的规划不断扩展的时分,面临一个超级大的工程,工程师们或许是抵达一种一致,将这规划巨大并且杂乱的规划常常用到的具有必定通用性的功用给独立出来,可以用来其他规划。当下一次规划的时分,发现这些组装好的具有必定功用的模块的确挺好用的,所以越来越多的这种具有必定功用的模块被提取出来,乃至工程师之间用来交流,渐渐咱们留意到它的常识产权,所以一种叫做IP常识产权的东西出来了,所以%&&&&&%一个全新范畴(IP规划)产生了。

  IP依照来历的不同可以分为三类,榜首种是来自前一个规划的内部创立模块,第二种是FPGA厂家,第三种便是来自IP厂商;后边两种是咱们重视的,这是咱们进行零开发时考虑的现有资源问题,先放下本钱问题,IP办法的开发对项目周期十分有利的,这也是在FPGA应用范畴章节陈设相关FPGA厂家IP资源的原因。

  FPGA厂家和IP厂商可以在FPGA开发的不一同期供给给咱们的IP。咱们暂时知道他们别离是未加密的RTL级IP、加密的RTL级IP、未经布局布线的网表级IP、布局布线后的网表级IP。他们的意义在后边连续介绍FPGA的开发进程的时分,信任咱们可以茅塞顿开。需求阐明的是,越是FPGA靠前端进程的时分供给的IP,他的二次开发性就越好,可是它的功用或许是个反的进程,一同也越贵,究竟任何一个供给者也不想将自己的源码程序供给给他者,可是为了不让客户走向其他商家,只能进步价卖了,一同加上一些法律上的协议维护。那么越朝FPGA开发进程的后端,状况就相反了,越是后端,IP核就会进一步做优化,功用就越好,可是一些客户不要的功用就欠好去了。

  FPGA厂商供给一般常用的IP核,究竟为了让咱们用他们家的芯片,可是一些特殊需求的IP核仍是需求付费的。当然这儿需求阐明的是FPGA厂商的IP是很少可以穿插用的,这一点很简略想,对厂家来讲不会做这种给竞争者供给服务作业的。IP厂商一般会高价的供给未加密的RTL级源码,有时FPGA厂商为了扩展芯片市场占有率,会购买第三方的IP做进一步的处理后免费提给该FPGA芯片运用者的。

  FPGA开发—输入办法运用评论

  在上面咱们介绍了三种输入办法,有些当地会讲到第四种输入办法,便是门级网表文件输入的办法,咱们这儿并没有把它归为一种输入办法,原因在于,自身这些门级网表文件的产生仍是源于介绍的三种输入办法中的一种或是几种混合的办法。所以这儿没有把它归为一类。

  好了,在上面三种输入办法介绍的根底上,咱们来评论一下这令人目不暇接的输入办法,评论的意图便是为了让咱们更好的运用他们。

  首要,来总结一下三者的优缺陷,其实是两种,因为IP核不论是哪个层次,或许在原理图中被以符号的办法被例化,或许在HDL中被模块例化。所以这儿会集评论的是原理图和HDL的优缺陷。原理图的长处便是结构直观性,HDL的长处是严密性、支撑甚宽的笼统描绘层次、易于移植、便利仿真调试等等,缺陷便是不具备对方的长处。其时呈现HDL的时分,人们的确是想着原理图该退出历史舞台了,可是到现在它还仍然存在着。存在便是有道理的,存在就得用它,可是又得运用HDL,所以存在一种混合编程的办法。除了顶层模块用原理图之外,其他的内部子模块悉数运用HDL来描绘,HDL描绘的模块可以经过东西转化成符号,然后在顶层模块中引证这些符号,这就完结混合编程。

  

  在触摸的许多FPGA的初学者很简略被原理图的输入办法给利诱,乃至爱的深重,加上自身其他输入办法的繁琐的输入的讨厌,更是爱的无法自拔。当开端强制性要求开端时养成多用HDL输入的习气的时分,有些乃至有着咬牙切齿般的苦楚,可是跟着学习的深化,做的东西越来越大,尝到HDL输入办法带来的甜头的时分,就会觉得那个苦没有白吃。

  我觉得原理图输入办法从现在的一些头绪看来,在往后的某一天将会执役完结。首要是找到了原理图自身带有优势的代替品,那便是干流FPGA集成环境中的归纳器和第三方归纳器都具有RTL视图生成功用,这个视图彻底展现了项意图结构组成,可以上下分层,最大的长处便是可以查看核实写的RTL级代码的归纳后电路状况。还有一条头绪是,咱们用的仿真软件Modelsim并没有供给原理图输入的支撑,是原理图的规划有必要在集成环境成转化成RTL级代码或是归纳成网表办法来做仿真,也是一件繁琐的事。原理图的脱离仅仅时刻问题。

  至于现在HDL挑选哪一种比较好,这个问题放到开端将HDL根底语法常识的当地进行评论。这儿要阐明的是,并不是咱们这儿讲Verilog运用就否定其他的HDL言语。各种HDL的争端从未中止过,现在仍是仍然存在四种开发人,榜首种是运用Verilog/System Verilog的人,第二种是运用VHDL的人,第三种便是运用System C的人,第四种是混合型的人,究竟哪种好,也有或许是时刻问题吧,时刻证明悉数。

  归纳

  不论你是选用单一的输入办法,仍是选用的是混合编程(这种在许多跨公司合作项目中会碰见,或许A公司用的是VHDL,B公司用的是Verilog,那这个项目中很大或许选用混合型),咱们总称得到规划输入后,都得把规划输入得到一个可以和FPGA硬件资源相匹配的一个描绘。假定FPGA是依据LUT结构的,那么咱们就得到一个依据LUT结构门级网表。在这个进程中,又可以分为如图两个进程。

  

  需求阐明的是在Altera的开发流程中,将编译、映射进程依照咱们叙说的合称归纳,而在Xilinx开发流程中,由规划输入得到门级网表的进程叫做归纳,而映射进程归结到其叫做完结的某一子进程中。可是全体的流程仍是遵从这个次序的,仅仅叫法一些表面性的不相同罢了。

  FPGA开发—编译

  原理图、HDL、IP核这些都将经过编译后生成门级的网表,这儿生成门级网表的进程其实是早上ASIC的进程,直接生成门电路网表。这个时分的网表文件和详细的器材无关,也便是说,生成的门电路网表也是一种渠道移植的媒质。

  FPGA开发—映射

  咱们经过编译得到一张门级网表之后,与新近ASIC开发流程中在这个门级网表布线后去做掩膜不同,接下来就得考虑怎样与咱们挑选的硬件渠道结合起来,究竟咱们运用的硬件渠道是由一个一个的LUT(假定这类FPGA)组成的。那么这个结合的进程便是映射进程。

  这个进程其实很杂乱,首要需求把构成的网表逻辑门给规划成一些小的组合,然后再去映射到LUT中,这个进程中规划依照必定的算法和规章进行。不同的算法和规章就会得到不同的映射,不同的映射就会为后边的进程供给不同的挑选,终究生成功用不相同的电路了。

  咱们把讲依据SRAM技能的FPGA的二选一多路器拿出来举个比方,如图6,可以依照赤色线将二选一多路器彻底劈成两头,本来的一个表就可以规划到其他两个表或表内容中,因为被劈成的两部分可独自成表,也可以被规划到其他电路构成的表里。

  

  映射的工程比较杂乱,运算量也很大,也是为什么FPGA开发进程中,一向存在的一个问题,构成终究的可装备二进制文件的时刻十分长,特别是一些大一点的项目,时刻耗费比较长的一个点便是映射了,至于详细的映射算法就超出了书的范围了。再着重的是,映射是和器材有关的,即使是同一个系列,不同类型的FPGA内部就够也是有差异的,比方从外观看都是一个单元楼内的单元房,可是每个单元房内装饰、家具铺排等都是不相同的。

  布局布线

  FPGA开发—布局

  讲到这一块,正好有这么一个比方来解说这个概念。近来报导朝鲜期望在俄罗斯远东地区租借数十万公顷的土地用来培养农产品。咱先放下往后的购买的成功与否,假定成功了,并且有了这个详细的期望培养的农作物的种类及数量,有林林总总的蔬菜、主粮、禽类畜养场、果树等等。咱们前面做的那些流程得到的LUT门级网表就比方这样的清单。

  得到这样的清单之后,咱们再假定在这十万公顷的土地上,阳光、水资源、温差都有必定的散布。咱们知道农作物的的生长和高量产或许与阳关有关,或许与水资源有关,或许与温差有关,并且禽类的畜养资料与农作物的副产有关。所以接下来要做的作业便是依据现有的自然条件和农产品的所需环境特色合理布局,哪些地合适做什么。

  紧接着咱们回到FPGA开发中来,咱们经过前面的进程得到的清单便是LUT门级网表。网表里供给的仅仅是从逻辑联系上一些LUT结构的衔接。咱们需求将这些LUT结构装备到FPGA详细的哪个方位。需求阐明的是,FPGA里任何硬件结构都是依照横纵坐标进行标定的,图中选中的是一个SLICE,SLICE里边存放着表和其他结构,它的方位在X50Y112上。不同的资源的坐标不相同,可是坐标的零点是共用的。

  

  在FPGA里布局需求考虑的问题是,怎样将这些已有的逻辑上衔接的LUT及其它元素合理的放到现有的FPGA里,抵达功用要求的时分保证质量。详细点就比方,乘法器这样的电路合适放在RAM邻近,当然,硬件乘法器的硬件布局一般也是在存储器邻近,有利于缩短乘法的延时时刻,什么样的电路需求装备高速等等。

  十万公顷的地布局规划好了,农产品就会有很好的丰盈,相同FPGA开发布局布好了,由FPGA建立起来的电路就会愈加安稳和扩展性。

  FPGA开发—布线

  上末节中,咱们把十万公顷的地给组织好了,哪些地该种什么。详细施行之前还有一些是有必要做的,比方农作物的灌溉,没有一个很好的灌溉体系是一个问题;再比方丰盈了得采摘吧,这个时分,可以让大卡车抵达每一块农地的公路纽带也是需求处理的问题。将每一块或许相关的地步衔接的灌水体系和公路的建造,就比方咱们这个布线的进程。

  咱们在FPGA内经过布局,知道那些LUT详细散布到哪个SLICE,可是一方面怎样让这些SLICE衔接起来,二方面怎样让输入的信号抵达相应的开端处理点和怎样让输出抵达输出IO上,并且衔接的电路全体功用好,这便是布线这个环节需求完结的内容。要抵达布线最优话,当然这儿面规划到布线算法和许多细节问题,比方触及到布线资源、PLL资源散布。可是这些对咱们了解布线这个概念没有许多好处,暂时不深化,本质上便是一个线路求最优的问题。

  FPGA开发—束缚

  束缚,在图1上看到,在归纳和布局布线这两个流程环节里都呈现了,咱们暂时规矩其为束缚一和束缚二,或许说归纳束缚和布局布线束缚,布局布线束缚又可以分为方位束缚、时序束缚。束缚,便是对这些环节操作定制规矩。一般开发环境会对这些束缚有个默许,这些默许的设置对大部分状况下仍是适用的,可是一般布局布线束缚中的I/O束缚是咱们每一个工程都有必要给定的。一同开发东西敞开其他束缚接口,答应咱们设置这些规矩,详细的有哪些束缚怎样去做在后边介绍东西运用的时分进行评论,这儿先了解这些束缚的基本概念。

  FPGA开发—归纳束缚

  信任咱们现已下意识的将归纳束缚和归纳进程挂在一同了,没错,归纳束缚的确是在归纳进程中做的,用来辅导归纳进程,包含编译和映射。咱们现已知道归纳进程是将RTL级电路描绘转化到FPGA上的硬件单元(LUT)中,构成以FPGA存在的硬件单元构成的电路。

  咱们仍是拿前面有过的比方来阐明,不同的束缚将导致生成功用不同的电路。归纳这么一个完结式***能的电路,没有加资源同享得到的电路如图8左面所示的电路,而加了资源同享的束缚后,得到的电路结构如图8右边的电路。

  

  经过之前的剖析,得到左面的电路结构资源耗费多可是速度快,而右边的结构耗费资源少,可是速度慢,乘法器需求分时复用。

  当然这仅仅一个比方,可是足以阐明,不同的归纳辅导准则也便是归纳束缚,将会产生不同的电路。当得到的电路功用不能满意需求的时分,恰当考虑归纳束缚,来抵达一个速度和面积的转化的作用,完结功用的进步。电路完结的速度和耗费的面积是贯穿在FPGA开发进程中两个 对立的问题,归纳束缚是其间一种小范围内完结速度和面见平衡点移动的办法。

  FPGA开发—方位束缚

  没错,你又想对了,方位束缚和咱们布局有联系,它便是指布局的战略。依据所挑选的FPGA渠道现有硬件资源散布来决议咱们布局。

  其间最典型的方位束缚便是I/O束缚。一个典型的体系是既有输入也有输出的,而不论是输入仍是输出,都是从I/O上为端点的。输入从哪个端点进来,输出从哪个端点出去,输入是需求支撑什么样的电气特性的端点,输出又是需求支撑什么样的电气特定的端点。这些都是I/O束缚做的作业。任何一个工程,都有必要有这么一个束缚。

  还有一种典型的方位束缚是在增量编译里触及的物理界定。增量编译的呈现便是因为在FPGA开发进程中归纳和布局布线的长耗时性而提出的。思维便是把FPGA切成许多个小块的FPGA,然后约好详细哪块小FPGA放置什么模块,完结什么样的功用,从物理上进行界定。当修正工程后,开发渠道就会检测哪些小FPGA内没有进行修正,哪些进行了修正,然后将修正过的部分从头进行归纳布局布线进程。这样一来,比较本来修正一点,全工程从头经过那些进程来讲,时刻节省下来了。

  FPGA开发—时序束缚

  估量没有多少悬念了,时序束缚很大程度上和布线有关。为什么要做这个束缚?

  因为一方面信号在芯片内传递是需求耗费时刻的,另一方面许多存在的寄存器有反应时刻,而咱们开发的最开端的时分这些时刻都是理想化的。可是考虑到实在状况下,假如跑的速度比较高,抵达了200M这么个速度,当然这个高速和详细的芯片有关,高功用的芯片自身跑的速度可以抵达很高,200M相对来说就不是高速,对一些低功用芯片还或许达不到200M。这个时分,这些时刻抵达了相同一个体系时刻数量级的时分,很或许影响电路的功用了。某一刻,该来的信号没有来,默许的话就会收集过错信号了。

  为了让这些硬件自身带来的延时时刻更理想化,咱们就要对这些决议时刻延时的要素优化来削减时刻延时。关于寄存器自身的反应时刻这个要素咱们开发者是力不从心的,咱们要做的优化便是布线了。是走直线仍是走其他,不只仅决议于自身这条途径,还和整个体系布线有关,比方水桶原理,体系功用决议于最差途径延时。

  时序束缚做的便是这些作业,可是时序束缚并不是指详细去衔接每一条线,这个作业就像前面那些流程相同都是由软件去完结的,先用软件自己默许准则布线,然后对其成果剖析,不满意时序要求的,咱们再对详细的问题途径做一些辅导束缚。时序束缚的添加,首要包含周期束缚、输入偏移束缚和输出偏移束缚。详细的进程在后边章节介绍东西运用时会有详细着手的辅导。

  FPGA开发—仿真

  在经过上面从规划输入到归纳再到布局布线进程的介绍后,咱们来会集评论一下,在这些进程中触及到的相应的仿真。

  仿真,字面上讲便是模仿实在状况。咱们FPGA规划里边的仿真,便是模仿实在电路的状况,查看电路是不是咱们需求的电路。假如咱们把FPGA开发构成电路当作一个产品的生产进程,那么在FPGA开发流程中含有的三种仿真(RTL级仿真、静态仿真和时序仿真)就比方产品线中的三道检测站。如图9,这三道工序任何一道出了问题,修正规划后都得从头走这三道卡,所以尽量在把问题发现在源头。

  

  FPGA开发—测验渠道

  所谓testbench,即测验渠道,详细的说便是给待验证的规划添加鼓励,一同调查输出呼应是否契合规划要求。测验渠道,测验渠道在做功用仿真、静态仿真和时序仿真的时分都需求用到。刚开端的关于一些初学者,遇到的都是一些简略的东西,测验渠道相应的也很简略,用一个文件就可以很明晰的呈现测验结构。关于一些杂乱的项目,测验就没有那么简略了,由此还专门产生一个职业——测验职业。这个时分咱们要用到一个概念便是结构化测验。

  一个完好的测验渠道如下图10所示,它是分结构组成的,其间对规划测验成果的判别不只可以经过调查比照波形得到,并且可以灵敏运用脚本指令将有用的输出信息打印到终端或许产生文本进行调查,也可以写一段代码让它们主动比较输出成果。

  

  测验渠道的规划是多种多样,可以运用灵敏的Verilog的验证脚本,可是它也是依据硬件言语可是又服务于软件测验的言语,有时并行有时次序,只要把握这些要害点,才干很好服务测验。需求阐明的一点是,不论咱们是现已在用Verilog在写测验渠道仍是刚学习写测验渠道,那么主张咱们仍是能用到System Verilog中相对Verilog新的语法仍是测验的用,System Verilog是一种趋势,它自身便是向下兼容的第三代的Verilog。

  FPGA开发— RTL级仿真

  这儿RTL级仿真归于榜首道检测,有些场合称作功用仿真,为了杰出和后边的静态仿真的差异,避免在后边介绍静态仿真的时分咱们弄的很头大,咱们仍是这样称号。它是对工程在寄存器转送级进行的描绘时进行测验,查看其在RTL级描绘的时分完结的功用的正确性。

  关于RTL级仿真,假如规划中规划到原理图输入的话,在一些仿真东西中是不支撑的,比方Modelsim,这个时分要进行功用上的验证,可以将原理图转化成HDL描绘,或许直接把整个工程转化成LUT门级网表后进行后边要讲到的静态仿真完结。

  一切逻辑功用的验证都期望在RTL级做,尽或许的将问题发现在RTL级仿真进程中,削减后边发现问题带来的重复。

  FPGA开发— 静态仿真

  静态仿真,有些当地给的外号叫门级仿真,确切的说应该是归纳后的LUT门级网表。是在归纳进程后做的仿真。有些开发渠道下将静态仿真详细又分为编译仿真和映射仿真,比方ISE便是这样做的,可是个人觉得应该很少场合做这个编译仿真。静态仿真的意图便是验证当工程到了用LUT门级网表描绘的时分,从功用上查看验证工程的正确性。

  不论是Altera仍是Xilinx的开发渠道,都直接支撑静态仿真,可是因为各自厂家的仿真器专业性不强,咱们仍是用第三方仿真东西比较多。这时分在第三方东西下的输入有必要是经过归纳东西归纳出来的包括工程一切信息的LUT门级网表文件了。一般专业一点的第三方归纳东西是不具备归纳功用的,至少咱们在运用Modelsim的时分,并没有要求咱们添加工程用到的详细的哪一款类型FPGA的信息。这也是静态仿真的外号门级仿真指的是LUT门级网表仿真的依据。

  FPGA开发— 时序仿真

  时序仿真是在布局布线之后做的,在前面介绍时序束缚的时分讲到,布线延时问题影响到了电路的功用的时分可以做时序束缚。那么这个延时问题的取得就可以经过时序仿真取得,当然还有一种取得延时呈现超载状况,这个归于下面末节介绍的静态时序剖析了。

  一般状况下,电路进行完布线进程后,会生成一个延时信息文件,咱们简称SDF(standrad dealy format)文件,Quartus渠道下是以.sdo文件办法存在的。里边含有三种延时信息,别离为最小值、典型值、最大值,存在的办法是最小值:典型值:最大值,一般缩写min:typ:max。这儿也表现了,在FPGA里的延时信息是不可以准确取得的,只能是迫临,因为自身同一器材中,不同的区域的逻辑门也很有或许和其他的区域内同种的逻辑门的延时不相同。咱们这儿举一个比方来阐明一下这三种值的意义。

  

  如上图,这是一个描绘一段延时线的延时信息,给的延时信息从in端点到out端点,输入产生跳变后,别离以最小值、典型值和最大值将信号跳变传递到out端点。咱们这儿仅仅一段延时线,在延时信息文件里还有一类延时信息,便是一些具有逻辑功用的cell延时,这个时分信号跳变又分为由高变低和有低变高,因为这两种跳变在这些器材里的三种延时值是不相同的,得别离评论,详细别离以某一种状况类推。

  在做后仿真的时分,只需求在做完静态仿真后的根底上添加布线的延时信息后,再剖析逻辑功用是否满意要求。后政策的渠道 运用状况和前面相同,一般选用第三方仿真东西,典型的是Modlesim,详细操作进程见软件相关操作章节。

  FPGA开发—静态时序剖析

  静态时序剖析,简称STA(StaTIc TIming Analysis),这个进程做的话一把是在是做后仿真前做的。在布局布线后,会生成时序剖析陈述,该陈述是剖析东西运用从布线的路劲上提取出寄生参数后准确计算出来的。该陈述中会提示出一些要害途径,所谓要害路劲便是指延时信息比较杰出的信号节点流,经过剖析可以得到不满意时序要求的途径,这个进程便是STA进程。

  静态时序剖析的特色便是不需求输入向量就能尽头一切的途径,且运转速度很快、占用内存较少,不只可以对芯片规划进行全面的时序功用查看,并且还可运用时序剖析的成果来优化规划。许多规划都可以在功用验证的成功的根底上,加上一个很好的静态时序剖析,就可以代替耗时十分长的后仿真了,这是一种很有保证性的化简流程办法。后仿真相对静态时序剖析来说还具有逻辑验证,在加上延时信息的根底上剖析逻辑。

  FPGA开发—在线调试

  在线调试也称作板级调试,它是将工程下载到FPGA芯片上后剖析代码运转的状况。有人会认为,咱们不是现已做了仿真了,乃至是时序仿真都经过了,还会存在问题么?在实践中,存在这么些状况咱们需求用到在线调试:

  

  仿真不全面而没有发现的FPGA规划过错。许多状况下,因为太杂乱,无法做到100%的代码覆盖率;

  在板级交互中,存在异步事情,很难做仿真,或许仿真起来时刻很长,无法运转;

  除了自身FPGA外,还或许存在板上互连牢靠性问题、电源问题和%&&&&&%之间的信号搅扰问题,都或许导致体系运转犯错;

  FPGA开发—潜在问题。

  在线调试的办法首要有两种,一种是运用外部测验设备,把内部信号传送到FPGA针脚上,然后用示波器或许逻辑剖析仪调查信号;另一种便是运用嵌入式逻辑剖析仪,在规划中刺进逻辑剖析仪,运用JTAG边际数据扫描和开发东西完结数据交互。

  嵌入式逻辑剖析仪的原理适当与在FPGA中拓荒一个环形存储器,存储器的巨细决议了可以查看的数据的深度,是可以人为设定的,可是不得超出资源。在FPGA内部,依据设置的需求查看的信号节点信息和驱动的采样时钟,对信息进行采样,并放置到设定的存储空间里,存储空间是环形的,内容随时刻更新。然后经过判别触发点来查看收集数据,一旦满意触发条件,这个时分会中止扫描,然后将触发点前后的一些数据回来给PC端的测验东西进行波形显现,供开发者进行调试。

  现在的调试东西都是和自身的FPGA开发渠道挂钩的,不同FPGA厂商都会有开发软件渠道,嵌入式逻辑剖析仪也就不同。Altera 厂家供给的是SignalTapII,而 Xilinx厂家供给的是 ChipScope,这些东西的详细运用在后边东西中详解。

  当然这儿除了嵌入式逻辑剖析仪外,各厂家还供给了一些其他的在线调试东西,例如SignalProbe等等,可是或多或少的用的人不是许多,有爱好的可以找到该功用运用的阐明手册。

  FPGA开发— 装备及固化

  好了,到了咱们最终一个环节就可以完结FPGA的流程了。这一部分咱们分四个末节来讲,首要是针对咱们许多人不是太清楚的FPGA装备进程组织的,随后一节为了愈加深了解,举了altera 的FPGA叙说装备全进程,第三末节是评论FPGA首要的装备形式,最终一节便是正对这些装备形式打开的比照挑选评论。

  FPGA开发— 装备进程

  在FPGA正常作业时,装备数据存储在SRAM中,这个SRAM单元也被称为装备存储器(configure RAM)。因为SRAM是易失性存储器,因而在FPGA上电之后,外部电路需求将装备数据从头载入到芯片内的装备RAM中。在芯片装备完结之后,内部的寄存器以及I/O管脚有必要进行初始化(iniTIalization),比及初始化完结往后,芯片才会依照用户规划的功用正常作业,即进入用户形式。

  FPGA上电往后首要进入装备形式(configuration),在最终一个装备数据载入到FPGA往后,进入初始化形式(initialization),在初始化完结后进入用户形式(user-mode)。在装备形式和初始化形式下,FPGA的用户I/O处于高阻态(或内部弱上拉状况),当进入用户形式下,用户I/O就依照用户规划的功用作业。

  举例——altera FPGA装备全进程

  一个器材完好的装备进程将阅历复位、装备和初始化等3个进程。FPGA正常上电后,当其nCONFIG管脚被拉低时,器材处于复位状况,这时一切的装备RAM内容被清空,并且一切I/O处于高阻态,FPGA的状况管脚nSTATUS和CONFIG_DONE管脚也将输出为低。当FPGA的nCONFIG管脚上呈现一个从低到高的跳变往后,装备就开端了,一同芯片还会去采样装备形式(MSEL)管脚的信号状况,决议承受何种装备形式。随之,芯片将开释漏极开路(open-drain)输出的nSTATUS管脚,使其由片外的上拉电阻拉高,这样,就标明FPGA可以接纳装备数据了。在装备之前和装备进程中,FPGA的用户I/O均处于高阻态。

  在接纳装备数据的进程中,装备数据由DATA管脚送入,而装备时钟信号由DCLK管脚送入,装备数据在DCLK的上升沿被锁存到FPGA中,当装备数据被悉数载入到FPGA中往后,FPGA上的CONF_DONE信号就会被开释,而漏极开路输出的CONF_DONE信号相同将由外部的上拉电阻拉高。因而,CONF_DONE管脚的从低到高的跳变意味着装备的完结,初始化进程的开端,而并不是芯片开端正常作业。

  INIT_DONE是初始化完结的指示信号,它是FPGA中可选的信号,需求经过Quartus II东西中的设置决议是否运用该管脚。在初始化进程中,内部逻辑、内部寄存器和I/O寄存器将被初始化,I/O驱动器将被使能。当初始化完结往后,器材上漏极开端输出的INIT_DONE管脚被开释,一同被外部的上拉电阻拉高。这时,FPGA彻底进入用户形式,一切的内部逻辑以及I/O都依照用户的规划运转,这时,那些FPGA装备进程中的I/O弱上拉将不复存在。不过,还有一些器材在用户形式下I/O也有可编程的弱上拉电阻。在完结装备往后,DCLK信号和DATA管脚不该该被浮空(floating),而应该被拉成固定电平,高或低都可以。

  假如需求从头装备FPGA,就需求在外部将nCONFIG从头拉低一段时刻,然后再拉高。当nCONFIG被拉低吼,nSTATUS和CONF_DONE也将随即被FPGA芯片拉低,装备RAM被清,一切I/O都变成三态。当nCONFIG和nSTATUS都变为高时,从头装备就开端了。

  装备形式

  这一块分红两部分,一部分是在线调试装备,另一块是固化,行将工程装备到相应存储单元中,上电后,经过存储在存储器中的内容装备FPGA。

  在线装备

  榜首部分在线调试装备进程是经过JTAG形式完结的,如图13所示,在JTAG形式中,PC和FPGA通讯的时钟为JTAG接口的TCLK,数据直接从TDI进入FPGA,完结相应功用的装备。

  

  JTAG接口是一个业界规范接口,首要用于芯片测验等功用。FPGA基本上都可以支撑JTAG指令来装备FPGA的办法,并且JTAG装备办法比其他任何办法优先级都高。JTAG接口有4个必需的信号TDI, TDO, TMS和TCK以及1个可选信号TRST构成,其间:

  TDI,用于测验数据的输入;

  TDO,用于测验数据的输出;

  TMS,形式操控管脚,决议JTAG电路内部的TAP状况机的跳变;

  TCK,测验时钟,其他信号线都有必要与之同步;

  TRST,可选,假如JTAG电路不必,可以讲其连到GND。

  FPGA开发—固化

  第二部分固化程序到存储器中的进程可以分为两种办法,主形式和从形式。主形式下

  FPGA器材引导装备操作进程,它操控着外部存储器和初始化进程;从形式下则由外部计算机或操控器操控装备进程。主、从形式从传输数据宽度上,又别离可以分为串行和并行。

  (1)主串形式

  主串形式是最简略的固化形式,如图14所示,这个形式进程不需求为外部存储器供给一系列地址。它运用简略的脉冲信号来标明数据读取的开端,接着由FPGA供给给存储器时钟,存储器在时钟驱动下,将数据输入到FPGA Cdata_in端口。

  

  (2)主并形式

  主并形式其实和主串形式的相同机理,只不过是在主串的根底上,同周期数内传送的数据变成8位,或许更高,如图15。这样一来,主并行比较主串行的数度要优先了。现代有些当地已选用这种办法来装备FPGA的了。

  

  (3)从并形式

  从上面看到,主形式下的衔接仍是很简略的。可是有时分,体系或许用其他微处理器来对FPGA进行装备。这儿的微处理器可以指FPGA内嵌的处理器,比方说Nios。微处理器操控着何时装备FPGA,从哪读取装备文件。如图16,这种办法的长处是处理器可以灵敏随时改变FPGA装备,一同装备的速度也快。微处理器先从外部存储设备里读取一个字节的数,然后写到FPGA里。

  

  (4)从串形式

  了解了从并形式,从串形式就不必许多解说了,它的特色便是节省FPGA管脚I/O。

  (5)多片级联

  多片形式有两种,一种是选用菊花链的思维,多片FPGA同享一个存储器,别的一个是可以运用其他存储器装备不同的FPGA。假如所示是一个同享型的结构,显现启动了。这儿分主FPGA和从FPGA,主FPGA和存储器是运用串行主形式来装备,而后边那个的装备是经过榜首装备好的FPGA上微处理器进行和谐的。

  

  形式挑选

  如今FPGA应该可以支撑上面五种装备形式,是经过3个形式引脚来完结的,详细的映射如下表,在往后形式仍是有或许添加的。

  

  在PS形式下,假如你用电缆线装备板上的FPGA芯片,而这个FPGA芯片现已有装备芯片在板上,那你就有必要阻隔缆线与装备芯片的信号。一般平常调试时不会把装备芯片焊上的,这时分用缆线下载程序。只要在调试完结往后,才把程序烧在装备芯片中, 然后将芯片焊上。或许装备芯片便是可以便利取下焊上的那种。这样出了问题还可以便利地调试。。

  对FPGA芯片的装备中,可以选用AS形式的办法,假如选用EPCS的芯片,经过一条下载线进行烧写的话,那么开端的“nCONFIG,nSTATUS”应该上拉,要是考虑多种装备形式,可以选用跳线规划。让装备办法在跳线中切换,上拉电阻的阻值可以选用10K一般在做FPGA试验板的时分,用AS+JTAG办法,这样可以用JTAG办法调试,而最终程序现已调试无误了后,再用AS形式把程序烧到装备芯片里去。

  FPGA开发—开发东西总结

  在环绕图1把FPGA开发流程讲完后,这儿对每个环节中规划的相关软件进行总结,如下表所示。究竟充分运用各种东西的特色,进行多种EDA东西的协同规划,对FPGA的开发是十分重要的。充分运用了这些EDA东西的长处,可以进步开发功率和体系功用。

  

  表中列出的每种EDA东西都有自己的特色。一般由FPGA厂商供给的集成开发环境,如Altera Quartus II和Xilinx ISE,在逻辑归纳和规划仿真环节都不是十分优异,因而一般都会供给第三方EDA东西的接口,让用户更便利地运用其他EDA东西。为了进步规划功率,优化规划成果,许多厂家供给了各种专业软件,用以合作FPGA芯片厂家供给的东西进行更高效的规划。

  比较常见的运用办法是:FPGA厂商供给的集成开发环境、专业逻辑仿真软件、专业逻辑归纳软件一同运用,进行多种EDA东西的协同规划。比方Quartus II+ModelSim+FPGA Compiler II,ISE+ModelSim+Synplify Pro等等。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/178583.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部