一、综述

参考ug474.pdf:

7系列中,一个CLB包含两个slice:
每个CLB的资源:
CLB可配置的主要功能:

二、主要功能

LUT是基本单元,例如选择器assign muxout =  (sel) ? din_0: din_1;
  A-shift register
每个Slice对应4个LUT,而每个LUT可配32bit的移位寄存器:
对应指令:
always @(posedge clk)srl <= {srl[31:0],din};
assign dout = srl[20];

   

当添加复位信号:

always@ (posedge clk)if(rst)srl <= 32'd0;elsesrl <= {srl[31:0],din]};
assign dout = srl[20]

  

  为什么结构不一致?因为LUT没有同步复位控制输入端,因此综合器无法将代码综合成有LUT实现的结构,因此写代码需要根据相应结构编写。

每个Slice可扩展为128bit的移位寄存器:
  B-Distributed RAM
每个LUT为6选1,或2个5选1,其中SLICEM挂distributed RAM以及Shift Registers,关于Distributed RAM可实现的功能:

以下列举了一些适用于分布式RAM的情况:

  1. 深度小于64-bit
  2. 在深度大于64-bit小于128-bit情况下,有时延要求并需要异步输出(其clock-to-out时间小,并且布线比Block RAM自由)
  3. 数据宽度小于16-bit
(个人观点:这里配置RAM调用FPGA内部逻辑资源,而Block RAM blocks内部的RAM只能作为RAM使用,因此在时序没有要求,且固定RAM容量有剩余的情况下,不建议配置CLB中的RAM,固定RAM容量不够,可用CLB配置作为补充)。

  C-Multiplexer

  CLB还有一个重要功能:多路复用器(multiplexer)。

在一个Slice中包含有三个多路复用器:F7MUXA、F7MUXB和F8MUX。其中F7MUXA组合LUT A和LUT B成为7输入LUT,F7MUXB组合LUT C和LUT D成为7输入LUT,而F8MUX组合1个Slice中的4个LUT成为8输入LUT。

因此通过F7MUXA、F7MUXB和F8MUX的搭配,1个Slice可以实现4:1、8:1和16:1多路复用器,

  • 一个LUT实现4:1多路复用器
  • 2个LUT实现8:1多路复用器
  • 4个LUT实现16:1多路复用器

如图1、2、3所示:

   D-Carry logic

每个slice有4bits,每个bit包含一个多路复用和一个专用异或门XOR(用于加/减运算):

每个SLICE的Carry logic图:

三、原语

具体可参考ug953.pdf,原语列表:

查看CLB相关的原语用法:

即可按需要进行调用,例如每个LUT对应32bit的shift register logic,查看原语:

移位计算方法:

接口说明:

模板调用:

测试:

module CLB_SRL(clk,rst,din,dout);
input clk,rst;
input din;
output dout;
// SRLC32E: 32-bit variable length cascadable shift register LUT (Mapped to a SliceM LUT6)
// with clock enable
// 7 Series
// Xilinx HDL Libraries Guide, version 2015.2
SRLC32E #(
.INIT(32'h00000000) // Initial Value of Shift Register
) SRLC32E_inst (
.Q(dout), // SRL data output
.Q31(1'b0), // SRL cascade output pin
.A(32'h00010100), // 5-bit shift depth select input
.CE(1'b1), // Clock enable input
.CLK(clk), // Clock input
.D(din) // SRL data input
);
// End of SRLC32E_inst instantiationendmodule

  综合之后的线路图:

基础002_V7-CLB相关推荐

  1. FPGA基础学习 -- 内部结构之CLB

    目录 1. 总览 2. 可配置逻辑单元 2.1 6输入查找表(LUT6) 2.2 选择器(MUX) 2.3 进位链(Carry Chain) 2.4 触发器(Flip-Flop) 参考文献: 一直以来 ...

  2. FPGA的基础架构,什么是CLB?

    CLB是指可编程逻辑功能块(Configurable Logic Blocks),顾名思义就是可编程的数字逻辑电路.CLB是FPGA内的三个基本逻辑单元.CLB的实际数量和特性会依器件的不同而不同,但 ...

  3. 【基础知识】~ LUT、CLB、面积/速度问题

    本章目录: 1. 查表法 (LUT) 2. 可编程逻辑块 (CLB) 2.1 补充 3. 面积/速度问题 3.1 面积(资源)优化 3.1.1 面积优化意义: 3.1.2 面积优化方法 3.2 速度优 ...

  4. 详解异构计算FPGA基础知识

    戳蓝字"CSDN云计算"关注我们哦! 作者 | 浩仔 责编 | 阿秃 随着云计算,大数据和人工智能技术应用,单靠CPU已经无法满足各行各业的算力需求.海量数据分析.机器学习和边缘计 ...

  5. 基础008_定浮点转化[floating point IP]

    作者:桂. 时间:2018-05-15  21:55:50 链接:http://www.cnblogs.com/xingshansi/p/9042564.html 前言 本文为Xilinx float ...

  6. 关于verilog的一些基础知识整理

    *作者: Ian11122840 时间: 2010-9-27 09:04 * *标题: 菜鸟做设计必看!有关如何做设计的整体思路,以及能否综合的笔记 * *所谓综合,就是把描述语言转化成能硬件实现的电 ...

  7. FPGA基础资源之IOB的应用

    FPGA基础资源之IOB的应用 1.应用背景 在我们做时序约束时,有时候需要对FPGA驱动的外围器件进行input_delay/output_delay进行约束.不知道,大家有没有被以下这种类似的现象 ...

  8. 详解服务器异构计算FPGA基础知识

    随着云计算,大数据和人工智能技术应用,单靠CPU已经无法满足各行各业的算力需求.海量数据分析.机器学习和边缘计算等场景需要计算架构多样化,需要不同的处理器架构和GPU,NPU和FPGA等异构计算技术协 ...

  9. 【RAC】RAC相关基础知识

    [RAC]RAC相关基础知识 1.CRS简介    从Oracle 10G开始,oracle引进一套完整的集群管理解决方案--Cluster-Ready Services,它包括集群连通性.消息和锁. ...

  10. 【FPGA基础篇】底层结构组成

    文章目录 前言 CPU和DSP.FPGA.ASIC对比 FPGA和CPLD比较 FPGA基础 IOB--输入输出单元 CLB--可编程逻辑模块 LUT--查找表 MUX--选择器(复用器) Carry ...

最新文章

  1. STM32 基础系列教程 45 - FSMC_LCD_Touch
  2. 根据变量值取得变量的参数名
  3. Django学习手册 - ORM数据类型
  4. 转行python能拿到多少钱_想转行学python过来人提醒大家几点
  5. dmv io读写高的sql_使用内置的动态管理视图(DMV)发现更多SQL Server信息
  6. Java中instanceof与getClass的区别
  7. 字符串排序算法 java_Java经典算法:重新排列字符串K
  8. Twitter数据抓取的方法(二)
  9. paip.提升用户体验---注册异常记录
  10. PDF证书加密文件如何解密?
  11. 手机 android.downloader病毒,Android手机出现史上最强木马 感染后无法删除
  12. cass坡度土方计算案例_四面放坡且坡度不同的工程土方,CASS怎么算?
  13. 外链平台怎么找?什么形式的外链最好?
  14. 【报告分享】2021母婴行业白皮书-巨量引擎(附下载)
  15. 【数字IC】深入浅出理解I2C协议
  16. 由Python 学习受挫想到的激励自己学习的方法
  17. 小程序报错:[渲染层网络层错误] Failed to load local image resource /static/logo.png......
  18. 量化策略——准备2 量化技能树量化术语
  19. 创建自己的盒子box_创建自己的
  20. Neuronal Dynamics:Hodgkin-Huxley model 实验结果展示

热门文章

  1. 模型OnMouseXXX事件
  2. How ASP.NET MVC Works?
  3. 一起谈.NET技术,NHibernate3.0剖析:Query篇之NHibernate.Linq标准查询
  4. 深入update语句(延伸学习)
  5. 只接受数字的文本框(翻译)
  6. java activit怎么画图_Activiti 快速入门指南(用Java编写服务任务)
  7. c语言线程锁的原理开锁原理图,C++多线程之可重入锁
  8. matlab 分号;_MATLAB使用教程(二)—新手来看
  9. java 静态类的实现_关于java:在类中实现静态方法
  10. 不允许使用java方式启动_细品 Java 中启动线程的正确和错误方式