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

news/2024/5/19 6:28:49

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.mrgr.cn/p/12374103

相关文章

CSS-vminvmax单位

vmin 和 vmax 单位 vmin 是相对于视口宽度和高度中较小值进行计算,它的值为视口宽度和高度中的较小值的百分比。 例如,如果视口宽度为 800px,高度为 1000px,那么 1vmin 等于 8px(800px 的 1%)。 vmax 是相对于视口宽度和高度中较大值进行计算,它的值为视口宽度和高度中的…

Skill Check: Build an LLM Application using OCI Generative AI Service

Skill Check: Build an LLM Application using OCI Generative AI Service

循环购模式揭秘:消费即投资,边消费边赚钱的新商业模式

大家好,我是吴军,你们的私域电商管家。今天,我要为大家深入剖析一种新兴的商业模式——循环购模式。这个模式看似神奇,实则蕴含了消费返利和积分返利的智慧,让不少商家取得了惊人的业绩。那么,它究竟是如何…

前端开发攻略---实现发送手机验证码60s倒计时效果(手机号验证+按钮文字自定义显示+Vue2写法+Vue3写法)

1、演示 2、说明 1、为了便于演示,本示例将在3秒后就再次发送。您可以根据需要自定义此时间间隔。 2、采用最少的变量以满足需求,以减少内存占用。 3、不仅仅局限于按钮情况,也可应用于不禁用按钮的情况,以实现更多的扩展性。 4、…

【QT进阶】Qt Web混合编程之CMake VS2019编译并使用QCefView(图文并茂超详细版本)

往期回顾 【QT进阶】Qt Web混合编程之CEF、QCefView简单介绍-CSDN博客 【QT进阶】Qt Web混合编程之VS2019 CEF的编译与使用(图文并茂超详细介绍)-CSDN博客【QT进阶】Qt Web混合编程之QWebEngineView基本用法-CSDN博客【QT进阶】Qt Web混合编程之VS2019 C…

前端优化体积

个别js比较大,可以异步加载 如果是js文件,创建<script>后onload触发

HarmonyOS NEXT应用开发—城市选择案例

本示例介绍城市选择场景的使用:通过AlphabetIndexer实现首字母快速定位城市的索引条导航。介绍 本示例介绍城市选择场景的使用:通过AlphabetIndexer实现首字母快速定位城市的索引条导航。 效果图预览使用说明 分两个功能在搜索框中可以根据城市拼音模糊搜索出相近的城市,例如…

网卡-模式标准

目前主流的无线WIFI网络设备一共有以下几种模式:802.11a是一种Wi-Fi标准,工作在5GHz频段,提供最高54Mbps的数据传输速率。虽然速度较快,但覆盖范围较小。802.11b是Wi-Fi的最初标准之一,工作在2.4GHz频段,提供最高11Mbps的数据传输速率。虽然速度较慢,但拥有较广的覆盖范…

Visual Studio常用快捷键

常用快捷方式 快捷键 功能 Ctrl + K + C 注释选定内容 Ctrl + K + U 取消注释选定内容 Ctrl + K + D 代码格式整个文档内容 Ctrl + K + F 格式化选定内容 F12 转到定义 Ctrl+F12 转到声明 Ctrl + - 后退 Ctrl + Shift + - 前进 Ctrl + M + O 折叠…

菜鸟Java面向对象 2. Java 重写(Override)与重载(Overload)

Java 重写(Override)与重载(Overload) Java 重写与重载 Java 重写(Override)与重载(Overload)1. 重写(Override)1. 概念解释&#xff1a;2. 好处说明3. 异常规则处理 2. 方法的重写规则3. Super 关键字的使用4. 重载(Overload)**重载规则:**实例 5. 重写与重载之间的区别总结 1…

.pro文件管理qt项目,快捷设置软件名称和版本号

效果: .cpp文件代码:{ui->setupUi(this);// 设置软件名称和版本号QString version = QCoreApplication::applicationVersion();QString name = QCoreApplication::applicationName();QString verInfo = " 快捷设置软件名称和版本号 - 版本:V" + version+ QStr…

Python字符串过滤器:正则表达式Regular Expression

一、什么是正则表达式 正则表达式是按照正确的既定规则、一种全语言类型Python、Java、JavaScript、PHP通用的表达式。 用途: (1)根据规则抓取数据:配合爬虫、根据规则在文本中提取数据 (2)根据规则验证数据:验证手机号、验证邮箱、验证身份证 二、如何在Python中使用正…

node和go的列表转树形, 执行速度测试对比

保证数据一致性&#xff0c;先生成4000条json数据到本地&#xff0c;然后分别读取文本执行处理 node代码 node是用midway框架 forNum1:number 0forNum2:number 0//执行测试async index(){// 生成菜单列表// const menuList await this.generateMenuList([], 4000);const men…

优思学院|ISO45001职业健康安全管理体系是什么?

ISO45001:2018是新公布的国际标准规范&#xff0c;全球备受期待的职业健康与安全国际标准&#xff08;OH&S&#xff09;于2018年公布&#xff0c;并将在全球范围内改变工作场所实践。ISO45001将取代OHSAS18001&#xff0c;成为全球工作场所健康与安全的参考。 ISO45001:201…

# IDEA2019 如何打开 Run Dashboard 运行仪表面板

IDEA2019 如何打开 Run Dashboard 运行仪表面板 段子手168 1、依次点击 IDEA 上面工具栏 —> 【View】 视图。 —> 【Tool Windows】 工具。 —> 【Run Dashboard】 运行仪表面板。 2、如果 【Tool Windows 】工具包 没有 【Run Dashboard】 运行仪表面板 项 依次…

Hyperf - windows11 使用docker搭建hyperf框架

一、创建文件夹按自己习惯创建一个文件夹 D:\workspace二、创建docker容器并搭建Hyperf 1.创建Hyperf容器打开win+R 输入:PowerShell 进入命令页 docker run -d --name hyperf -v D:/workspace/skeleton:/hyperf-skeleton -p 9501:9501 -it --privileged -u root hyperf/hyper…

【Java】通过poi给word首页添加水印图片

背景&#xff1a; poi并没有提供直接插入水印图片的方法&#xff0c;目前需要再word的首页插入一张水印图片&#xff0c;于是就需要通过另一种方式&#xff0c;插入透明图片&#xff08;png格式&#xff09;并将图片设置为“浮于文字上方”的方式实现该需求。 所需jar&#xf…

2024/4/23

讨论:改了一些功能,今天的任务就是寻找出三大模块的场景图,搭建好场景,然后明天预计基本上完成场景的互动,然后就只差,搜集一些信息,以及通过手机号发送信息。 燃尽图:剩余70%

Web开发:ASP.NET CORE的前端demo(纯前端)

目录 一、建立项目 二、删除无用文件 三、样式添加 四、写一个登录页面 五、登录主界面 一、建立项目 二、删除无用文件 三、样式添加 将你的图片资源添加在wwwroot下方&#xff0c;例如pics/logo.png 四、写一个登录页面 将Privacy.cshtml改为 Forget.cshtml &#xff0…

已知二叉树的先序和后序求任意一中序

假设一个二叉树上所有结点的权值都互不相同。 我们可以通过后序遍历和中序遍历来确定唯一二叉树。 也可以通过前序遍历和中序遍历来确定唯一二叉树。 但是,如果只通过前序遍历和后序遍历,则有可能无法确定唯一二叉树。 现在,给定一组前序遍历和后序遍历,请你输出对应二叉树…