- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
HYPERLINK /jbb0523/article/details/7058057 有关TI DSP的EMIF接口的两个问题: 地址总线不从零开始问题及寻址范围问题
作者: JBB0523(彬彬有礼)
?示例芯片:TMS320C6416
EMIF,即ExternalMemoryInterFace ,中文译为外部存储器接口。
?
EMIF可谓是困扰了我很久的一个接口。当然,相比于SPI,UART,I2C等总线协议来说,EMIF相对来说复杂一些……
?
========================两个问题============================
切不说EMIF怎么去用,单就表面的两个问题就能让人思考好久,但仍不得其解:
1)6416中共有EMIFA和EMIFB两个EMIF接口,但有一个问题,为什么EMIFA的地址总线是从AEA3到AEA22共20位,EMIFB的地址总线是从BEA1到BEA20共20位,按理来说这种总线都是从0开始的呀,这到底是怎么回事?
2)TI文档《TMS320C6414, TMS320C6415, TMS320C6416 FIXED-POINT DIGITAL SIGNAL PROCESSORS(SPRS146N)》中的表3部分如下所示:
在表3中可以看到,对于EMIFB的每个CE片选空间,共有64MB的寻址空间;对于EMIFA的每个CE片选空间,共有256MB的寻址空间。
但是,请注意问题1中的提到了无论对于EMIFA还是EMIFB均只有20根地址线,我们可以计算一下,2^20=1M的寻址空间,这64MB和256MB到底是指什么呢?
?
对于高手来说当然弄懂也许是小问题,但对于初次接触这类问题的初学者来说,也许琢磨很久也弄不明白,我就是后者!
?
========================问题的答案============================
为了解释以下问题,首先明确一个单位度量:字节=8bit,半字=16bit,字=32bit,双字=64bit
解答问题1:
我们再次来理一理EMIF接口:
EMIFA有AEA3~AEA22共20根地址线和AED0~AED63共64根数据线,也就是说数据总结是“双字”的,再注意一下表3中有关寻址范围的单位是BYTES,一个双字等于八个字节,而如果寻址八个字节则需要3位地址线。嗯,这就对了,EMIFA的地址总线无低三位,其实是因为它的数据总线是64位的缘故,即数据总线对数据的操作是以八个字节为单位的,所以根本没必要再包含低三位的地址线了……
同理,对于EMIFB,数据总线为16位,即数据总线对数据的操作是以半字为单位的,所以根本没必要包含最低位地址线了……
当然,虽然EMIFA有64位数据线,我们可以选择使用EMIFA的低32位,或者是低16位,或者是低8位;EMIFB有16位数据线,我们可以只选择使用它的低八位;
?
以EMIFB使用16位数据总线为例,我们要在DSP中使用EMIFB时,访问的地址是偶数,比如0,2,4等等,再具体点说吧,使用EMIFB的CE2片选的地址范围,我们可以这样在CCS中编程使用EMIFB接口:
*(short int *)(0= 0x11;
(short int *)(0是将0制类型转换成short int型的指针类型,即得到指向地址0指针,而地址0存是一个16bit的数据(其实是和0在一起了吧);
*(short int *)(0则是取出地址0存储的值;
那么这时EMIFB的地址总线上是什么情况呢?访问地址0,当然20位地址总线都是0了;但若是*(short int *)(0呢?注意,这时地址总线是1而不是2,因为地址总线是从BEA1开始的,而不是BEA0!
这时自然就出现了第2个问题,下面我们来解答。
?
解答问题2:
首先看一个TI官方文档:《TMS320C6000 DSP External Memory Interface(EMIF) Reference Guide【SPRU266E】》,这个文档一开始就讲了很多存储器类型,本来是讲EMIF接口的,讲存储器干吗?
下面看表4-3
?
注意表中的第一列是memory type,即存储器类型,共有三种,异步静态RAM(ASRAM),可编程同步存储器,同步动态RAM(SDRAM)
然后再注意第三列是maximum addressable bytes per CE space,即每CE片选空间最大可寻址字节数,其中对于前两种
文档评论(0)