Xilinx FPGA 内部结构深入分析.doc
《Xilinx FPGA 内部结构深入分析.doc》由会员分享,可在线阅读,更多相关《Xilinx FPGA 内部结构深入分析.doc(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Xilinx FPGA 内部结构深入分析作者 :fpga001。论坛 :芯片动力(SocVista)。网页地址 :发表时间 :2009.12IOB的结构请大家看到手册的第1页,这是IOB的review部分。IO block 是高手的领地,一般接触FPGA第一年都不会太关心到这个部分。注意看,IOB有三个数据通道:输入、输出、三态控制。每个通道都有一对存储器件,他们可以当做寄存器或者锁存起来使用,视乎你的设置。输入通道有可编程的延迟模块,可以确保hold time为零。(这是在什么场合使用?请达人补充!)另外可以看到输入输出通道都有完备的DDR支持,这个在后面可以看到。所有图都请参考PDF原文,
2、这里就不再粘贴了。可编程输入延迟看到手册第3页,这个像两根鱼骨似的构造就是输入延迟了。输入延迟一共16节,每节250ps,所以总共的延迟在04ns之间。这个鱼骨的构造非常巧妙,前面8节直接级联,只有一个输出。这样8节以内的调整就跳过这根长鱼骨;而超过8节的调整就直接利用第一根鱼骨,然后在后面的8节中进行微调。调整的输出分别供给IOB中的异步和同步单元,异步就是直接穿过IOB,同步则是经由存储单元流出IOB。异步单元精度较高,可以单节调整,所以精度为250ps;同步单元精度稍低,两个节为单位调整,所以精度只有500ps。上述内容看图便知可编程输入延迟的设置输入延迟的设置只能在Image配置的时候
3、建立,在设备工作期间无法改变。我想有两种方法可以改变输入延迟的设置:1. 通过延迟原语在代码中设置;2. 通过FPGA editor在P&R完成后在ngc文件中修改。存储单元存储单元可以配置为D触发器,就是我们常说的FF,Xilinx称之为FD;也可以配置为锁存器,Xilinx称之为LD。输出和三态通路各有一对寄存器外加一个MUX。利用这种2+1的组合可以产生DDR操作,Xilinx称之为ODDR2。每个存储单元都有6个接口信号:时钟+时钟时能,数据输入+输出,置位复位+翻转输入除了这些信号,存储单元还有一些属性设置:- FF/Latch可以用来配置存储单元的类型;- Sync/Async 配
4、置置位复位的方式;- SRHIGH/SRLOW 配置是置位(1)还是复位(0);INIT1/INIT0 配置置位复位的初始值,一般置位(1)复位(0);DDR支持输入、输出、三态。这三个IOB通道都可以实现DDR支持。输出和三态通道可以实现ODDR2原语,这个原语的实现原理可以参考p5的图3.两个相差180度的时钟和两路信号进入一对寄存器并通过DDR专用MUX输出,即可得到DDR数据输出。实现相差180度,有两种方法。一种是通过DCM直接产生这两个信号。另外的方法是同一时钟,但是连入寄存器的时钟端口时,一路取反。输入通道则实现 IDDR2原语。如果输出、三态通路实现的是DDR的调制的话,这一路
5、其实就是DDR的解调,也就是1分为2。当然,这里需要提供两路相差180度的时钟。另外ODDR2还有一个重要用途,就是用于产生随路时钟。只要把两路数据固定为1和0,这样产生的DDR数据其实就是0/1交叉的时钟信号了,这个一想就明白了吧。这样做的好处是:数据和时钟都经过IOB寄存器处理,具有相同的延迟特性,从而实现了所谓的源同步“级联”重定时特性提高DDR的性能在IDDR2和ODDR2的典型实现(图4图6)中,存在一个问题.以IDDR2为例,我们可以发现,在经典实现中,输出的两路数据分别与时钟的两个边沿对齐。但是,强调一下,后端的系统中往往只有一个时钟,工作在上升沿。那么对于下降沿对齐输出的数据,
6、从下降沿开始到上升沿被采样,只有半个时钟的余量来稳定输出并满足setup。由于FPGA系统比较复杂从IOB出来的数据要进入到下一个存储单元可能会经历非常漫长的逻辑和路由延迟。要在半个时钟内完成,有很大的挑战性,尤其是在高速系统中,往往有很大的困难。Spartan3E的解决办法是,利用相邻从属IOB的存储单元,对下降沿输出的数据马上做一次上升沿抽样。由于两个IOB相邻,不存在复杂的逻辑和路由延迟,因此虽然余量也是半个时钟,但一般情况下甚至高速系统下也可以成功实现。这样数据就回到了上升沿时钟域。到了上升沿时钟域,则数据有一个时钟的时间余量,处理起来就和普通的情况一样了。以上是关于IDDR2的讨论,
7、对于ODDR2有着类似的情况,大家可以自己理解一下。参考图6图7即可。想到一个资源守恒的公理,就是自然界普遍存在的trade off 现象。如果添加一个寄存器抽样,则系统负担降低;反之如果想少使用资源,不使用这个抽样寄存器,则全系统的负担会提高。这个例子告诉我们两个道理1. trade off 普遍存在2. 四两可以拨千斤SelectIO 信号标准S3E可以支持很多接口信号标准,比如最常见的 LVTTL、LVCMOS系列、PCI系列。此外,还支持差分信号标准,典型的比如LVDS系列。要实现指定的信号标准有两个必要条件:1. 内在设置:在UCF文件中对指定pin设置IOSTANDARD属性,这样
8、FPGA会自动切换指定IOB的信号标准;2. 外在设置:每个信号标准都要求指定的Vcco(有些还要求指定的Vref),因此要在PCB板上提供相应的Vcco支持。再来说说差分信号,他的优点是差分信号固有的噪声消除特性来提高数据的可靠性,从而提高单路数据的传输速率。差分信号的命名有套规则,比如:IO_L43P_3和IO_L43N_3就表示 Bank3里面第43对差分线的正负两根线。差分信号的termination差分信号一般传输速率较高,因此对信号的完整性有严格要求。方法之一就是使用termination来防止信号反射。为了减少用户的外部负担,S3E实现了内部的差分termination。使用方法
9、就是在UCF中加入下列语句。INST DIFF_TERM = ;上拉下拉电阻pullup、pulldown的主要目的就是将悬空的管脚引导到确定的状态,避免未知的干扰。所以在悬空的管脚,确定输入的管脚以及三态管脚上用的比较多。要修改管脚的pullup、pulldown、float 属性,可以在BitGen的时候从Generate Programming File的属性中选择保持电路三态信号在没有驱动的时候悬空,为了防止悬空,有一个保持电路可以帮助信号保持在前一逻辑状态。具体使用方法- 使用 KEEPER 属性- 使用 KEEPER 库原语注意,如果使用了上下拉电阻,则该属性被重置,因为实现的功能
10、是类似的。差异是上下拉将悬空信号拉回确定值,而KEEPER是保持回前一逻辑值。电平转换速率 SlewRateSlewRate用于设置IOB输出电平的切换速率。速率太低则很多接口时序得不到保障,因此有时候需要使用高速的切换速率。实现的方法就是加大驱动电流,从2mA到16mA,每2mA有一个选择。电流越大,当然驱动能力越强,相应的电平切换速率也更快。但是高速的切换会导致PCB电路的传输线效应,所以只要能满足应用,尽量采用低速的SlewRateBank内的IOB组织S3E的四边各有一个IOB 的BanK。每个Bank可以有自己独立的Vcco和Vref,所以一般的,每个bank可以有自己独立的电平标准
11、。有些电平标准有相同的Vcco,则在该Bank内可以支持多个电平标准。对于差分信号,每个Bank都可以支持下面三个差分标准中的任意两个- LVDS_25- MINI_LVDS_25- RSDS_25但是不能做到同时支持这三个标准Bank内部电平标准的规则Vcco规则:- 所有Vcco必须连接,即使不使用某个bank;- 同属于某个Bank的所有Vcco必须设置为相同的电平- 所有Vcco必须和指定的电平标准电压相符- 如果某个bank没有指定电平标准,则将其连接到任意电平,比如2.5或者3.3VVref规则:(前提是该电平标准要求使用Vref)- 所有Vref必须连接,即使不使用某个bank;
12、- 同属于某个Bank的所有Vref必须设置为相同的电平- 所有Vref必须和指定的电平标准电压相符如果某个bank对应的电平标准不需要Vref来偏置输入切换门限,则该Vref管脚可以用做用户IO或者输入管脚。专用的输入管脚专用输入管脚一般用IP_Lxxx_x 表示。对于专用输入管脚,没有差分termination。静电保护在每个IO上都有静电保护,大家看文档的图1就明白了。在pad-Vcco之间有P-N偏置保护。在pad-GND之间有N-P偏置保护。在静电过大的时候,通过这两个保护二极管可以直接将电流泄洪到电源与地IOB的电源支持Vcco用于对驱动输出的支持。Vccint用于驱动内部逻辑。V
13、ccaux是辅助电源,用于优化FPGA性能(这个谁有补充?)在上电、配置、用户模式下,IO的行为分析- 上电状态首先,电源稳定。Vcco、Vccint、Vccaux 作为内部“上电复位电路”的必要电源输入,必须达到稳定状态。这些基本电源稳定了才能实现上电复位,芯片才能进入配置状态。其次,IO高阻上拉,切断外部接口。HSWAP管脚被施加一个低电平。注意,这个低电平会维持到配置结束。这个低电平的作用是将用户IO全部上拉。我想这样做的目的是令所有IO进入确定状态,避免对配置操作的干扰。最后,全局复位,切断边缘存储通道。FPGA内部设置“全局置位复位”,异步方式将所有IOB存储单元清零- 配置阶段首先
14、,确定配置模式。INIT_B 高电平,并抽样M0,M1,M2的值,据此确定配置模式。然后,下载数据到FPGA。注意,整个配置期间,IO继续保持高阻上拉状态。最后,释放GSR。释放全局GSR,IOB寄存器回到默认的Low状态,除非设计中改变了SR输入的极性,否则都是Low状态。- Design Operation阶段首先,全局三态释放,打通外部接口。GTS释放,令所有IO都进入活跃状态,未使用的 IO则被弱下拉。通过在BitGen中设置属性,可以修改GTS释放后未使用IO的状态设置,比如上拉、下拉、悬空。其次, 全局写使能,打通内部存储通道。在一个时钟后,GWE全局写使能被释放。这样RAM和寄存
15、器就都可以写入了,也就是设计可以动作起来了。注意,在该阶段HSWAP释放,所以他也可以被用作普通的GPIO。【上面的这个内容是写到现在最重要的一部分,对于理解整个FPGA的启动过程非常有帮助。】CLB概览CLB是可配置逻辑块的简称。这是FPGA整个矩形配置结构中的基本单元。1CLB = 2X2 Slice1Slice = 2 (LUT+FF)+ 其他运算、进位、MUX资源每个CLB都是相同的,所以知道一个就知道了全部。接下来重点研究CLB。Slice上面讲到了一个CLB有2*2个Slice。这个4个slice可以分成左右两对,我们来看他们的主要区别。左边的是SLICE-M,带有存储增强功能(分
16、布式存储器,移位寄存器等)。右边的是SLICE-L,没有存储增强功能。那么为什么左右不一样呢?我认为,提供SLICE-M的目的就是为了让通用FPGA能够对存储应用有更多支持。那为什么右边的没有存储增强呢?最重要的原因是减小CLB右侧的面积,从而降低整个芯片的价格成本。同时,纯粹的logic设计可以提供比混杂设计的SLICE-M更优的性能。Logic Cell 的概念经常有人混淆CLB和LC的概念。这里就给大家澄清一下。CLB就不用讲了,就是上面说到的2*2 slice阵列构成的可配置逻辑块。LC则比CLB要小多了。如果给个公式就是:Logic Cell = 1LUT + 1FF (存储单元)那
17、么一个Slice 等价于多少LC呢?看到后面的内容你会知道,一个Slice 里面有两个LUT和两个FF,但是除此之外,还有一些运算增强单元。所以Xilinx给出的S3E的slice等价LC个数为:2.25Slice 结构概览终于讲到Slice了。这个是研究FPGA的重中之重。接下来要分成若干小点分别讲述,如果要观察全部结构则最好参考14页的图12.这个图是Slice-M的结构图,注意里面的虚线部分是SliceM专有结构,在slice-L中并不存在。通过比较,SliceL的结构也就非常清晰了。逻辑通路与bypass通路一个slice可以简单分成上下两部分,两部分的结构基本一致,有着近乎相同的元素
18、。下半部分一般冠以前缀或者后缀“F”,上半部分则冠以前缀或者后缀“G”。现在以F为例,来研究一下主要的数据通路。参考的图片主要还是14页的图12,这个图太经典了。先来说明一下逻辑路径,这个路径必然经过LUT,否则就不能成为逻辑路径,而只能成为旁路路径。总结一下,主要的逻辑路径是5个:1. 从LUT输出后,再通过X口,离开CLB2. 从LUT输出后再经过XOR运算(加法或乘法应用),再通过X口,离开CLB3. 从LUT输出后再经过F5MUX(等价于LUT-5扩展),在通过X口或者F5,离开CLB4. 上述三种情况中,不从X口输出,而是经由FF输出,通过XQ,离开CLB5. 从LUT输出后再经过C
19、YMUX,参与到加法运算的进位链中大家有兴趣的话,可以自己用笔标示一下这些通路,非常清晰。如果要记忆的话,其实也很简单,一是逻辑运算后的直接输出和寄存器输出;二是加法、乘法的直接输出和寄存器输出;三是LUT4到LUT5甚至更多级的运算扩展输出。资料中还提到了旁路bypass通路,这个通路的特点是必然不经过LUT,所以称为旁路。旁路的应用比较多,但是为了集中精力,这里不再展开,大家自己研究吧。LUT 查找表LUT就是 lookup table的简称,可以称为查找表。因为一个逻辑运算的与非门实现和ROM形式的查找表实现是完全等价的,这个在数电知识里学过的。在FPGA中,逻辑电路的实现,主要就是依靠
20、LUT。当然在SliceM中,LUT的能力更强,可以被配置成为 Distributed RAM 或者 16位移位寄存器。此外,在Spartan3E中,所有的LUT都是LUT-4也就是4输入的,但是他们可以扩展为LUT-5/6/7/8,方法就是我们接下来要介绍的wide MUXWide Multiplexers构造高阶LUTi的神兵利器有了LUT4,如何实现LUT5?这个问题的答案其实很简答。对于4位输入的逻辑可以用LUT实现,那么对于一个5位输入的实现,就可以这样来做。首先假设第5比特为0,在这个前提下,5位逻辑就变成了4位逻辑,用一个LUT4(F)实现。然后假设第5比特为1,在这个前提下,5
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Xilinx FPGA 内部结构深入分析 内部结构 深入 分析
限制150内