This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C6678设计遇到一些问题

Other Parts Discussed in Thread: TVP5158

现在需要用一片C6678,接受从摄像头进来的光学图像,同时接受从其他单元进来的一些”数据A“,处理完这些数据后,在利用结果处理光学图像

由于C6678不带Video Port口,打算用FPGA从解码芯片的输出端做个桥接,桥接到C6678的EMIF口,把摄像头的数据传输进C6678。大体上走的是DM系列中VP口的原来,FPGA内部RAM缓存一行的图像,一行缓存完了之后,通知C6678读走这一行到DDR3。读完一帧(假定为576行)后,C6678再采集”数据A“,先对数据A处理,完了再利用这个结果处理光学图像。

现在的问题是:

1. 由于FPGA每缓存一行后,就通过C6678读走这一行。拟用C6678的GPIO产生一个EDMA事件,让C6678读走这一行到DDR3。这样的话,每帧576行,1s为25帧。则C6678需要每秒相应576×25=14400次的GPIO来的EDMA时间。C6678在接受上一帧图像的时候,肯定还得做下一帧的处理。

那么C6678能在处理数据的同时,还能承受每秒14400次的GPIO来的时间响应吗?或者能否用其中一个核负责GPIO的相应,另一个核做数据处理?

2. 按照当前想法,C6678在每个40ms片段内,需要对DDR3有以下两个操作

(1)一直读写DDR3,做上一帧的算法。

(2)同时每隔64us,从EMIF口把下一帧每行的图像读进来,写进DDR3。

因为操作(2)的意思就是每隔64us,暂停一下操作(1),把一行数据写进DDR3后,再继续执行操作(1)。

我的问题是:这样的话,操作(2)会不会严重影响操作(1) 的进行?

求指导!!

  • 你好

    因为你的操作是在DDR3中进行,所以读写需要做cache 一致性维护,建议传完一帧数据后,将该帧数据搬到L2中(size允许的话)一来可以减少cache 维护,二也可以降低DDR3 port 同时进行core 数据读写和EDMA数据搬移的压力

    另外你可以考虑采用EDMA的三维特性减少中断次数

  • 可能我一开始写的不太清楚,现在我把我的问题简述一下:

    1. C6678在1秒内,需要接受14400次GPIO来的EDMA事件,C6678能否承受?

    2. C6678在40ms内,

    (1)需要不停地利用DDR3中的1MB的数据进行运算

    (2)需要每隔64us就从EMIF读进来2K数据,写进DDR3.

    操作(1)、操作(2)会不会因为DDR3只能被同时被一个操作进行,而导致严重地互相干扰?

  • 多个master可以同时操作DDR3。

    至于EDMA事件,需要保证下次事件来之前,当前事件对应的数据搬运已经完成,否则会导致事件丢失。如果可以的话,建议将多次事件合在一起,提高每次事件搬运的数量,降低事件的次数,这样也可以提高EDMA的效率,降低对总线的压力。

  • Hi ,Fengjin

    我遇到的问题与你类似,也是TVP5158采集四路数据送到c6778进行图像分析。请问你的方案中加FPGA进行转换了吗?

    我的邮箱是shizhaohui@live.cn,能否给予一些指导,谢谢。

    致礼!

    Sean Shi

  • 最终我们的方案是:摄像头-->TVP5150-->Spartan6-->C6678。

    S6与C6678之间是通过EMIF16传输的,C6678通过EDMA读取EMIF16接口的数据,S6写时序将视频数据传输进来,带宽达到了50MB/s。

    感觉带宽不够,最后还提出了彩色信号(项目中不需要)。感觉可以用SRIO进行FPGA到C6678之间的数据传输更好。