从零开始利用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

相关文章

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

怎么让1台电脑共享给7人同时流畅设计

在当今的创意设计与数字内容生产领域,图形工作站以其强大的计算能力、专业的图形处理能力和稳定的系统性能,成为了众多设计师、动画师、视频编辑师等创意工作者的必备工具。 设计团队面临资源有限,比如只有一台高性能电脑时,如何高效地让七人同时流畅地进行设计工作,便成为了一个亟待解决的问题。 一、硬件升级与配置 1.高性能处理器(CPU):选择多核、高线程的处理器,例如Intel的至强系列或AMD的Ry

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

嵌入式Openharmony系统构建与启动详解

大家好,今天主要给大家分享一下,如何构建Openharmony子系统以及系统的启动过程分解。 第一:OpenHarmony系统构建      首先熟悉一下,构建系统是一种自动化处理工具的集合,通过将源代码文件进行一系列处理,最终生成和用户可以使用的目标文件。这里的目标文件包括静态链接库文件、动态链接库文件、可执行文件、脚本文件、配置文件等。      我们在编写hellowor