基础002_V7-CLB
一、综述
参考ug474.pdf:

.png)


二、主要功能


- always @(posedge clk)
- srl <= {srl[31:0],din};
- assign dout = srl[20];
当添加复位信号:
- always@ (posedge clk)
- if(rst)
- srl <= 32'd0;
- else
- srl <= {srl[31:0],din]};
- assign dout = srl[20]
为什么结构不一致?因为LUT没有同步复位控制输入端,因此综合器无法将代码综合成有LUT实现的结构,因此写代码需要根据相应结构编写。


以下列举了一些适用于分布式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 instantiation
- endmodule
综合之后的线路图:
基础002_V7-CLB的更多相关文章
- FPGA基础学习(7) -- 内部结构之CLB
目录 1. 总览 2. 可配置逻辑单元 2.1 6输入查找表(LUT6) 2.2 选择器(MUX) 2.3 进位链(Carry Chain) 2.4 触发器(Flip-Flop) 参考文献: 一直以来 ...
- 【RAC】RAC相关基础知识
[RAC]RAC相关基础知识 1.CRS简介 从Oracle 10G开始,oracle引进一套完整的集群管理解决方案—-Cluster-Ready Services,它包括集群连通性.消息和锁. ...
- 腾讯云负载均衡CLB的那些“独门利器”
欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者:李想 腾讯人做产品一直是很贴近用户的需求的,腾讯云也不例外.负载均衡器作为公有云上的最基础的网络服务,几乎每家云厂商都会提供,虽然负载均衡 ...
- 强大核心功能矩阵,详解腾讯云负载均衡CLB高可靠高性能背后架构
1 前言 腾讯云负载均衡(Cloud LoadBalancer),简称CLB, 负载均衡通过设置虚拟服务地址(VIP)将来自客户端的请求按照指定方式分发到其关联的多台后端云服务器,服务器将请求的响应返 ...
- 基础008_定浮点转化[floating point IP]
作者:桂. 时间:2018-05-15 21:55:50 链接:http://www.cnblogs.com/xingshansi/p/9042564.html 前言 本文为Xilinx float ...
- FPGA基础架构总结
1.为什么FPGA的整体逻辑的速度有限制? 与ASIC相比较,AS指的是(application specific)专用集成应用,而FPGA是可编程逻辑,在实现的过程中,AS是直接用最基础的逻辑门实现 ...
- java基础集合经典训练题
第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...
- node-webkit 环境搭建与基础demo
首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- Golang, 以17个简短代码片段,切底弄懂 channel 基础
(原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...
随机推荐
- Spring 基础概念——DI、IOC(一)
一.IOC 控制反转 package com.qunar.studyspring.bean; import com.qunar.studyspring.dao.PersonDao; import co ...
- HTML:Hyper Text Markup Language 超文本标记语言
1.HTML是什么? *Hyper Text Markup Language 超文本标记语言 *Hyper Text:超链接.把不同空间的资源,整合在一起,形成逻辑上的网状结构. *Markup La ...
- IOS (补充)触摸事件处理
[1]事件的基本概念 UIEvent:事件,是由硬件捕捉的一个表示用户操作设备的对象. 分三类:触摸事件.晃动事件.远程控制事件 触摸事件:用户通过触摸设备屏幕操作对象.输入数据.支持多点触摸,包括1 ...
- cocos2d-js 免安装在线版 粒子编辑器 particle editor particle builder 兼容pex和plist
http://onebyonedesign.com/flash/particleeditor/ 这个原来是为flash starling设计的粒子系统编辑器,但实际上,还是能兼容cocos2d的. 只 ...
- Linux进程共享通信 -- mmap实现
https://blog.csdn.net/y396397735/article/details/50651633 使用mmap内存映射实现一端写,另一端读的进程间通信 写端代码write.c /*w ...
- RRT路径规划算法
传统的路径规划算法有人工势场法.模糊规则法.遗传算法.神经网络.模拟退火算法.蚁群优化算法等.但这些方法都需要在一个确定的空间内对障碍物进行建模,计算复杂度与机器人自由度呈指数关系,不适合解决多自由度 ...
- Mongodb对数据库(DB)的常用操作
1.查看所有库 show dbs 2.切换数据库/新建数据库 use mydb 3.查看当前库 db 需要注意的是:<use 新库>这个命令并不会马上建立真正的实体库,只有往里面插入数据的 ...
- 在quartz的Job中获得Spring的WebApplicationContext或ServletContext
有时候我们需要在web工程中定时器类里面获得spring的IOC容器,即WebApplicationContext,用它来获取实现了某接口的所有的bean,因为@Autowired貌似只能注入单个be ...
- Android(java)同步方法synchronized
synchronized 是java语言keyword.当它用来修饰一个方法或者一个代码块的时候,可以保证在同一时刻最多仅仅有一个线程运行该段代码. synchronized keyword,它包含两 ...
- 航信电子发票开发(servlet请求方式)
在系统用户交费后,需要打印发票,可以选择普票或者机打票(票据信息在系统中自定义设置的),也可以打印电子发票,这里对接的是航信的电子发票,请求方式非web服务,而是使用servlet通过HTTP请求的方 ...