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的移位寄存器。
关于同步写和异步读
同步写:操作需要与时钟同步,在时钟的上升沿数据和地址被写入。
异步读:操作与时钟无关,只要给一个地址就可以立刻获取到数据。
关于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。
触发器和锁存器拥有多个控制信号,主要有时钟信号CLK,时钟使能信号CE,置位复位信号SR。除了这些主要的控制信号,在综合一个工程是使用到触发器时综合器自动设置额外的信号配置触发器,例如:
SRLOW该信号是设置触发器工作在同步复位还是异步复位,SRHIGH该信号是设置触发器工作在同步置位还是异步置位。(同步和异步的设置只能对整个Slice进行设置,不能单独对某一个触发器设置)
INIT0是表示异步复位在上电时期还是全局置位或复位时期,INIT1表示异步置位在上电时期还是全局置位或复位期间。
SR信号控制触发器输出高电平(置位),低电平(复位)由SRLOW和SRHIGH控制(本质上是控制SR为复位信号还是置位信号),控制方式如下表
关于分布式RAM
SLICEM中的LUT可以实现分布式RAM,有读写功能。
分布式RAM可以实现多种端口和多种位数的存储功能,如下图表示,相比实现的端口和位数越多,需要使用的LUT也就越多。 Single port 单端口模式读写只共用一个地址总线
Dual port 双端口模式 一个端口用来同步写或异步读,另一个端口用来异步读
Simple dual port 简单双端口 一个端口只用来同步写,另一个端口用来异步读
Quad port 四端口 一个端口用来同步读或者异步写,另外三个端口用来异步读
典型的分布式RAM和它的资源占用情况图解:
32*4Q
单个LUT最高支持2bit位宽,由其输入和输出接口数量有关,DI1 DI2 构成两位的输入口,DOD[0]和DOD[1]构成两位输出口,一个LUT构成一个Single Port ,四个LUT构成Quad Port.
32*6D
单个LUT最多支持2bit,所以6bit需要3个LUT组合成32*6D
64*1S
单端口时,读写数据的地址使用同一通道。当4组641S个LUT再共用一个地址通道,在一片SLICEM中可以构成644S分布式RAM
64X1D
双端口读写数据需要不同的地址通道,需要两个LUT实现,同理,如果需要实现64*1Q 4通道则需要四个LUT。
一个LUT最高可以实现641 Simple Dual 和 322 Simple Dual的分布式RAM 如果需要实现643 Simple Dual 则至少需要三个LUT 如图:
如果需要实现大于64深度的分布式RAM则需要使用多路复用器 (F7AMUX, F7BMUX, and F8MUX)来互联实现,例如:实现一个128 X 1 Single Port Distributed RAM 通过两个LUT的输出口连接一个F7BMUX的多路复用器则可以得到一个1281bit的分布式RAM,如图:
128X1S
同理的如果要实现深度为更高的256则需要通过两个深度为128的输出来输入到一个多路复用器,例如 256 X 1 Single Port Distributed RAM
SLICEM和SLICEL的LUT都可以构成分布式ROM,只读,不可写,多深度的实现也需要使用多路复位器进行叠加。
关于移位寄存器
SLICEM另一个特殊的功能是可以实现移位寄存器(不使用触发器),在SLICEM中单个LUT可以实现32个时钟延时,一个SLICEM中的4个LUT最多可以实现128个时钟延时。
在LUT的地址输入端使用了高5位的地址,数据输入端可以是来自上一个LUT的输出,也可以直接输入,数据的输出端有两种功能,第一个功能是可以在MC31固定的每个时钟周期输出一位数据,也可以动态的在O6上根据地址异步的读出LUT内的数据。
一个LUT最多支持32位移位寄存器,若想扩展可通过多个LUT进行多路复用器(F7AMUX, F7BMUX, and F8MUX)连接,;例如64bit 和 96bit的移位寄存器
Xilinx 7系列 FPGA CLB资源介绍相关推荐
- Xilinx 7系列FPGA中CLB结构和内部资源使用
Xilinx 7系列FPGA中CLB结构和内部资源使用 7系列FPGA内部资源更加的更富,性能更强悍,最吸引人的就是28nm工艺使得相同的逻辑资源功耗降低50%,这是一个很大的提升,在单板硬件上仅仅降 ...
- Xilinx 7系列FPGA介绍
2015年11月,Xilinx推出Spartan®-7 FPGA系列 赛灵思公司今天宣布为成本敏感型应用推出灵活的 I/O 密集型器件--Spartan®-7 FPGA系列.该新型系列器件可满足汽车. ...
- Xilinx 7系列FPGA PCB设计指导(二)
引言:我们继续介绍FPGA PCB设计相关知识,本章介绍7系列FPGA的配电系统(PDS),包括去耦电容器的选择.放置和PCB几何结构,并为每个7系列FPGA提供了一种简单的去耦方法.另外,还介绍了P ...
- Xilinx 7系列FPGA概览
Xilinx 7系列FPGA概览 文章目录 Xilinx 7系列FPGA概览 1.Xilinx的四个工艺级别 2.Virtex.Kintex.Artix和Spartan 3.7系列特点 4.7系列命名 ...
- Xilinx zynq-7000系列FPGA移植Linux操作系统详细教程
Xilinx zynq-7000系列FPGA移植Linux操作系统详细教程 一:前言 最近手上压了一块米联客的Miz7035,一块xilinx zynq-7000系列的开发板,想着正好学习一下linu ...
- Xilinx 7系列FPGA收发器架构之硬件设计指导(一)
引言:本文我们介绍Xilinx 7系列FPGA收发器硬件设计主要注意的一些问题,指导硬件设计人员进行原理图及PCB设计.本文介绍以下内容: GTX/GTH收发器管脚概述 GTX/GTH收发器时钟设计 ...
- Xilinx 7系列FPGA之Virtex-7产品简介
Xilinx Virtex-7 系列FPGA:高密度.低功耗的28nm技术带来的性能革新 挑战:难以满足的带宽需求 为下一代网络实施高级串行连接标准 提高数据处理性能 让产品更快上市 满足受限的功率预 ...
- 基于Xilinx Kintex-7系列FPGA高端设计的TLK7-EVM评估板简介
TLK7-EVM评估板简介 创龙科技TLK7-EVM是一款基于Xilinx Kintex-7系列FPGA设计的高端评估板,由核心板和评估底板组成.核心板经过专业的PCB Layout和高低温测试验证, ...
- 创龙Xilinx Artix-7系列FPGA开发板的拨码开关、拓展IO
TLA7-EasyEVM开发板是一款由广州创龙基于Xilinx Artix-7系列FPGA自主研发的核心板+底板方式的开发板,可快速评估FPGA性能.核心板尺寸仅70mm x 50mm,采用沉金无铅工 ...
最新文章
- redis 常用配置
- LVI-SAM:紧耦合的激光视觉惯导SLAM系统(Tixiao Shan新作,已开源)
- futuretask使用_JDK源码分析-FutureTask
- adb通信协议分析以及实现(二):adb服务进程发现设备
- Liferay研究-smilingleo
- 用了Elasticsearch后,查询起飞了!
- 委派用户管理Hyper-v
- python画相关性可视化图_Python可视化很简单,一文教你绘制饼图、极线图和气泡图...
- php 查找键名,array_key_exists()函数搜索数组键名步骤详解
- maven添加子工程_Maven建立父子项目和跨项目调用内容的步骤—佳佳小白
- member pm.php,Dedecms 会员中心注入漏洞5
- [转]WF事件驱动(1)
- java run() 返回值_java线程的run()没有返回值怎么办?
- IKVM.NET_第一篇_概述
- oc实时渲染的图如何导出_一键AO插件拯救你的白模分析图(附插件和教程)
- 介绍一款国际性的本体社群聊天软件Discord
- 卡诺模型案例分析_设计师必修课:KANO 模型的讲解与案例分析
- 瑞星千万巨款贿赂官员 制造冤狱铲除竞争对手图片
- JavaSE银行账户管理系统
- Arduino的控制(一):Arduino步进电机六轴机械手(油管搬)