有关TI DSP的EMIF接口的两个问题

上传人:lis****210 文档编号:166979541 上传时间:2022-11-02 格式:DOCX 页数:7 大小:21.48KB
返回 下载 相关 举报
有关TI DSP的EMIF接口的两个问题_第1页
第1页 / 共7页
有关TI DSP的EMIF接口的两个问题_第2页
第2页 / 共7页
有关TI DSP的EMIF接口的两个问题_第3页
第3页 / 共7页
点击查看更多>>
资源描述
有关TI DSP的EMIF接口的两个问题:地址总线不从零开始问题及寻址范围问题作者:JBB0523 (彬彬有礼)示例芯片:TMS320C6416EMIF,即ExternalMemorylnterFace,中文译为外部存储器接口。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部分如下所示:lsp|G 3 lINgSSQCe 旳&山olA 日b gniuLUSLAEMIFB CEO64M6000 0000-S3FF FFFFEMIFB CE1B4M6400 0000-67FF FFFFEMIFB CE264M6300 0000-6BFF FFFFEMIFB CE364M6CC0 0000-6FFF FFFFReserved256M7000 0000-7FFF FFFFEMIFA CEO256M8000 0000-BFFF FFFFEMIFA CE1256M9000 0000=9FFF FFFFEMIFA CE2AOOO 0000一 AFFF FFFFEMIFA CE3256MB000 0000-BFFF FFFFReserved1GCOQO 0000-FFFF FFFF在表3中可以看到,对于EMIFB的每个CE片选空间,共有64MB的寻址空间;对于EMIFA 的每个CE片选空间,共有256MB的寻址空间。但是,请注意问题1中的提到了无论对于EMIFA还是EMIFB均只有20根地址线,我们可以计 算一下,2A20=1M的寻址空间,这64MB和256MB到底是指什么呢?对于高手来说当然弄懂也许是小问题,但对于初次接触这类问题的初学者来说,也许琢磨很久也弄不明白,我就是后者!=问题的答案=为了解释以下问题,首先明确一个单位度量:字节=8bit,半字=16bit,字=32bit,双字=64bit解答问题1:我们再次来理一理EMIF接口:EMIFA有AEA3AEA22共20根地址线和AED0AED63共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 *)(0x68000000)= 0x11;(short int *)(0x68000000)是将0x68000000强制类型转换成short int型的指针类型,即得到指 向地址0x68000000的指针,而地址0x68000000中存是一个16bit的数据(其实是和 0x68000001 合在一起了吧);*(short int *)(0x68000000)则是取出地址 0x68000000 中存储的值;那么这时EMIFB的地址总线上是什么情况呢?访问地址0,当然20位地址总线都是0 了;但 若是*(short int *)(0x68000002)呢?注意,这时地址总线是1而不是2,因为地址总线是从BEA1 开始的,而不是BEA0!这时自然就出现了第2个问题,下面我们来解答。解答问题2:首先看一个 TI 官方文档:TMS320C6000 DSP External Memory Interface(EMIF) RefereneeGuide【SPRU266E】,这个文档一开始就讲了很多存储器类型,本来是讲EMIF接口的,讲 存储器干吗?下面看表4-3Table 4-3. Addressable Memory RangesMemory typeklemory widthMaximum addressable bytes per CE spaceAddress output onEA22:3HEMIFA)EA20:1 (EMIFB)(aRepresentsASRAMx&1MA19;OByte addressx162MA|20;1Haifword addressx324MA21;2Word addressx64SMDouble word addressProgrammable1M叩 g;t)lByte addressSync IVemoryx162MAp0;1Ha;fw0Pd addressx324MAp1;2Word addn&ssx649MA2;3Double word addressSDRAMx832MSee Section 4.4Byte addressx1664MSee Section 4.4Ha feord address12SMSe Section 4.4Word addressx64256MSee Sectian 4.4Double word addressThe x64 in怕曲苗 does not apply lo tie32-bit EMIFA. The x32 and x64 interfaces do not apply to EMIFB.注意表中的第一列是memory type,即存储器类型,共有三种,异步静态RAM (ASRAM), 可编程同步存储器,同步动态RAM(SDRAM)然后再注意第三列是maximum addressable bytes per CE space,即每CE片选空间最大可寻 址字节数,其中对于前两种类型的存储器都是对应相同的,但对于SDRAM来说则变为了前面 两者的32倍!再看表4-3,对于memory witdth为16和64的请况,我们可以很容易作出如下计算:20根地址线,寻址范围为2A20=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。看到这个计算明白了吧我们可以得出如下结论:EMIFA的每个CE片选空间相对于SDRAM来说寻址范围256MB,而相对于其它类型的 memory为8MB; EMIFB的每个CE片选空间相对于SDRAM来说寻址范围64MB,而相对于 其它类型的memory为2MB。这里注意一下单位,如果仅就地址总线的寻址范围来说,它的范围就是多少个地址,只有配以数 据总线后才能说它的寻址范围为多少字节;比如说仅就20位的地址总线来说它的寻址范围就是 伽=2人20个,但如果配上8位的数据总线则寻址范围为1MB,如果是16位的数据总线则寻址 范围为2MB, 64位数据总线则是8MB注:我也是琢磨了好久才琢磨出来了这么一个结果,文中内容都是一些个人理解,只供参考,不 作为答案!TI DSP的EMIF接口的地址总线问题(实际测试)分类:DSP 2012-06-04 22:29 101人阅读 评论(0)收藏 举报题目:TI DSP的EMIF接口的地址总线问题(实际测试)去年,曾写过如下博文:有关TI DSP的两个问题:地址总线不从零开始问题及寻址范围问题(链 接:在此博文中,具体谈到了当DSP内部访问EMIF内的某一地址时,地址总线的的数值问题,当 时的结果只是从理论上得到的,也没有验证,今天验证了一下,分享出来平台:DSP (TMS320C6416T)+FPGA 其中6416的EMIFA与FPGA相连。 试验中,使用EMIFA CE1空间,并将其设置为16位异步接口。在DSP中给某一 CE1空间中 的地址赋值,即执行写操作;FPGA这边,直接用ChipScope观察地址总线的值。共试验了几个值:写地址(16进制)地址总线值(16进制)0x9000 0000+2*0x10x10x9000 0000+2*0x20x20x9000 0000+2*0x2+10x20x9010 0000+2*0x20x800020x9000 0000+2*0xFFFFF0xFFFFF0x9000 0000+2*0xFFFFF+20x0由以上的值基本可以得出访问的地址与地址总线值之间的关系:设访问的地址为ADDR,则址值总线上的值为floor(ADDR-0x90000000)/2,floor为向下取整。由于此时为异步接口,对于20位的址址总线来说,地址变化最大为1M的范围,即从00xFFFFF,因此实际值为 floor(ADDR-0x90000000)/2%0x100000,%表示取模,0x100000 即为 1M 地址 空间。那么当把接口设置为32位异步接口呢? 64位异步接口呢?针对这个问题,我也试了一下,基本结论是这样的:设接口位宽为Width,CE空间起始地址为AddrInit,地址最大范围为0AddrMax-1,访问的地址为ADDR,地址总线上的值为ADDRBUS,则有如下关系:ADDRBUS=floor(ADDR-Addrl nit)/(Width/8)%AddrMax再贴一个清楚一点的公式,呵呵,和上面的完全一样,这样是不是看起来更直接:ADDRBUS floorADDR - AddrhritWidthy%AddrMax例如:接口位宽Width=16CE 空间起始地址 AddrInit=0x9000 0000地址最大范围为 AddrMax=1M=2A20=0x100000访问地址 ADDR=0x9000 0005(即 0x9000 0000+2*0x2+1 )ADDRBUS=floor(0x9000 0005-0x9000 0000)/(16/8)%0x100000=2这与前面的结果是一致的!补充一个时序问题:1) DSP写,即FPGA读,在FPGA中检测AWE下降沿且CE为低时,读数据总线即可;2) DSP读,即FPGA写,在FPGA中当AOE和CE均为低时,写数据总线即可。到此,搞定DSP与FPGA通过EMIF接口通信问题!
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!