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 技术信息门户

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

iOS - Runloop在实际开发中的应用

文章目录 iOS - Runloop在实际开发中的应用1. 控制线程生命周期(线程保活)2. 解决NSTimer在滑动时停止工作的问题2.1. 案例2.2 解决 3. 监控应用卡顿4. 性能优化 iOS - Runloop在实际开发中的应用 1. 控制线程生命周期(线程保活)…

夜神、雷电、android studio手机模拟器资源占用情况

夜神、雷电、android studio手机模拟器内存资源占用情况 由于开发电脑只有16G内存,出于开发需要和本身硬件资源的限制,对多个手机模拟器进行了机器资源占用(主要是内存)的简单比较。 比较的模拟器包括: 1. Android S…

[Linux][多线程][二][线程互斥][互斥量][可重入VS线程安全][常见锁概念]

目录 1.线程互斥1.互斥相关背景概念2.多个线程并发的操作共享变量,会带来一些问题3.互斥量mutex 2.互斥量的接口1.初始化互斥量2.销毁互斥量3.加锁4.解锁5.使用 -- 改善上面代码 3.互斥量实现原理探究1.加锁是如何保证原子性的?2.如何保证锁是原子性的&a…

交通工程绪论

一、交通工程 交通工程学定义交通工程学研究的内容交通工程学的产生与发展交通工程学在道路运输管理中的作用 1. 交通工程学定义 早在20世纪30年代,美国交通工程师协会(American Institute of Traffic Engineers)给交通工程学(Traffic Engineering)下了一个定义&a…

Java中使用Graphics2D绘制字符串文本自动换行 算法

效果: 代码: /*** return void* Author xia* Description //TODO 写字换行算法* Date 18:08 2021/4/1* Param []**/private static void drawWordAndLineFeed(Graphics2D g2d, Font font, String words, int wordsX, int wordsY, int wordsWidth) {FontD…

Java微服务架构之Spring Boot —上篇

SpringBoot 概述 SpringBoot提供了一种快速使用Spring的方式,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度…

CentOS 7虚拟机配置过程中所需组件的安装(二)

1.安装net-tools组件(解决无 ifconfig) # yum install net-tools 2.安装gcc、c编译器以及内核文件 # yum -y install gcc gcc-c kernel-devel 验证安装成功 3.安装nano(文本编辑器) # yum install nano

stm32——GPIO学习

对于许多刚入门stm32的同学们来说,GPIO是我们的第一课,初出茅庐的我们会对GPIO的配置感到疑惑不解,也是劝退我们的第一课,今天我们就来一起学习一下stm32的GPIO,提振一下信心。好的,发车了小卷卷们&#xf…

Redis入门到通关之Redis数据结构-ZSet篇

文章目录 ZSet也就是SortedSet,其中每一个元素都需要指定一个 score 值和 member 值: 可以根据score值排序后member必须唯一可以根据member查询分数 因此,zset底层数据结构必须满足键值存储、键必须唯一、可排序这几个需求。之前学习的哪种编…

vscode ssh远程连接服务器,一直正在下载vscode服务器的解决办法

前言 为方便描述,在本教程中,发起远程连接的叫“主机”,被远程连接的叫“服务器”。 正文 如果主机是首次用vscode远程连接服务器,会在服务器上自动下载vscode服务器,但有时候因为网络问题,会卡在&#xff…

OpenCV轻松入门(九)——使用第三方库imgaug自定义数据增强器

安装命令:pip install imgaug 代码实现: import cv2 import random import matplotlib.pyplot as pltfrom imgaug import augmenters as iaa # 数据增强——缩放效果 def zoom_img(img):# 获取一个1-1.3倍的线性图像处理器,scale参数是缩放范…

物联网配网工具多元化助力腾飞——智能连接,畅享未来

随着物联网技术的迅猛发展,智能插座、蓝牙网关作为其中常见的智能物联设备,无论是功能还是外观都有很大的改进,在智能化越来越普遍的情况下,它们的应用场景也在不断拓宽。对于智能设备而言,配网方式的选择对于设备的成…

无人驾驶 自动驾驶汽车 环境感知 精准定位 决策与规划 控制与执行 高精地图与车联网V2X 深度神经网络学习 深度强化学习 Apollo

无人驾驶 百度apollo课程 1-5 百度apollo课程 6-8 七月在线 无人驾驶系列知识入门到提高 当今,自动驾驶技术已经成为整个汽车产业的最新发展方向。应用自动驾驶技术可以全面提升汽车驾驶的安全性、舒适性,满足更高层次的市场需求等。自动驾驶技术得益于人工智能技术的应用…

Arthas下载安装及使用介绍

目录 一、简介1.1 什么是 Arthas?1.2 Arthas 可以做些什么? 二、下载安装、卸载2.1 安装方式一:在线安装2.2 安装方式二:离线安装2.3 卸载 三、常见操作3.1 dashbord 信息面板3.2 thread 线程信息3.3 jad 反编译 class 文件3.4 wa…

keil把c语言函数转成汇编

汇编可以让开发人员从根源上理解程序的运行逻辑,本文介绍如何在keil环境下如何把一个c文件中的某一个函数,转换为汇编函数,并编译运行。 右击某个c文件,选择Option for File。。。 图1 然后把下图中的Generate Assembler SRC Fi…

Linux I2C(二) - I2C软硬件架构

1,I2C的总线拓扑 2,I2C S/W topology linux kernel I2C framework使用如下的软件拓扑抽象I2C硬件(我们可以一起领会一下其中的“设备模型”思想): 1)platform bus(/sys/bus/platform&#xff0…

【论文笔记 | 异步联邦】 FedBuff

1. 论文信息 Federated Learning with Buffered Asynchronous Aggregation,International Conference on Artificial Intelligence and Statistics,2022,ccfc 2. introduction 2.1.1. 背景: 同步 FL ,随训练过程中…

3D MINS 多模态影像导航系统

3D MINS多模态影像导航系统(Multimodal Image Navigation System)是SunyaTech研发的建立在DICOM(Digital Imaging and Communications in Medicine)图像基础之上的多模态影像导航系统,集二维影像PACS管理、三维影像层级…

在誉天学习云计算HCIE,担心考试考不过?

誉天定制化课程内容覆盖了所有考试重点,可以系统地掌握理论与实践知识。 对于笔试,类似于备考驾照理论学习阶段,誉天为大家提供在线模拟测试系统,帮助大家掌握云计算笔试考点。笔试通过后,18个月内(一年半…

html显示PDF并兼容IE浏览器的解决方案

方案一、vue-pdf插件 缺点&#xff1a;IE11显示空白&#xff0c;编译后的Edge测试环境可以正常线上&#xff0c;打到线上报错&#xff0c;谷歌和百分浏览器显示完美 1、vue 只显示核心代码&#xff0c;需要安装vue-pdf插件 <vue-pdf :src"ivcPdfUrl"></v…