RAM IP core(2)

2023-11-15

例化5种RAM IP core

(1)单端口RAM   Single-port RAM

RAM参数设置如上图所示,输入输出位宽都为8位,深度为16,采用一级输出寄存器,读写模式为no-change,用COE文件对RAM进行初始化,关于COE文件的制作,前面的帖子有专门提及,这里不再赘述;

可以看出输出延时为2个周期,在wea有效时读操作挂起,写操作运行,即在同一时刻只能对一个地址进行写操作或者读操作!

改为write-first模式:

此时读和写操作可以同时进行,且是对同一地址进行操作,读出的数总是该地址最新写入的数据而不是原来就存在的!

改为read-first模式:

此时可以看出读取的是该地址原来存在的数,并将当前的输入数据存入该地址 !

增加核输出寄存器的情况:

可以看出,输出增加了一级延时;

 

验证复位的优先级,设置复位时的默认数据为FF,首先设置SR复位优先,行为级仿真如下所示:

 

设置CE复位优先的情况:

好像并没有看出有什么区别,这个地方还没弄明白!! 

设置不同的输入输出位宽比,写入位宽为8,读取位宽为4,操作模式为write-first,这里其实存在一个问题,写地址和读地址共用一根地址线,但是读写地址所用到的地址线位宽不同,这好像会存在问题?行为级仿真如下:

当wea=0时,读取COE文件中的初始数据,低位在低地址,高位在高地址;

当wea使能时,由于是write-first模式,读出刚写入的数据,可以注意到写入b5用了两个周期同时占用了两个地址20和21,因为每个地址只有4位,先写入5再写入b,这导致b6并没有写入,而是直接写入了b7、b9 ;这样理解好像存在问题?继续看下面

改成read-first模式,行为级仿真如下所示:

 改成no-change模式,行为级仿真如下所示:

 

比较上面两图可知,在写操作时,只用到了地址线的两位,而且是高两位,最低位为任意,所以对于上图1所示的地址7和6,这两个地址对于写地址来说都是3,所以进行了覆盖写入即写入的都是1235;但是对于读地址来说这两个地址分别对应1个4位数据的地址,故读出的分别是35和12; 

(2)单端口ROM   Single-port ROM 

对于ROM,读写模式只能是write-first ,ROM参数设置如上图所示,输入输出位宽都为8位,深度为16,采用一级输出寄存器;

可以看出,输出延时为2;

加上使能信号ena,行为级仿真如上图所示; 

(3)双端口ROM   Dual-port ROM 

COE文件初始化ROM,位宽为8位,深度为16,portA的读位宽为8,portB的读位宽为4,行为级仿真如下:

 (4)简单双端口RAM   Simple Dual-port RAM

portA的参数设置如上图所示,操作模式为no-change,由于是写入端口,无法选择输出寄存器也无法复位,写入深度为16,宽度为8;

portB的参数设置如上图所示,操作模式只能是write-first,可以设置输出寄存器核复位,读位宽为8,深度为16; 

读写采用不同的时钟,在wea使能时portA开始写入,行为级仿真如上图所示;

 将portA改为write-first模式,效果似乎没变如上图所示;

  将portA改为read-first模式,效果似乎也没变如上图所示;

读写时钟换成同一个,造成读写地址冲突,由于portB的操作是write-first,所以写入的数据总是最先读出;

 (5)真双端口RAM   Dual-port RAM

 

portA读写位宽都为8,深度为16,操作模式为no-change;

portB的写入位宽为8,读取位宽为4,深度分别为16和32,操作模式为write-first; 

行为级仿真如上图,由于portA为no-change模式,所以在wea使能时,就只能进行写入,故输出为00;同时,由于portB写入位宽为8,读取位宽为4,地址码位宽为5,这里涉及到一个问题,读地址和写地址的位宽应该是不同的,这不会存在问题吗??真双端口RAM其实就是两个单端口RAM,只不过这两个单端口共用一块存储RAM!!

将portA改成write-first模式,行为级仿真如下:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RAM IP core(2) 的相关文章

  • 同步FIFO 两种方法

    RAM 43 空满信号判断 xff0c 两种方法 一 空满标志用指针位置得到 二 空满标志用fifo的中数据的计数得到 一 当写指针超过读指针一圈 xff0c 写满 xff1b 写指针等于读指针 xff0c 读空 96 timescale
  • FreeRTOS内核:详解Queue队列 FIFO(GPT4帮写)

    FreeRTOS内核 xff1a 详解队列管理FIFO 1 背景2 Queue相关API2 1 xQueueCreate xff1a 创建2 2 xQueueSend xff1a 发送2 3 xQueueReceive xff1a 接收2
  • OV7670无FIFO读寄存器成功

    使用stm32f103zet6 接3V3 GND SIOC 接PD0 xff0c SIOD接PD1 XCLK接PA8 SCCB c include 34 SCCB h 34 define SCCB SCL PDout 0 define SC
  • bsp_uart_fifo

    bsp uart fifo h 模块名称 串口中断 43 FIFO驱动模块 文件名称 bsp uart fifo h 说 明 头文件 ifndef BSP USART FIFO H define BSP USART FIFO H
  • FIFO队列(First In First Out)和优先队列

    queue lt 类型名 gt q q size 返回队列中元素个数 q empty 若队列为空 xff0c 返回true xff0c 否则返回false q pop 删除队首元素 xff0c 但不返回其值 q front 返回队首元素的值
  • STM32 串口 FIFO

    使用FIFO实现串口数据的收发功能 FIFO的相关实现参照链接 xff1a CSDN https mp csdn net mp blog creation editor 120448361 1 Cubemx串口配置 使用Cubmx对串口进行
  • STM32F767 采用FIFO模式串口发送接收

    功能 xff1a 将接收到的数据发送出去 UART HandleTypeDef huart1 span class token punctuation span span class token comment 64 brief The a
  • UART的FIFO功能

    经常听到UART的FIFO功能 xff0c 但是从来没有真正使用过和认真思考过它的作用 正好有客户用到这个功能 xff0c 在这里做个总结 FIFO 是 First In First Out 的缩写 xff0c 它是一个具有先入先出特点的缓
  • FIFO与DMA

    FIFO存储器是一个先入先出的双口缓冲器 xff0c 即第一个进入其内的数据第一个被移出 xff0c 其中一个存储器的输入口 xff0c 另一个口是存储器的输出口 主要有三个方面的作用 xff1a 1 xff09 对连续的数据流进行缓存 x
  • (转)stm32F4-----DMA的FIFO作用和用法

    在STM32F4系列中DMA增加了个FIFO 这个FIFO的作用是什么 xff1f 当我使能这个FIFO时 xff08 DMA InitStructure DMA FIFOMode 61 DMA FIFOMode Enable xff09
  • FIFO理解

    小白一枚 以下是我在学习SCI通信时 xff0c 使用到FIFO寄存器对其手册进行学习的一些经验与心得 xff0c 为了防止以后使用时忘记 xff0c 故此记录 仅供本人使用 另 xff1a 如有理解不当之处 xff0c 欢迎指正 xff0
  • DSPF28335 SCI FIFO串口通讯

    在工作过程中 xff0c 通过串口进行上位机与控制器之间进行数据的传输 xff0c 标准的串口通讯容易造成数据的丢失和内存堆满的现象 xff0c 便使用SCI中的FIFO对数据进行中断处理 一 串口通信基本知识 F28335 处理器共有 3
  • FPGA原理与结构——FIFO IP核的使用与测试

    一 前言 本文介绍FIFO Generator v13 2 IP核的具体使用与例化 在学习一个IP核的使用之前 首先需要对于IP核的具体参数和原理有一个基本的了解 具体可以参考 FPGA原理与结构 FIFO IP核原理学习https blo
  • 同步FIFO的verilog实现(2)——高位扩展法

    一 前言 在之前的文章中 我们介绍了同步FIFO的verilog的一种实现方法 计数法 其核心在于 在同步FIFO中 我们可以很容易的使用计数来判断FIFO中还剩下多少可读的数据 从而可以判断空 满 关于计数法实现同步FIFO的详细内容 请
  • OSError: [Errno 11] 资源暂时不可用。这是什么原因造成的?

    背景 我有两个 python 进程需要相互通信 通信由名为 Pipe 的类处理 我为此创建了一个单独的类 因为大多数需要通信的信息都以字典的形式出现 因此 Pipe 实现了一个非常简单的协议来执行此操作 这是管道构造函数 def init
  • 强制程序在重定向时刷新其标准输出

    我有一个闭源程序 可以将输出打印到标准输出 我需要解析输出 所以我使用 dup2 将输出重定向到 fifo 从中我可以在分叉并执行二进制文件的父进程中读取 然后执行程序 问题是文件中的 fprintf 调用被缓冲 因为它现在正在写入文件 在
  • 如何保证 ThreadPoolExecutor 中的 FIFO 执行顺序

    我用这行代码创建一个 ThreadPoolExecutor private ExecutorService executor new ThreadPoolExecutor 5 10 120 TimeUnit SECONDS new Arra
  • 用 C 语言实现 FIFO 队列

    对于嵌入式应用程序 我尝试使用 ANSI C 实现先进先出 FIFO 结构队列 最直接的方法似乎是通过实现链表 以便每个结构包含指向队列中下一个的指针 因此我将结构本身定义为 typedef enum LED on LED off etc
  • 在 FIFO 上写入“复杂”结构

    我正在使用 C 语言与客户端服务器进行某种 餐厅 实现 我正在尝试通过 FIFO 发送以下结构 typedef struct int numtable table number to send answer char timestamp 2
  • 在内核 OpenCL 中实现 FIFO 的最佳方法

    目标 在 OpenCL 中实现下图所示 OpenCl 内核所需的主要内容是将系数数组和临时数组相乘 然后最后将所有这些值累加为 1 这可能是最耗时的操作 并行性在这里非常有帮助 我正在为内核使用一个辅助函数来执行乘法和加法 我希望这个函数也

随机推荐

  • cuda-GPU 加速

    global 主机调用 声明设备函数 在设备上 gpu 执行 device 设备上执行并从设备上调用 host 其他主机调用的主机函数 cudaMalloc 设备上分配内存 cudaMemcpy 别存复制到主机或设备上 cudaFree 释
  • PHP+Redis实现延迟任务 实现自动取消订单,自动完成订单

    简单定时任务解决方案 使用redis的keyspace notifications 键失效后通知事件 需要注意此功能是在redis 2 8版本以后推出的 因此你服务器上的reids最少要是2 8版本以上 A 业务场景 1 当一个业务触发以后
  • 什么是OLAP

    问题导读 1 为什么会出现OLAP应用 2 OLAP的度过了哪些发展历史 3 OLAP的基本内容有哪些 4 OLAP常见操作有哪些 OLAP Online AnalyticalProcessing 是一种数据处理技术 专门设计用于支持复杂的
  • 虚拟机Ubuntu系统安装与换源

    虚拟机Ubuntu系统安装与换源 1 ubuntu系统安装 1 1下载ubuntu镜像 https ubuntu com download desktop 1 2打开VMware 创建新的虚拟机 1 3选择自定义安装 1 4一直下一步到此界
  • pandas中DataFrame基本操作

    怎样删除list中空字符 最简单的方法 new list x for x in li if x 这一部分主要学习pandas中基于前面两种数据结构的基本操作 设有DataFrame结果的数据a如下所示 a b c one 4 1 1 two
  • 1658. 合法标识符

    1658 合法标识符 请判断字符串 str 是不是一个合法的标识符 合法的标识符由字母 A Z a z 数字 0 9 和下划线组成 并且首字符不能为数字 样例 样例 1 输入 str LintCode 输出 true 解释 因为 LintC
  • PySpark MLlib 机器学习算法库

    作者 禅与计算机程序设计艺术 1 简介 PySpark MLlib 是 Apache Spark 生态系统中的一个开源机器学习工具包 它提供了高级的API 包括分类 回归 聚类 协同过滤等 可以用来处理大数据集 并进行训练和预测分析 本文将
  • Picture Control的使用

    在对话上放了一个Picture控件 并载入一幅位图 将Picture的大小调得和位图的大小一样 在Windows2000下 但当我在Widnows98下再次运行这个对话框程序时 Picture控件变大了 整个对话框和其中的控件都变大了 但其
  • 如何开具SSCI论文的检索证明?

    在学术界中 无论是学位申请 奖学金申请 还是职称评审 都必须附上SSCI论文的检索报告 那么 如何开具SSCI论文检索证明呢 一种方法是自行前往所在学校或当地查新机构开具 另一种方法则是委托专业人员代为开具 作者需要了解可用于开具论文检索报
  • OpenFeign 基本介绍和原理了解

    了解 OpenFeign OpenFeign 组件的前身是 Netflix Feign 项目 后来 Feign 项目被贡献给了开源组织 才有了今天使用的 Spring Cloud OpenFeign 组件 OpenFeign 提供了一种声明
  • postman面试_使用Postman做接口测试

    Postman是一个接口测试工具 在做接口测试的时候 Postman相当于一个客户端 它可以模拟用户发起的各类HTTP请求 将请求数据发送至服务端 获取对应的响应结果 从而验证响应中的结果数据是否和预期值相匹配 并确保开发人员能够及时处理接
  • 小程序在线更新,发布后提示有新版本

    在小程序onLaunch时候查看是否有新版本 onLaunch function 小程序更新 const updateManager uni getUpdateManager updateManager onCheckForUpdate f
  • 怎么把jfif改成png格式?三招送给你

    怎么把jfif改成png格式 在我们实际办公的过程中 其电脑网页存储的图片格式可能就是jfif格式 很多人对于jfif格式较为陌生 且在一些应用场景无法直接打开jfif格式的图片进行操作 编辑 对我们办公效率造成了一些影响 在此过程中 需要
  • Python、PHP和Java下的反序列化漏洞复现实例

    环境准备 这篇文章旨在用于网络安全学习 请勿进行任何非法行为 否则后果自负 python反序列化 p83 CTF夺旗 Python考点SST 反序列化 字符串 正经人 的博客 CSDN博客 php反序列化 p84 CTF夺旗 PHP弱类型
  • vue注册全局指令

    Vue directive focus 只调用一次 指令第一次绑定到元素时调用 在这里可以进行一次性的初始化设置 bind el binding console log bind el binding el触发的元素 console log
  • BeanFactoryAware

    在使用spring编程时 常常会遇到想根据bean的名称来获取相应的bean对象 这时候 就可以通过实现BeanFactoryAware来满足需求 代码很简单 Service public class BeanFactoryHelper i
  • 免费开源的高精度OCR文本提取,支持 100 多种语言、自动文本定位和脚本检测,几行代码即可实现离线使用(附源码)

    免费开源的高精度OCR文本提取 支持 100 多种语言 自动文本定位和脚本检测 几行代码即可实现离线使用 附源码 要从图像 照片中提取文本吗 是否刚刚拍了讲义的照片并想将其转换为文本 那么您将需要一个可以通过 OCR 光学字符识别 识别文本
  • uniapp引入图表ucharts方法

    Ucharts官网 https demo ucharts cn HBuilderX插件市场 https ext dcloud net cn 进入HBuilderX插件市场安装ucharts插件 进入ucharts官网找到需要的图表复制代码
  • 设计模式 简单工厂,策略模式,几种基本原则,Unity基础

    学习笔记 感受设计演变过程中蕴含的大智慧 体会乐于怒的程序人生中值得回味的一幕幕 设计模式来自于建筑领域 作为软件工程的一个分支 是在软件工程实践过程中 程序员们总结出的良好的编程方法 第一种模式 简单工厂模式 图片来源 点这里 上面是简单
  • RAM IP core(2)

    例化5种RAM IP core 1 单端口RAM Single port RAM RAM参数设置如上图所示 输入输出位宽都为8位 深度为16 采用一级输出寄存器 读写模式为no change 用COE文件对RAM进行初始化 关于COE文件的