540 likes | 751 Views
高速 DSP 原理、应用及实践. 自动化测试与控制研究所 许永辉 2011.3.2. Part3 : 外部存储器接口( EMIF ). 1. 概述. DM642 通过 EMIF 访问外存储器空间或 I/O 空间 EMIF 可以与目前几乎所有的存储器无缝连接 DM642 的 EMIF 支持的存储器包括: 同步突发静态 RAM(SBSRAM) 同步动态 RAM(SDRAM) 异步器件,包括 SRAM 、 ROM 、 FIFO 等 外部共享存储空间的设备 零总线转换( ZBT )同步流水线 SRAM 同步 FIFO. 2. 信号. 3.
E N D
高速DSP原理、应用及实践 自动化测试与控制研究所 许永辉 2011.3.2
Part3: 外部存储器接口(EMIF)
1 概述 • DM642通过EMIF访问外存储器空间或I/O空间 • EMIF可以与目前几乎所有的存储器无缝连接 • DM642的EMIF支持的存储器包括: • 同步突发静态RAM(SBSRAM) • 同步动态RAM(SDRAM) • 异步器件,包括SRAM、ROM、FIFO等 • 外部共享存储空间的设备 • 零总线转换(ZBT)同步流水线SRAM • 同步FIFO
2 信号
3 地址总线和数据总线引脚 • 数据总线:ED[63:0] • 地址总线:EA[22:3] • 上电复位阶段:EA[22:21]设置DM642的启动方式 • 00-不启动 • 01-从HPI/PCI加载程序 • 11-从EMIFA接口加载程序 • 10-保留 • EA[20:19]设置EMIFA的同步时钟来源 • 00-同步时钟来自ECLKIN引脚 • 01-来自CPU/4 • 10-来自CPU/6 • 11-保留
4 CE空间片选和字节使能信号 • 空间片选引脚:CE[0:3] • 把外部存储器空间划分为4个子空间 • 实际是高位地址译码输出,每个空间大小256MB • CE0:80000000-0x8fffffff:256MB • CE1:90000000-0x9fffffff:256MB • CE2:A0000000-0xAfffffff:256MB • CE3:B0000000-0xBfffffff:256MB • 外部存储空间字节使能:BE[0:7] • 内部32bit地址的最低3位经译码后输出 • 解决从EA3开始,低位地址单元无法直接访问的问题 • 分别使能64bit数据中的8bit • 可与SDRAM的SDQM[0:7]连接,用作SDRAM数据读写屏蔽信号
5 时钟、PDT和HOLD • ECLLKIN是EMIF的同步时钟源 • 1/6CPU主频、1/4CPU主频、ECLKIN • ECLLKOUT1和ECLLKOUT2为外部存储器提供同步时钟 • ECLLKOUT1等于EMIF输入时钟 • ECLLKOUT2可设置为EMIF输入时钟的1、2、4分频 • PDT(Peripheral Device Transfer) • 通常DSP片外两个设备之间数据传输需要执行2个EMIF操作 • PDT支持外部设备到外部设备的传输,只占一个总线周期 • 总线状态指示引脚 • HOLD:保持 • HOLDA:保持应答
6 控制管脚 • AARE/ASDCAS/ASADS/ASRE • 异步存储器:ARE有效,存储器读使能控制 • SDRAM:ASDCAS有效,列地址选择 • 同步存储器:ASADS/ASRE有效,地址选通/读使能 • AAOE/ASDRAS/ASOE • 异步存储器:AAOE有效,输出使能控制 • SDRAM:ASDRAS有效,行地址选择 • 同步存储器:ASOE有效,输出使能控制 • AAWE/ASDWE/ASWE • 异步存储器: AAWE有效,写使能控制 • SDRAM:ASDWE有效,写使能控制 • 同步存储器:ASWE有效,写使能控制 • ASDCKE:SDRAM的时钟使能控制信号 • ASOE3:存储器使能控制,对FIFO类存储器无效
7 EMIF的寄存器 3.1 • 全局控制寄存器:GBCTL • 整个CE空间的公共参数设置 • CE空间控制寄存器:CExCTL • CE空间对应的存储器类型、控制对外接口的时序 • CE空间第二控制寄存器:CExSEC • CE空间对应的可编程同步存储器读写时序 • SDRAM控制寄存器:SDCTL • SDRAM时序寄存器:SDTIM • SDRAM寄存器:SDEXT
8 全局控制寄存器 例如: *(int *)EMIFA_GCTL = 0x000927fc ECLKOUT2使能输出,且为EMIF输入时钟的1/4 ECLKOUT1使能输出 CLK4和CLK6使能输出
9 CE空间控制寄存器(CECTL) • 读/写建立时间 • 读/写选通时间 • 读/写保持时间 • MTYPE:CE空间识别存储器类型, • 选择了同步器件,其余的设置无效,因为读写按照时钟CLKOUT1 • 选择了异步器件,其余的设置有效,指定地址和控制信号的信息
10 存储器宽度和字节对齐 C64x的EMIFA支持8/16/64位宽度的存储器,同样支持大终端(big-endian)和小终端(little-endian)模式。
10 异步接口 • 读写周期可灵活的设置,实现与不同速度/不同类型的异步器件的直接接口: ASRAM/EPROM/FLASH/FPGA/ASIC/FIFO等 • 4个控制信号,通过不同组合实现无缝接口。CEXCTL负责设置异步读写时序
11 EMIF到32位SRAM的接口
12 EMIF到ROM的接口
13 C64x 异步接口(ASRAM)的总结
14 异步接口参数 • 参数定义 • Setup(建立时间):从存储器访问周期开始(片选、地址有效)有效到读/写信号有效 • Strobe(触发时间):读/写信号从有效到无效 • Hold(保持时间):从读/写信号无效到该访问周期结束 • 参数要求 • 时间单位是ECLKOUT1时钟周期 • SETUP>=1(0当作1看待) • STROBE>=1(0当作1看待) • HOLD>=0
15 异步读操作
16 异步写操作
17 输入准备信号 • 高电平有效的异步输入准备好信号 • 用来对慢速存储器和外部设备插入等待状态 • 通过使ARDY输入无效来插入额外的周期到选通周期中
18 异步接口举例 *(int*)GBLCTL =0x0009207C //时钟1/2/4/6都使能,2是EMIF时钟/2 *(int*)CECTL1= 0xFFFFFF03 //表明CE1使用8位的ROM, //程序只在上电加载,故可按照最慢配置
18 SDRAM接口 • SDRAM: Synchronous Dynamic Random Access Memory同步动态随机存储器 • 同步:指其时钟频率与总线的系统时钟频率相同,并且内部的命令的发送与数据的传输都以它为基准; • 动态:存储器需要不断的刷新来保证数据不丢失; • 随机:指数据不是线性一次存储,而是自由指定地址进行数据的读写 • 速度快:访问周期可达6ns,可单时钟周期读写 • 容量大:最大已经有1Gbit/片
19 DRAM原理 行选与列选信号使存储电容与外界间传输电路导通,从而可进行放电(读取)与充电(写入)
20 SDRAM内部结构 SDRAM存储阵列示意图 • SDRAM的内部结构是一个随机访问的存储阵列 • 阵列就如同表格一样,先指定一个行(Row),再指定一个列(Column),就可以准确地找到所需要的单元格,这个单元格可称为存储单元,这个表格(存储阵列)就是逻辑Bank; • 由于技术、成本等原因,人们在SDRAM内部分割成多个Bank,较早以前是两个,目前基本都是4个,这也是SDRAM规范中的最高Bank数量。在最新DDR-Ⅱ的标准中,Bank的数量也提高到了8个。
21 SDRAM控制命令
22 SDRAM真值表
23 EMIF与64MbitSDRAM接口
24 DM642支持的SDRAM类型
25 SDRAM管脚功能
26 SDRAM 控制寄存器
27 SDRAM时序寄存器 • SDRAM时序寄存器根据EMIF时钟周期控制刷新周期。周期字段可有选择地向CPU发出一个中断。 • 如果系统中没用SDRAM,这个计数器可作为一个通用定时器使用。
26 SDRAM扩展寄存器 7.6.3 SDRAM扩展寄存器 C64x的SDRAM扩展寄存器允许对许多SDRAM参数编程。可编程性具有两个优点。 首先,它允许一个面向多样的SDRAM的接口,而且不 仅仅局限于少数配置或者速度特性。 第二,由于隐含预加载和多个打开的存储体等特性,EMIF能保持从外部SDRAM的连续数据传输。
27 SDRAM接口设计方法 SDRAM属于结构比较复杂的存储器。实际使用中不用研究SDRAM的控制命令以及时序等方面的内容的内容,只要知道其管脚如何与DM642相连。再通过查阅SDRAM的手册配置好SDRAM的几个控制寄存器即可。 MT48LC4M32B2是美光公司生产的128Mb的 SDRAM,其构架1024×32×4,每个bank行地址数目是12,列地址数目是8。由于DM642的数据线是64位宽,所以在硬件设计时选用两片SDRAM来构成64位的数据存储器。查与DM642兼容的SDRAM表可知,MT48LC4M32B2是C64x DSP兼容的SDRAM,CE空间最大的器件数是2。另外,对照该表还可以得到与DM642相接的硬件电路原理图。
28 SDRAM接口设计图
29 SDRAM接口设计程序 *(int*)GBLCTL =0x0009207C //时钟1/2/4/6都使能,2是CPU/2 *(int*)CECTL0 = 0xFFFFFFD3 //表明CE0使用64位的SDRAM *(int*)SDCTL =0x57116000 //2个bank管脚, 12个行管脚;8个列管脚 // TRC=6; TRP=1; TRCD=1; *(int*)SDTIM = 0x0008061A //刷新时间:0x61a×10ns=15.62us *(int*)SDEXT = 0x00054549 //TCL=1,TRAS=4,TRRD=0 //TER=1,THZP=2
30 CE空间第二控制寄存器(CExSEC ) • 控制可编程同步存储器访问的周期时序 • 控制用于特定的CE空间同步的时钟 • SYNCRL:同步接口数据读取等待时间 • SYNCWL:同步接口数据写入等待时间 • CEEXT:CE扩展存储器使能位 • RENEN:读使能信号,SADS/SRE是SADA模式还是SRE模式 • SNCCLK:同步周期,CE空间信号与ECLKOUT1还是与ECLKOUT1同步
31 SBSRAM接口 • SBSRAM是同步猝发静态存储器(Synchronous Burst Static RAM)的缩写; • SBSRAM结构上分为直通式(flow through )和流水线式(pipeline)两种类型,C64x EMIF可支持与后者的直接接口; • 支持同步猝发访问,读写速度高,而且属于静态RAM,不需要刷新; • SBSRAM既可以在ECLKOUT1也可以在ECLKOUT2时钟频率下工作; • 在片选信号有效时,SBSRAM在时钟上升沿锁存其它4个控制信号,决定存储器的操作。
32 SBSRAM的操作 • 对于标准SBSRAM的接口,C64x EMIF的CExSEC寄存器有关字段需要设置为以下值: • SYNCRL=10b,2周期读延迟 • SYNCWL=00b,0周期写延迟 • CEEXT=0,最后一次存取命令发出后CE变高 • RENEN=0,SADS/SRE管脚作为SADS信号
32 SBSRAM接口例子 CY7C1480V33具有增强的外围电路和2为的计数器用来实现内部突发操作,其容量2M×36b,总线操作最高支持达250MHz。
33 SBSRAM接口程序 *(int*) GBLCTL=0x0009207C, //时钟1,2,4,6都使能,2是CPU/2 *(int*) CECTL2 =0xFFFFFF43, //CECTL2,表明CE2使用32位的SBSRAM *(int*) CESEC2 =0x00000042, //表明SBSRAM同步时钟使用的是 //ECLKOUT2,2周期读取等待时间
34 可编程同步接口 • C64x的EMIF在SBSRAM接口基础上扩展为可编程同步接口,支持与下列同步器件的直接接口 • 流水线式和直通式结构的SBSRAM; • ZBT( Zero Bus Turnaround)同步pipeline SRAM; • 标准结构和Flow-through结构(FWFT)的同步FIFO。 • 通过CExSEC寄存器配置读写操作时序实现可编程接口 • 选择数据的延迟周期; • 片选信号CE的无效时间; • 读写信号的波形等。
35 ZBT RAM控制寄存器设置 • CE控制寄存器 • MTYPE = 1010b: 8bit宽可编程存储器 • MTYPE = 1011b: 16bit宽可编程存储器 • MTYPE = 0100b: 32bit宽可编程存储器 • MTYPE = 1110b: 64bit宽可编程存储器 • CExSEC控制寄存器 • SYNCRL=10b,2周期读延迟 • SYNCWL=10b,2周期写延迟 • CEEXT=0,发出最后一个命令后CE变高 • RENEN=0,SADS/SRE管脚作为SADS信号
36 标准同步FIFO的CExSEC设置 • 读接口时序CExSEC控制寄存器 • SYNCRL=01b,1周期读延迟 • RENEN=0,SADS/SRE管脚作为/SRE信号 • CEEXT=0,可以实现与FIFO的直接接口 • CEEXT=1,接口需要辅助逻辑 • 写接口时序CExSEC控制寄存器 • SYNCRL=00b,0周期读延迟 • RENEN=0,SADS/SRE管脚作为/SRE信号
37 标准同步FIFO的接口图
38 FWFT FIFO读写CExSEC设置 • 读接口时序CExSEC控制寄存器 • SYNCRL=00b,0周期读延迟 • RENEN=0,SADS/SRE管脚作为/SRE信号 • CEEXT=0,可以实现与FIFO的直接接口 • CEEXT=1,接口需要辅助逻辑 • 写接口时序CExSEC控制寄存器 • SYNCRL=00b,0周期读延迟 • RENEN=0,SADS/SRE管脚作为/SRE信号
39 PDT传输 • C64x的EMIF增加一个PDT控制管脚提供外部器件传输接口( Peripheral Device Transfer ); • DSPs控制片外(EMIF上)一个外部设备(Peripheral,例如FIFO)和另一个外部存储器(Memory,例如SDRAM)之间直接传输数据,每次传输只占用一个总线周期 • 在EDMA可选参数中设置PDT传输的配置