当前位置: 首页 > news >正文

BRAM IP Native模式使用

简介

        BRAM(‌Block RAM)是‌FPGA(Field-Programmable Gate Array)中的一种专用RAM资源,固定分布在FPGA内部的特定位置。该内容主要对BRAM(Block RAM”的缩写)Native模式下IP界面做详细描述和使用。

界面介绍

Basic界面

  

        1、选择对外接口,可以是AXI总线控制读写也可以是Native本地模式接口,本章节我们只介绍Native常规模式下的BRAM控制。

        2、存储类型分别有RAM模式和ROM模式;

        (1)Single-port ROM:

        该模式对外接口如下:

        简单的理解就是根据地址输出指定数据,数据写入COE文件并保存,保存方法后面会讲解;

        (2)

        该模式下支持一个ROM可同时访问两个地址空间的数据。

        (3)Single-port RAM

        不同于ROM模式的是RAM支持在线读写功能,并且初始化内容可以是COE里的值,对外接口如下:

        单口RAM的读写公用一个地址,当wea = 1时写使能代表写数据有效,为0的时候读有效。单口BRAM的优点时接口比较简单,缺点是读写不能同时进行,即写的时候无需对BRAM进行读操作。

        (4)Simple Dual-port RAM

        该模式下写地址和读地址分开,可以实现同时进行BRAM地址空间读写操作,至于读写优先级可在IP配置里设置,稍后做介绍。

        (5)True Dual-port RAM

        和Simple Dual-port RAM一样可以支持同时读写操作,但有所不同,具体如下:

        Simple Dual-port RAM(伪双口RAM)‌的特点是一个端口只用于写入,另一个端口只用于读取。这种设计简化了硬件设计,因为它不需要两个端口同时进行读操作或者同时写操作。在资源使用方面,伪双口RAM使用的资源相对较少,因为它只需要保证读写操作不会同时发生。

        ‌True Dual-port RAM(真双口RAM)‌则允许两个端口同时进行读写操作。这意味着两个端口都可以独立地进行读或写操作,或者一个端口进行读操作时,另一个端口可以进行写操作。这种设计提供了更高的数据吞吐量和更快的处理速度,因为它允许数据在两个端口之间并行处理。然而,这种设计也增加了设计的复杂性,因为需要确保两个端口的读写操作不会发生冲突。在资源使用方面,真双口RAM使用的资源是伪双口RAM的两倍,因为它需要支持两个端口同时进行读写操作。

        总的来说,伪双口RAM和真双口RAM的主要区别在于读写端口的独立性和资源使用。伪双口RAM虽然资源使用较少,但读写操作不能同时进行;而真双口RAM虽然资源使用较多,但允许两个端口同时进行读写操作,提供了更高的数据吞吐量和更快的处理速度‌。

        PORT界面

        1、写数据宽度设置;

        2、读数据宽度设置;

        3、写数据深度设置;

        4、读数据深度结合前面1、2、3的设置自动生成深度;

        5、写有效过程中数据输出模式选择,时序如下:

        (1)写优先级

        数据实时跟新新写入的数据;

        (2)读优先级

        数据显示之前的数据,新写入的数据没有实时更新;

        (3)写数据有效时输出数据不发生变化

        在写入过程中,数据输出不变化。

        显示设计应用中一般对写入的新数据不会要求实时输出的值,所以一般场景下选择什么模式输出并不影响。

        6、读写使能,可以选择一直使能(always enable),在写模式下ENA和WEA同时为1时写有效,读模式下ENB为1,读数据有效。

        7、添加寄存器输出,都是为了提高BRAM的运行频率或者改善时序的(当然也增加了延迟);

        (1)Primitives Output Register ,使用BRAM内部的寄存器打拍输出

        (2)Primitives Output Register ,使用SLICE的寄存器打拍输出

        (3)SoftECC Input Register ,当使用软ECC的时候,用SLICE的寄存器打拍。

        (4)REGCEA,当使用Primitives Output Register时,可以用REGCEA 来使能/去使能相应的输出。

        一般情况下时序不紧张的情况下可以不做打拍延时,最终数据输出延时周期可在SUMMARY里看到,如下图所示:

        8、RSTA Pin ,BRAM复位,高有效

        9、Output Reset Value ,复位时,输出的值;

        另外选择复位后还有复位的设置,如下图所示:

        Reset Prority ,复位优先级。它的选项有CE 和 SR 。当我们选择CE的时候,只有ENA为高时,RSTA复位才生效。当我们选择SR时,无论ENA是高是低,RSTA复位都会生效,如下图所示:

        CE模式下复位:

        SE模式下复位:

Other Options

        1、给BRAM赋予初值,需要用到COE文件,COE的格式如下:

        COE文件可以通过VIVADO创建,选择load init file并点击edit,如下图所示:

BRAM的基础介绍就到这里,有疑问欢迎留言

        

        

相关文章:

BRAM IP Native模式使用

简介 BRAM(‌Block RAM)是‌FPGA(Field-Programmable Gate Array)中的一种专用RAM资源,固定分布在FPGA内部的特定位置。该内容主要对BRAM(Block RAM”的缩写)Native模式下IP界面做详细描述和使用…...

react的useRef用什么作用

useRef 是 React 提供的一个钩子,用于在函数组件中创建和管理对 DOM 元素或组件实例的引用。它返回一个包含 current 属性的对象,可以用来存储对某个值的引用,而这个引用在组件的整个生命周期内保持不变。 useRef 的主要用途 1.访问 DOM 元素…...

10.2 TCP IP模型、IP协议、IPv4、子网掩码

TCP / IP 协议族 IP协议 IPv4地址 IPv4地址分类 子网掩码 子网掩码用来区分 网络地址 和 主机地址 真题 1...

工业相机飞拍的原理及工作原理

工业相机飞拍(或称为工业高速相机飞行拍摄)是一种利用高速图像捕捉技术和精密运动控制系统进行高效图像采集的先进技术。它广泛应用于工业检测、质量控制和自动化生产等领域。本文将详细探讨工业相机飞拍的原理及其工作方式。 一、工业相机飞拍的基本概…...

通过AI来创建一个_____html css网页制作成品 例子演示

使用AI 输入创建一个 html css网页制作成品 例 然后出来 好的,我将为您创建一个简单的HTML和CSS网页制作的示例。这个示例将包括基本的布局、文本样式和一些内联的CSS样式。 { "name": "dalle", "description": "A simple exa…...

C ++ 从单链表到创建二叉树到二叉树的遍历(结构体)

首先我们要了解二叉树的数据结构是什么&#xff0c;本质上二叉树是一个有两个节点的链表&#xff0c;我们先了解的单链表的相关定义 单链表 创建一个朴素的单链表 #include <iostream>using namespace std;struct Node{int val;Node* next;Node(int x) : val(x), next(…...

Python 编程:如何巧妙运用 `abc` 模块解锁面向对象设计的新维度?

引言 在软件开发的世界里&#xff0c;面向对象编程&#xff08;OOP&#xff09;作为一门艺术&#xff0c;其精髓在于通过封装、继承与多态来构建可维护性高、易于扩展的系统。而在 Python 这门语言中&#xff0c;abc 模块则为我们提供了一种优雅的方式来定义抽象基类&#xff…...

Jenkins 执行 shell 时报错 Host key verification failed.

1. 问题描述 在 jenkins 中执行下面的 shell 语句时 sshpass -p "123456" scp -r * dep192.168.1.100:/home/dep/Desktop/报错 Host key verification failed.可能原因是由于首次登录时需要输入 yes 导致无法连接成功。 The authenticity of host 192.168.1.100…...

MyBatis-Plus&Druid数据源

MyBatis-Plus&#xff08;简称MP&#xff09;和Druid数据源在Java开发中各自扮演着重要的角色&#xff0c;它们分别增强了MyBatis的数据库操作能力和提供了高效的数据库连接池管理。以下是对MyBatis-Plus和Druid数据源的总结&#xff1a; MyBatis-Plus 定义与特性&#xff1a…...

MTPA控制分析与推导

目录 MTPA (Maximum torque per ampere) 一. 控制目的 二. 设计思路 三. 推导过程 MTPA (Maximum torque per ampere) 一. 控制目的 忽略电机中的铁耗只考虑铜耗的背景下&#xff0c;希望实现铜耗最小化。 二. 设计思路 通过给出电机在d-q坐标系下的等效电路模型&…...

Spring Boot 的Web项目如何直接显示html

前言 实际的开发中,在Spring Boot的Web项目中直接使用html文件的场景已经比较少了, 或者是只需要很简单的页面显示,或者是演示的需要, 大部分的状况都是Spring Boot作为后端提供REST 的服务,结合其他的一些前端Framework进行开发,比如VUE,Ext JS等。 Spring Boot项目中…...

【回收站选址】

题目 代码 #include <bits/stdc.h> using namespace std; const int R 2e91; typedef long long LL; unordered_set<LL> s; int piles[5]; int dx[4] {-1, 0, 1, 0}, dy[4] {0, 1, 0, -1}; int dx1[4] {-1, -1, 1, 1}, dy1[4] {-1, 1, -1, 1};bool check(LL …...

Springboot整合websocket(附详细案例代码)

文章目录 WebSocket简述WebSocket是什么&#xff1f;WebSocket 的特点WebSocket 的工作流程WebSocket的消息(帧)格式WebSocket 与 HTTP springboot中整合WebSocketpom依赖实体类配置类握手配置类WebSocket配置类 自定义异常类webSocket服务类websocket中Session的 getBasicRemo…...

微信小程序:navigateTo跳转无效

关于 navigateTo 跳转无效问题&#xff0c;在IOS、模拟器上面都能正常跳转&#xff0c;但是在安卓上面不能跳转&#xff0c;过了一段时间IOS也不能跳转了。仔细找了下问题结果是要跳转的页面是tab&#xff0c;不能使用navigateTo 取跳转修改为&#xff1a; wx.switchTab({url:…...

C++ 设计模式——解释器模式

目录 C 设计模式——解释器模式1. 主要组成成分2. 逐步构建解释器模式步骤1: 定义抽象表达式步骤2: 实现终结符表达式步骤3: 实现非终结符表达式步骤4: 构建语法树步骤5: 实现内存管理步骤6: 创建上下文和客户端 3. 解释器模式 UML 图UML 图解析 4. 解释器模式的优点5. 解释器模…...

【开源大模型生态6】生态大咖与产品布局

上图是基础设施、大模型、行业应用构成大模型开源生态体系。 这里一一给大家介绍以下。 金融 Qwen&#xff1a;阿里云推出的一种大型语言模型&#xff0c;具有强大的对话能力和多模态理解能力。天工&#xff1a;通常指的是阿里云的一套物联网&#xff08;IoT&#xff09;解决…...

虚拟机苹果系统的QT安装体验

前言 苹果系统MacOS中除了安装XCode&#xff0c;完全可以安装QT。本质上来讲&#xff0c;苹果系统就是Linux改装版本&#xff0c;实际上和Ubuntu非常的接近。 1、Mac对应的QT安装包的下载 安装参考链接&#xff1a;MacOS下Qt 5开发环境安装与配置_macos qt-CSDN博客 苹果系统…...

多路转接之poll(接口介绍,struct pollfd介绍,实现原理,实现非阻塞网络通信代码)

目录 poll 引入 介绍 函数原型 fds struct pollfd 特点 nfds timeout 取值 返回值 原理 如何实现关注多个fd? 如何确定哪个fd上有事件就绪? 如何区分事件类型? 判断某事件是否就绪的方法 代码 示例 总结 为什么说它解决了fd上限问题? 缺点 poll 引入…...

两个月冲刺软考——位示图题型的例题讲解与分析;索引文件的详细解读

1. 位示图 位示图&#xff08;Bitmap&#xff09;是一种数据结构&#xff0c;用于表示和存储图像信息。在计算机科学中&#xff0c;位示图通常指的是一个二维的数组&#xff0c;每个元素称为一个像素&#xff0c;每个像素可以存储一个颜色值。 可以将位示图类比为电影院选座操作…...

SprinBoot+Vue校园数字化图书馆系统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...