C6747的EMIF外扩CPLD

6747的存储单元位32位,字节可寻址(8位、16位、32位和64位)

- EMIFA

-NOR(8位或16位宽数据)

-NAND(8位或16位宽数据)-16位SDRAM,128MB地址空间(仅限TMS320C6747)

地址线(EMA_A[12:0])共13条,EMA_BA[0]和EMA_BA[1]。

数据线(EMA_D[15:0])共16条。

-EMIFB

-具有256 MB地址空间的32位或16位SDRAM(TMS320C6747)

-16位SDRAM,128MB地址空间(TMS320C6745)

地址线(EMB_A[12:0])共13条,EMA_BA[0]和EMA_BA[1]。

数据线(EMB_D[31:0])共32条。

单位度量:字节=8bit,半字=16bit,字=32bit,双字=64bit。

以6747的EMIFA使用16位数据总线为例,我们要在DSP中使用EMIFA时,访问的地址是偶数,比如0,2,4,8等等,使用EMIFA的CS4片选的地址范围,我们可以这样在CCS中编程使用EMIFA接口:

*(short int *)(0x68000000)= 0x11;

(short int *)(0x68000000)是将0x68000000强制类型转换成short int型的指针类型,即得到指向地址0x68000000的指针,而地址0x68000000中存是一个16bit的数据(其实是和0x68000001合在一起了吧);

*(short int *)(0x68000000)则是取出地址0x68000000中存储的值;

那么这时EMIFA的地址总线上是什么情况呢?访问地址;但若是*(short int *)(0x68000002)呢?注意,这时地址总线是1而不是2,因为地址总线是从BEA1开始的,而不是BEA0。

首先看一个TI官方文档:《TMS320C6000 DSP External Memory Interface(EMIF) Reference Guide【SPRU266E】》

下面看表4-3(以C6000为例)

表中的第一列是memory type,即存储器类型,共有三种,异步静态RAM(ASRAM),可编程同步存储器,同步动态RAM(SDRAM)

第三列是Maximum addressable bytes per CE space,即每CE片选空间最大可寻址字节数,其中对于前两种类型的存储器都是对应相同的,但对于SDRAM来说则变为了前面两者的32倍!

再看表4-3,对于memory witdth为16和64的请况,我们可以很容易作出如下计算:

20根地址线,寻址范围为2^20=1M;对于EMIFA来说,他的数据总线为双字(8bytes),则它的寻址字节数为1M*8bytes=8MBytes;对于EMIFB来说,它的数据总线为半字(2bytes),则它的寻址范围为1M*2bytes=2MBytes。

这与表中是吻合的,但是对于64位数据总线中的256MB的寻址范转和16位数据总线中的64MB的寻址范围是为什么?对于SDRAM来说,它是分行地址和列地址的,即对其进行访问时分行和列之分,如果行地址有10位,列地址有16位,那么相当于寻址范围为2^10 * 2^16 = 2^26 = 64M。

下面举个例子,在研旭6747至尊板的boardled和CPLD例程中,CPLD需要控制8个LED,我们可以看作位一个字节(8bit)。

CPLD与DSP之间的地址线接法为BA1和A0-A7,见下图。

在6747中,存储单元是32位,如果字节寻址要使用16位,就需要把BA1作为最低位接上。如果字节寻址要使用8位,就需要把BA1和BA0接上,并且BA0作为最低位,BA1作为次低位。

下面我们来解释一下:6747中LED的地址为0x64000012;,为什么CLPD中LED地址为0x09呢?

上面我们提到了控制八位LED,可以看做一个字节,也就是一个字节的存储单元。

而对于6747使用到了BA1。所以6747是16位也就是两个字节的存储单元。

所以在CLPD中控制LED的是第九个存储单元(偏移九个地址单元),而6747中也应该是偏移九个地址单元见下图,0x64000000偏移9个存储单元就是0x64000012。

我们可以这样理解,CPLD是偏移九个存储单元(一个存储单元是8位=1个字节),6747也应该是偏移九个存储单元(一个存储单元是16位=2个字节)。

0x64000012,0x12对应二进制为10010,我们可以看作9个16位的存储单元。

0x09,对应二进制为1001,我们可以看作9个8位的存储单元。

见下图,这样我们就很好理解了。

假如DSP是存储单元是32位的,那么对应的偏移九个存储单元就是

0x64000024,0x24对应二进制就是100100,我们可以看作9个32位的存储单元。

以上均属于个人理解,如果有理解不对的地方,欢迎小伙伴在评论区指出讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式工程师-小旭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值