【Verilog】ROM & RAM

2023-11-04

RAM & ROM

ROM:只读存储器
概念
  • ROM内部的数据是在ROM制造工序中,在工厂里用也输的方法被烧录进去的,其中的内容只能读不能改,一旦烧录进去,用户只能验证写入的资料是否正确,不能再做任何修改,如果发现资料有任何错误,则只能舍弃不用,重新订做一份,ROM是在生产线上生产的,由于成本高,一般只用在大批量应用的场合
源代码
module romv(dout,clk,addm,cs);
	input clk;
	input [2:0] addm;
	input cs;
	output [7:0] dout;
	reg [7:0] dout;
	reg [7:0]rom[7:0];
	initial begin
		rom[0]=8'b00000000;
		rom[1]=8'b00000001;
		rom[2]=8'b00000010;
		rom[3]=8'b00000011;
		rom[4]=8'b00000100;
		rom[5]=8'b00000101;
		rom[6]=8'b00000110;
		rom[7]=8'b00000111;
	end
	always @(posedge clk)
		if(cs) 
			dout<=8'bz;
		else
		    dout<=rom[addm];
endmodule
testbench
module romv_tb;
	reg clk,cs;
	reg [2:0] addm;
	wire [7:0] dout;
	romv u2(dout,clk,addm,cs);
	initial begin
		clk=0;addm=0;cs=0;
	end
	always #10 clk=~clk;
	initial begin
		repeat(7) #20 addm=addm+1;
	end
endmodule
仿真波形

在这里插入图片描述

  • 解释:
    • 与RAM不同的是,RAM可以进行读写,而ROM只能对已经写好在内存地址的数据进行读取。所以在进行代码的编写时,要事先在相应地址写入一部分数据。在测试仿真阶段,若输入已写好数据的地址,将会在data输出端将其数据进行输出显示
RAM:随机访问内存
概念
  • 随机访问内存(RAM)相当于PC机上的移动存储,用来存储和保存数据的。在任何时候都可以读写,RAM通常用作操作系统或其他正在运行的程序的临时存储介质(可称作系统内存)。不过,当电源关闭时时RAM不能保留数据,如果需要保存数据,就必须把它们写入到一个长期的存储器中(例如硬盘)。正因为如此,有时也将RAM称作"可变存储器"。RAM内存可以进一步分为静态RAM(SRAM)和动态内存(DRAM)两大类
源代码与testbench

在这里插入图片描述

仿真波形

在这里插入图片描述

  • 解释:
    • RAM外部可见端口分别为一位的CS片选输入信号、一位的clk时钟输入信号、共计两位的wr/rd读写输入信号端口、32位的addr地址输入端口、32位的data数据写入/读出的输入输出双向端口

在这里插入图片描述

  • 解释:
    • 写有效时,数据可以从data输入端进行数据的输入,并且写入到指定的addr地址位置。在此处进行的测试代码直接将地址端随时钟信号进行递增,而所需输入到地址的data数据也进行给定测试

在这里插入图片描述

  • 解释:
    • 读有效时,地址可以从addr地址输入端进行读入,并且在相应的地址区域找到相应的数据,并由data数据输出端送出。若输入的地址有效且原本已经存入数据,则正常情况下应该在data中显示。由于data设定的位inout双向输入输出端口,故在进行读出操作时,需为代码设定一个临时缓冲变量,将所需传递的数据先赋值给临时缓冲变量,再通过三态门与条件运算符读出data
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Verilog】ROM & RAM 的相关文章

  • FPGA提示产生latch的报错

    在fpga的设计中有时会遇到 latch 的报错 1 latch是什么 Latch 就是锁存器 是一种在异步电路系统中 对输入信号电平敏感的单元 用来存储信息 锁存器在数据锁存使能时 数据被锁存 输入信号不起作用 这违背了组合逻辑中输出随输
  • Verilog之assign

    Verilog中的关键词assign主要用于如下两个地方 数据流建模 用于数据流建模的显示连续赋值语句语法格式如下
  • 八段数码管动态显示(输入数据为BCD编码)

    八段数码管动态显示 输入数据为BCD编码 一 数码管概述 图1 八段共阴数码管内部等效原理图 图2 八段共阳数码管内部等效原理图 上面两图分别是对应八段共阴 共阳的数码管内部等效图 共阴是将八个LED数码管的阴极连接在一起接低 阳极segm
  • FPG—VGA显示器字符显示(附代码)

    目录 1 实操 1 1 字符取模 1 2 顶层模块 1 3 图像数据生成模块 1 3 1 模块框图 1 3 2 波形图绘制 1 3 3 代码编写 1 3 4 仿真验证 2 总结 本例程大部分与VGA显示驱动内容相同 只是显示部分改变了 故此
  • 【FPGA】通俗理解从VGA显示到HDMI显示

    注 大部分参考内容来自 征途Pro FPGA Verilog开发实战指南 基于Altera EP4CE10 2021 7 10 上 贴个下载地址 野火FPGA Altera EP4CE10征途开发板 核心板 野火产品资料下载中心 文档 hd
  • 画时序图软件——TimeGen和Timing Designer下载

    在写实验报告的时候需要画波形图 但是手头没有很好的软件 就上网搜了一些 分享出来 这里分享的是TimeGen和Timing Designer两个软件 资源均来自网上 有侵权请联系 TimeGen使用和安装都比较简单 我发的应该里面有破解方法
  • 【FMC141】基于VITA57.4标准的4通道2.8GSPS 16位DA播放子卡(2片DAC39J84)

    FMC141是一款基于VITA57 4标准的4通道2 8GSPS 2 5GSPS 1 6GSPS采样率16位DA播放FMC子卡 该板卡为FMC 标准 符合VITA57 4与VITA57 1规范 16通道的JESD204B接口通过FMC 连接
  • 配置 .NET CLR RAM 使用情况

    有没有办法在我的计算机上配置 NET CLR RAM 使用情况 假设我有 64GB RAM 我想将其限制为 4GB 这可能吗 Edit 问题的根源是我有一个 64 位应用程序 可以在 64 位 4GB 机器上正常运行 但在 64 位 64G
  • 硬核 | 从零制作一个激光雷达需要多久?

    编辑 ADS智库 点击下方 卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 硬件交流 技术交流群 本文只做学术分享 如有侵权 联系删文 激光雷达 LiDAR 是激光探测及测距系统的简称 目前广泛应用在无
  • 如何用 C++ 确定 Linux 系统 RAM 的大小?

    我刚刚编写了以下 C 函数来以编程方式确定系统安装了多少 RAM 它有效 但在我看来应该有一种更简单的方法来做到这一点 我错过了什么吗 getRAM FILE stream popen head n1 proc meminfo r std
  • Matlab图像处理系列——图像复原之噪声模型仿真

    微信公众号上线 搜索公众号 小灰灰的FPGA 关注可获取相关源码 定期更新有关FPGA的项目以及开源项目源码 包括但不限于各类检测芯片驱动 低速接口驱动 高速接口驱动 数据信号处理 图像处理以及AXI总线等 本节目录 一 图像复原的模型 二
  • 将 MySQL innodb 数据库加载到内存中

    我有一个 1 9GB 的 MySQL innodb 数据库 通过以下命令显示 SELECT table schema Data Base Name sum data length index length 1 048 576 as Data
  • 虚拟内存的最大大小可以是多少?

    我看到这个问题 虚拟内存 和 交换空间 有什么区别 https stackoverflow com questions 4970421 difference between virtual memory and swap space 这里提
  • 限制 python 程序的 RAM 使用

    我试图将 Python 程序的 RAM 使用量限制为一半 这样当使用所有 RAM 时它就不会完全冻结 为此我使用了以下代码 该代码不起作用 并且我的笔记本电脑仍然冻结 import sys import resource def memor
  • 增加蚂蚁的记忆

    我有一个关于内存使用的问题 我有 8 GB RAM 我的 ant 设置如下 set ANT OPTS Xmx512m XX MaxPermSize 2G 现在 我已经安装了 16 GB 的 RAM 但是当我运行 ant clean all
  • 如何获取 RAM 大小、引导加载程序

    我想问如何在引导加载程序中获取总 RAM 大小和可用 RAM 大小 截至目前 我知道如何获得较低的内存 但由于某种原因我无法将其打印到屏幕上 因为它保存在斧头寄存器中 这是我到目前为止所拥有的 BITS 16 BootLoader alwa
  • 如何从 Spartan 6 写入 Nexys 3 FPGA 板上的 Micron 外部蜂窝 RAM?

    我到处都查过了 数据表 Xilinx 网站 digilent 等等 但什么也没找到 我能够使用 Adept 工具来验证我的蜂窝 RAM 是否正常运行 但我找不到任何库存 VHDL 代码作为控制器来写入数据和从中读取数据 帮助 找到了此链接
  • 如何在 Verilog 中推断 Block RAM

    我在一个项目中遇到了一个非常具体的问题 这个问题已经困扰我好几天了 我有以下 RAM 模块的 Verilog 代码 module RAM param clk addr read write clear data in data out pa
  • 将 IntelliJ IDEA 缓存/索引目录移动到 RAM

    我正在尝试移动caches and index从 IntelliJ IDEA 配置目录到 RAM 挂载点的目录 tmp使用符号链接 我已经添加 tmpfs tmp ramdisk tmpfs defaults size 1024M x gv
  • 内存地址是否指向一个字节的信息?

    以下是 DTS 文件的摘录 linux arch powerpc boot dts 板名 dts memory device type memory reg lt 0x00000000 0x40000000 gt 1GB at 0 嵌入式设

随机推荐

  • C++十种排序方法(快速排序、冒泡排序等等)

    C 十种排序方法 快速排序 冒泡排序等等 一 冒泡排序 1 概念及思路 冒泡排序顾名思义就是大的数沉下去 小的数浮上来 就跟气泡在水底浮上来一样 基本的思路很简单 就是相邻的两个数相比较 如果前面那个数比后面那个数大 则换位置 否则不需要换
  • innodb下的mvcc_浅谈MVCC

    简介 MVCC Multi Version Concurrency Control 即多版本并发控制 MVCC的实现原理 我们在了解MVCC之前 首先先了解一下几个比较常见的锁 读锁 也叫共享锁 S锁 若事务T对数据对象A加上S锁 则事务T
  • APISIX-dashboard安装篇

    一 简介 apisix dashboard是官方提供的web图形界面 可以方便的添加组件以及配置服务 适合我这种咸鱼使用 项目地址 https github com apache apisix dashboard 二 安装 本文使用rpm的
  • showtext

    R语言绘图的字体设置是个老大难的问题 它默认情况下只提供三种字体 本篇推文介绍两种字体设置方法 针对Windows系统 一种是R语言本身的字体设置方法 另一种是showtext等工具包提供的相关方法 1 系统设置方法 1 1 原生样式 R语
  • Android适配器(Adapter)的简单介绍

    什么是适配器呢 顾名思义 就是把一些数据给弄得适当 适合以便于在View上显示 适配器就像显示器 把复杂的东西按人可以接受的方式来展现 可以说适配器就是数据和视图之间的桥梁 学好适配器还是非常重要的 适配器的工作原理 适配器是怎么处理得到的
  • cocoapods 引入 三方库 历程

    在已有的工程中没有使用 pod 新建一个demo手动导入protobuf时报错GPB文件找不到 直接使用pod导入没有出现类似错误 所以就在项目工程中引入pod去集成protobuf platform ios 8 0 use framewo
  • 2022年Android中高级面试框架

    目录 Java 泛型 集合 ArrayList LinkedList HashMap LinkedHashMap ConcurrentHashMap 多线程并发 volatile 线程 反射 JVM 类加载 怎么判断对象是否已死 垃圾回收机
  • 容器适配器

    C 顺序容器的底层能够模拟一些常见的数据结构 方法是通过容器适配器 队列 queue 只允许在一端插入数据操作 在另一端进行删除数据操作的特殊线性表 进行插入操作的一端称为队尾 入队列 进行删除操作的一端称为队头 出队列 队列具有先进先出
  • opencv读取&裁剪&写入图片

    opencv读取 裁剪 写入图片 1 英文路径 1 1 导包 1 2 找到英文路径 1 3 英文路径读取 1 4 图像白边裁剪 1 5 英文路径写入 1 6 结果展示 2 直接读取中文路径常见错误示范 2 1 读取 2 2 写入 3 正确读
  • HDL4SE:软件工程师学习Verilog语言(六)

    6 表达式与赋值 我们终于可以继续学习了 也是没有办法 其实工作的80 的时间都是在忙杂事 就像打游戏一样 其实大部分时间都在打小怪 清理现场 真正打终极BOSS的时间是很少的 但是不清小怪 打BOSS就束手束脚 也很难通关啊 我们先来复习
  • php调用海康威视4200软件同步考勤数据到sql_server ,并通过html实时显示。

    海康威视4200软件同步考勤数据到sql server 并通过html实时显示 安装环境 这个不多说了 肯定得先设置好sql server吧 数据库设置好后同步一下就可以直接获取信息到数据库中了 有了数据后我们使用php调用一下 time
  • Windows Server 2012 R2 WSUS-5:组策略配置自动更新

    如果公司具备域环境的话 我们可以根据不同的计算机组的要求 来配置不同的WSUS的自动更新策略 比如测试机器链接一套GPO 生产服务器链接一套GPO 针对于测试环境和生产环境的服务器和客户端的策略都是不一样 可以进行自定义设置的 当然如果机器
  • Command (Start this RegionServer (64250)) has failed CDH hbase 节点重启失败报错

    hbase 节点重启报错 问题描述 重启Hbase RegionServer和Hmaster失败 查看主 从节点日志后发现如下报错 解决办法 经排查后发现各节点date时间不同 相差较大 导致启动失败 设置ntp时间同步或者批量操作各节点同
  • Redis的启动、使用和停止

    1 Redis的启动 1 前端模式启动 直接运行bin redis server将以前端模式启动 切换到 usr local redis bin目录下 然后 redis server 前端模式的缺点是启动完成后 不能再进行其他操作 如果要操
  • 《深入解析Android虚拟机》Dalvik和Art基础:读书笔记

    1 Dalvik虚拟机和普通java虚拟机的区别 a dalvik虚拟机基于寄存器 java虚拟机基于栈 b dalvik会通过dx将所有的class打包到dex文件 普通的java虚拟机将所有的class打包到jar文件 c dalvik
  • 面试合集:数据库+数据结构+JVM+网络+JAVA+分布式+操作系统

    第一个模块 数据库 1 1 腾讯数据库面试问题 解释ACID四大特性 原子性的底层实现 数据库宕机后恢复的过程 如何保证事务的ACID特性 MySQL日志类型 这5个题目相对来说是比较普遍的 这里我就不一一给出答案了 给大家看下我的那个数据
  • 使用驱动器f中的光盘之前需要格式化什么意思_使用驱动器中的光盘之前需要将其格式化如何解决?...

    电脑硬盘分区 移动硬盘 U盘等在使用过程中有时会出现错误 使分区打不开无法读取分区中的数据 并且提示 使用驱动器中的光盘之前需要将其格式化 使用驱动器中的光盘之前需要将其格式化如何解决 使用驱动器中的光盘之前需要将其格式化如何解决 工具 软
  • TensorFlow中的变量(Variables)

    在TensorFlow中 变量 Variable 是特殊的张量 Tensor 它的值可以是一个任何类型和形状的张量 与其他张量不同 变量存在于单个 session run 调用的上下文之外 也就是说 变量存储的是持久张量 当训练模型时 用变
  • 机器学习课后习题 --回归

    一 单选题 1 以下 组变量之间存在线性回归关系 A 学生的性别与他的成绩 B 儿子的身高与父亲的身高 C 正方形的边长与面积D 正三角形的边长与周长 2 回归问题和分类问题的区别是 A 回归问题有标签 分类问题没有 B 回归问题输出值是离
  • 【Verilog】ROM & RAM

    文章目录 RAM ROM ROM 只读存储器 概念 源代码 testbench 仿真波形 RAM 随机访问内存 概念 源代码与testbench 仿真波形 RAM ROM ROM 只读存储器 概念 ROM内部的数据是在ROM制造工序中 在工