1、随机访问存储器(RAM)

(1)随机访问存储器(RAM)概述

  ①随机存储器可以随时从任何一个指定地址中读出数据,也可以随时将数据写入任何一个指定的存储单元中,RAM的结构如下:

②RAM 单元根据地址总线、数据总线以及读写控制线的数目可以分为单口RAM、双口RAM 两大类:

单口RAM只有一套数据总线、地址总线和读写控制线,因此当多个外设需要访问同一块单口RAM 时,需要通过仲裁电路来判断。

双口RAM具有两套完全独立的数据线、地址线和读写控制线,从而实现了大量数据的高速访问以及不同时钟域的数据交换。

(2)随机存储器设计基础

  ①在Verilog HDL 中,若干个相同宽度的向量构成数组,其中reg 型数组变量就代表着存储器。例如:

reg [7:0]  memory[1023:0];

该语句定义了1024 个字的存储器变量memory,每个字的字长为8 位,(说白了,就是有1024个8bit宽的寄存器)经过定义后的memory 型变量可以用下面的语句对存储器单元赋值:

memory [7] = 90;

//存储器memory 的第7 个字被赋值为90

  ②存储器单元中的数据也可以读出,因此存储器型变量相当于一个RAM。由于存储器由逻辑资源产生,因此存储容量越大,所需要的逻辑资源就越多。

(3)单口RAM 单元的实现

  ①单口RAM,只有一套地址总线,读和写是分开(至少不能在同一个周期内完成)。8× 8 位RAM 的设计举例实现如下:

  ②部分信号说明:

addm 为3 比特地址线,可以实现8 个存储单元的寻址;

cs_n 为片选信号,低有效,当cs_n 为低时,存储器处于工作状态(可以读或写);当cs_n 为高时,存储器处于禁止状态(强制输出0)。

we_n 为写使能信号,低有效,当we_n为高时,存储器处于读状态,否则处于写状态。

dout 为存储器的输出端口,din 为存储器的输入端口。

module ram_single(          input clk,          input [2:0] addm,          input cs_n,          input we_n,          input [7:0] din,          output reg [7:0] dout ); reg [7:0] ram1[7:0]; always @(posedge clk) begin     if(cs_n)         dout <= 8'b0000_0000;     else         if(we_n)             dout <= ram1[addm];         else             ram1[addm] <= din; end endmodule

(4)双口同步RAM 单元

①双口同步RAM 具有两套地址总线,一套用于读数据,一套用于写数据,二者可分别独立操作。128× 8 位双口RAM 的实现举例:

②代码如下所示:

module rom_test(      output reg [7:0] q,      input [7:0] d,      input [6:0] addr_in,      input [6:0] addr_out,      input we, clk1, clk2  );  reg [6:0] addr_out_reg;  reg [7:0] mem[127:0]; always @(posedge clk1)begin     if (we)        mem[addr_in] <= d; end  always @(posedge clk2) begin     q <= mem[addr_out_reg];     addr_out_reg <= addr_out; endendmodule 

2、只读存储器(ROM)

①在数字系统中,由于ROM 掉电后数据不会丢失,对于容量不大的ROM,在Verilog HDL 中可以通过case 语句来实现。

②在应用中,case 语句中的数值可以根据实际需要修改,其中addm 为地址输入信号,cs_n为片选信号,8× 8 位的ROM 模块的实现:

module rom_test(          input clk,          input [2:0] addm,          input cs_n,          output reg [7:0] dout  );    always @(posedge clk) begin  if(cs_n)     dout <= 8'b0000_0000;  else       case(addm)           3'b000: dout <= 1;           3'b001: dout <= 2;           3'b010: dout <= 4;           3'b011: dout <= 8;           3'b100: dout <= 16;           3'b101: dout <= 32;           3'b110: dout <= 64;           3'b111: dout <= 128;       endcase  endendmodule

微信公众号

建立了一个微信公众号“Andy的ICer之路”,此公众号主要分享数字IC相关的学习经验,做公众号的目的就是记录自己的学习过程,很多东西回过头来可能就忘记了,为了记住知识和分享知识,希望自己可以保持更新,有兴趣的朋友可以关注一下!

RAM/ROM存储器的设计相关推荐

  1. FPGA逻辑设计回顾(12)RAM以及ROM的RTL设计及其验证

    前言 本文首发:FPGA逻辑设计回顾(12)RAM以及ROM的RTL设计及其验证 RAM以及ROM在FPGA中的实现大体有两种方式,一种是使用IP核定制,一种是RTL设计. 也许有人会反驳,那原语呢? ...

  2. 有关计算机存储器的几个名词的概念和辨析(内存,外存,RAM,ROM,磁盘等)

    自己总结: 1.内存不一定都是RAM,ROM也可以是内存的一部分. (ROM是只读存储器(Read-Only Memory),也是计算机内部存储器中的一种,而硬盘是外部存储器) 内部存储器 内部存储器 ...

  3. FPGA ROM存储器设计

    1.1 FPGA ROM存储器设计 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4) FPGA ROM存储器设计: 5)结束语. 1.1.2 本节引言 "不积跬 ...

  4. RAM ROM 寄存器(Rigester) CPU的关系

    ROM,理解为磁盘.(只读存储器) RAM,理解为内存.(随机访问存储器) 详细的介绍可以参考<内存之RAM.SRAM.DRAM.ROM.FLASH.SDRAM.DDR*>[https:/ ...

  5. 计算机术语列是,计算机术语-RAM ROM

    计算机术语 abp: address bit permuting,地址位序列改变 atc(access time from clock,时钟存取时间) bsram(burst pipelined sy ...

  6. 计算机多通道存储器工作原理,多通道大容量的采集存储器的设计与实现 - 全文...

    数据采集存储是信号处理过程的一个重要环节, 已经广泛应用于雷达.声纳.瞬态信号测试.无线探伤等领域.在不同的条件下采样速率和采样精度也有所不同, 系统的实现方法也各有差异.通常情况下, 如果采集速率较 ...

  7. 对RAM,ROM,NOR/NAND FLASH等常见内存设备类型的理解

    对RAM,ROM,NOR/NAND FLASH等常见内存设备类型的理解 RAM DRAM SDRAM DDR SDRAM SRAM ROM EEPROM FLASH NOR FLASH NAND FL ...

  8. 程序如何在RAM ROM运行,内存分配与分区

    关于RAM ROM RAM与ROM就是具体的存储空间,统称为存储器 RAM(random access memory):运行内存,CPU可以直接访问,读写速度非常快,但是不能掉电存储.它又分为: 动态 ...

  9. 用英语描述计算机操作,描述计算机RAM ROM的英语单词

    计算机专业英语词汇指与计算机硬件.软件.网络等多方面,小编今天就给大家整理了有关于计算机的英语,仅供参考 计算机英语一 abp: address bit permuting,地址位序列改变 atc(a ...

最新文章

  1. Jmeter工具的使用——功能测试
  2. window 完全卸载oracle,Windows下彻底删除Oracle
  3. QT Creator介绍
  4. Redis入门到精通只需要三篇博客
  5. XCTF-MISC-新手区-base64stego
  6. Python序列化的使用(有少量修改)
  7. 对程序员来说,看透生死远远没有操作0和1那么简单
  8. 如何在ASP.NET服务器控件库中嵌入JavaScript脚本文件 [适用于.NET 2.0]
  9. 【CodeForces - 1042A】Benches (优先队列,思维模拟,maxmin问题)
  10. linux批量替换文件名中的相同字符
  11. Chrome 100发布:启用全新图标,修复28个安全漏洞
  12. MD5消息摘要算法和SHA-1安全散列算法
  13. 大数据之 Hadoop 基本概念
  14. 软件运维监控有哪些?
  15. 小白学六轴传感器MPU6050模块(1)
  16. Word提示:“向程序发送命令时出现问题”解决方法
  17. 服务器功耗计算器_无服务器在您的用例中便宜吗? 用这个计算器找出答案。
  18. 专访OKEX Jay Hao:期权市场的需求从何而来?
  19. 下载全免费瑞星升级包的好地方
  20. 仿照贪吃蛇大作战的原型做的小游戏

热门文章

  1. oracle 01405 提取的值为null,OCI : ORA-01405: 提取的列值为 NULL
  2. 泡沫经济中的泡沫游戏
  3. 智能硬件泡沫: 巨头进场才能彻底催熟产业
  4. 【C#】Form窗体
  5. 赋值运算符重载和日期运算代码
  6. Centos 防火墙介绍
  7. SQL 语句的多表查询方式
  8. Lambda表达式_Stream流_File类
  9. 架构就是bull shit
  10. 大搜车面试java_大搜车面试经验