外部设备连接接口包括外部存储器连接接口(EMIF)、主机接口(HPI)等。外部存储器接口主要用来同并行存储器连接,这些存储器包括SDRAM、SBSRAM、Flash、SRAM存储器等,外部存储器接口还可以同外部并行设备进行连接,这些设备包括并行A/D、D/A转换器、具有异步并行接口的专用芯片,并可以通过外部存储器接口同FPGA、CPLD等连接;主机接口主要用来为主控cpu和C55x处理器之间提供一条方便、快捷的并行连接接口,这个接口用来对DSP进行控制、程序加载、数据传输等工作。
这里主要是EMIF。
EMIF输入输出信号图:
EMIF为3种类型的存储器提供了无缝接口:
在使用外部存储器接口时应区分字寻址和字节寻址之间的区别,当
TMS320C55x
访问数据时,
cpu
用
23
位地址访问
16
位字,该方式下数据空间被分成
128
页,每页字长
64K
。
cpu
访问程序代码时,用
24
位地址访问
8
位字节,
DMA
控制器访问存储器时也采用字节寻址方式。
如果多个请求服务同时到达,EMIF会根据每个请求优先级来进行处理。最高为HOLD,最低为刷新。
对EMIF编程时,必须了解外部存储器地址如何分配给片使能空间,即CE空间,每个CE空间可以同那些类型的存储器连接,以及用那些寄存器位来配置CE空间。
数据页
|
字寻址方式地址范
围
(
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
个片选空间都可以单独进行设置,设置的内容包括存储器类型、存储器宽度、读写时序参数等内容。本节将分别给出不同接口的硬件连接以及参数的设置。
外部存储器接口所支持的异步存储器接口、同步突发静态存储器接口和同步动态存储器接口都支持程序代码访问以及
32
位宽、
16
位宽和
8
位宽数据访问。外部存储器的
4
个片选空间都可以单独进行设置,设置的内容包括存储器类型、存储器宽度、读写时序参数等内容。
AM29LV320D
是一种大容量的闪存存储器,存储容量可以达到
2M
字
/4M
字节,数据总线宽度可以是
8
位或
16
位,下面给出
AM29LV320D
与
DSP
的连接关系示意图。
从图中可以看到
C55x
处理器与
AM29LV320D
的连接用了数据线
D7-D0
,在这种
连接方式下
AM29LV320D
的
DQ15/A-1
引脚应当作为地址线
A-1
来使用,处理器
的地址总线
A[21:0]
接到
AM29LV320D
的
A[20:-1]
,
AM29LV320D
的
BYTE#
信
号接地,
RESET#
接到系统复位信号,写保护
/
快速编程
WP#/ACC
引脚接高电
平。
AM29LV320D
的读写时序,如图
5-5
和图
5-6
所示,从时序图中可以看到该
芯片的一个读写周期最短为
90ns
或
120ns
,而数字信号处理器的
CLKOUT
时钟
是
DSP
主时钟的
1/1
、
1/2
、
1/3
、
1/4
、
1/5
、
1/6
、
1/7
或
1/8
,如果
DSP
运行在
200MHz
,则
DSP
一个时钟周期为
5ns
,如果不能让
DSP
的读写时序同
AM29LV320D
的读写时序相匹配,就无法实现正确的读写。调整
DSP
的读写时
序有两种方法,一种是将
AM29LV320D
的
RY/BY
信号接到
DSP
的
ARDY
信号上
,通过硬件等待信号实现二者读写时序的同步,另外一种方法是通过软件设置
外部存储器接口寄存器实现正确读写。方法
1
使用简单,但灵活性不强,如果
DSP
通过外部存储器接口连接多个芯片,这种方法就不能使用,软件设置的方
法灵活、方便,推荐使用该种方法设置外部存储器接口的读写时序。
当
CLKOUT
为
4
分频时,设置建立时间为
1
个时钟周期,选通时间为
4
个时钟周期,保持时间为
2
个时钟周期就可以正确读取
AM29LV320D
存储器。
外部存储器接口为每个片选空间都提供了独立的片选控制寄存器,通过这些寄存器可以设置寄存器类型,读
/
写时序以及超时时钟周期数,具体可参见下表
。
片选控制寄存器
1
(
CEx_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
|
读保持时间
|
片选控制寄存器
2
(
CEx_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
|
写保持时间
|
片选控制寄存器
3
(
CEx_3
)
位
|
字段
|
数值
|
说明
|
15~8
|
Reserved
|
|
保留
|
7~0
|
TIMEOUT
|
0
1
≤
N
≤
255
|
超时字段(同步存储器超时字段无效)
当ARDY信号为低超过N个时钟周期,则发生超时错误
|
因此,使用异步存储器要注意的问题是:
1 外部存储器连接信号
2 EMIF对异步存储器的配置
3 EMIF异步读操作
4 EMIF异步写操作
5 随就绪信号(ARDY)插入的额外周期
接下来给出
C55x
外部存储器接口同
32
位无校验管道型
SBSRAM
的连接图。图中
SBSRAM
占用
CE0
空间,
SBSRAM
的
MODE
信号接到低电平使
SBSRAM
工作在
线性突发模式,其他未用的
SBSRAM
信号如
ZZ
、
ADV
、
ADSP
和
GW
信号都接
成非活动状态。
如果所用的
SBSRAM
是有校验型存储器,连接时则应注意
SBSRAM
的校验
信号
DQP[d:a]
应当接地以减少功率消耗。
SBSRAM
需要设置字段
所在寄存器
|
位
|
字段名称
|
数值
|
说明
|
片选控制寄存器
|
14~12
|
MTYPE
|
100b
|
32
位宽
SBSRAM
|
全局控制寄存器
|
11~9
|
MEMFRE
Q
|
000b
001b
|
CLKMEM
频率
CLKOUT
频率
CLKOUT
频率除
2
|
全局控制寄存器
|
7
|
WPE
|
0
1
|
后写使能
禁止后写
后写使能
|
全局控制寄存器
|
5
|
MEMCEN
|
0
1
|
存储器时钟使能
CLKMEM
保持高电平
CLKMEM
输出使能
|
全局控制寄存器
|
0
|
NOHOLD
|
0
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]
、
SDA10
和
A[10:1]
|
A[7:0]
|
A[8:1]
|
64M
位
4M
x16
位
|
2
|
1 0 0
|
4
|
BA[1:0]
和
[11:0]
|
A[15:13]
、
SDA10
和
A[11:2]
|
A[7:0]
|
A[9:2]
|
64M
位
2M
x32
位
|
1
|
1 0 1
|
2
|
BA[1:0
和
[10:0]
|
A[14:13]
、
SDA10
和
A[11:2]
|
A[7:0]
|
A[9:2]
|
64M
位
2M
x32
位
|
2
|
1 0 1
|
4
|
BA[1:0
和
[10:0]
|
A[14:13]
、
SDA10
和
A[11:2]
|
A[7:0]
|
A[9:2]
|
128M
位
8M
x16
位
|
1
|
0 1 0
|
4
|
BA[1:0]
和
[11:0]
|
A[14:12]
、
SDA10
和
A[10:1]
|
A[8:0]
|
A[9:1]
|
128M
位
4M
x32
位
|
1
|
1 1 1
|
4
|
BA[1:0]
和
[11:0]
|
A[15:13]
、
SDA10
和
A[11:2]
|
A[7:0]
|
A[9:2]
|
在读写操作时作为预加电使能信号,在
DCAB
命令
下为高,保持模式下为高阻态。
C55x EMIF
接口
SDRAM
命令
命令
|
说明
|
DCAB
|
关闭所有边界
|
ACTV
|
打开所选择边界和所选择行
|
READ
|
输入起始列地址开始读操作
|
WRT
|
输入起始列地址开始写操作
|
MRS
|
配置
SDRAM
模式寄存器
|
REFR
|
自动循环刷新地址
|
不进行操作
|
所在寄存器
|
位
|
字段名称
|
数值
|
说明
|
全局控制寄存器
|
11~9
|
MEMFRE
Q
|
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
|
从刷新命令
REFR
到
REFR/MRS/ACTV
命令间
隔
CLKMEM
周期数
|
10
|
SDSIZE
|
0
|
SDRAM
宽度
0
:
16
位宽
1
:
32
位宽
|
9
|
SDWID
|
0
|
SDRAM
容量
0
:
64M
位
1
:
128M
位
|
8
|
RFEN
|
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
|
TACTV2A
CTV
|
1111b
|
SDRAS
到
SDRAS
有效延迟
CLKMEM
周期数
|
SDRAM
周期寄存器和计数寄存器用来设置
SDRAM
的刷新周期,
其中周期寄存器存放刷新所需
CLKMEM
时钟周期数,计数寄存器
存放刷新计数器当前计数值。
外部寄存器接口的软件设置
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
*/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。