Xilinx 7系列 FPGA CLB资源介绍

赛灵思 7系列 FPGA CLB资源介绍

———主要来源于官方技术手册ug474_7Series_CLB.pdf
FPGA共有6大组成部分:1.可编程输入输出I/O单元;2.基本可编程逻辑单元CLB;3.嵌入式块RAM;4.丰富的布线资源;5.底层嵌入功能单元;6.内嵌专用硬核。
CLB资源可以给FPGA构成查找表,分布式RAM,移位寄存器,算术函数专用高速进位逻辑,高效利用的复用器。
1个CLB包含了两个Slices。两个Slices可以由两个SLICEL组成或者由一个SLICEL和一个SLICEM组成。
先放出来SLICEL和SLICEM的构成图:
SLICEM:
SLICEM:可以看出,SLICEL和SLICEM不同之处主要在左边一列,下面介绍SLice的主要组成部分:
每一个SLICEL和SLICEM的相同之处都包含了4个LUT,8个触发器,一个算术和进位链,不同之处在于SLICEM还可以包含一个大小为256bit的分布式RAM和一个大小为128bit的移位寄存器。
Xilinx 7系列 FPGA CLB资源介绍_第1张图片
关于同步写和异步读
同步写:操作需要与时钟同步,在时钟的上升沿数据和地址被写入。
异步读:操作与时钟无关,只要给一个地址就可以立刻获取到数据。
关于LUT:
FPGA是基于查找表的方式来实现逻辑运算的,通过输入运算数据到查找表的输入口来得到运算结果,7系列Xilinx的FPGA使用的是6个独立输入和两个独立输出的LUT,该单个LUT可以实现一个6输入或两个5输入或更少输入的逻辑查找表,多个LUT可以通过多路复用器实现更多输入的逻辑查找表,比如使用F7AMUX或者F7BMUX链接两个6输入查找表可以实现一个7输入逻辑查找表(需要两个6输入LUT),使用F8MUX连接两个7输入查找表可以实现一个8输入查找表(需要4个6输入LUT),而如果要实现更多输入的查找表则需要通过跨Slice进行多路复用器的连接。
关于触发器和锁存器:
触发器和锁存器是FPGA的存储单元,在一个Slice中有8个触发器,其中有4个触发器可以转化任意边缘的D触发器也可以转化成电平锁存锁存器,另外四个只能转化成任意边缘的D触发器。这8个触发器的数据输入端连接的是MUX多路复用器,实际上驱动的数据输入端是可以来自每个LUT的输出口也可以来自Slice的输入AX,BX,CX,DX。
Xilinx 7系列 FPGA CLB资源介绍_第2张图片触发器和锁存器拥有多个控制信号,主要有时钟信号CLK,时钟使能信号CE,置位复位信号SR。除了这些主要的控制信号,在综合一个工程是使用到触发器时综合器自动设置额外的信号配置触发器,例如:
SRLOW该信号是设置触发器工作在同步复位还是异步复位,SRHIGH该信号是设置触发器工作在同步置位还是异步置位。(同步和异步的设置只能对整个Slice进行设置,不能单独对某一个触发器设置
INIT0是表示异步复位在上电时期还是全局置位或复位时期,INIT1表示异步置位在上电时期还是全局置位或复位期间。
SR信号控制触发器输出高电平(置位),低电平(复位)由SRLOW和SRHIGH控制(本质上是控制SR为复位信号还是置位信号),控制方式如下表

Xilinx 7系列 FPGA CLB资源介绍_第3张图片
关于分布式RAM
SLICEM中的LUT可以实现分布式RAM,有读写功能。
分布式RAM可以实现多种端口和多种位数的存储功能,如下图表示,相比实现的端口和位数越多,需要使用的LUT也就越多。Xilinx 7系列 FPGA CLB资源介绍_第4张图片 Single port 单端口模式读写只共用一个地址总线
Dual port 双端口模式 一个端口用来同步写或异步读,另一个端口用来异步读
Simple dual port 简单双端口 一个端口只用来同步写,另一个端口用来异步读
Quad port 四端口 一个端口用来同步读或者异步写,另外三个端口用来异步读

典型的分布式RAM和它的资源占用情况图解:
32*4Q
Xilinx 7系列 FPGA CLB资源介绍_第5张图片
单个LUT最高支持2bit位宽,由其输入和输出接口数量有关,DI1 DI2 构成两位的输入口,DOD[0]和DOD[1]构成两位输出口,一个LUT构成一个Single Port ,四个LUT构成Quad Port.

32*6D
Xilinx 7系列 FPGA CLB资源介绍_第6张图片
单个LUT最多支持2bit,所以6bit需要3个LUT组合成32*6D

64*1S
Xilinx 7系列 FPGA CLB资源介绍_第7张图片单端口时,读写数据的地址使用同一通道。当4组641S个LUT再共用一个地址通道,在一片SLICEM中可以构成644S分布式RAM

64X1D
Xilinx 7系列 FPGA CLB资源介绍_第8张图片
双端口读写数据需要不同的地址通道,需要两个LUT实现,同理,如果需要实现64*1Q 4通道则需要四个LUT。

一个LUT最高可以实现641 Simple Dual 和 322 Simple Dual的分布式RAM 如果需要实现643 Simple Dual 则至少需要三个LUT 如图:
Xilinx 7系列 FPGA CLB资源介绍_第9张图片如果需要实现大于64深度的分布式RAM则需要使用多路复用器 (F7AMUX, F7BMUX, and F8MUX)来互联实现,例如:实现一个128 X 1 Single Port Distributed RAM 通过两个LUT的输出口连接一个F7BMUX的多路复用器则可以得到一个128
1bit的分布式RAM,如图:
128X1S
Xilinx 7系列 FPGA CLB资源介绍_第10张图片同理的如果要实现深度为更高的256则需要通过两个深度为128的输出来输入到一个多路复用器,例如 256 X 1 Single Port Distributed RAM
Xilinx 7系列 FPGA CLB资源介绍_第11张图片SLICEM和SLICEL的LUT都可以构成分布式ROM,只读,不可写,多深度的实现也需要使用多路复位器进行叠加。
Xilinx 7系列 FPGA CLB资源介绍_第12张图片
关于移位寄存器
SLICEM另一个特殊的功能是可以实现移位寄存器(不使用触发器),在SLICEM中单个LUT可以实现32个时钟延时,一个SLICEM中的4个LUT最多可以实现128个时钟延时。
Xilinx 7系列 FPGA CLB资源介绍_第13张图片在LUT的地址输入端使用了高5位的地址,数据输入端可以是来自上一个LUT的输出,也可以直接输入,数据的输出端有两种功能,第一个功能是可以在MC31固定的每个时钟周期输出一位数据,也可以动态的在O6上根据地址异步的读出LUT内的数据。

一个LUT最多支持32位移位寄存器,若想扩展可通过多个LUT进行多路复用器(F7AMUX, F7BMUX, and F8MUX)连接,;例如64bit 和 96bit的移位寄存器
Xilinx 7系列 FPGA CLB资源介绍_第14张图片

你可能感兴趣的:(FPGA,fpga)