笔者用Xilinx FPGA比较久,现在以Xilinx FPGA Virtex 6为例介绍一下FPGA中的重要组成部件CLB(Configurable Logic Block),ALTERA的FPGA组成结构跟此大同小异,只是命名不同而已。
如下图所示,Virtex 6 SXT475 1759 FPGA的整个芯片的布局如下:
如上图所示,红色的竖直条状物为Block RAM资源,有关Block RAM资源将会在以后的博文中有所讲述。绿色的竖直条状物为DSP48资源。有关DSP 48资源将会在以后博文有所讲述。最左边的条状物为IOB资源,直接相连到管脚,中间的条状物也为IOB,连接到FPGA管脚,另外中间分布着MMCM(时钟资源),最右边的管脚则为高速SerDes(串行/解串高速)管脚。在各条状物中间的黑色格状区域里则为最基本的逻辑资源: CLB。
一个CLB由两个SLICE组成。Slice又分为Slice M和Slice L。其中Slice M是指该Slice里面的LUT也可以作为分布式RAM来使用(Distribute RAM),而Slice L里的LUT则只能作为实现逻辑功能的查找表来使用。我们先看一下Slice L的结构:
粗略的看一下,这个逻辑框图还是相当的复杂的。不要紧,一步一步来。首先要抓住关键的东西。最左边的4个方框就是LUT,也就是说一个Slice L里面有4个LUT,而且该LUT还是6输入(A6:A1)(V6属于高端器件),2输出的查找表。该LUT有两种方式,一种是如果要实现6个输入的逻辑功能,那么只有O6输出能被用到,如果要实现5个输入的逻辑功能,那么一个LUT就可以实现任意5输入(其中一个输入被置高),一输出的组合逻辑两个,只要这两个组合逻辑共用输入。也就是说此时O5和O6都可以用上。再看右边的8个方框,这些都是FF(Flip-Flop器件,即触发器)。从触发器的框图里我们可以看到有INIT1,INIT0,SRHI,SRLO,SR,D,CE,CK这些管脚,这些是做什么用的呢?INITx其实是FPGA被配置后该寄存器的初始状态,该属性为INIT0则表示FPGA配置完后该寄存器初始状态为0,否则则为1。SRHI,SRLO则是复位的时候的状态,如果是SRHI属性的话,则进行RESET的时候,该寄存器输出为1,如果是SRLO的话,该寄存器在被复位时则输出为0。在V6器件中,RESET信号是高有效。SR就是复位信号,D则是D触发器的输入信号,CK则是时钟信号,CE则是CLOCK ENABLE的意思,表示该寄存器在CE无效的情况下不会翻转,降低系统运行时的功耗。至于LUT和FF/Latch之间很多复杂的多路选择器(MUX)和连线,则相当于Slice内部和外部输入之间的连线路径,在FPGA代码被综合后,这些连线路径怎么走就是由多路选择器来决定。(注:里面有F7A,F7B,F8 MUX可作为设计中的MUX逻辑资源使用,以后会进一步的解释),另外MUX CY可作为进位链到相邻的Slice时的布线选择用(以后会作进一步的解释)。
用户422235 2014-7-26 23:50
残弈悟恩 2013-7-26 02:06
用户618471 2013-7-24 19:39
用户403664 2012-12-18 15:38