>
首页 » 技术文章 » 高端SoC芯片的外部存储器接口设计

高端SoC芯片的外部存储器接口设计

作者:季爱慈 王世明 汪辉  时间:2006-12-05 16:34  来源:电子设计信息网-www.edires.net
摘要: 本文以一款24位高端SoC的设计经历, 简单描述了SoC芯片的外部存储器接口设计以及实现方式。该方案的一个特点是: 提出了在不同类型存储器存储空间之间可以进行存储空间的切换。并以SRAM的接口设计为例简单的介绍了如何进行外部存储器的接口设计。

关键词: SoC, 接口设计, SRAM, NandFlash, Verilog, Memory Switch

1 引言

本文以一款高端24位DSP消费数字芯片的设计经历, 简单地描述了在SoC芯片的系统级设计过程中, 如何进行外部存储器的接口设计, 并且详细介绍了SRAM接口设计。由于外部存储器有很多个生产厂商, 产品之间有一些差异, 本文的NandFlash采用SAMSUNG的128M×8bit 的NandFlash memory为模型, SRAM采用SAMSUNG 的256K×16bit高速静态RAM为模型。

2 系统设计

2.1 基本功能介绍
作为24位DSP芯片与外界交换数据的重要接口, 外部存储器接口的设计的优劣直接影响这该24位DSP芯片的面积, 功耗, 速度等相关的适应性和控制性能。同时, 高性能的外部存储器接口也是利用DSP 搭建复杂控制系统和多处理器协作的必要保证。

外部存储器接口是24位DSP内部存储器与外部存储器交换数据的基本通道。处理器与外界进行数据的发送、接收时, CPU、DMA、CACHE等执行部件只需要提供地址、数据和控制信号, 所有其他的数据通路、地址译码等过程全部都有外部存储器接口模块来完成。本文的外部存储器接口设计是为基于并行体系结构的24位通用处理器而设计的, 因此该接口模块将满足对多路存储器的多路控制、对24位数据处理以及与其他外设交换数据的基本要求。

此外, 为了增加DSP对外部接口性能的进一步要求, 使外部存储器的空间得到更加灵活的运用,本文还提出一种可以在外部、内部存储器之间相互切换的工作方式(Memory Switch) 。由于本文是以一个24 位高端消费SoC芯片为背景的, 这个芯片的片内存储器分为三块, 分别称之为Xmemory、Ymemory、Pmemory, 其中Xmemory的存储容量为32K字节、Ymemory的存储容量为16K 字节、Pmemory 的存储容量为48K 字节。为了使存储的空间效率得到充分利用。在Xmemory和Pmemory之间可以进行存储空间的切换。在默认情况下, Xmemory的存储空间是32K字节, Pmemory的存储空间是48k字节。通过配置寄存器, 可以将Pmemory的12K字节切换给Xmemory 的存储空间。同理, 也可以通过配置寄存器, 将Xmemory的12K字节切换给Pmemory来使用。这样可以提高存储空间的使用效率。

此外, 现在市场上使用比较广泛的存储器可以是8、16、32位的接口, 为了满足24位DSP对接口性能的进一步要求, 使外部存储器的片选方式更加灵活选择, 本文提出了一种内部存储器数据总线与外部存储器的接口匹配方式。其中内部存储器的数据可以为24位、也可一为16位, 外部存储器的位宽可以为8、16、32位。接口与CPU、DMA、外部存储器的连接关系如图1所示。


图1中, 当片内存储器的位宽为24位, 在整个系统验证环境中, 所采用的SRAM模型为16位, 所采用的Nand Flash模型为8位的, 就需要通过接口将数据进行适当的转换。可以通过两片SRAM组成一个32位的存储器, 此时, 如果只对SRAM进行数据传输, 则只用到32位的低24位。如果此时既对Nand Flash进行数据访问, 也对SRAM进行数据访问, 那么SRAM使用低的16位, NandFlash使用高八位。本文将从总体的构思到具体的功能部件的要点对外部存储器的接口设计进行说明。

2.2 总体设计构思
总线接口模块负责锁存总线来的地址、数据、控制字等信号的控制, 可支持写缓存功能。EMI( 外部存储器接口单元) 的功能是作为系统总线和外部存储器总线的桥梁, 主要支持以下一些功能:
⑴ 对Pmemory 、Xmemory、Ymemory的总线仲裁, 固定设置Pmemory、Xmemory、Ymemory的优先级。即Pmemory的优先级最高, Xmemory的优先级次之, Ymemory的优先级最低。由于在这个项目中DMA的目的存储器只可能为Xmemory和Ymemory,所以在图1中, 不能直接通过DMA对Pmemory存储器进行数据访问。对于Pmemory存储器内的数据访问只能通过DSP core来进行。

⑵ 对存储器的读写地址进行译码, 支持突发读写(burst read/write) ; DSP对外部存储器的访问必须首先通过EMI的选通信号来驱动。2条选通信号cs[0: 1]分别对应存储器映像的不同位置。地址译码模块根据模式寄存器的配置, 建立片上memory地址与外部memory地址空间的对应关系。根据基准地址寄存器的配置, 确定Pmemory、Xmemory、和Ymemory扩展的地址空间。设计中, 地址空间以16K为单位进行地址的划分, 将内部的memory控制器提供的地址重新组合成新的25位地址。以Xmemory为例, 如果data_size为0( 此时的数据位宽为16比特) , 以下代码为地址重新组合的过程。为了避免片上memory和片外memory地址重复, 在新的地址中要将片上的地址空间减掉。
assign comb_addr [14:1]=xbase_addr[13:0] - 0×3000;
assign comb_addr[24:15]=xbase_addr + mem_addr[23:14];
assign comb_addr[0]=1’b0;
其中comb_addr为重新组合后的25位地址,mem_addr为内部memory提供的地址, Xbase_addr为Xmemory扩展空间的基地址。由于传送的数据为24比特的, 而此时每次发送的数据为16比特, 所以需要两个地址分别存放低16 位的数据和高八位的数据。如果data_size 为1( 数据的位宽为24 比特) ,则assign comb_addr[24:0]={0,mem[23:0]}; 提供外部SRAM, LCD, NandFlash、SDRAM的接口信号, 产生相应的片选信号; 片选信号的产生也放在地址译码模块, 对于Pmemory, 若片上memory 为cache, 当mem_addr 小于24’Hfff000 时, 则选中Pmemory; 加入片上的memory不是cache, 则csp=((mem_addr>=24’h004000) & (mem_addr <24’hFFF000)); 而xmem 和ymem 不会有片上cache, 所以:
csx=((mem_addr>=24’h003000) & (mem_addr<24’hFFFC00));csy = (mem_addr >=24’h002000);
LCD和NANDFLASH分别只对应一个地址, 片选产生方法如下:
cs_lcd = (mem_addr ==24’hFFFC00);
cs_nf = (mem_addr ==24’hFFFC01);

⑶ 支持24比特和16比特的数据总线操作。

⑷ 在Pmemory和Xmemory之间支持内存块的切换(memory switch) 。

2.3 整体的架构
EMI(外部存储器接口单元) 模块与相邻模块的关系如图2所示。


EMI模块的内部结构如图3所示, 一共由四个部分组成,包括总线仲裁(bus_arb)模块、地址译码(addr_dec)模块、寄存器配置(reg)模块、总线控制(bus_ctrl)模块。地址译码模块的主要功能是对总线地址进行译码, 根据外部memory地址空间分配组合新的25位地址, 片外使用低22位地址。


⑴ 地址译码单元
地址译码模块主要包括存储器的片选信号的产生, 以及将片上存储器的地址映射为外部重新组合过的地址。读写与片选是为了配合地址与数据总线的时序而设计的, 其控制思想已经在前面的篇幅中详细描述过了, 故不再做单独介绍。

⑵ 寄存器读写模块
根据前面的分析可知, 如果片上存储器的数据带宽为16比特的, 那么一个24比特数据的读写操作需要分为两个地址进行。同理, 一次数据读写操作时, 可能需要外部存储器接口一个或者多个周期来完成。寄存器控制模块包括控制寄存器, 基准地址寄存器, 时间等待寄存器。它能及时地相应传输请求。并且根据片外存储器的类型以及时序特性控制正确的传输节拍。其中控制寄存器保留系统对一些参数( 建立时间, 数据保持时间, 数据有效时间)的配置, 这些寄存器配置直接参与外部存储器的时序控制。另外, 时间等待寄存器的配置主要是为了给外部存储器足够的读写操作时间。对于24bit的数据总线宽度, 读写周期可以达到512个系统时钟周期, 但是对于16bit的数据总线宽度, 改寄存器必须配置成偶数个时钟周期, 在寄存器配置的时间范围内, 读或写两个地址, 所以, 每一个地址操作所对应的读写时间是寄存器配置值的二分之一。

⑶ 总线仲裁模块
总线仲裁模块对Pmemory、Xmemory、Ymemory的三路总线信号进行总线仲裁, 保证在一个完整的读写周期内只有一路内部总线方位外部存储器。每次传输数据结束, 则此时外部相应存储器的片选信号放开。如果在某个时刻同时来了对Pmemory、Xmemory的读写请求, 则这个模块会根据不同存储器的访问优先级不同而做出相应的仲裁判断。CORE和DMA 在发送传输请求时可以根据实际情况掌握时机, 尽量做到不浪费时间, 也不造成总线冲突(bus conflicts)。

⑷ 总线控制模块
总线控制模块主要是根据寄存器配置情况和地址译码产生符合SDRAMC、LCD、NandFlash、SRAM所要求的控制时序。

3 设计实例

3.1 SRAM 的控制以及时序设计

对于SRAM接口, 为了满足外部SRAM或LCD的时序, 将读写周期、地址准备时间和数据保持时间设置为寄存器可配。SRAM控制器的基本读写时序如图4。读写使能信号相对于读写使能寄存器配置可调。内部计数器wsr_cnt根据配置计数,保证地址和读写使能信号保持时间足够长。根据SRAM的读写特性,本模块最快可配置成两个时钟周期的wait_state.4是针对内部memoryburst方式访问外部16位数据总线SRAM情况,为保证数据,地址和使能信号的一一对应,本模块将根据burst的长度将地址递加,并复制出相应的读写使能信号。



4 结束语

通过适当的多路片选控制和存储器空间的切换访问
,本文提出了一种灵活的外部存储器接口设计思路。它可以满足通用DSP对不同数据类型和不同存储器位宽的灵活转换的要求,使片外的存储器可以根据需要选择;同时,提出了在存储器PmemoryXmemory之间进行切换的思路,提高了存储器的效率和使用灵活性;同时为低功耗和体积要求较高的应用领域提供了一种方案。这个接口设计可以同时兼容SDRAMSRAMLCDNandFlash的存储器的接口。这个设计已经在我们实验室最新设计的高端消费SoC芯片中得到了应用。


相关推荐

SoC验证走出实验室良机已到

SoC  ICE  2014-01-17

蓝牙整合无线充电方案领舞穿戴式产品

SoC  Bluetooth  2013-12-31

Xilinx授予TSMC最佳供应商奖

Xilinx  SoC  2013-08-28

多核竞争已过时 “处理技术”将成新战场

SoC  处理技术  2013-08-26

物联网融合自动化推动高效生产模式变革

物联网  FPGA  SoC  2013-07-09

Semico:28nm SoC开发成本较40nm攀升1倍

28nm  SoC  2013-06-25
在线研讨会
焦点