xilinx7系列FPGA主要包括:Spartan®-7/Artix®-7/Kintex®-7/Virtex®-7。其性能/密度/价格也随着系列的不同而提升。其中以Virtex-7有着极高的系统性能和资源。本篇主要介绍其组成的基本单元configurable logic blocks(CLBs)。通常来说,我们不需要关心或参与逻辑综合过程CLBs资源的分配。但是如果遇到了性能/时序挑战的时候,就需要重新审视设计,掌握每一个可利用的资源。比如distributed RAMs和Block RAMs互换(在可替换的前提下)、DSPs与LUT设计等。同时也有助于掌握更深层次的设计,设计出更加合理的HDL代码,和XDC约束文件。

本文主要参考:xilinx官方文档UG474《7 Series FPGAs Configurable Logic Block》和White Paper《Xilinx 7 Series FPGAs:The Logical Advantage》。

CLBs是实现时序逻辑组合逻辑电路的主要逻辑单元。一个CLB由两个slice组成,而每个slice由4个6输入LUT、8个FF、复用器和算术进位单元组成。同时SLICE有区分为二:SLICEL和SLICEM(没有看到缩写L/M全程,个人认为是Logic和Multiple缩写,从下面定义可以看出)。大约2/3的是SLICEL(只能用于logic),剩下的是SLICEM(还可以用于distributed RAMs/SRLs32/SRLs16)。每个CLBs是通过Switch Matrix routing,并不是直接互联。注意到一句话:Four flip-flops per slice (one per LUT) can optionally be configured as latches. In that case, the remaining four flip-flops in that slice must remain unused.每个slice中的4个FF可以做锁存器,但是剩下的4个FF不能够再使用,也就是说有50%的资源浪费。这也就是为什么教科书上说,尽量避免latchs使用,除了时序问题之外,还有资源浪费。从芯片资源手册也可以看出,以kintex-7为例:

Slices = SliceL + SliceM;SliceL / SliceM = 2;Slices / LUTs = 4;FF / Slices = 8。

两个slice分别位于CLB的左列底部和右列顶部。这两个slice不是直接互联,而是以列为单位,通过一个独立的进位链(Cout&&Cin)

接。如下图所示:

通过以上的分析,每个CLBs具体的资源配置如下:

注意:如前面所述,只有SLICEM可以配置成distributed RAMs和SRLs。

通过xilinx vivado提供给implementment,可以看到实际情况(vivado 2017.4 kintex 7为例):

每个CLB包括两个slice(两个SLICEL或者一个SLICEM一个SLICEM·)---8个6输入LUTs(逻辑产生单元),16个FF,以及3个Multiplexer(F7AMUX/F7BMUX/F8MUX)和carry chain组成。

LUT:由6个独立的输入A1-A6和两个独立的输出组成O5、O6。

能够实现:

1. 任意的6输入布尔逻辑:A1-A6作为输入,O6作为输出。

2. 两个5输入或者更少的:A1-A5作为输入,A6高,O5和O6作为输出。

经过LUTs的信号可以:不做操作(直接出来slice)/从O6出来进入XOR专用门/从O5出来进入进位链/接入D触发器输入/从O6进入F7AMUX/F7BMUX。F7AMUX和F7BMUX作用是组合4个LUTs,在一个slice中产生任意的7或者8输入。对于大于8输入的逻辑,则需要多个slice。值得注意的是对于大于8输入的多个slice,没有直接连接在一起。

下面深入理解一下上面文档的含义:

  1. always@(posedge sys_clk)
  2.    begin
  3.       case(key_in)
  4.       6 'b000_001: key_edge <= 1'b1;
  5.       6 'b000_010: key_edge <= 1'b0;
  6.       6 'b000_100: key_edge <= 1'b1;
  7.       6 'b001_000: key_edge <= 1'b0;
  8.       6 'b010_000: key_edge <= 1'b1;
  9.       6 'b100_000: key_edge <= 1'b0;
  10.       default:key_edge <= 1 'b1;
  11.       endcase
  12.     end
在资源报告中,只占用了一个LUT和1一个FF。可以看出,7series的fpga的确是6输入的LUT(A1-A6),输出O6,直接接在FF上。

7系列FPGA是Xilinx新推出的基于28nm工艺的FPGA,其中包含三个系列:Artix、Kintex和Virtex。因项目要使用kintex7为平台做设计,需要对其内部结构做了研究,首先从CLB(Configurable Logic Block)开始:

CLB构成了Kintex7主要逻辑单元,其中包含2个Slice,并且Slice分为2种:SLICEL和SLICEM,SLICEL为普通的Slice逻辑单元,而SLICEM在基本逻辑功能的基础上可以扩展为分布式RAM或者移位寄存器。在所有Slice资源中,有2/3是SLICEL,因此一个CLB可以有2个SLICEL或者1个SLICEL、1个SLICEM组成。

如图1所示为SLICEM的内部结构,其中包含4个6输入LUT(红色圈)、进位链(黄色圈)、多路复用器(蓝色圈)和8个寄存器(绿色圈)。

图1

6-input LUT:此处LUT沿用了Xilinx 6系列FPGA的6输入LUT结构,6-input LUT内部是由2个5-input LUT组成,有两个输出分别对应O­6和O5。在设计中,如果综合后有2个5-input LUT需要是使用,如果在ISE将综合选项-lc(LUT Combining)设置成Area,综合器XST会将这2个5-input LUT合并在一个6-input LUT中实现,但是此选项相当于以速度换面积,随之逻辑延时将增大。

寄存器:此处Xilinx区别于Altera器件,其1个LUT对应了2个register,而Altera器件中是一一对应的。从图中可以发现,第2列的register比第1列多了FF/LAT这个选项,这表示第1列的register只能作为Flip-Flop使用,而第2列的register既能作为Flip-Flop也能作为Latch使用。另外还有INIT0、INIT1、SRLO和SRHI 四个选项,其中INIT0和INIT1配对,表示通过GSR全局复位/置位,此复位/置位网络为异步的;而SRLO和SRHI配对,表示高电平有效信号SR驱动的复位/置位,此信号可以配置成异步或者同步,但这8个register共用一个SR信号,因此其方式必须相同,根据此特性,建议写代码时,复位/置位方式选择同步高电平有效。

下面对SLICEM做一下重点说明,其可扩展成移位寄存器,如图2所示,Slice中的每个LUT可配置成32-bit的Shift Register,因此1个Slice最多可扩展成128-bit的Shift Register。其操作模式为1个时钟周期移1为,通过D输入端输入,并且最后1位通过MC31输出,并且可以以A[6:2]作为5位地址选择O6输出32位中的某一位进行输出。

图2

在写代码时,可以按规范写出移位寄存器的形式,如以下代码所示:

always@(posedge clk)

if(clk_en)

srl<={srl[31:0],din};

assign dout0=srl[20];

以上代码综合出的结构如图3所示,综合器只用了1个LUT和1个FF就实现了21-bit的移位寄存器,只需1个Slice。

图3

如按一下代码进行综合后得到结构如图4所示,综合器使用了21个FF实现了这个21-bit移位寄存器,则需要21个Slice。

always@(posedge clk)

if(rst)

srl<=32’d0;

else

if(clk_en)

srl<={srl[31:0],din};

assign dout0=srl[20];

图4

为什么综合器会产生不同的结构?分析一下代码的区别,第二段代码相比于第二段代码多了一个同步复位功能,而根据SLICEM的结构,其中的LUT是没有同步复位控制输入端的,因此综合器无法将代码综合成想要的结构,因此写代码时需要根据相应的结构来编写。

观察图3可以发现,在SRLC32E输出端Q后又接入了一个FF作为同步输出,查手册后发现,此移位寄存器可以配置成两种输出模式:静态地址方式和动态地址方式,这两种模式的不同之处在于静态地址方式是同步输出,图3中结构是静态地址方式;而动态地址方式是异步输出,即没有后接FF直接从SRLC32E的Q端输出,以下代码表示动态地址方式,其中addr是一个变量。

always@(posedge clk)

if(rst)

srl<=32’d0;

else

if(clk_en)

srl<={srl[31:0],din};

assign dout0=srl[addr];

对上面的代码进行综合可以得到如图5所示结构,确定输出为异步输出,因此在设计中要注意此处的变化。

图5

转自:https://blog.csdn.net/nearcsy/article/details/80418962

https://blog.csdn.net/xuexiaokkk/article/details/48340719

Xilinx-7系列FPGA架构—— CLB相关推荐

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

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

  2. Xilinx 7系列FPGA架构 SelectIO 常见电平标准和阻抗匹配(精华)

    7系列FPGA支持非常宽的I/O电压标准,本文介绍以下典型的I/O电压标准及端接匹配电路: (1)LVTTL I/O标准 (2)LVCMOS I/O标准 (3)TMDS I/O标准 (4)LVDS和L ...

  3. Xilinx 7系列FPGA收发器架构之硬件设计指导(一)

    引言:本文我们介绍Xilinx 7系列FPGA收发器硬件设计主要注意的一些问题,指导硬件设计人员进行原理图及PCB设计.本文介绍以下内容: GTX/GTH收发器管脚概述 GTX/GTH收发器时钟设计 ...

  4. Xilinx 7系列FPGA介绍

    2015年11月,Xilinx推出Spartan®-7 FPGA系列 赛灵思公司今天宣布为成本敏感型应用推出灵活的 I/O 密集型器件--Spartan®-7 FPGA系列.该新型系列器件可满足汽车. ...

  5. Xilinx 7系列FPGA概览

    Xilinx 7系列FPGA概览 文章目录 Xilinx 7系列FPGA概览 1.Xilinx的四个工艺级别 2.Virtex.Kintex.Artix和Spartan 3.7系列特点 4.7系列命名 ...

  6. Xilinx 7系列FPGA之Virtex-7产品简介

    Xilinx Virtex-7 系列FPGA:高密度.低功耗的28nm技术带来的性能革新 挑战:难以满足的带宽需求 为下一代网络实施高级串行连接标准 提高数据处理性能 让产品更快上市 满足受限的功率预 ...

  7. xilinx7中管脚mrcc和srcc_Xilinx 7系列FPGA架构之SelectIO结构(一)

    引言:从本文开始我们介绍Xilinx 7系列FPGA的SelectIO资源结构及使用,我们在进行FPGA外设硬件及软件设计时,如ADC.PHY.DDR3等,通常会涉及到该资源.本节我们介绍以下知识点: ...

  8. Xilinx zynq-7000系列FPGA移植Linux操作系统详细教程

    Xilinx zynq-7000系列FPGA移植Linux操作系统详细教程 一:前言 最近手上压了一块米联客的Miz7035,一块xilinx zynq-7000系列的开发板,想着正好学习一下linu ...

  9. 基于Xilinx Kintex-7系列FPGA高端设计的TLK7-EVM评估板简介

    TLK7-EVM评估板简介 创龙科技TLK7-EVM是一款基于Xilinx Kintex-7系列FPGA设计的高端评估板,由核心板和评估底板组成.核心板经过专业的PCB Layout和高低温测试验证, ...

最新文章

  1. Unity学习笔记4 更换编辑器为VS2013及VS的背景图片设置
  2. Linux下对文件操作时出现乱码怎么办?
  3. vision transformer(viT)教学视频【通俗易懂】
  4. JDBC的那点事之DatabaseMetaData之获取数据库所有表
  5. 常用的工具网站和收藏文章
  6. 录屏---EV录屏软件windows下使用说明
  7. Windows7安装java
  8. echarts+3d饼图
  9. 华裔数学天才陶哲轩的传奇
  10. 编译Libtorrent
  11. 开发版速达扩展功能-提供便捷的界面布局功能
  12. div水平(横向)/垂直排列
  13. Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon runn
  14. 【intellij】External and inferred annotations
  15. bixby怎么编程_三星的Bixby很烂。 这是如何将其关闭。
  16. CSR8675模组,支持蓝牙APTX
  17. mstsc 后 不锁屏
  18. UCK全球路演走进佛山,跨链技术将加速区块链商业应用
  19. java cs 顺丰运单_JAVA接入顺丰快递
  20. Yocto系列讲解[实战篇]42 - bb文件中的几个关键词require DEPENDS inherit

热门文章

  1. STM32开发 -- 低功耗模式详解
  2. 采样开关的作用计算机控制,计算机控制系统复习要点
  3. 春季活动策划案例合集(共25份)
  4. 谷歌账号被停用应该用什么方法进行找回(2022最新)
  5. SEO-搜索引擎优化
  6. 此语言无法安装在此计算机,[修复]无法在Windows 10中安装语言包 | MOS86
  7. JavaScript——JSON
  8. sql语句中的limit用法
  9. 全自动叠片式过滤器结构、原理说明
  10. 计算机键盘分为哪几个键区,标准键盘一般分为哪四个键区