文章目录

  • RAM & ROM
    • ROM:只读存储器
      • 概念
      • 源代码
      • testbench
      • 仿真波形
    • RAM:随机访问内存
      • 概念
      • 源代码与testbench
      • 仿真波形

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 beginrom[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;endalways @(posedge clk)if(cs) dout<=8'bz;elsedout<=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 beginclk=0;addm=0;cs=0;endalways #10 clk=~clk;initial beginrepeat(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

【Verilog】ROM RAM相关推荐

  1. 嵌入式 - 存储介质【2】ROM RAM这么简单就区分了

    文章目录 引言 主存划分 随机存储器 只读存储器 直观比较 RAM V.S. ROM SRAM V.S. DRAM 参考资料 更新历史 20220314 首次编辑,存储介质的基础概念和分类的总结. 引 ...

  2. 【FPGA】ROM/EPROM的设计(使用case的方式初始化)

    上篇博文:[FPGA]ROM/EPROM的设计(使用加载文件的方式初始化),提到了这篇博文中要用的方式初始化ROM,在代码中用case语句的方式,给一个地址,给一个数据. 很容易,通过异步的方式来给出 ...

  3. Vivado安装使用【Verilog】

    Vivado[Verilog] 前言 推荐 Vivado安装使用 vivado操作组合电路 新建工程 添加源文件 为设计添加约束 工程的实现 调试 开发板验证 vivado操作时序电路 新建工程 添加 ...

  4. 【Verilog】FPGA控制RGB灯WS2812B

    [Verilog]FPGA控制RGB灯WS2812B 最近学业繁忙,因此好久没有更新博客,今日闲来无事,准备开始整理一下最近写的东西 今天先更新一下短学期做的东西吧--FPGA控制RGB灯WS2812 ...

  5. 【Verilog】跨时钟域设计Clock Domain Crossing Design(Multi cycle path formulation with feedback acknowledge)

    上次写了跨时钟域设计MCP公式不带反馈的实现[Verilog]跨时钟域设计Clock Domain Crossing (CDC) Design(MCP formulation without feed ...

  6. 第四章 数字逻辑电路设计方法【Verilog】

    第四章 数字逻辑电路设计方法[Verilog] 前言 推荐 第四章 数字逻辑电路设计方法 概览 4.2 组合逻辑设计 裁判表决电路 方法1:真值表方式 方法2:逻辑代数方式 方法3:结构描述方式 方法 ...

  7. 实验二 数据选择器的设计与vivado集成开发环境【Verilog】

    实验二 数据选择器的设计与vivado集成开发环境[Verilog] 前言 实验二 数据选择器的设计与vivado集成开发环境 一.实验目的 二.实验环境 三.实验任务 四.实验原理 五.实验步骤 六 ...

  8. 【Verilog】一、Verilog的always使用

    [Verilog]一.always使用 有不足请各位观众老爷批评指正~ 零.背景知识 组合逻辑:输出仅与当前输入有关(没有记忆) 时序逻辑:输出与当前输入.之前输入有关(有记忆) 一.Verilog ...

  9. 【VHDL】随机存储器RAM、只读存储器ROM

    [VHDL]随机存储器设置 RAM程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY RAM_8 IS PORT(CS,RD,WR:IN STD_ ...

最新文章

  1. go语言之旅 (一)
  2. 生活在AI的世界是种什么体验?
  3. Android之用HttpURLConnection参数以XML形式封装的部分关键代码
  4. 【当头棒喝】你是真的了解云计算吗?
  5. springboot对于redis的增删改查
  6. Questions make me doubt my engineer career
  7. 面向对象编程启思录——读《OOD启思录》有感
  8. 理工大学统考计算机在线作业,北京理工在线作业-现代远程学习技术-20210417121542.pdf-原创力文档...
  9. Spark--安装和配置遇到的所有问题
  10. sw修改器初始化服务器错误,solidworks打开出现Loadlibrary failed with error 1114:动态链接库(DLL)初始化例程失败如何解决?...
  11. js之数组打印看到长度和实际长度不同(浅拷贝)
  12. linux合并ts文件吗,UNIX LINUX MACOS shell 下载合并*.ts视频
  13. Bootstrap响应式布局之 col-xs col-sm col-md
  14. 《黑白团团队》第七次作业:团队项目设计完善编码
  15. 在钉钉小程序中实现录音和播放功能实例
  16. JAVA POI报错:org.openxmlformats.schemas.wordprocessingml.x2006.main.impl.CTRImpl.getXmlObjectArray
  17. matlab给图片添加颜色条
  18. 怎么撰写一份优秀的数据分析报告(二)
  19. AutoML与NAS
  20. 需求来源以及竞品分析

热门文章

  1. 总经理专访:Acer何谦永评谈08/09笔记本产业
  2. eclipse安装python插件,Error getting info on interpreter
  3. 学习使我快乐 第十一天
  4. php parseint方法,js parseInt()方法详解
  5. 使用BHO定制你的IE浏览器
  6. 【PSS】PSS学习总结目录
  7. Timer实现定时任务
  8. 插入损耗——线对上的信号衰减
  9. GoldenDict万能词典
  10. Android activity跳转使用详解