7 半导体存储器

基本要求:掌握半导体存储器字、位、存储容量、地址等基本概念;掌握RAM,ROM的工作原理及典型应用。

  1. 概述

    1. 半导体存储器(Semi-conductor Memory)

      半导体存储器是用于大量二值数据存储的大规模集成电路。

      1. RAM(Random-Access Memory,随机存取存储器):上电后可随时进行读写操作,掉电后数据丢失(Volatile),用于数据频繁读写场合,也称为易失性存储器

        1. SRAM(Static RAM)静态RAM

        2. DRAM(Dynamic RAM)动态RAM

      2. ROM(Read-Only Memory,只读存储器):工作状态下只能读出信息,断电后信息不会丢失(Non-Volatile),用于存放固定信息(如程序、常数等),也称为非易失性存储器

        1. 固定ROM

        2. 可编程ROM

          1. PROM

          2. EPROM

          3. EEPROM (\( E^2PROM \))

          4. Flash Memory

    2. 基本概念

      1. :二进制的位,存储信息的基本单位,称为bit;

      2. 字长(位数):作为一个整体同时被存取、传送、处理的二进制数码叫做“字”,字的位数即字长。字中的各位同时被操作;

      3. 地址:每个字的编号,代表该字在存储器中的位置;

      4. 字数: 字的总量。字数\( =2^n \) (n为存储器外部并行地址线的线数)

      5. 存储容量:存储二值信息的总量。存储容量=字数*字长,单位bit

      6. 表示方法

        • \( 1k\times 1 \): 1024字,每个字1位,存储容量1kb

        • \( 64k\times 16 \): 64k个字,每个字16位,存储容量1024kb(1Mb)

        • 存储容量\(256 \times 4\)\(256 = 2^8\),8位地址,4位数据输出

        • 存储容星\(8k \times 8\)\(8K = 2^13\),13位地址,8位数据输出

  2. ROM(Read-Only Memory,只读存储器)

    1. 不可编程ROM:存储的数据在芯片制作时由厂商固化,后期不能修改。

    2. 可编程PROM

      1. PROM:出厂时为全0或全1,利用熔丝技术可改写一次;

      2. EPROM:芯片上有窗口,用紫外线擦除、烧写器写入;

      3. \(E^2PROM\): 利用不同电平实现擦除和写入,可擦写万次;

      4. Flash Memory:分为NAND和NOR型,总是先擦后写。 EEPROM和FLASH均可在线擦写,Flash集成度更高,通常读操作快于写操作。

    3. 基本结构

      image8

    4. 典型芯片

    5. ROM的应用

      1. 存储器:存数据、存程序,程序代码也是以二进制数据形式存储,特定的数据代表特定的操作动作;

      2. 译码编码:待译码或待编码的数作为地址,其对应的译码编码结果作为存放在该地址内的数据;

      3. 函数发生器:把变量值作为地址码,其对应的函数值作为存放在该地址内的数据根据输入的地址就能在输出端得到相应的函数值,称为“查找表”(Look Up Table,LUT)

  3. RAM(Random-Access Memory,随机存取存储器)

    上电工作时可以随时向任何指定地址单元写入数据或从中读出数据,掉电后数据即丢失,无法保存。

    1. SRAM(Static RAM,静态RAM):采用寄存器(或锁存器)结构存储信息,不必持续刷新,速度快,但集成度低,功耗相对偏大。

    2. SSRAM(Synchronous Static RAM,同步静态随机存储器)

    3. DRAM(Dynamic RAM,动态RAM):采用电容存储信息,必须不断刷新,否则信息丢失,集成度较高,成本相对较低。

    4. SDRAM(Synchronous Dynamic RAM,同步动态随机存储器)

  4. FPGA与存储器

    1. FPGA中的内存

    2. 两维数组

      reg [wordsize:0] array_name [0:arraysize]; //wordsize字长 arraysize字数
      reg [7:0] my_memory [0:255];
      my_memory [address] = data_in //访问方法
      
    3. FPGA读写SRAM

    4. CPU读写FPGA