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

数字电子技术基础(六十四)——只读存储器

目录

1 ROM简介

2 掩膜ROM的构成原理和特点

3 可编程性只读存储器


1 ROM简介

只读存储器由三个组成部分,分别是存储矩阵、地址译码器和输出缓冲器,如下所示:

图1 只读存储器的分类
  • 存储矩阵:由很多个存储单元排列而成,存储单元可以是由二极管、双极型三极管和MOS管组合排列构成,每个单元可以存放1位的二进制0或者1。
  • 地址译码器:将输入的地址代码翻译为相对应的控制信号,利用这些控制信号可以在存储矩阵中选出指定的储存单元。
  • 输出缓冲器:首先输出缓冲器能够提高存储器的带负载能力,其次可以实现输出状态的三态控制,以便于系统总线进行连接。

如下所示:

图2 ROM的电路结构框图

在上图中,A_0\sim A_{N-1}表示的是地址线,W_0\sim W_{N-1}表示的是子线, D_0\sim D_{N-1}表示的是位线。

在只读存储器中,从地址输入到数据输出的过程始于外部电路通过地址总线发送二进制地址信号,由ROM内部的地址解码器将其转换为对应的物理存储单元位置,激活特定的字线以选中目标存储单元组。存储单元矩阵中的每个单元通过固定电路表示数据,被选中的单元通过位线传导电流状态,敏感放大器将微弱的位线信号放大并转换为逻辑电平,最终通过输出缓冲器将数据驱动到数据总线。整个过程在片选和输出使能信号的控制下完成,确保数据在指定时序内稳定输出,实现非易失性数据的快速读取。

2 掩膜ROM的构成原理和特点

掩膜ROM是一种只读存储器其数据在芯片制造过程中通过掩膜工艺永久写入,无法被用户修改或擦除,具有永久性存储的特点。

如下图所示是2位地址输入码和4位数据输出的ROM电路,它的存储矩阵由二极管构成,地址译码器是由4个二极管与门组成。输出缓冲器用于提高存储器带负载能力,并将输出的高低电平变换为逻辑电平,通过EA'给定信号来实现对于输出输出状态的三态控制。二极管ROM的电路结构如下所示:

图3 二极管ROM的电路结构图

在上图中,W_0\sim W_3表示的是子线, D_0\sim D_3表示的是位线,A_0A_1表示的是地址线。

2位地址码A_0A_1能给出4个不同的地址。地址译码器将4个地址分别译成W_0\sim W_3根线上的高电平信号。当W_0\sim W_3的每根线都是高电平时,都在会在d_3\sim d_0根线上输出一个二进制代码。

 在读取数据时,只要输入指定的地址码并且指定EN'=0,则指定地址内各个存储单元所存的数据出现在输出数据线上。例如,当A_1A_0=10时,w_2=1,其他字线为低电平。由于只有d_2一根线与W_2之间有二极管,所以这个二极管导通之后d_2为高电平,而d_0d_1d_3为低电平,因此可以得到D_3D_2D_1D_0=0100。传输路径如下所示:

图4 当A1A0=10时电路的信号传输路径

再例如当A_1A_0=11时,w_3=1,其他字线为低电平,这里d_1d_2d_3W_3之间有二极管,所以这个二极管导通之后 d_1d_2d_3为高电平,而d_0为低电平,因此可以得到

D_3D_2D_1D_0=1110,传输路径如下所示:

图5 当A1A0=11时电路的信号传输路径

通过总结4个地址的存储内容如下所示:

图6 ROM中的数据表

3 可编程性只读存储器

可编程只读存储器(PROM,Programmable Read-Only Memory)是一种允许用户一次性写入数据的非易失性存储器,写入后数据永久保存,不可修改。PROM的核心特点就是出厂时为空白状态,用户可以根据需要烧写内容,但是只能写一次不可以修改。

如下图所示为熔丝性PROM存储单元的原理图:

图7 熔丝型PROM的存储单元

上图中是由一只三极管和串在发射极的快速熔断丝组成。三极管的be结相当于接在字线与位线之间的二极管。熔丝用很细的低熔点合金丝或者多晶硅导线制作而成,在写入数据的时候只要设法将需要存入0的哪些存储单元上的熔丝烧断就可以了。

如下图所示为16×8位PROM的结构原理图:

图8 PROM的结构原理图

首先PROM编程器选中目标存储单元的地址,找出要写入0的单元地址。然后使用V_{CC}和选中的字线提高到编程所需要的水平,通过单元的行/列选择电路。如果高温烧断熔丝,断开连接,那么是写入0;如果电压击穿绝缘层,形成导通电路,那么是写入1。

因此PROM在出厂时,制作的是一个完整的二极管或者三极管存储单元矩阵,相当于所有的存储单元全部存入。PROM在每个单元的三极管发射极上都接有快速熔断丝。PROM的特点就是只能写入一次。

http://www.xdnf.cn/news/648217.html

相关文章:

  • mysql主从复制搭建
  • Swagger与go-zero框架生成和展示API文档详解
  • 《软件工程》第 12 章 - 软件测试
  • 【LangChain表达式语言(LCEL)应用实践】
  • 【控制理论】#1 控制系统与传递函数
  • 深入解析Spring Boot与Redis集成:高效缓存与性能优化实践
  • 游戏引擎学习第313天:回到 Z 层级的工作
  • 基于本地模型+多级校验设计的高效缓存,有效节省token数量(有点鸡肋doge)。
  • 前端安全直传MinIO方案
  • NLP学习路线图(八):常见算法-线性回归、逻辑回归、决策树
  • 【后端高阶面经:缓存篇】36、如何保证Redis分布式锁的高可用和高性能?
  • 鸿蒙OSUniApp 制作自定义的下拉刷新控件#三方框架 #Uniapp
  • 【文件上传】阿里云对象存储服务实现文件上传
  • 曼昆经济学原理第九版目录
  • 如何创建和使用汇编语言,以及下载编译汇编软件(Notepad++,NASM的安装)
  • C#面试问题2
  • uniapp 开发安卓app 微信授权获取昵称 头像登录
  • 学习心得(17--18)Flask表单
  • 探索LobeChat:开源、可定制的下一代AI对话客户端
  • opencvsharp usb摄像头录像 c# H264编码
  • ROS2学习(12)------ROS2 分布式通信说明
  • SpringBoot3集成Oauth2.1——6数据库存储客户端信息
  • 11.11 TypedDict与Pydantic实战:Python高效状态管理秘籍
  • k8s部署RocketMQ集群
  • 原生小程序与 UniApp 中传递循环数据(整个对象)的对比与实现
  • 答题pk小程序题库题型更新啦
  • AI智能混剪视频大模型开发方案:从文字到视频的自动化生成·优雅草卓伊凡
  • 视频问答功能播放器(视频问答)视频弹题功能实例
  • 【后端高阶面经:Elasticsearch篇】39、Elasticsearch 查询性能优化:分页、冷热分离与 JVM 调优
  • Android 中的 ViewModel详解