DSP EMIF

 外部设备连接接口包括外部存储器连接接口(EMIF)、主机接口(HPI)等。外部存储器接口主要用来同并行存储器连接,这些存储器包括SDRAM、SBSRAM、Flash、SRAM存储器等,外部存储器接口还可以同外部并行设备进行连接,这些设备包括并行A/D、D/A转换器、具有异步并行接口的专用芯片,并可以通过外部存储器接口同FPGA、CPLD等连接;主机接口主要用来为主控CPU和C55x处理器之间提供一条方便、快捷的并行连接接口,这个接口用来对DSP进行控制、程序加载、数据传输等工作。
       这里主要是EMIF。
EMIF输入输出信号图:
 
EMIF为3种类型的存储器提供了无缝接口:
1 异步存储器,包括ROM,FLASH,异步SRAM
2 同步突发静态存储器(SBSRAM
3 同步动态存储器(SDRAM
        异步存储器可以是静态随机存储器(SRAM)、只读存储器(ROM)和闪存存储器等存储器,在实际使用中还可以用异步接口连接并行A/D采样器件、并行显示接口等外围设备,但使用这些非标准设备时需要增加一些外部逻辑来保证设备的正常使用。
        在使用外部存储器接口时应区分字寻址和字节寻址之间的区别,当TMS320C55x访问数据时,CPU23位地址访问16位字,该方式下数据空间被分成128页,每页字长64KCPU访问程序代码时,用24位地址访问8位字节,DMA控制器访问存储器时也采用字节寻址方式。
        如果多个请求服务同时到达,EMIF会根据每个请求优先级来进行处理。最高为HOLD,最低为刷新。
        对EMIF编程时,必须了解外部存储器地址如何分配给片使能空间,即CE空间,每个CE空间可以同那些类型的存储器连接,以及用那些寄存器位来配置CE空间。
        TMS320C55x的外部存储器映射在存储空间的分布,相应于EMIF的片选使能信号,例如CE1空间的存储器,则必须将其片选引脚连接到EMIF的CE1引脚。当EMIF访问CE1空间时,驱动CE1变低。
数据页
字寻址方式地址范
16进制)
外部存储器
字节寻址方式地址范围
16进制)
2页后64K字节
3-31
02 8000-1F FFFF
CE0空间
4M-320K)字节
05 0000-3F FFFF
32-63
20 0000-3F FFFF
CE1空间
4M字节
40 0000-7F FFFF
64-95
40 0000-5F FFFF
CE2空间
4M字节
80 0000-BF FFFF
96-127
60 0000-7F FFFF
MP/MC=0
CE3空间长度为
4M-32K)字节
剩余地址空间被片上ROM
MP/MC=1
CE3空间长度为4M字节
C0 0000-FF FFFF
TMS320C5510外部存储器映射中的最高地址单独分配给CE3空间,或由CE3及内部的DSP ROM共享。这些地址的分配由CPU状态寄存器ST3_55中的MPNMC位来决定。在DSP复位期间,MPNMC值取决于DSP的NP/MC引脚的信号电平。
 
可以使用全局控制寄存器EGCR和每个CE空间控制寄存器来配置CE空间。
对于每个CE空间,必须设置控制寄存器1中的以下域:
MTYPE 指定存储器类型
MEMFREQ 决定存储器信号的频率
MEMCEN 决定CLKMEM引脚是输出存储器时钟信号,还是被拉成高电平
 
一定要对全局控制寄存器写如下控制位。
WPE 对所有CE空间,使能或者禁止
NOHOLD 对所有CE空间,使能或禁止HOLD请求
 
 
外部寄存器接口硬件连接与配置
 
        外部存储器接口所支持的异步存储器接口、同步突发静态存储器接口和同步动态存储器接口都支持程序代码访问以及32位宽、16位宽和8位宽数据访问。外部存储器的4个片选空间都可以单独进行设置,设置的内容包括存储器类型、存储器宽度、读写时序参数等内容。本节将分别给出不同接口的硬件连接以及参数的设置。
1.异步存储器接口    
         异步存储器的类型多种多样,它们既包括静态随机存储器、闪存存储器、只读存储器等,又有先入先出存储器、双端口存储器等,这些存储器有着不同的特点,可以根据需要灵活选用。
         外部存储器接口所支持的异步存储器接口、同步突发静态存储器接口和同步动态存储器接口都支持程序代码访问以及32位宽、16位宽和8位宽数据访问。外部存储器的4个片选空间都可以单独进行设置,设置的内容包括存储器类型、存储器宽度、读写时序参数等内容。
          AM29LV320D是一种大容量的闪存存储器,存储容量可以达到2M/4M字节,数据总线宽度可以是8位或16位,下面给出AM29LV320DDSP的连接关系示意图。 
       
 
 
      从图中可以看到C55x处理器与AM29LV320D的连接用了数据线D7-D0,在这种连接方式下AM29LV320DDQ15/A-1引脚应当作为地址线A-1来使用,处理器的地址总线A[21:0]接到AM29LV320DA[20:-1]AM29LV320DBYTE#号接地,RESET#接到系统复位信号,写保护/快速编程WP#/ACC引脚接高电平。   
      AM29LV320D的读写时序,如图5-5和图5-6所示,从时序图中可以看到该芯片的一个读写周期最短为90ns120ns,而数字信号处理器的CLKOUT时钟DSP主时钟的1/11/21/31/41/51/61/71/8,如果DSP运行在200MHz,则DSP一个时钟周期为5ns,如果不能让DSP的读写时序同AM29LV320D的读写时序相匹配,就无法实现正确的读写。调整DSP的读写时序有两种方法,一种是将AM29LV320DRY/BY信号接到DSPARDY信号上,通过硬件等待信号实现二者读写时序的同步,另外一种方法是通过软件设置外部存储器接口寄存器实现正确读写。方法1使用简单,但灵活性不强,如果DSP通过外部存储器接口连接多个芯片,这种方法就不能使用,软件设置的方法灵活、方便,推荐使用该种方法设置外部存储器接口的读写时序。
CLKOUT4分频时,设置建立时间为1个时钟周期,选通时间为4个时钟周期,保持时间为2个时钟周期就可以正确读取AM29LV320D存储器。
外部存储器接口为每个片选空间都提供了独立的片选控制寄存器,通过这些寄存器可以设置寄存器类型,读/写时序以及超时时钟周期数,具体可参见下表
片选控制寄存器1CEx_1
字段
数值
说明
15~13
Reserved
保留
14~12
MTYPE
000b
001b
010b
011b
100b
101b~111b
存储器类型
8位宽异步存储器
16位宽异步存储器
32位宽异步存储器
32位宽同步动态存储器(SDRAM)
32位宽同步静态突发存储器(SBSRAM)
保留
11~8
READ SETUP
1~15
读建立时间
7~2
READ STROBE
1~63
读选通时间
1~0
READ HOLD
0~3
读保持时间
片选控制寄存器2CEx_2
字段
数值
说明
15~14
EXTENED HOLD READ
0~3
读延长保持时间
13~12
EXTENED HOLD WRITE
0~3
写延长保持时间
11~8
WRITE SETUP
1~15
写建立时间
7~2
WRITE STROBE
1~63
写选通时间
1~0
WRITE HOLD
0~3
写保持时间
片选控制寄存器3CEx_3
字段
数值
说明
15~8
Reserved
保留
7~0
TIMEOUT
0
1  N255
超时字段(同步存储器超时字段无效)
超时功能被禁止
ARDY信号为低超过N个时钟周期,则发生超时错误
 
因此,使用异步存储器要注意的问题是:
1 外部存储器连接信号
2 EMIF对异步存储器的配置
3 EMIF异步读操作
4 EMIF异步写操作
5 随就绪信号(ARDY)插入的额外周期
 
2.同步突发静态存储器(SBSRAM)       同步突发静态存储器是一种高密度、高速的存储器,同同步动态存储器相比,同步静态存储器不需要刷新,访问更加方便、快捷。TMS320C55x外部存储器接
支持32位宽无校验同步突发管道型静态存储器,同步突发静态存储器的工作频率在与CPU时钟同频或CPU时钟频率的1/2
        SBSRAM有流水和流通两种类型,但EMIF只支持流水型,在相同吞吐量的情况下,可以工作在更高的频率。
        同步突发静态存储器所使用的信号包括数据总线D[0..31]、地址总线A[21..0]、片选信号CE0-CE3、字节使能信号BE0-BE3,此外还有SBSRAM地址选通信号
SSADS、输出使能信号SSOE、写使能信号SSWE和存储器接口时钟CLKMEM
       接下来给出C55x外部存储器接口同32位无校验管道型SBSRAM的连接图。图中SBSRAM占用CE0空间,SBSRAMMODE信号接到低电平使SBSRAM工作在线性突发模式,其他未用的SBSRAM信号如ZZADVADSPGW信号都接成非活动状态。
       如果所用的SBSRAM是有校验型存储器,连接时则应注意SBSRAM的校验信号DQP[d:a]应当接地以减少功率消耗。
      如果要使用SBSRAM的电源关闭模式,可以将SBSRAMZZ引脚C55x的通用输入输出引脚相连接,通过通用输入输出引脚控制SBSRAM是否进入电源关闭模式。
        控制SBSRAM接口的寄存器包括EMIF全局控制寄存器和片选控制寄存器CEx_1,接下来给出SBSRAM所需设置字段表。
SBSRAM需要设置字段
所在寄存器
字段名称
数值
说明
片选控制寄存器
14~12
MTYPE
100b
32位宽SBSRAM
全局控制寄存器
11~9
MEMFREQ
000b
001b
CLKMEM频率
CLKOUT频率
CLKOUT频率除2
全局控制寄存器
7
WPE
0
1
后写使能
禁止后写
后写使能
全局控制寄存器
5
MEMCEN
0
1
存储器时钟使能
CLKMEM保持高电平
CLKMEM输出使能
全局控制寄存器
0
NOHOLD
0
1
外部保持控制
允许外部保持
禁止外部保持
 
3.同步突发动态存储器(SDRAM)
 
TMS320C55x外部存储器接口支持16位、32位宽,64M位和128MSDRAMSDRAM可以工作在C55x频率的1/21/1
SDRAM的引脚映射和寄存器配置表
SDRAM
及排列方式
使用芯
数量
配置位
占用CE
空间数
边界/行地址
列地址
SDACC SDSIZE SDWID
SDRAM
EMIF
SDRAM
EMIF
64M
4M x16
1
0             0              0
2
BA[1:0][11:0]
A[14:12]
SDA10A[10:1]
A[7:0]
A[8:1]
64M
4M x16
2
    1              0              0
4
BA[1:0][11:0]
A[15:13]
SDA10A[11:2]
A[7:0]
A[9:2]
64M
2M x32
1
    1              0              1
2
BA[1:0[10:0]
A[14:13]
SDA10A[11:2]
A[7:0]
A[9:2]
64M
2M x32
2
    1              0              1
4
BA[1:0[10:0]
A[14:13]
SDA10A[11:2]
A[7:0]
A[9:2]
128M
8M x16
1
    0              1              0
4
BA[1:0][11:0]
A[14:12]
SDA10A[10:1]
A[8:0]
A[9:1]
128M
4M x32
1
    1              1              1
4
BA[1:0][11:0]
A[15:13]
SDA10A[11:2]
A[7:0]
A[9:2]
 
SDRAM接口专用信号包括SDRAM行选通信号SDRAS、列选通信SDCAS和写使能信号SDWESDA10信号在ACTV命令时作为行地址信号,
在读写操作时作为预加电使能信号,在DCAB命令下为高,保持模式下为高阻态。
        SDRAM操作时需要一系列命令来支持其运行,下面给出命令列表 
C55x EMIF接口SDRAM命令
命令
说明
DCAB
关闭所有边界
ACTV
打开所选择边界和所选择行
READ
输入起始列地址开始读操作
WRT
输入起始列地址开始写操作
MRS
配置SDRAM模式寄存器
REFR
自动循环刷新地址
NOP
不进行操作
 
在进行SDRAM操作时需要修改EMIF全局控制寄存器和片选控制寄存器1,接下来给出SDRAM所需设置字段表。
 
所在寄存器
字段名称
数值
说明
全局控制寄存器
11~9
MEMFREQ
000b
001b
CLKMEM频率
CLKOUT频率
CLKOUT频率除2
全局控制寄存器
7
WPE
0
1
后写使能
禁止后写
后写使能
全局控制寄存器
5
MEMCEN
0
1
存储器时钟使能
CLKMEM保持高电平
CLKMEM输出使能
全局控制寄存器
0
NOHOLD
0
1
外部保持控制
允许外部保持
禁止外部保持
片选控制寄存器1
14~12
MTYPE
011b
32位宽或16位宽SDRAM
 
除了设置以上寄存器以外还需要设置SDRAM控制寄存器 
SDRAM控制寄存器1
字段
初始值
说明
15~11
TRC
1111b
从刷新命令REFRREFR/MRS/ACTV命令间CLKMEM周期数
10
SDSIZE
0
SDRAM宽度
016位宽  132位宽
9
SDWID
0
SDRAM容量
064M  1128M
8
RFEN
1
刷新使能
0:禁止刷新  1:允许刷新
7~4
TRCD
0100
ACTV命令到READ/WRITE命令CLKMEM周期数
3~0
TRP
100
DCAB命令到REFR/ACTV/MRS命令CLKMEM周期数
SDRAM控制寄存器2
字段
初始值
说明
10
SDACC
0
0: SDRAM数据总线接口为16位宽
1: SDRAM数据总线接口为32位宽
9~8
TMRD
11b
ACTV/DCAB/REFR延迟CLKMEM周期数
7~4
TRAS
1111b
SDRAS信号有效时持续CLKMEM周期数
3~0
TACTV2ACTV
1111b
SDRASSDRAS有效延迟CLKMEM周期数
 
SDRAM周期寄存器和计数寄存器用来设置SDRAM的刷新周期,其中周期寄存器存放刷新所需CLKMEM时钟周期数,计数寄存器存放刷新计数器当前计数值。
 
 
外部寄存器接口的软件设置
 
应用芯片支持库函数对外部寄存器接口进行设置首先要在头文件中包含csl_emif.h,接下来声明EMIF配置结构:
EMIF_Config Config_EMIF = {
0x0281,  /* EMIF全局控制寄存器*/
               /* CLKMEM=OFF */
               /*HOLD_disabled */
0xFFFF, /* EMIF初始化寄存器*/
0x100c, /* ce01 */
/*MTYPE=001B 16 位异步存储器
  READ START=0000b 读建立周期为0
  READ STROBE=000011b 读选通周期为3
  READ HOLD=01b 读保持周期为1
*/
0x0FFF, /* ce02 */
/*READ EXT HOLD=00b
  WRITE EXT HOLD=00b
  WRITE SETUP=1111b 写建立周期为=15
  WRITE STROBE=111111b 写选通周期为=63
  WRITE HOLD=11b 写保持周期为=3
*/
0x00FF, /* ce03 */
/*TIMEOUT=0XFF,timeout=255*/
0x013E, /* ce11 */
/*MTYPE=000B 8 位异步存储器
  READ START=0001b读建立周期为1
  READ STROBE=001111b读选通周期为15
  READ HOLD=10b读保持周期为2
*/
0x0FFF, /* ce12 */
/*READ EXT HOLD=00b
  WRITE EXT HOLD=00b
  WRITE SETUP=1111b写建立周期为15
  WRITE STROBE=111111b写选通周期为63
  WRITE HOLD=11b写保持周期为3
*/
0x00FF, /* ce13 */
0x1105, /* ce21 */
/*MTYPE=001B 16位异步存储器
  READ START=0001b 读建立周期为1
  READ STROBE=000001b 读选通周期为1
  READ HOLD=01b 读保持周期为1
*/
0x0105, /* ce22 */
/*READ EXT HOLD=00b
  WRITE EXT HOLD=00b
  WRITE SETUP=0001b 写建立周期为1
WRITE STROBE=000001b写选通周期为1
  WRITE HOLD=01b写保持周期为3
0x00FF, /* ce23 */
0x110D, /* ce31 */
/*MTYPE=001B 16位异步存储器
  READ START=0001b读建立周期为1
  READ STROBE=000011b读选通周期为3
  READ HOLD=01b读保持周期为1
*/
0x010D, /* ce32 */
/*READ EXT HOLD=00b
  WRITE EXT HOLD=00b
  WRITE SETUP=0001b写建立周期为1
  WRITE STROBE=000011b 写选通周期为3
  WRITE HOLD=01b 写保持周期为1
*/
0x00FF, /* ce33 */
0x07FF, /* sdc1 */
0x0FFF, /* sdper */
0x07FF, /* init */
0x03FF /* sdc2 */
/*没有SDRAM*/
};
接下来调用EMIF配置函数完成配置过程:
EMIF_config(&Config_EMIF);
原文地址:https://www.cnblogs.com/pzchuaini/p/3333155.html