SLICEM是如何将查找表配置为分布式RAM/移位寄存器的

1.首先说SliceM和SliceL如何配置为ROM的

一个SLICE包含4个六输入查找表,因此每个查找表就能存储64bit的数据,要实现128bit的ROM,只需要通过两个LUT就可实现,具体如下表:

2.如何配置成为分布式RAM

SLICEM中的LUT如下图:

DI为输入的数据,WCLK为同步时钟,WE为使能信号,A[5:0]为地址总线、WA为写数据总线,LUT的输出Output是异步读取结果,输出端可选是否使用寄存器实现同步读。

(1)128×1的单口RAM

(2)128×1的双口RAM

(3)256×1的单口RAM

(4)32×2的四端口RAM

除了上述的方式,还可以将其当作两个5输入LUT,例如下图将其配置成32*2的四端口,这时候可以发现一个LUT其实只有32位深度,正式因为采用了5输入LUT的方式(1个6输入LUT中的两个5输入LUT分别配置成宽度位1bit、深度为32的RAM,公用一组地址线、写使能,写数据输入分别为DI1和DI2)。

3.如何配成成为移位寄存器

SILCEM相比SLICEL之所以能够配置成移位寄存器,是因为其LUT具有写数据端(DI1 DI2),写地址线(WA1-WA8),写使能端(WE),而SLICEL的LUT6没有。这样就可以将外部的数据输入进来,实现32位移位寄存器。

时序图如下:

如果要实现64/96/128移位寄存器,可以通过级联的方式实现。

但是如果希望设计的移位寄存器并不是32位或者32位的倍数呢?

任何32位都可以通过改变地址异步读出(在O6 LUT输出,在原语中称为Q),此功能在创建较小的移位寄存器(小于32位)时非常有用。例如,当构建一个13位移位寄存器时,将读地址设置为第13位对应的地址即5'b1101,这时候输出可以选择Output(Q)或者Registered Output,可以实现同步获取移位寄存器输出。(LUT的读是异步的)

4.与LUT相关的原语

(1)多路复用器

原语输入资源功能
MUXF7两个LUT的输出F7AMUX/F7BMUX8选1选择器
MUXF8F7AMUX/F7BMUX的输出F8MUX16选1选择器

两种多路复用器的端口相同,如下:

  • 数据输入端:I0,I1
  • 控制信号:S
  • 数据输出:O

问题:为何无论是8选1还是16选一,其输入都只有两个数?这样不是二选一吗?

实际上要明白这个需要联系上文中如何实现这些功能的。在上文的介绍中,MUXF7的输入是两个LUT的输出结果,这时相当于是二选一,而LUT又是一个4选1的选择器,因此实现了8选1的功能。

MUXF8实现16选1是在MUXF7的基础上,再对相邻的MUXF7/MUXF8的输出再进行选择,实现16选1的输出。

使用原语的例子如下:

MUXF7 MUXF7_inst (
.O(O), // Output of MUX to general routing
.I0(I0), // Input (tie to LUT6 O6 pin)
.I1(I1), // Input (tie to LUT6 O6 pin)
.S(S) // Input select to MUX
);MUXF8 MUXF8_inst (
.O(O), // Output of MUX to general routing
.I0(I0), // Input (tie to MUXF7 L/LO out)
.I1(I1), // Input (tie to MUXF7 L/LO out)
.S(S) // Input select to MUX
);

(2)分布式RAM

  • D:数据输入端
  • WE:写使能
  • WCLK:写时钟
  • A[#:0]:地址
  • O:移位输出

以32×1的单端口RAM为例:

  RAM32X1S_1 #(.INIT(32'h00000000)  // Initial contents of RAM)RAM32X1S_1_inst (.O(O),       // RAM output.A0(A0),     // RAM address[0] input.A1(A1),     // RAM address[1] input.A2(A2),     // RAM address[2] input.A3(A3),     // RAM address[3] input.A4(A4),     // RAM address[4] input.D(D),       // RAM data input.WCLK(WCLK), // Write clock input.WE(WE)      // Write enable input);

更多原语可按照下面这边文章里的步骤找到如何例化:

Xinlinx原语在哪查看如何使用/原语示例-CSDN博客

(3)移位寄存器

   SRLC32E #(.INIT(32'h00000000) // Initial Value of Shift Register) SRLC32E_inst (.Q(Q),     // SRL data output.Q31(Q31), // SRL cascade output pin.A(A),     // 5-bit shift depth select input.CE(CE),   // Clock enable input.CLK(CLK), // Clock input.D(D)      // SRL data input);

Xinlinx官方CLB文档如下:

7 Series FPGAs Configurable Logic Block User Guide (UG474) • 查看器 • AMD 技术信息门户

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

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

相关文章

Excel模板导入、导出工具类

1.引入maven依赖&#xff0c;利用hutool的excel读取 Hutool-poi对excel读取、写入 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.16</version></dependency> <depen…

Linux之安装Nginx

目录 传送门前言一、快速安装二、反向代理语法1、基本语法2、location语法1. 基本语法2. 匹配规则3. 修饰符4. 权重5. 嵌套location6. 其他指令7.案例 三、配置反向代理 传送门 SpringMVC的源码解析&#xff08;精品&#xff09; Spring6的源码解析&#xff08;精品&#xff0…

Java 海报-基于Graphics2D 实现个人头像的圆形裁剪

效果&#xff1a; 代码&#xff1a; private static BufferedImage resizeAndClipToCircle(BufferedImage image, int size) {// 缩小图片BufferedImage resizedImage new BufferedImage(size, size, BufferedImage.TYPE_INT_ARGB);Graphics2D g2d resizedImage.createGraphi…

5.组合与继承

1.面向对象 在C中&#xff0c;面向对象&#xff08;Object-Oriented&#xff09;是一种程序设计范式&#xff0c;它使用“对象”来设计应用程序和软件。面向对象编程&#xff08;OOP&#xff09;的核心概念包括类&#xff08;Class&#xff09;、对象&#xff08;Object&#x…

方便快捷!使用Roboflow进行数据增强(附详细操作)

最近使用自定义数据集训练yolov8模型的时候突然发现一件很令人头疼的事情。那就是&#xff0c;数据集中图片太少了。于是想通过数据增强的方法扩大数据集。 通过查阅资料发现&#xff0c;大部分人都是用python中的imgaug库进行图像处理&#xff1b;这种方法最大的不便就是需要转…

如何通过需求跟踪矩阵加强需求管理?

需求跟踪矩阵是强化需求管理的有效工具&#xff0c;它能直观地展示需求与项目各阶段产出物之间的映射关系&#xff0c;确保每个需求从提出到最终实现都得到严密的跟踪与控制&#xff0c;从而提高需求质量和开发效率&#xff0c;保障项目顺利交付。 如果没有需求跟踪矩阵&#x…

【Elasticsearch】Elasticsearch 从入门到精通(二):基础使用

《Elasticsearch 从入门到精通》共包含以下 2 2 2 篇文章&#xff1a; Elasticsearch 从入门到精通&#xff08;一&#xff09;&#xff1a;基本介绍Elasticsearch 从入门到精通&#xff08;二&#xff09;&#xff1a;基础使用 &#x1f60a; 如果您觉得这篇文章有用 ✔️ 的…

用Python将原始边列表转换为邻接矩阵

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 在图论和网络分析中&#xff0c;图是一种非常重要的数据结构&#xff0c;它由节点&#xff…

【AI开发:音频】一、GPT-SoVITS整合工具包的部署问题解决(GPU版)

前言 目前GPT-SoVITS的合成效果比较不错&#xff0c;相比较其他厂商的产品要规整的多。众多厂家中也是国内使用最多的一款了&#xff0c;并且这个整合包里携带了&#xff0c;除背景音、切割、训练、微调、合成、低成本合成等一些列完整的工具&#xff0c;也可以作为API进行使用…

StartAI智能绘图软件出现“缺少Python运行库”怎么办?

StartAI做为一款国产AI界的新秀&#xff0c;是一款贴合AIGC新手的智能绘图软件。新手安装遇见“缺少Python运行库”怎么办”&#xff1f;小编一招搞定~ 解决方法&#xff1a;手动下载【resource文件】&#xff0c;将文件添加到安装目录下。 点击链接进行手动下载噢~ 确保 Star…

React首次加载渲染2次的问题

在开发React项目的时候&#xff0c;发现useEffect会调用2次的情况&#xff0c;依赖数组明明没有变化&#xff0c;怎么会调用2次&#xff1f;百思不得其解&#xff0c;依赖没变化的话&#xff0c;那肯定是整个组件重渲染了。 最最简单的代码如下&#xff1a; const container …

【抽代复习笔记】14-群(八):变换群中的旋转、位似、平移变换群

定理1&#xff1a;集合A上的所有一一变换的集合G关于变换的乘法&#xff08;复合&#xff09;作成群。 证&#xff1a;首先&#xff0c;恒等变换ɛ:A→A(ɛ(x) x)是集合A上的一一变换&#xff0c;所以ɛ∈G&#xff0c;即G≠∅&#xff1b; ①对任意的f,g∈G&#xff0c;由映…

AI人工智能培训老师叶梓:大数据治理的关键工具:开源数据血缘分析系统

在大数据时代&#xff0c;数据的产生和传播速度日益加快&#xff0c;数据之间的关系也变得日益复杂。为了更好地管理和理解数据之间的关系&#xff0c;数据血缘分析系统应运而生。本文将介绍几个开源的数据血缘分析系统&#xff0c;它们在数据治理、数据质量管理和数据隐私保护…

ragflow 大模型RAG知识库使用案例

参考: https://github.com/infiniflow/ragflow/blob/main/README_zh.md 支持丰富的文件类型,包括 Word 文档、PPT、excel 表格、txt 文件、图片、PDF、影印件、复印件、结构化数据, 网页等。 运行步骤: 1、确保 vm.max_map_count 不小于 262144 【更多】: 如需确认 vm.…

ThingsBoard服务端使用RPC通过网关给设备发送消息

一、概述 1、发送服务器端网关RPC 二、案例&#xff1a; 1、建立设备与网关之间的通讯 2、查看设备和网关是否在线状态啊 3、通过 仪表盘&#xff0c;创建设备A的模拟RPC调用的窗口链接 4、在客户端的网关设备上订阅RPC网关的主题信息 5、通过服务端的窗口&#xff0c;发…

uni-app开发canvas绘图画画,如何实现后退功能

在uni-app中使用canvas进行绘图时&#xff0c;实现后退功能通常意味着你需要保存用户的每一步操作&#xff0c;然后提供一个机制来撤销最近的步骤。下面是一个基本的实现思路&#xff1a; 保存绘图步骤&#xff1a; 每当用户在canvas上绘制时&#xff08;比如通过touchMove事件…

python 对图片进行操作

Pillow是一个强大的图像处理库&#xff0c;它提供了许多用于打开、操作和保存图像的功能。 Image模块&#xff1a; Image模块提供了用于打开、创建、编辑和保存图像的基本功能。可以使用Image.open()函数来打开图像文件&#xff0c;或者使用Image.new()函数来创建新的图像,还可…

深度剖析Gateway在微服务治理中的关键角色

目录 一、多层网关 二、Gateway 路由规则 2.1 路由 2.2 谓词 2.3 过滤器 三、路由声明规则 3.1 谓词 寻址谓词 请求参数谓词 时间谓词 自定义谓词 一、多层网关 首先我们先了解下一个请求是如何到达服务端并得到相应的。过程如图所示&#xff1a; 首先网址解析的第一步是 DN…

设计模式学习笔记 - 开源实战四(中):剖析Spring框架中用来支持扩展的设计模式

概述 上篇文章&#xff0c;学习了 Spring 框架背后蕴含的设计思想&#xff0c;比如约定优于配置、低侵入松耦合、模块化轻量级等等。这些设计思想可以借鉴到其他框架开发中&#xff0c;在大的设计层面提高框架的代码质量。 除了上篇文章降到的设计思想&#xff0c;实际上&…

CSS特效---环形进度条

1、演示 2、一切尽在代码中 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"w…