Xilinx-7系列 CLB逻辑资源


参考文档:
Xilinx ug474《7Series FPGAs Configurable Logic Block User Guide》

一、CLB结构

可编程逻辑块(CLB,Configurable Logic Block)作为Xilinx FPGA实现时序逻辑和组合逻辑的最主要资源部件,如图1-1 每个CLB包含两个Slice,并引出逻辑连线至开关矩阵(Switch Matrix,作为布线资源),同时还包含着算术进位逻辑的功能(CIN,COUT,进位输入和输出)。
在这里插入图片描述
其中每个Slice包含4个6输入LUT查找表(每个LUT可配置为2个5输入LUT)、1个进位逻辑链(CARRY)、8个触发器(FF,Filp-Flop),其中SLICE分为两种,分别为SLICEL和SLICEM,对于SLICEM,每个6输入LUT可以配置为一个32位移位寄存器(Shift Register)或64 Bits的RAM存储单元(Distributed RAM),而SLICEL却没有该功能。因此CLB相关的一系列资源存在确定的比例关系。

每个CLB包含两个SLICE,有的CLB包含两个SLICEL,有的CLB包含一个SLICEL和一个SLICEM,不难推算,对于后者CLB的资源量存在如Table2-1关系,
在这里插入图片描述
以Kintex-7系列CLB资源量为例,列表如下Table 1-3:
在这里插入图片描述
数量关系可以看出,SILCEL和SLICEM总和等于SLICE的数量,6输入LUT的数量是slice的4倍,FF的数量是slice的8倍,DRAM和Shift Register的容量也遵循上述结构(SLICEM中)。

二、SLICE结构

1.CLB结构概览

其中SILCEL与SLICEM结构相似,区别在于LUT,在SLICEM中可配置为Disturbuted RAM
在这里插入图片描述
Vivado2018.3下Slice的 device视图(器件型号:XC7K325TFFG676):
在这里插入图片描述

2.查找表(LUT,Look-Up Table)

查找表具备布尔函数发生的功能,实质为表达式的真值表(ROM),6个输入端口(A1 ~ A6),2个输出端口(O5 and O6)。可完成以下功能:
(1)6输入布尔函数发生:A1 ~ A6输入,O6输出;
(2)两个5输入(或更少的输入)布尔函数发生:A1 ~ A5输入(要求公共输入),A6输入高电平,O5、O6输出;
在这里插入图片描述
LUT输出信号的经过路径如上Figure2-4彩色线绘制的,包括:
1.O6直接输出SILCE到端口D
2.O6输出经过AOUTMUX到端口D
3.O6输出经管XOR异或逻辑门
4.O5输出进入CARRY进位链
5.O6输出至CARRY进位链中的MUX控制端口。
6.O5、O6直接输出或经过DFFMUX到FF的D输入端。
SILCE包含的三个数据选择器为F7AMUX、F7BMUX、F8MUX,作用是将LUT功能组合,提供范围更大的逻辑函数表达能力。其中F7AMUX将LUTA和LUTB的输出选择,扩大为7输入LUT(A6:1和B6:1并接作为输入低六位D6:1,AX为F7AMUX的控制信号,故作输入最高位D7),F7BMUX将LUTC和LUTD的输出选择(同AB端口),F7AMUX和F7BMUX的输出连接至F8MUX输入(A6:1、B6:1、C6:1、D6:1并接作为输入低六位D6:1,AX、CX和BX依次作为高三位D7:9)。

3.存储单元(Storage Elements)

通常认为Slice中的存储单元为触发器FF,其也可工作在锁存器latch模式下(较少使用且需慎用)。
每个Silce包含8个FF,其中4个FF无法作为LATCH使用(仅作为边沿触发的D-FF)。且当该4个FF作为LATCH时,其它4个FF将无法使用。
在这里插入图片描述
FF的控制引脚包括clock(CLK)、clock enable(CE)、set/reset(SR),每个slice内的控制线均连接在一起,clk的极性可以选择,CE和SR为高电平有效且极性不可变。对于FF/LATCH可选择的属性特点包括:
(1)SRLOW:SR信号置高有效时同步或异步复位(Q输出低电平)
(2)SRHIGH:SR信号置高有效时同步或异步置位(Q输出高电平)
(3)INIT0:上电或全局复置位时输出异步复位(Q输出低电平)
(4)INIT1:上电或全局复置位时输出异步置位(Q输出高电平)

在这里插入图片描述
INITx设置和SRx设置独立不影响,通常SRLOW和INIT0配合使用,SRHIGH和INIT1配合使用。
FF原语:
在这里插入图片描述
以上均基于Slice中FF元件实现,D为数据输入口;Q数据输出口,在时钟上升沿输出D端数据;C时钟输入端口;CE片选使能信号,当CE低电平时时钟无效,Q输出保持不变。
FDSE: Single Data Rate D Flip-Flop with Synchronous Set and Clock Enable (posedge clk).
S同步置位输入端口,高有效,时钟上升沿更新输出Q为高电平(S端优先级高于CE)
FDRE: Single Data Rate D Flip-Flop with Synchronous Reset and Clock Enable (posedge clk).
R同步复位输入端口,高有效,时钟上升沿更新输出Q为低电平(R端优先级高于CE)
FDPE: Single Data Rate D Flip-Flop with Asynchronous Preset and Clock Enable (posedge clk).
PRE异步置位输入端口,高有效,更新输出Q为高电平(PRE端优先级高于CE)
FDRE: Single Data Rate D Flip-Flop with Asynchronous Clear and Clock Enable (posedge clk).
CLR异步复位输入端口,高有效,更新输出Q为低电平(CLR端优先级高于CE)
例化模板,以FDSE为例,其余类似:
在这里插入图片描述
LATCH原语:
1.LDPE: 具备异步置位端的锁存器 (Transparent latch with Asynchronous Preset and Gate Enable)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.LDCE: 具备异步复位端的锁存器 (Transparent latch with Asynchronous Reset and Gate Enable)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 分布式RAM (Distributed RAM)

在SLICEM中,LUT可组成分布式RAM(Distributed RAM),支持级联扩容和端口数量配置。
在这里插入图片描述
在这里插入图片描述
DRAM端口模式:
(1)single port 单端口
同步写、异步读操作(必须是LUT D,其余LUT端口A、B、C无法写入操作),共享相同的地址总线。
(2)dual port 双端口
其中一个LUT可进行同步写、异步读操作,读写共享相同的地址总线;另一个LUT异步读操作,地址输入(A)连接到第二个只读地址端口,WA使能输入与第一个读写端口地址共享。
(3)simple dual port 简单双端口
一个端口同步写操作(不可读出数据),另一个端口异步读取。
(4)quad port 四端口
其中一个端口同步写、异步读操作,其他三个端口异步读(LUT端口A、B、C异步读)。
在这里插入图片描述
在这里插入图片描述
以RAM32M应用为32×2 四端口RAM为例,见下图Figure2-6。
在这里插入图片描述
在这里插入图片描述
Multiplexers 多路选择器
多路选择器作为函数发生器功能的一种,也是由LUT完成。
利用一个SLICE内的资源构成4:1和16:1的多路选择器如下所示。
在这里插入图片描述
在这里插入图片描述
verliog描述16:1数据选择器(多路复用器)如下,观察布线结果可以看出,占用了4个LUT和三个MUXF,恰为一个SLICE内的资源,其中sel选择输入端(深蓝色选中线)连接至MUXF控制端和LUT6的公共2位输入。
在这里插入图片描述
在这里插入图片描述

5.Carry Logic 进位链

在这里插入图片描述
通过CLB内进位链(CARRY4),可以更方便地实现大规模的逻辑函数发生,进位输入CIN可来自于相邻Slice内的CLB的进位输出COUT(必须上下相邻,不可跨列),进位链的级数受Slice的column高度限制。
Carry Logic的接口包括:
1.S0~S3: 4路LUT的输出O6,作为超前进位逻辑的“propagate”信号。
2.DI0~DI3:4路LUT的输出O5或AX输入,作为超前进位逻辑的“generate”信号。
3.CYINT:进位链的初始值,“1”时为加法逻辑,“0”时为减法逻辑,也可等于AX值进行动态可调整。
4.CIN、COUT:CARRY4的进位输入和进位输出,与相邻CARRY4的COUT和CIN相连,可实现更多级的进位链级联。
5.O0~O3:进位链对应位结果输出。
6.CO0~CO3:进位链对应进位结果输出。
进位链原理分析:
在7系列slice中每个CARRY可处理4位输入,故命名为“CARRY4”,CARRY4仅完成进位逻辑和结果输出,并不是仅仅依靠CARRY4实现加减法运算(即还需要LUT的配合参与)。在超前进位加法逻辑中,通过表达式化简,命名“propagate”为A ⨁▒ B,“generate”为A ∙ B,过程简要推导如下:
S=A ⨁ B ⨁ Cin
Co=A∙B+Cin∙(A+B)
令P=A ⨁ B,G=A∙B
P信号命名“propagate”传播信号,G信号命名为"generate"产生信号,
可以得到,S=P ⨁ Cin
Co=G+Cin∙P
对应到CARRY4中,P信号为从S0S3端口输入信号,G信号为从DI0DI3端口输入信号,S即O0~O3结果输出信号
在这里插入图片描述
通过上述图中对CARRY4中其中一路的代数分析可以发现,输出O1和CO1恰恰符合全加器的结果和进位输出模型,因此这是实现超前进位的基础,也解释了为什么CARRY采用MUXCY和异或门等结构。

三、相关时序模型

1.触发器时序

在这里插入图片描述

2.分布式RAM(SLICEM)时序

在这里插入图片描述
在这里插入图片描述
当WE为高电平时,进行写操作(同步),ADDR、DI、WE均需要满足对clk的setup时间要求,DATA_OUT输出与clk间存在TSHCKO的延时(此时数据输出也是同步的)。
当WE为低电平时,进行读操作(异步),ADDR输入(跳变)后经过TILO延时后DATA_OUT更新输出对应ADDR的数据,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hongney

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值