zealane 发表于 2008-4-26 18:42

F2812读写外部SRAM真有那么慢吗?

150M主频的cpu,读写外部SRAM只有37.5M。外部SRAM的读写周期是10ns,理论上支持100M的速度,可是现在最高只有37.5M,太浪费了。

rivflood 发表于 2008-4-26 19:47

外部地址空间的速度可配置!估计lz没有配置好

xjycug 发表于 2008-4-26 22:48

回复主题:F2812读写外部SRAM真有那么慢吗?

可以配置到访问速度为8ns甚至更快,我看见我的同事配置成功过,可以参考TI公司提供的例程flash.c中的设置,或是TI公司外部接口设置文献。只需修改几个寄存器即可,呵呵

DSP动力 发表于 2008-4-27 10:31

更正搂主一下:应该是写75M,读37.5M

可以看2812的读时序信号,就是在年RD上升沿前,有效数据需要需要保持12ns;也就是有效数据输出后,再等待12ns才能输出nRD有效信号,不然从SRAM中读取数据不对。<br /><br />由于指令主要是读操作,所以影响较大,只能到37.5M。<br /><br />而对于写操作,锁存写数据取决于外部SRAM的速度,所以没有12ns的限制,所以写速度很高,能达到75M。

zealane 发表于 2008-4-30 16:32

re

我的配置是这样的。<br />XTIMCLK=0;XYIMCLK=SYSCLKOUT=150M<br />X2TIMING=0;即时间不乘以2<br />XRDLEAD=1;建立周期数为1<br />XRDACTIVE=1;激活周期数为1<br />XRDTRAIL=1;&nbsp;跟踪周期数为1.<br /><br />根据手册,其读周期是150/(1+(1+1)+1)=37.5M<br />其中,试图将激活周期数改成0,出来的数据大多数正确,但是有少数不正确。<br />后来,将跟踪周期数改成0,则数据完全错误。<br /><br />不知道能不能再提高速度了????

DSP动力 发表于 2008-4-30 18:22

还可以提高,估计你SRAM布线或者总线挂的器件太多,达不到

下面是75M的写操作配置。<br /><br />XintfRegs.XTIMING2.bit.XWRTRAIL&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;0&nbsp;//&nbsp;3&nbsp;//&nbsp;1<br />XintfRegs.XTIMING2.bit.XWRACTIVE&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;//&nbsp;0&nbsp;//&nbsp;2&nbsp;//&nbsp;0<br />XintfRegs.XTIMING2.bit.XWRLEAD&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;1&nbsp;//&nbsp;2&nbsp;//&nbsp;1<br /><br />目前2812单板按照这样的配置,电机仿真测试都比较稳定。<br /><br />void&nbsp;InitXintf(void)<br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Example&nbsp;of&nbsp;chaning&nbsp;the&nbsp;timing&nbsp;of&nbsp;XINTF&nbsp;Zones.&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Note&nbsp;acutal&nbsp;values&nbsp;should&nbsp;be&nbsp;based&nbsp;on&nbsp;the&nbsp;hardware&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;attached&nbsp;to&nbsp;the&nbsp;zone&nbsp;-&nbsp;timings&nbsp;presented&nbsp;here&nbsp;are&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;for&nbsp;example&nbsp;purposes.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;All&nbsp;Zones:<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Timing&nbsp;for&nbsp;all&nbsp;zones&nbsp;based&nbsp;on&nbsp;XTIMCLK&nbsp;=&nbsp;SYSCLKOUT&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XINTCNF2.bit.XTIMCLK&nbsp;=&nbsp;0;&nbsp;//&nbsp;XTIMCLK&nbsp;0:=&nbsp;SYSCLKOUT&nbsp;&nbsp;1:=&nbsp;1/2&nbsp;SYSCLKOUT&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XINTCNF2.bit.CLKOFF&nbsp;&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;0:&nbsp;enable&nbsp;CLKOUT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1:&nbsp;Disable&nbsp;CLKOUT<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XINTCNF2.bit.CLKMODE&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;XCLKOUT&nbsp;0:=&nbsp;XTIMCLK&nbsp;&nbsp;&nbsp;&nbsp;1:=&nbsp;1/2&nbsp;XTIMCLK&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XINTCNF2.bit.WRBUFF&nbsp;&nbsp;=&nbsp;0;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Zone&nbsp;0:<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Change&nbsp;write&nbsp;access&nbsp;lead&nbsp;active&nbsp;trail&nbsp;timing<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;When&nbsp;using&nbsp;ready,&nbsp;ACTIVE&nbsp;must&nbsp;be&nbsp;1&nbsp;or&nbsp;greater<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Lead&nbsp;must&nbsp;always&nbsp;be&nbsp;1&nbsp;or&nbsp;greater<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Use&nbsp;timings&nbsp;based&nbsp;on&nbsp;SYSCLKOUT&nbsp;=&nbsp;XTIMCLK<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING0.bit.USEREADY&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING0.bit.XWRTRAIL&nbsp;=&nbsp;3;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING0.bit.XWRACTIVE&nbsp;=&nbsp;7;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING0.bit.XWRLEAD&nbsp;=&nbsp;2;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING0.bit.XRDTRAIL=&nbsp;3;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING0.bit.XRDACTIVE&nbsp;=&nbsp;7;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING0.bit.XRDLEAD&nbsp;=&nbsp;2;<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Do&nbsp;not&nbsp;double&nbsp;lead/active/trail&nbsp;for&nbsp;Zone&nbsp;0<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING0.bit.X2TIMING&nbsp;=&nbsp;1;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*************************************************<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPLD可靠读写的时序参数设置<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(CPLD时钟为100.00MHz)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*************************************************/<br />#if&nbsp;0<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING1.bit.USEREADY&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING1.bit.XWRTRAIL&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING1.bit.XWRACTIVE&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING1.bit.XWRLEAD&nbsp;=&nbsp;2;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING1.bit.XRDTRAIL=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING1.bit.XRDACTIVE&nbsp;=&nbsp;2;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING1.bit.XRDLEAD&nbsp;=&nbsp;2;<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Do&nbsp;not&nbsp;double&nbsp;lead/active/trail&nbsp;for&nbsp;Zone&nbsp;0<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING1.bit.X2TIMING&nbsp;=&nbsp;0;<br />#else<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING1.bit.USEREADY&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING1.bit.XWRTRAIL&nbsp;=&nbsp;3;&nbsp;&nbsp;&nbsp;//&nbsp;3&nbsp;//&nbsp;3&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING1.bit.XWRACTIVE&nbsp;=&nbsp;3;&nbsp;&nbsp;//&nbsp;2&nbsp;//&nbsp;3&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING1.bit.XWRLEAD&nbsp;=&nbsp;2;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;1&nbsp;//&nbsp;2&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING1.bit.XRDTRAIL=&nbsp;3;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;2&nbsp;//&nbsp;3&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING1.bit.XRDACTIVE&nbsp;=&nbsp;3;&nbsp;&nbsp;//&nbsp;1&nbsp;//&nbsp;3&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING1.bit.XRDLEAD&nbsp;=&nbsp;2;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;1&nbsp;//&nbsp;2&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Do&nbsp;not&nbsp;double&nbsp;lead/active/trail&nbsp;for&nbsp;Zone&nbsp;0<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING1.bit.X2TIMING&nbsp;=&nbsp;1;<br />#endif<br />&nbsp;&nbsp;&nbsp;&nbsp;/*************************************************<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SRAM可靠读写的时序参数设置<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*************************************************/<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Zone&nbsp;2<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Ignore&nbsp;XREADY&nbsp;for&nbsp;Zone&nbsp;2&nbsp;accesses<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Change&nbsp;read&nbsp;access&nbsp;lead/active/trail&nbsp;timing<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING2.bit.USEREADY&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING2.bit.XSIZE&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;3;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING2.bit.XWRTRAIL&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;0&nbsp;//&nbsp;3&nbsp;//&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING2.bit.XWRACTIVE&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;//&nbsp;0&nbsp;//&nbsp;2&nbsp;//&nbsp;0<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING2.bit.XWRLEAD&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;1&nbsp;//&nbsp;2&nbsp;//&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING2.bit.XRDTRAIL=&nbsp;2;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;2&nbsp;//&nbsp;3&nbsp;//&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING2.bit.XRDACTIVE&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;//&nbsp;1&nbsp;//&nbsp;2&nbsp;//&nbsp;0<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING2.bit.XRDLEAD&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;1&nbsp;//&nbsp;2&nbsp;//&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING2.bit.X2TIMING&nbsp;=&nbsp;0;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Zone&nbsp;2&nbsp;is&nbsp;slow,&nbsp;so&nbsp;add&nbsp;additional&nbsp;BCYC&nbsp;cycles&nbsp;when&nbsp;ever&nbsp;switching<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;from&nbsp;Zone&nbsp;2&nbsp;to&nbsp;another&nbsp;Zone.&nbsp;&nbsp;This&nbsp;will&nbsp;help&nbsp;avoid<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;bus&nbsp;contention.<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XBANK.bit.BCYC&nbsp;=&nbsp;2;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XBANK.bit.BANK&nbsp;=&nbsp;2;&nbsp;&nbsp;//&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;<br />}&nbsp;&nbsp;&nbsp;&nbsp;<br />

rivflood 发表于 2008-4-30 19:55

lz的ram速度慢了吧?

hotpower 发表于 2008-5-1 13:07

过节后试试~~~

tjsheep 发表于 2008-5-1 23:39

理论上可以配置为1/0/0,但是我也只跑到1/1/0

用的是12ns的sram

zealane 发表于 2008-5-4 10:24

谢谢dsp动力,不过

你的配置是<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING2.bit.XRDTRAIL=&nbsp;2;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;2&nbsp;//&nbsp;3&nbsp;//&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING2.bit.XRDACTIVE&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;//&nbsp;1&nbsp;//&nbsp;2&nbsp;//&nbsp;0<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING2.bit.XRDLEAD&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;1&nbsp;//&nbsp;2&nbsp;//&nbsp;1&nbsp;&nbsp;<br />而我的配置是1,1,1,其他相同<br />应该说,我的读速度比你的快。

DSP动力 发表于 2008-5-8 10:39

这两天出差,没有时间看。

有点没有描述清楚。<br />在带电机控制的应用场合,75M和37.5M的配置是不稳定,抗干扰能力不行,专门测试过;所以我把速度调低了,也就是上面看到的配置参数。<br />下面是75MHz和37.5MHz的配置,经过测试是没有问题的,如果做小信号处理或者其它低干扰应用场合是没有问题。这是2812目前SRAM可以到达的极限访问速度。<br />-------------------------------------<br />XintfRegs.XTIMING2.bit.USEREADY&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING2.bit.XSIZE&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;3;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING2.bit.XWRTRAIL&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;0&nbsp;//&nbsp;3&nbsp;//&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING2.bit.XWRACTIVE&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;//&nbsp;0&nbsp;//&nbsp;2&nbsp;//&nbsp;0<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING2.bit.XWRLEAD&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;1&nbsp;//&nbsp;2&nbsp;//&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING2.bit.XRDTRAIL=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;2&nbsp;//&nbsp;3&nbsp;//&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING2.bit.XRDACTIVE&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;//&nbsp;1&nbsp;//&nbsp;2&nbsp;//&nbsp;0<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING2.bit.XRDLEAD&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;1&nbsp;//&nbsp;2&nbsp;//&nbsp;1&nbsp;//&nbsp;Double&nbsp;lead/active/trial&nbsp;timing&nbsp;for&nbsp;Zone&nbsp;2<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING2.bit.X2TIMING&nbsp;=&nbsp;0;

zealane 发表于 2008-5-8 16:56

恩,估计是了。

谢谢

lianshumou 发表于 2008-6-2 16:39

我的配置

&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING2.bit.XWRLEAD&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING2.bit.XWRACTIVE&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING2.bit.XWRTRAIL&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING2.bit.XRDLEAD&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING2.bit.XRDACTIVE&nbsp;=&nbsp;2;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING2.bit.XRDTRAIL&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;XintfRegs.XTIMING2.bit.X2TIMING&nbsp;=&nbsp;0;

mrwoshishei 发表于 2012-11-16 17:06

1# zealane
你好!请问你是如何设置达到37.5MHZ的,我将XINTF区域的时钟设置到最快也只有6MHZ。
希望能得到你的指导
谢谢!

hong7817 发表于 2017-9-7 09:43

这外部SRAM , 我用的也是10NS的,ISSI IS61LV25616 - 10T 下面的配置用了几年了一直好好的, 最近老出问题, 不知怎么回事
XintfRegs.XTIMING6.bit.XWRLEAD = 1;//1
    XintfRegs.XTIMING6.bit.XWRACTIVE = 1;
    XintfRegs.XTIMING6.bit.XWRTRAIL = 1;
    // Zone read timing
    XintfRegs.XTIMING6.bit.XRDLEAD = 1;//1
    XintfRegs.XTIMING6.bit.XRDACTIVE = 1;
    XintfRegs.XTIMING6.bit.XRDTRAIL = 0;

    // double all Zone read/write lead/active/trail timing
    XintfRegs.XTIMING6.bit.X2TIMING = 0;

    // Zone will sample XREADY signal
    XintfRegs.XTIMING6.bit.USEREADY = 0;
    XintfRegs.XTIMING6.bit.READYMODE = 0;// sample asynchronous

    // Size must be 1,1 - other values are reserved
    XintfRegs.XTIMING6.bit.XSIZE = 3;

hong7817 发表于 2017-9-7 09:44

最近跑, 把程序复制到外部RAM, 读写都要配置成3 7 3而且要double才不会出错,这样的话不如内部FLASH加速了
页: [1]
查看完整版本: F2812读写外部SRAM真有那么慢吗?