Xilinx-7系列之可配置逻辑块CLB

news2024/11/30 2:27:49

目录

一、概览

二、CLB结构

三、Slice内部结构

3.1 SliceM结构

3.2 SliceL结构

3.3 查找表LUT

3.4 多路复用器

3.5 存储单元

3.6 进位逻辑

四、应用

4.1 分布式RAM

4.2 ROM(只读存储器)

4.3 Shift Registers( 移位寄存器)

4.4 存储资源容量估算

五、参考资料


一、概览

二、CLB结构

    可配置逻辑块CLB(Configure Logic Block)是实现组合逻辑和时序逻辑的主要资源,由一对Slice(片单元)组成,每一个CLB都是连接到了一个交换矩阵(Switch Matrix)中。

    每个Slice资源包含4个6输入的LUT,8个FF以及MUX和Carry。Slice又可分为SliceL和SliceM两种类型,在7系列器件中,大约2/3的Slice为SliceL,其余为SliceM,两者区别是SliceM可配置为分布式RAM(Distribute RAM)和移位寄存器,SliceL则不行。

    每个CLB都包含一对Slice,这对Slice可能都是SliceL或是一个SliceLSliceM。属于一个CLB中的SliecL和SliceM是独立的,无相互连接的线路,只有属于同一列的Slice之间才会通过进位链进行连接。每个Slice有一个坐标XcYr,r为slice的列序号,c为行序号,同一个CLB的slice行序号是相同的。

三、Slice内部结构

3.1 SliceM结构

3.2 SliceL结构

    SliceM和SliceL的大体结构相同,唯一的区别在于SliceM中每个LUT6的输入多了一路DI,并且CE信号中多了WE控制,正是这一差异使得SliceM可以将LUT配置成移位寄存器和分布式RAM。

3.3 查找表LUT

    7系列器件中,可用LUT(Look-Up Table)实现函数生成器,LUT为6输入的LUT6。在一个Slice中,每个LUT6可作为一个6输入的LUT6或是2个5输入的LUT5,也可以是2个小于5输入的LUT。

    6输入的LUT6时,A1-A6为输入,O6为输出。作为2个5输入或更少输入的LUT时,A1-A5为输入,A6为高电平,O5和O6作为两个LUT的输出。

3.4 多路复用器

    每个slice都包含3个多路复用器:F7AMUX,F7BMUX,F8MUX。F7AMUX,F7BMUX可将两个LUT6组合7输入的LUT7,F8MUX可将两个LUT7组合成8输入的LUT8。

    1个LUT6可以实现4:1的选择器,2个LUT6可实现8:1的选择器,4个LUT6可实现16:1的选择器,以16:1的多路选择器为例,从每个LUT中选择2位D[1:0]作为选择位,其余4位D[3:0]作为数据选择输入位,4个LUT共16个选择输入位,结合F7AMUX,F7BMUX,F8MUX,选择位为4位,组合后即是有16种结果。

    

3.5 存储单元

    CLB中信号存储是通过触发器实现,每个Slice中包含8个触发器,前面4个只能配置为边沿触发的D触发器,后面4个可配置为D触发器或电平触发的锁存器。当后面4个配置为锁存器时,前面4个FF将不能被使用。

    在下图中,8个FF是共用SR,CE,CLK信号,两个FF中如果存在控制信号不同,则不能放置到同一个slice中。8个FF都可以配置为不使用置位,复位,同步置位,同步复位,异步置位,异步清零的FF。

    8个FF中,前4个和后4个FF的D端口数据来源也不同,前者来自LUT6的O5输出,后者来自LUT6的O6输出。同时,也都可以来自外部Switch matrix,通过AX,BX,CX,DX进入

3.6 进位逻辑

    Carry可以快速实现算术加减法运算,一个slice包含一条进位链,同一列的slice可以进行级联实现更多位的加减法逻辑。

四、应用

4.1 分布式RAM

    前面的章节提到sliceM可以配置为分布式RAM,RAM是中随机存取数据的单元,根据地址可对RAM进行读写操作。分布式RAM指由LUT构成的RAM,除了分布式RAM,还有专用的BRAM单元,用于存储更多的数据,少量的数据建议用分布式RAM。

    以器件xc7k480tffv1156-1为例,BRAM分布如下图红色小方块,按列分布。

    分布式RAM根据规格大小以及端口类型可划分如下,规格中包含了RAM的深度和宽度,格式为深度x宽度+端口类型,端口类型包括单端口,双端口,四端口,简单双端口,原语即为设计时进行实例化时使用。

    涉及到具体器件时会存在差异,具体可在Language Templates中搜索RAM查看LUTRAM

     分布式RAM是同步写入,异步读取,在写使能信号WE为高电平时,并且处于时钟跳变沿时,数据写入到RAM中指定地址的空间中。数据读取则是异步操作,每次地址引脚的数据更新后,在经过LUT的时延后将指定地址的数据输出。

4.2 ROM(只读存储器)

    CLB中SliceL和SliceM的单个LUT都可以实现64*1比特的ROM,因为包含4个LUT,当对4个LUT都进行配置时,可实现ROM256*1比特的ROM

4.3 Shift Registers( 移位寄存器

    移位寄存器可用于延时补偿,实现同步FIFO,进行跨时钟域。CLB中的SliceM可以只使用LUT,不使用FF来配置成32比特的移位寄存器,单个LUT可实现数据1-32个时钟周期的延时也可将一个SliceM中的4个LUT进行级联,可最大实现128个时钟周期的延时。若需更大的移位,可将SliceM级联。

    使能信号CE与时钟同步,固定的在Q31中读取数据,LUT的最低有效为A[1]未被使用,工具将自动将其值设为1,A[6:2]为5位的地址,数据在Q(LUT6的O6)中进行输出。如果要进行同步读取数据,则将输出O6连接到一个FF中。移位寄存器不支持置位或复位,但在配置后可将其初始化为任何值。

4.4 存储资源容量估算

    根据对实现分布式RAM,移位寄存器的实现可以根据器件的SliceM和FF资源数计算最大容量,一个LUT6可实现64bit的分布式RAM,一个SliceM可实现的容量为4*64bit=256bit,4个SliceM可实现4*256bit=2^10bi=1Kb。因此,SliceM的数量为分布式RAM容量的大小的4倍。

    下表为Artix-7系列器件资源表,SliceM数量和分布式RAM数量关系基本符合4倍左右。

五、参考资料

官网用户手册《ug474_7Series_CLB.pdf》

文档获取

链接:https://pan.baidu.com/s/1doSb8K0EJF8GQr6lGOWYyw 
提取码:svhl

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/951532.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【【萌新的STM32学习23----数据通信的基本类型】】

萌新的STM32学习23----数据通信的基本类型 数据通信的基本概念 数据通信方式可以分为串行通信,并行通信 串行通信: 数据逐位按顺序依次传输 并行: 数据各位通过多条线同时传输 串行通信: 传输效率低,抗干扰能力强&am…

Milk-V Duo开发板实战——基于MobileNetV2的的图像分类

Milk-V Duo开发板实战——基于MobileNetV2的的图像分类 本教程介绍使用TPU-MLIR工具链对MobileNet-Caffe模型进行转换,生成MLIR以及MLIR量化成INT8模型,并在Milk-V Duo开发板上进行部署测试,完成图像分类任务,涉及以下步骤&#…

ELK安装、部署、调试(三)zookeeper安装,配置

1.准备 java安装,系统自带即可 2.下载zookeeper zookeeper.apache.org上可以下载 tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz -C /usr/local mv apache-zookeeper-3.7.1-bin zookeeper 3.配置zookeeper mv zoo_sample.cfg zoo.cfg /usr/local/zookeeper/con…

界面控件Telerik UI for WPF——Windows 11主题精简模式提升应用体验

Telerik UI for WPF拥有超过100个控件来创建美观、高性能的桌面应用程序,同时还能快速构建企业级办公WPF应用程序。Telerik UI for WPF支持MVVM、触摸等,创建的应用程序可靠且结构良好,非常容易维护,其直观的API将无缝地集成Visua…

ASP.NET修改默认端口

找到发布目录下的appsettings.json文件 加入下面内容 "Kestrel":{"Endpoints": {"Https": {"Url": "https://*:8827"},"Http": {"Url": "http://*:8828"}}} 不使用https的话去掉https,修改…

24.动画魔术菜单指示器

效果 源码 <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Creative CSS Navigation Indicator</title> <link rel="stylesheet" hre…

Linux 内核动态打印调试(dev_info、 dev_dbg )

目录 前言 1 printk消息级别 2 调整内核printk打印级别 3 dev_xxx函数简介 4 配置内核使用动态打印 5 动态调试使用方法 6 动态打印调试的基本原理 &#x1f388;个人主页&#x1f388;&#xff1a;linux_嵌入式大师之路的博客-CSDN博客&#x1f389;&#x1f389;&…

中间件环境搭建配置过程解读

中间件环境搭建 目录 中间件环境搭建xampp 搭建环境Tomcat环境配置安装mysql连接mysql 问题解决 xampp 搭建环境 安装xampp服务集成环境工具 官网地址下载项目压缩包&#xff0c;将项目文件夹放在xampp安装目录的htdocs文件夹下初始化xampp&#xff1a;运行目录内的setup_xamp…

【java】【已解决】IDEA启动报错:Lombok Requires Annotation Processing

解决办法&#xff1a; 1、根据异常提示操作&#xff1a; 直接点击错误提示后面的蓝色标识【Enable】&#xff08;小编点完了所以变灰色&#xff09;&#xff0c;此操作等价于下面的步骤&#xff1a; 【File】-->【Settings】-->【Build】-->【Compiler】-->【Ann…

vue、uniapp如何在js中获取scss的变量

举例&#xff1a;在uniapp中会有一个uni.scss文件&#xff0c;我这边声明了一个$my-nav-bgColor的变量 uni.scss已经预处理过了&#xff0c;我们不需要引入可以直接使用 如果要在js中使用 需要在uni.scss中导出 在你要用的页面引入 就可以正常使用了 自己定义的scss文件…

html中如何用vue语法,并使用UI组件库 ,html中引入vue+ant-design-vue或者vue+element-plus

html中如何用vue语法&#xff0c;并使用UI组件库 前言 先说一下本次应用的场景&#xff0c;本次项目中&#xff0c;需要引入github中别人写好的插件&#xff0c;插件比较大&#xff0c;没有方法直接在自己项目中&#xff0c;把别人的项目打包合并生成html&#xff08;类似于前…

阿里云效和阿里在线idea使用

阿里云效 https://flow.aliyun.com/all?page1 阿里在线idea&#xff1a;https://ide.aliyun.com/ 在云效中创建的项目可以在在线idea 打开 运行中的项目 设置ssh 设置以后可以使用云效率的代码构建来构建代码 设置 添加自有云或者体验5h

十五、模板方法模式

一、什么是模板方法模式 模板方法&#xff08;Template Method&#xff09;模式的定义如下&#xff1a;定义一个操作中的算法骨架&#xff0c;而将算法的一些步骤延迟到子类中&#xff0c;使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。 模板方法模式包含以…

postgis数据库从一张表中过滤出一部分数据到新表中

你可以使用以下步骤在PostGIS数据库中过滤objectid<100的数据&#xff0c;并将其创建为新表&#xff1a;打开PostGIS数据库的终端或客户端工具&#xff08;如Psql&#xff09;。 选择你要过滤数据的表。假设表名为"original_table"&#xff0c;该表包含一个名为&q…

netmap安装使用

文章目录 1、安装编译netmap2、使用netmap3、运行编写自己的代码 1、安装编译netmap github地址 git clone https://github.com/luigirizzo/netmap 1、进入目录 cd netmap-master/LINUX 2、安装编译环境 apt-get install build-essential 3、初始化配置环境 ./configure 出现这…

若依富文本 html样式 被过滤问题

一.场景 进入页面&#xff0c;富文本编辑框里回显这条新闻内容&#xff0c;如下图&#xff0c; 然后可以在富文本编辑框里对它实现再编辑&#xff0c;编辑之后将html代码提交保存到后台数据库。可以点击详情页进行查看。 出现问题&#xff1a;在提交到后台controller时&#x…

Spring Boot 中是使用 JDK Proxy 动态代理还是 CGLib ?

1. Spring Boot 中是使用 JDK Proxy 动态代理还是 CGLib ? 首先我们知道在 Spring 里面&#xff0c;动态代理的底层&#xff0c;默认使用的是 JDK Proxy 代理&#xff0c;这一点在官方文档有具体的说明&#xff1a; 既然 Spring 中的动态代理默认使用 JDK Proxy&#xff0c;那…

交换机端口安全实验

文章目录 一、实验的背景与目的二、实验拓扑三、实验需求四、实验解法1. PC配置IP地址部分2. 在SW1上开启802.1X身份验证3. 创建一个用户身份验证的用户。用户名为wangdaye&#xff0c;密码为1234564.创建一个端口隔离组&#xff0c;实现三台PC无法互相访问 摘要&#xff1a; 本…

记录 使用 git 克隆仓库报错:Warning: Permanently added‘github.com’ to the .....(ssh )

解决方法&#xff1a; 1. 新建空文件夹->右键->点击 Git Bash Here2. 输入 cd C&#xff1a;3. 输入 cat ~/.ssh/id_rsa.pub4. 输入 ssh-keygen重复回车&#xff0c;生成一个矩形&#xff0c;则说明公钥已经生成了。重复步骤3&#xff0c;生成publickey&#xff0c;右键…

PCL 判断两条线段的平行性(三维空间)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 这里使用一种比较有趣的方式来判断三维空间中两条线段的平行性,我们都知道两条线段所代表的矢量进行叉乘计算所得数值,代表了由这两条线段组成的平行四边形的面积值,如下图所示: ok,那么如果将此结论推广到三维…