XILINX 7 系列FPGA内部逻辑分析
1、可编程逻辑资源 (configurable logic block ,CLB)
CLB在FPGA中最为丰富,由两个slice(片)构成:SLICEL(L:logic) 和SLICEM(M:memory)之分,因此CLB可分为CLBLL和CLBLM两类。一个芯片差不多2/3是SLICEL,1/3是SLICEM。
SLICEL和SLICEM内部都包含4个6输入查找表(LUT6)、3个数据选择器(MUX)、1个进位链(carry chain)和8个触发器(flip flop)。但是两者结构有一些差异。SLICEL 和 SLICEM都含有LUT (查找表)的功能,的区别在于,SliceM中含有能够把LUT资源重新整合为Ram和Rom的逻辑。这就是所谓的Distributed Ram。
FPGA 中LUT LATCH FF
LUT:(Look Up Table) 查找表
LUT本质上就是一个RAM。它把数据事先写入RAM后,每当输入一个信号就等于输入一个地址进行查表,找出地址对应的内容,然后输出。
LATCH:就是锁存器。由电平触发,非同步控制。在使能信号有效时latch相当于通路,在使能信号无效时,latch保持输出状态。
LUT和LATCH他们的共同点是:均属于组合逻辑(和时钟没有任何关系)
不同点是:LUT是FPGA最小单元的组成结构,而latch不是。
扩展:分布式RAM是如何产生的及其与Block RAM的区别
CLB单元生成的distribute ram ,CLB是FPGA的基本单元,blockram也是基本单元,但分布ram要由CLB单元生成。由CLB生成分布式ram,消耗逻辑资源。而blockram则固定在fpga内,无论使用与否都存在于那里。通常,distribute ram 用于少量的数据的存储,当数据量大时,选择block ram,或者 当block ram不够用时可以用逻辑资源生成分布式ram。
2、存储单元(BLOCK RAM ,BRAM)
每个BRAM大小为36KB(RAMB36E1)(平时在芯片选型时候标记的数据,指的是36KB 的个数),由两个独立的18KB BRAM (RAMB 18E1)构成,因此一个36KB的BRAM课配置为4中情形。由于两个18KB的BRAM无法共享其中的FIFO logic (用于生成FIFO控制信号包括读、写地址等),因此无法将一个36KB的BRAM当做两个18KB的built-in fifo (使用固有的fifo logic)来使用。
说明:fifo logic 用于生成FIFO 的控制信号 (如读写地址)和状态信号(如空/满标记信号)。
在fpga中,BRAM 都是按块使用的,一个最小的块18KB,就算当时BRAM 使用空间实际只用了1KB,本质上也是占用 了 18KB的空间。
3、运算单元 (DSP48E1)
7系列FPGA中的运算单元为DSP48E1,它不仅可以实现逻辑运算,如与、或、异或,也可以实现算术运算,如加法、乘法、乘累加等。