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

news2024/9/23 23:27:19

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.coloradmin.cn/o/1616292.html

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

相关文章

macbook内存怎么清理?2024年有哪些好用的软件

当你的MacBook运行缓慢时,这很可能是因为内存(RAM)满了。内存是计算机的临时存储区,用于存放当前正在使用的程序和数据。当内存满时,MacBook就会使用硬盘作为临时内存,这大大降低了运行速度。那么&#xff…

ffmpeg初体验

一:安装 sudo yum install epel-release -y sudo yum update -ysudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpmyum -y install …

docker-MySQL 8 主从搭建

一.目录结构: 我是在/home目录下,建立个sql文件夹: 二、配置文件 1.mysql配置 mysql-master下.conf文件配置 ###### [mysqld] server-id1 # 启用二进制日志 log-binmaster-bin # 指定需要复制的数据库 binlog-do-dbtest_db # 指定二进制日…

《动手学深度学习(Pytorch版)》Task01:初识深度学习——4.22打卡

深度学习介绍 AI地图 自然语言处理:起源于符号学,如机器翻译,人在几秒钟能反应过来,属于感知问题计算机视觉:图片由像素组成,难以用符号学解释,在图片中进行推理,大部分用概率模型或…

Android驱动开发之如何编译和更换内核

编译内核可以使用图形化的界面配置,也可以直接使用脚本。在X86_64模拟器环境下,不用交叉编译,而交叉编译工具很容易出现兼容问题,一般也只能使用芯片厂商提供的工具,而不是GNU提供的工具。 android内核开发流程以及架构变化了很多,详情请看 内核官网 内核版本选择 由…

若依集成mybatisplus报错找不到xml

引用:https://blog.csdn.net/qq_65080131/article/details/136677276 MybatisPlusAutoConfiguration中可以知道,系统会自动配置SqlSessionFactory,,但是,当你有自定义的SqlSessionFactory,,就会…

如何使用rdtsc和C/C++来测量运行时间(如何使用内联汇编和获取CPU的TSC时钟频率)

本文主要是一个实验和思维扩展,除非你有特殊用途,不然不要使用汇编指令来实现这个功能。扩展阅读就列出了一些不需要内联汇编实现的 写本文是因为为了《Windows上的类似clock_gettime(CLOCK_MONOTONIC)的高精度测量时间函数》这篇文章找资料的时候&…

arm架构,django4.2.7适配达梦8数据库

【Python相关包版本信息】 Django 4.2.7 django-dmPython 3.1.7 dmPython 2.5.5 【达梦数据库版本】 DM Database Server 64 V8 DB Version: 0x7000c 适配过程中发现的问题如下: 错误一:d…

Opencv | 图像卷积与形态学变换操作

这里写目录标题 一. 滤波 / 卷积操作1. 平滑均值滤波/卷积2. 平滑中值滤波/卷积3. 平滑高斯滤波/卷积3.1 关注区域3.2 分解特性 二. 形态学变换1. 常用核2. cv.erode ( ) 腐蚀操作3. cv.dilate ( ) 膨胀操作4. Open 操作5. Close 操作6. Morphological Gradient 形态梯度操作7.…

为什么单片机控制电机需要加电机驱动

通常很多地方只是单纯的单片机MCU没有对电机的驱动能力,或者是介绍关于电机驱动的作用,如: 提高电机的效率和精度。驱动器采用先进的电子技术和控制算法,能够精准控制电机的参数和运行状态,提高了电机的效率和精度。拓…

vos3000外呼系统客户端无法安装如何解决?

如果 VOS3000 外呼系统客户端无法安装,可以尝试以下解决方法: 检查系统要求: 确保你的计算机满足 VOS3000 外呼系统客户端的系统要求,包括操作系统版本、内存、处理器等。如果系统不符合要求,可能会导致安装失败或者运…

[BT]BUUCTF刷题第20天(4.22)

第20天 Web [GWCTF 2019]我有一个数据库 打开网站发现乱码信息(查看其他题解发现显示的是:我有一个数据库,但里面什么也没有~ 不信你找) 但也不是明显信息,通过dirsearch扫描得到robots.txt,然后在里面得…

echarts 双堆叠柱状图(数据整理)

1.后台返回的数据格式 {"code": "0000","message": "","messageCode": "操作成功","sign": null,"detail": null,"data": {"pieChart": [{"key": "产品…

C++之写时复制(CopyOnWrite)

设计模式专栏:http://t.csdnimg.cn/4j9Cq 目录 1.简介 2.实现原理 3.QString的实现分析 3.1.内部结构 3.2.写入时复制 4.示例分析 5.使用场景 6.总结 1.简介 CopyOnWrite (COW) 是一种编程思想,用于优化内存使用和提高性能。COW 的基本思想是&am…

编译支持播放H265的cef控件

接着在上次编译的基础上增加h265支持编译支持视频播放的cef控件(h264) 测试页面,直接使用cef_enhancement,里边带着的那个html即可,h265视频去这个网站下载elecard,我修改的这个版本参考了里边的修改方式,不过我的这个…

Reactor 模式

目录 1. 实现代码 2. Reactor 模式 3. 分析服务器的实现具体细节 3.1. Connection 结构 3.2. 服务器的成员属性 3.2. 服务器的构造 3.3. 事件轮询 3.4. 事件派发 3.5. 连接事件 3.6. 读事件 3.7. 写事件 3.8. 异常事件 4. 服务器上层的处理 5. Reactor 总结 1…

开源啦!一键部署免费使用!Kubernetes上直接运行大数据平台!

市场上首个K8s上的大数据平台,开源啦! 智领云自主研发的首个 完全基于Kubernetes的容器化大数据平台 Kubernetes Data Platform (简称KDP) 开源啦🚀🚀 开发者只要准备好命令行工具,一键部署 Hadoop,Hi…

JavaScript(二)

JavaScript的语法 1.JavaScript的大小写 在JavaScript中,大小写是敏感的,这意味着大小写不同的标识符被视为不同的变量或函数。例如,myVariable 和 myvariable 被视为两个不同的变量。因此,在编写JavaScript代码时,必…

函数声明与调用:接口原型、参数传递顺序、返回值

示例&#xff1a; /*** brief how about function-declare-call? show you here.* author wenxuanpei* email 15873152445163.com(query for any question here)*/ #define _CRT_SECURE_NO_WARNINGS//support c-library in Microsoft-Visual-Studio #include <stdio.h&…

上位机图像处理和嵌入式模块部署(树莓派4b实现多进程通信)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 和mcu固件、上位机软件不太一样的地方&#xff0c;嵌入式设备上面上面的工业软件一般都是多进程的形式。相比较多线程而言&#xff0c;整个系统就不…