c6701的emif接口速率应该如何使用

我是刚入手学DSP+FPGA的菜鸟,再请教一个问题:DSP的EMIF接口中几个控制引脚的含义和赋值方法_百度知道
我是刚入手学DSP+FPGA的菜鸟,再请教一个问题:DSP的EMIF接口中几个控制引脚的含义和赋值方法
如图所示,AOE/SDRAS/SSOE,ARE/SDCAS/SSADS,AWE/SDWE/SSWE这三个引脚的意义书里边写了,但是EMIF控制寄存器中都没有提到怎么给这三个引脚赋值啊,还有DSP的CE0-CE3是怎么选择的呢?...
如图所示,AOE/SDRAS/SSOE,ARE/SDCAS/SSADS,AWE/SDWE/SSWE这三个引脚的意义书里边写了,但是EMIF控制寄存器中都没有提到怎么给这三个引脚赋值啊,还有DSP的CE0-CE3是怎么选择的呢?谢谢!
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
longkui5432知道合伙人
longkui5432
采纳数:259
获赞数:557
看了下这个图,感觉像是C64x平台的DSP。假设你现在用的是C64x的DSP。这三个引脚可以用来连接异步存储器、SDRAM存储器、SBSRAM存储器,进行一些功能控制。因此引脚电平高低应该要根据你连的是什么类型的存储器来决定的。TMS320C6000&DSP&EMIF&Reference&Guide文档里提到了这些引脚的高低电平。DSP的CE0-CE3是通过CE[0:3]空间片选引脚的高低电平来进行区分的。
谢谢~但是我不明白的是AOE/SDRAS/SSOE等几个引脚作为DSP的输出,它们的高低是通过设置EMIF控制寄存器来决定的,还是不需要人为设置呢?如果需要设置,在哪设置呢?同理CE0-CE3是怎么设置呢?
当然是用户来在代码中来设置,DSP芯片怎么可能知道你连接的是那种类型的外部存储器。以DM642为例。很明显,在这个结构体中,就对你提到的这些问题进行必要设置。
给您发了封私信,方便的话加个QQ吧,还要向您再请教一下,谢谢啦~
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。21ic官方微信-->
关于TI的DSP的EMIF接口的速度问题
初级技术员, 积分 63, 距离下一级还需 37 积分
初级技术员, 积分 63, 距离下一级还需 37 积分
初级技术员, 积分 63, 距离下一级还需 37 积分
初级技术员, 积分 63, 距离下一级还需 37 积分
关于TI的DSP的EMIF接口的速度问题我看到论坛上很多网友遇到与我类似的问题,就是使用DSP的EMIF接口进行数据存储时速度受限,包括用DMA的方式速度没有本质性的提高,用示波器观察读/写信号大概也只有5MHZ左右。我跟TI的工程师交流过,他们给出的解释很牵强,也没有提出可行的解决方案。不知道哪位解决或者能够明确的解释这个问题?希望与我探讨。下面是我与TI工程程师的email:Ti工程师的回答:Hi&Chong,Well&there&is&no&&definite&value&for&the&latency&&that&can&be&provided.&That&is&why&I&had&asked&to&perform&IBIS&modelling&to&&assess&the&performance&while&connecting&a&memeory&device&to&the&DSP.&And&then&regarding&the&wait&states,they&are&automatically&&inserted&by&th&CPU.&During&the&execution&of&a&program&in&which&the&instructions&run&in&parallel,&&owing&to&pipeline,&the&CPU&adds&&nops&to&&&flush&the&pipeline.&So&at&that&time,&the&CPU&cannot&access&the&external&memeory&bus.&So&there&will&be&no&activity&on&the&external&memory.&So&even&if&the&EMIF&clock&is&clocking,&the&CPU&cannot&access&the&external&memory.&Now&no&one&can&really&gauge&what&exactly&is&going&on&the&pipeline.So&these&delays&may&vary&given&the&state&of&the&pipeline.&And&well&there&are&programmable&wiatstate&registers&in&&case&of&C55xx.&However&if&you&want&to&insert&wiat&states,&then&you&will&have&to&&write&a&&software&delay&or&you&will&ahve&to&make&use&of&hardware&timer&to&porvide&the&desired&delay.我的咨询:工程师先生:&&&&&您好!我在项目开发中用到TI的dsp&tms320vc5502。在调试外部SBSRAM时遇到以下问题,希望能从您这里获得支持!  首先dsp设置如下:倍频后,cpu&core&clock为100MHZ,&EMIF&clock(SYSCLK3)为100MHZ,即外部同步静态RAM的时钟为100MHZ。将SBSRAM所在的空间CE2相关寄存器设置如下:在EMIF_Config中配置,EMIF&CE2&Space&Control&Register1&=&0xC040;EMIF&CE2&Space&Control&Register2&=&0x0000;EMIF&CE2&Space&Secondary&Control&Register1=&0x0042.&经实验可以正确的对SBSRAM进行读写操作。&&&&&问题:我在C中调用汇编函数进行循环的写操作,来检测写操作的时序,用示波器观察发现写信号SWE(或者&SADS)之间的时间间隔是11个&EMIF时钟周期(对应ECLOKOUT2的11个周期)。按照TI的使用手册,汇编语句&MOV&AC1,&*(#400000h)应该消耗一个时钟周期,为什么连续的两次写信号之间有11个时钟周期的间隔呢?&&&&&&&&&&&&&&&&&之前得到你们很好的技术服务,现在该部分的设计关系到整个项目,希望得到您一如既往地支持!非常感谢!&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&西安交通大学&&&&段崇修代码如下:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&EMIF_Config&MyEmifConfig&=&{//这里仅列出了与CE2空间相关的寄存器的配置&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&.......&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&EMIF_CE2CTL1_RMK(&&&&//EMIF&CE2&Space&Control&Register1&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&EMIF_CE2CTL1_TA_DEFAULT,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&EMIF_CE2CTL1_READ_STROBE_OF(0),&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&EMIF_CE2CTL1_MTYPE_32BIT_SBSRAM,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&EMIF_CE2CTL1_WRITE_HOLD_MSB_LOW,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&EMIF_CE2CTL1_READ_HOLD_OF(0)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&EMIF_CE2CTL2_RMK(&&&&&//EMIF&CE2&Space&Control&Register2&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&EMIF_CE2CTL2_WRITE_SETUP_OF(0),&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&EMIF_CE2CTL2_WRITE_STROBE_OF(0),&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&EMIF_CE2CTL2_WRITE_HOLD_OF(0),&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&EMIF_CE2CTL2_READ_SETUP_OF(0)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&........&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&EMIF_CE2SEC1_RMK(&&&&//&CE2&Secondary&Control&Register&1&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&EMIF_CE2SEC1_SNCCLK_SYNC_ECLKOUT2,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&EMIF_CE2SEC1_REN_ADS,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&EMIF_CE2SEC1_CEEXT_DEFAULT,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&EMIF_CE2SEC1_SYNCWL_0CYCLES,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&EMIF_CE2SEC1_SYNCRL_2CYCLES&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&........&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&EMIF_CESCR_DEFAULT&&&&&//&CE&Size&Control&Register&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&};&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&main()&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/*初始化CSL库*/&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&CSL_init();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/*设置系统的运行速度为100MHz*/&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&PLL_config(&MyPllConfig);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/*EMIF为全EMIF接口*/&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&CHIP_RSET(XBSR,0x0001);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/*初始化DSP的EMIF接口*/&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&EMIF_config(&MyEmifConfig);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/*&写SBSRAM*/&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&while(1)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&savedata();&//调用汇编函数&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&;汇编函数&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&_savedata:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&RPT&&#5000&&&&;单次循环次数&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&MOV&&AC1,&*(#400000h)&;#400000h为CE2空间的地址&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&RET
, , , , , ,
初级工程师, 积分 2371, 距离下一级还需 629 积分
初级工程师, 积分 2371, 距离下一级还需 629 积分
初级工程师, 积分 2371, 距离下一级还需 629 积分
初级工程师, 积分 2371, 距离下一级还需 629 积分
用burst方式应该快一点
试试看C55能否实现。原来在DM642上访问SDRAM,用Burst方式+DMA读写时可以从示波器上看到连续四个访问的波形是紧挨着的,印象不深了
资深工程师, 积分 10042, 距离下一级还需 9958 积分
资深工程师, 积分 10042, 距离下一级还需 9958 积分
资深工程师, 积分 10042, 距离下一级还需 9958 积分
资深工程师, 积分 10042, 距离下一级还需 9958 积分
我在dm6446上看ddr-2,一次burst包含4次clk,总计8次采样,每次4字节,所以是32字节。就是每次burst前面还稍微有点唧唧歪歪的东西,不像charge,也用不着每次都选行列吧。更不是VPBE/VPFE等占用,我已经剔出掉了
中级技术员, 积分 102, 距离下一级还需 198 积分
中级技术员, 积分 102, 距离下一级还需 198 积分
中级技术员, 积分 102, 距离下一级还需 198 积分
中级技术员, 积分 102, 距离下一级还需 198 积分
您好,试试把setup、strobe、hold 时间放宽些,
扫描二维码,随时随地手机跟帖
社区建设奖章
等级类勋章
湍急之河流
发帖类勋章
技术新星奖章
人才类勋章
时间类勋章
精英会员奖章
等级类勋章
沉静之湖泊
发帖类勋章
时间类勋章
技术奇才奖章
人才类勋章
您需要登录后才可以回帖
热门推荐 /6扫一扫,手机访问
您好,欢迎来到维库电子市场网
您所在的位置:&&&&&&其他&&一种TMS320C6701 DSP自动加载的设计
版权与免责声明
凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,http://www.dzsc.com,违反者本网将追究相关法律责任。
本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。
如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
相关技术资料
热门技术资料
最新技术资料DSP的EMIF接口通信FPGA
DSP通过EMIF接口与FPGA通信采集视频
从图中可以看出:
EMIFA共支持4个外部存储器,比如可以把CE2分配给FPGA,CE3分配给SRAM,CE4分配给FLASH等。每个外部存储器的寻址空间大小是8MB。20根地址线即2的20次方,也就是1MB,此外由于数据总线是64位的,故对应的寻址空间是8MB
由于FPGA内部时序逻辑可以产生地址,所以我们可以不使用地址线。这样,下面的事情就简单了。只要把CE2管脚和FPGA的某一个通用IO口连上即可。
在读取FPGA内部RAM数据时告诉EDMA要读取的数据的基地址是0xA0000000,以及读取的数据的长度即可。
第二个信号,ECLKOUT,即时钟信号的。因为FPGA工作是需要时钟激励的,没有时钟信号怎么产生地址逻辑呢?此外,时钟频率不能过高,要考虑到FPGA芯片的能力。OK,因为有了同步时钟,所以EMIFA模块的工作模式也就确定了,即同步工作模式。第三个信号,包括2个,即ASRE,ASWE。更熟悉的叫法是RE,WE。读使能和写使能。这个就不赘述了。第四个信号,数据总线&地址总线。也不赘述了。
经过上面的分析,我们可以简要的画出FPGA与DSP的连接图:
在连接的思路清晰之后,我们可以开始配置EMIFA的寄存器了。
其实也就只有1个比较重要的寄存器,即CEnCFG。该寄存器有两套完全不同的配置。分别对应于同步存储器模式和异步存储器模式。由于FPGA内部RAM工作于同步模式,故我们来看一下同步模式下该寄存器的配置。
SSEL设置为1时,表示该CE对应同步模式的外部存储器。
在与FPGA连接时,主要考虑以下四个参数:
设置SRE/SADS管脚功能
管脚功能为SRE,即Read Enable
管脚功能为SADS
写延时周期
读延时周期
读延时:当CE和RE同时为低电平后,表示DSP开始读FPGA的RAM,经过R_LTNCY个ECLKOUT周期后第一个数据出现在数据总线上
8位数据总线
16位数据总线
32位数据总线
64位数据总线
--------------------------------------------华丽分割------------------------------------------------
EMIFA之CSL
使用CSL配置EMIFA模块时,主要的步骤如下:
1. 使能设备EMIFA模块l
2. 配置CEnCFG寄存器l
3. 初始化EMIFA模块l
4. 打开EMIFA模块l
5. 把2中配置的参数设置到打开的EMIFA模块中
完整配置代码:(把EMIFA的CE2配置为以FPGA作为外部存储器,64位数据线,2个周期的读延时)
/*-----------------------------------------------------------------------------------
初始化EMIFA
-----------------------------------------------------------------------------------*/
#define EMIFA_MEMTYPE_ASYNC
#define EMIFA_MEMTYPE_SYNC
#define EMIFA_CE2_BASE_ADDR
(0xA0000000)//地址空间基地址
#define CSL_EMIFA_SYNCCFG_RLTNCY_PARAMETER
2//读延时2周期
#define CSL_EMIFA_SYNCCFG_SBSIZE_PARAMETER
3//64位数据总线
#define CSL_EMIFA_SYNCCFG_READEN_PARAMETER 1//SRE
//CEnCFG寄存器参数宏
#define CSL_EMIFA_SYNCCFG_PARAMETER {\
(Uint8)CSL_EMIFA_SYNCCFG_READBYTEEN_DEFAULT, \
(Uint8)CSL_EMIFA_SYNCCFG_CHIPENEXT_DEFAULT, \
(Uint8)CSL_EMIFA_SYNCCFG_READEN_PARAMETER, \
(Uint8)CSL_EMIFA_SYNCCFG_WLTNCY_DEFAULT, \
(Uint8)CSL_EMIFA_SYNCCFG_RLTNCY_PARAMETER, \
(Uint8)CSL_EMIFA_SYNCCFG_SBSIZE_PARAMETER \
void Init_EMIF()
CSL_EmifaObj
CSL_Status
CSL_EmifaHwSetup
CSL_EmifaHandle
CSL_EmifaMemType
CSL_EmifaSync
syncMem = CSL_EMIFA_SYNCCFG_PARAMETER;
memset(&emifaObj, 0, sizeof(CSL_EmifaObj));
memset(&hwSetup, 0, sizeof(CSL_EmifaHwSetup));
//步骤1: 使能设备的EMIFA功能(不用先解锁外设寄存器)
CSL_FINST(((CSL_DevRegs*)CSL_DEV_REGS)-&PERCFG1, DEV_PERCFG1_EMIFACTL, ENABLE);
//步骤2:配置CE2CFG寄存器
syncVal.ssel
= EMIFA_MEMTYPE_SYNC;
syncVal.async
syncVal.sync
hwSetup.ceCfg[0] = &syncV
hwSetup.ceCfg[1] = NULL;
hwSetup.ceCfg[2] = NULL;
hwSetup.ceCfg[3] = NULL;
//步骤3:初始化EMIFA模块
status = CSL_emifaInit(NULL);
#ifdef SHOW_PRINTF
if (status != CSL_SOK) {
printf("EMIFA: Initialization error.\n");
printf("\tReason: CSL_emifaInit [status = 0x%x].\n", status);
printf("EMIFA: Module Initialized.\n");
//步骤4:打开EMIFA模块
hEmifa = CSL_emifaOpen(&emifaObj,CSL_EMIFA,NULL,&status);
#ifdef SHOW_PRINTF
if ((status != CSL_SOK) || (hEmifa == NULL)) {
printf("EMIFA: Error opening the instance. [status = 0x%x, hEmifa \
= 0x%x]\n", status, hEmifa);
printf("EMIFA: Module instance opened.\n");
//步骤5:把步骤2中配置的参数设置到打开的EMIFA模块中
status = CSL_emifaHwSetup(hEmifa,&hwSetup);
#ifdef SHOW_PRINTF
if (status != CSL_SOK) {
printf("EMIFA: Error in HW Setup.\n");
printf("Read write operation fails\n");
printf("EMIFA: Module Hardware setup is successful.\n");
【先挖坑,懂了再来填】遇到一个dsp和fpga交互的问题
【DSP开发】6455EMIF
与FPGA 双口BRAM
DSP之外部设备连接接口之EMIF
dsp EMIF接口
DSP 之外部存储器接口(EMIF)
有关TI DSP的EMIF接口的两个问题:地址总线不从零开始问题及寻址范围问题
没有更多推荐了,TI C6000DSP系列EMIF接口_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
TI C6000DSP系列EMIF接口
阅读已结束,下载本文需要
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩60页未读,
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 emif接口速率 的文章

 

随机推荐