从零开始利用MATLAB进行FPGA设计(五)详解双口RAM

2024-04-26 19:12

本文主要是介绍从零开始利用MATLAB进行FPGA设计(五)详解双口RAM,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

创作于谱仪算法设计过程中的数字能谱生成模块设计。

往期回顾:

从零开始利用MATLAB进行FPGA设计(四)生成优化HDL代码

从零开始利用MATLAB进行FPGA设计(三)将Simulink模型转化为定点数据类型

目录

1.关于双口RAM

2.System Generation中的双口RAM

2.1模块接口

2.1.1形态因素

2.1.2写模式

2.1.3冲突行为

2.2块参数


1.关于双口RAM

简单说RAM表示随机存储器,作为一种易失型存储器,在计算机关闭或重新启动时RAM中存储的数据就会丢失。

FPGA工程实践中的RAM形式包括单口RAM(SPRAM)、简单双口RAM(Simple Dual Port RAM)和真双口RAM(True Dual Port RAM)。

单口RAM只有一套读写线,读写时分复用,不能同时读写。也就是说单口指的是一个读写数据接口,用于写入或读出。

对于双端口RAM来说,分别有一套读写地址线,可以同时进行读写(同一时间内读写地址不能冲突)。也就是说有两个读写数据接口。

简单双口RAM的A口只能用于写入,B口只能用于读出;真双口RAM的A口可以用于写入或写出,B口也可以用于写入或写出。

2.System Generation中的双口RAM

Xilinx的双口RAM允许使用多个数据宽度以不同的采样频率同时访问内存空间。

2.1模块接口

这种双口RAM有两组独立的端口,同时用于读写。独立的地址、数据和写使能端口允许对内存空间进行共享。每个端口组都有一个输出端口和三个输入端口,用于地址、输入数据和写使能。每个端口组也可以添加端口使能和同步复位。

这种双口RAM可以利用FPGA中的分布式存储器、块RAM或UtralRAM资源实现。

2.1.1形态因素

双口RAM块支持各种形态因素(FF),形态因素定义如下:

W是A和B端口的数据宽度,端口B的深度定义为:

输出端口具有和输入端口相同的数据类型。当形态因素为1时,端口A和B的输入端口可以具有不同算术类型和二进制点位置的数据;形态因素大于1时端口A和端口B的数据输入仅具有无符号的算术类型,二进制点为位于0。

通过在每个单独的地址端口提供有效地址,可以访问内存块中的位置进行读取或写入。有效地址是从0到d-1的无符号整数,其中d表示该端口的RAM深度(RAM中的字数)。在仿真中,试图读取内存末尾之后的位置会报错。当双口RAM在分布式存储器或块RAM中实现时,初始RAM内容可以通过块参数指定。每个写使能端口必须是一个布尔值。当WE端口为1时,数据输入端口上的值将被写入到地址线指示的位置。

2.1.2写模式

当双端口RAM块在块RAM中实现时,可以在块参数对话框中设置块的写入模式。

在写入操作期间,输出取决于写入模式。当WE为0时,输出端口具有由地址线指定的位置处的值。在写入操作期间,输入数据端口上呈现的数据被存储在由端口的地址输入选择的内存中。在写入周期中,可以将每个数据输出端口A和B的行为配置为以下选择之一:

写入模式可以借助下图描述。在图中,内存已设置为初始值5,并且地址位被指定为4。当使用无读取写入模式时,输出不受地址线的影响,并且输出与WE为0时的最后一次输出相同。对于另外两种模式,输出来自由地址线指定的位置,因此是正在写入的位置的值。这意味着输出可以是对应于写入后的旧值,这对应于写入后读取。

2.1.3冲突行为

  • 读-读冲突:两个端口同时从同一存储单元读取,读取操作可以成功。
  • 写-写冲突:两个端口同时从同一存储单元写入,则两个输出都被标记为无效。
  • 读-写冲突:一个端口写入,另一个端口从同一存储单元读取的情况下,虽然内存内容不会被破坏,但读取端口上输出数据的有效性取决于写入端口的写入模式:
    • 如果写入端口处于写入前读取模式,则另一个端口可以可靠地读取旧的存储器内容。
    • 如果写入端口处于写入后读取或不读取写入模式,则读取端口输出的数据无效(NaN)。

2.2块参数

Depth:指定端口A中内存的字数,必须是正整数。端口B的深度是由输入数据宽度指定的形态因素推断的。

Initial value vector:对于分布式存储器或块RAM,指定初始内存内容。初始值向量中元素的大小和精度基于为端口A指定的数据格式。当向量比RAM长时,向量的尾部元素被丢弃。当RAM比向量长时,RAM的尾部字被设置为零。初始值向量根据RAM的端口A上指定的精度进行饱和和舍入。UltraRAM存储器在上电或设备复位期间初始化为全0。

Memory Type:选择是否将双端口RAM实现为分布式存储器、块RAM或UltraRAM的选项。分布式双端口RAM始终设置为使用端口A处于写入前读取模式,端口B处于只读模式。

这篇关于从零开始利用MATLAB进行FPGA设计(五)详解双口RAM的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/938420

相关文章

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现