目录

  • 一、CLB结构
  • 二、SLICE结构
    • 1.CLB结构概览
    • 2.查找表(LUT,Look-Up Table)
    • 3.存储单元(Storage Elements)
    • 4. 分布式RAM (Distributed RAM)
    • 5.Carry Logic 进位链
  • 三、相关时序模型
    • 1.触发器时序
    • 2.分布式RAM(SLICEM)时序

参考文档:
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的数据,

Xilinx-7系列 CLB逻辑资源相关推荐

  1. FPGA block RAM和distributed RAM区别(以及xilinx 7系列CLB资源)

    原地地址:FPGA block RAM和distributed RAM区别 区别之1 block ram 的输出需要时钟,distributed ram在给出地址后既可输出数据. 区别之2 distr ...

  2. Xilinx 7系列FPGA中CLB结构和内部资源使用

    Xilinx 7系列FPGA中CLB结构和内部资源使用 7系列FPGA内部资源更加的更富,性能更强悍,最吸引人的就是28nm工艺使得相同的逻辑资源功耗降低50%,这是一个很大的提升,在单板硬件上仅仅降 ...

  3. Xilinx FPGA资源解析与使用系列——CLB

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Xilinx FPGA资源解析与使用系列--CLB 前言 CLB Overview Device Resources Recommen ...

  4. 11,xilinx 7系列FPGA理论篇——IO逻辑资源简介

    注:学习.交流就在博主的个人weixin公众号 "​​​​​​​FPGA动力联盟" 留言或直接+博主weixin "fpga_start" 私信~ 上篇咱们简单 ...

  5. Xilinx Altera FPGA中的逻辑资源(Slices VS LE)比较

    前言 经常有朋友会问我,"我这个方案是用A家的FPGA还是X家的FPGA呢?他们的容量够不够呢?他们的容量怎么比较呢?"当然,在大部分时候,我在给客户做设计的时候,直接会用到最高容 ...

  6. Xilinx Altera FPGA中的逻辑资源(Slices VS LE)比较

    前言 经常有朋友会问我,"我这个方案是用A家的FPGA还是X家的FPGA呢?他们的容量够不够呢?他们的容量怎么比较呢?"当然,在大部分时候,我在给客户做设计的时候,直接会用到最高容 ...

  7. FPGA基础知识2(Xilinx Altera FPGA中的逻辑资源 --Slices VS LE比较)

    来源:http://www.union-rnd.com/xilinx-vs-altera-slices-vs-les/ 前言 经常有朋友会问我,"我这个方案是用A家的FPGA还是X家的FPG ...

  8. FPGA基础知识 2(Xilinx/Altera FPGA 中的逻辑资源--Slices VS LE 比较)

    前言 经常有朋友会问我,"我这个方案是用A家的FPGA还是X家的FPGA呢?他们的容量够不够呢?他们的容量怎么比较呢?"当然,在大部分时候,我在给客户做设计的时候,直接会用到最高容 ...

  9. FPGA - 7系列 FPGA内部结构之CLB -01- CLB资源概述

    前言 本文节选UG474进行整理翻译,用于对CLB进行简单介绍,同时简单介绍了下针对逻辑资源设计的推荐流程. CLB简介 7 系列可配置逻辑块 (CLB) 提供先进的高性能 FPGA 逻辑: 真6 输 ...

最新文章

  1. android里的editText怎么用,Android自定义控件EditText使用详解
  2. 聚类算法(2):系统聚类/层次聚类算法
  3. 在安装sql server时出现“以前的某个程序安装已在安装计算机上创建挂起的文件操作。运行安装程序之前必须重新启动计算机”错误。...
  4. Thinkphp 验证码、文件上传
  5. pat乙级 1014 java_pat乙级1014 福尔摩斯的约会
  6. Spring Boot——@ConfigurationProperties与@Value的区别
  7. 你活了多久----快用Python计算一下日期
  8. Linux系统如何连接和上传文件到服务器上
  9. 画面设置_LOL手游设置界面翻译:基本设置/画面/音效/功能与快捷语音
  10. mfc 使打开的窗口至于最顶层_MFC界面开发控件BCG帮助文档——功能区设计器(2)
  11. Linux终端基本命令
  12. 山东计算机软考题库,软考习题库
  13. 正则表达式(判断中文,判断英文字母、下划线、数字)
  14. Android 9 低内存应用程序保活
  15. Win10在某些程序输入中文变成问号的解决方法
  16. 太乐地图下载器 V5.0.5 破解版
  17. 记录nodejs使用express搭建一个api服务器程序(5)-nodejs操作SQL数据库,Sequelize和Knex
  18. ICDsoft主机半价优惠码推荐
  19. 几款主流快速开发平台比较
  20. 2023美赛数学建模竞赛 C题思路分析

热门文章

  1. 以太坊(Ethereum) - 什么是智能合约
  2. 服务器看门狗芯片电路图,看门狗芯片MAX708的工作原理及数 - 电源设计应用 - 电子发烧友网...
  3. kali linux 工具使用之 001 dnsenum
  4. 今日头条前端面试过程与面试题
  5. 互联网等三行业跻身VC投资前三甲
  6. 2021.07.13【B站】是这样崩的
  7. YTU 2914: xiaoping学构造函数
  8. 踩实底子|每日学习|02-特征工程和文本特征提取【下】
  9. “80后”古宅修复者辗转5省 用匠心唤醒老宅魅力
  10. oracle在表中增加字段