最近在做一个项目,目前遇到的问题是需要TMS320C6713处理外部输入的大量数据,一次可能4-5万个数据,或者30-40万个数据,想到的问题是:
1.这么多数据放在哪?我觉得C6713片上的L2RAM可能不够,因为还得处理数据(比如fft),而C6713片上没有flash。
2.片外有SDRAM,可是如果把数据放到SDRAM里,是不是在处理过程中还得搬数据?
3.如果我把这些数据放到一个单独的段里,然后把这个段放到外部存储器如SDRAM里,只是修改cmd文件,这种方法是否可行(程序能否正常运行?)
之前在网上好像看到有人用6713处理图像的,我对这方面并不了解,但我感觉一幅图像的数据点数应该比较多,那么6713是如何处理的?是不是可以给个思路借鉴一下。
恳请各位指点迷津!
Shine:
回复 Tony Tang:
如果是新项目的话,建议使用性能更高的DSP芯片做数据处理,有支持DDR3接口的,c6713太老了。
user4333456:
回复 Shine:
谢谢您的建议,不过我这个是从别人手里接过来的,暂时不能换,如果以后有机会,会考虑的
user4333456:
回复 Tony Tang:
感谢您的回复,我自己尝试了一下。我并没有重新定义段,我的数据在程序中存的是全局变量,然后我把.far放到了SDRAM上,可以正常运行。也就是在我这个算法下是可以直接在SDRAM上运行,那请问哪种算法需要搬数据呢?能给个例子吗?
还有,有没有官方文档或是其他帖子详尽的解释了cmd文件中的各个段的含义?
Tony Tang:
回复 user4333456:
Huaze Sun还有,有没有官方文档或是其他帖子详尽的解释了cmd文件中的各个段的含义?
Huaze Sun那请问哪种算法需要搬数据呢?
片外内存相对于片上内存只是访问速度慢一些。对于一次处理的数据量不是太大的,可以考虑用EDMA将数据先搬到片上内存再运算,以提高运算时对数据的访问速度。
user4333456:
回复 Tony Tang:
非常感谢
user4333456:
回复 Tony Tang:
我按照自己的方法尝试了一下(把.far放到SDRAM里),发现程序还是有问题,即相同的输入,每次运行输出的结果都不一样。我配置的dsp核频率是195M,EMIF接口的频率是39M,我在运行中查看某些变量的值发现近似于0,所以我猜测是频率不匹配导致数据无法正常写入到SDRAM中,这个数据还没写入下一个数据又来了。然后为了验证,我将dsp核的频率分别将到39M,13M,发现前面提到的问题依然存在。我猜测是不是因为时序的问题?应该如何解决?
Shine:
回复 user4333456:
先撇开算法处理,DSP能正确读写SDRAM吗?
user4333456:
回复 Shine:
不好意思今天才回复。我试了一下,SDRAM的读写确实问题。SDRAM在写入所有数据时都是低4位可以正常写入,是正确的,但高4位写入确实出错。可能是板子的问题,我再检查一下。请问在SDRAM读写正常的情况下,需要降低dsp核的频率来适应SDRAM接口的频率吗?(就是dsp核的频率一定要等于,或者低于SDRAM接口的频率吗)
Shine:
回复 user4333456:
EMIF口时钟最大频率是100MHz,SDRAM的读写时序没法和EMIF口SDCTL寄存器的配置匹配吗?