中电网移动|移动中电网|高清图滚动区

基于MCU系统的外部存储器接口配置

作者:Warren Miller

MCU 是许多嵌入式子系统设计中的关键元素,但通常需要额外的功能来实现必要的系统功能。在基于 MCU 的设计中,最受限制的元素之一可能是片上存储器。越来越多的应用程序需要比 MCU 可用的更多的系统内存。特别是,高级人机界面 (HMI) 设计可能需要大量只读图像和音频信息,这些信息不容易存储在 MCU 片上闪存中。此外,越来越多的应用发现片上 RAM 过度限制了需要大量数据缓冲和存储的高级通信通道。

本文将快速回顾现代 MCU 上可用的一些外部存储器接口。这将帮助设计人员更有效地实现需要额外外部存储(如 NVM 闪存或易失性 SRAM/DRAM)的基于 MCU 的系统。

到 SDRAM 的外部存储器接口

扩展存储能力所需的最明显的外部存储器接口可能是大型工作 SRAM。通常,MCU 的片上 SRAM 数量相对较少,而且应用程序需要的工作内存通常比片上可用内存多。例如,高级用户界面可能需要大量缓冲存储器来处理图形用户界面 (GUI) 和创建视频或音频提示。通常,在存储或传输这些数据文件时会使用压缩技术来降低本地存储需求或系统带宽需求。这意味着解压缩这些文件可能需要大量的工作存储空间。通常,在通信应用或数字信号处理应用中也需要大的工作存储器作为缓冲存储器。

许多 MCU 提供带有特殊电路的外部存储器接口控制器,用于控制外部 SDRAM 设备。NXP LPC1787是一个突出用于支持 SDRAM 接口的关键硬件元素的示例 MCU单片机。外部存储器控制器外设,如图 1 所示,具有几个可编程延迟元件,用于调整关键 SDRAM 信号中使用的关键接口信号的时序。例如,可以调整两个潜在 SDRAM 时钟(CLKOUT1 和 CLKOUT2)的延迟值,以根据存储器的要求定位转换。此外,另一个可编程延迟调整从存储器读取的数据被采样的时间。这种时序调整及其范围和精度对于简化存储器接口、电路板布局和相关的信号时序检查至关重要。

pYYBAGLqH7aAQfcsAAI-zrpV1kw703.png
图 1:NXP LPC1787 MCU 外部存储器控制器。(恩智浦提供)

NXP LPC1787 外部存储器接口还包括其他几个重要的硬件特性,使外部 SDRAM 接口更加高效。例如,框图顶部显示的数据缓冲区可用作读取缓冲区、写入缓冲区或组合使用。作为写缓冲器,它们允许对事务进行分组,以最大限度地减少外部写操作的数量,提高系统带宽并降低功耗。作为读取缓冲区,它们充当本地数据副本,因此对同一位置的进一步访问可以使用片上缓冲区版本。这减少了外部读取操作的数量,从而提高了系统带宽并降低了功耗。

请注意,NXP 内存控制器还支持 RAM、ROM 和闪存的静态内存接口。这是大多数现代 MCU 内存控制器外设中使用的典型方法,因为大部分硬件在两个应用程序之间是通用的,而且应用程序通常不需要同时使用两种类型的内存。

配置外部存储器

外部存储器通常有多种用途——应用程序不会将其视为单一的存储“块”。一种配置片外存储器块以简化存储器访问的方法有助于简化应用程序编码。Silicon Labs C8051F70x/71x使用了这种技术的一个示例MCU 系列。在这个 MCU 中,使用特殊的 MOVX 指令访问外部存储器。为了方便组合对片上和片外存储器的访问,可以将一部分片上存储器映射到外部存储器空间。图 2 显示了可用于将内部和外部存储器映射到外部存储器地址空间的四种配置模式。在模式 1 中,如图 2 的最左侧所示,内部 XRAM 被映射到完整的外部存储器空间,当片上 XRAM 存储器地址超过片上存储器量时,地址“回绕”。当使芯片退出复位以避免未初始化外部存储器的启动问题时,这可能是一种有用的模式。成功配置和测试内存接口后,即可启用外部内存空间。

pYYBAGLqH8WAXQO1AAD6bdsdBVk297.png
图 2:Silicon Labs C8051F70x/71x 外部存储器配置。(由 Silicon Labs 提供)

在模式 2 和 3(图 2 中从左数第二个和第三个)中,地址空间在片上和片外访问之间划分。在模式 2 中,组选择不用于将高位地址位驱动到地址总线上;用户可以控制这些地址值以提供额外的灵活性。在模式 3 中,片上存储体地址自动用于驱动外部地址总线,提供了一种更简单但不太灵活的方法。在模式 4 中,在图 2 的最右侧,片外存储器完全映射到外部地址空间。这使得访问在其他地址模式下可能无法访问的外部数据成为可能,以充分利用可用内存。如果您的应用程序有几种不同类型的外部存储器需求——代码、数据缓冲区、转换表、

外部存储器接口灵活性

在某些应用中,MCU 外部存储器接口支持多种存储器类型同时最大限度地减少器件引脚数至关重要。一个常见的组合是用于程序存储的闪存和用作工作存储器的 SRAM。如果在 MCU 上使用多个存储器接口,这可能会在封装中增加 20 个或更多引脚,从而增加成本、功耗和电路板空间要求。一些 MCU 在外部存储控制器中提供了额外的灵活性,可以轻松适应各种存储设备。例如,流行的Microchip PIC18FMCU 系列提供灵活的存储器接口,可扩展到多种设备类型。图 3 显示了一种将标准闪存和标准 SRAM 与单个外部总线接口的方法。在这种情况下,一些外部组件(两个 373 锁存器和一个 138 解码器)用于最大限度地减少 MCU 上使用的引脚数量。(对于只需要一个 373 锁存器的 8 位接口,也可以实现更简单的实现)。具有这种灵活性的外部存储器接口允许“保存”的 IO 用于其他功能,最大限度地提高引脚效率,这是基于 MCU 的设计中最重要的元素之一。

poYBAGLqH9CAVbsaAAEg_at0-NA830.png
图 3:Microchip PIC18F MCU 外部存储器接口框图。(微芯科技提供)

接口时序灵活性

除了 IO 互连灵活性之外,外部接口通常需要一定的时序灵活性。例如,如果内存慢于 MCU 时钟周期,则可能需要插入等待状态。理想情况下,可以为不同的外部存储器块分配不同的等待状态特性。当外部接口不仅可用于标准存储器,还可用于存储器映射器外围设备(如液晶显示器、模数转换器和数模转换器)时,这种能力就更加重要。爱特梅尔 ATmega _MCU 系列可以为外部存储器空间分配两个不同的等待状态值。如下图 4 所示,存储器配置 A 允许将外部存储器分为两个扇区——上扇区和下扇区。扇区大小可以有八个不同的值之一,以 0x2000 的增量从 0x2000 到 0xE000 调整上段和下段之间的分界线。

poYBAGLqH9uAKbEjAAC4VleJvIs586.png
图 4:Atmel ATmega64 外部存储器空间。(由爱特梅尔提供)

将外部存储器空间划分为两个扇区可以很容易地将具有较大等待状态值的设备和具有较小等待状态值的设备组合在一起。也许最重要的是,如果零等待状态存储器用于频繁访问的程序数据,即使较慢的设备共享相同的存储器总线,也可以使用零等待状态值。这最大限度地减少了 MCU 引脚要求,同时提高了性能并节省了功耗。

结论

MCU 有时需要通过使用外部存储器接口来扩展可用的片上存储器。了解这些接口的功能可以缩短设计时间、降低成本并提高系统性能。

猜你喜欢
中电网移动|移动中电网|频道导航区