最近刚接触TI 的C6000 DSP平台,购买了“广州创龙”的“TL138_1808_6748-EVM”开发板,该开发板由核心板与底板组成,可以方便测试,并提供了大量的例程关键是有视频教程,就像十天学会单片机的视频一样比较适合初学者入门。现在想自己做个底板,对于DSP与FPGA采用哪种接口方式还是比较纠结。创龙官方既提供了EMIFA的例程也提供了UPP的例程。本人之前对EMIFA于FPGA通讯有所了解,但是对UPP接口还不是很清楚。查阅了很多资料,对两种通讯方式大概有了个了解,在此分享一下,理解有误的话,还请大神指点。
1,EMIFA即外部存储器接口,UPP即通用并行接口。EMIFA有地址线和数据线,片选信号,读写使能信号;而UPP只有两个数据通道,没有地址线的概念,是通过START/ENABLE/WAIT/CLOCK信号控制数据的传输和同步。所以,一般使用UPP都是在FPGA里生成一个FIFO,DSP通过UPP接口连续的读取FIFO里的数据,或把数据写入FIFO,而不像EMIFA先要发送地址信号然后读取或写入数据。所以UPP的通讯速率要比EMIFA高很多。UPP时钟可以达到75MHz,使用上升沿下降沿均锁存数据的话吐量可以达到150MB/S。而EMIFA的时钟最高为148MHz,对于CS0的SDRAM来说,这即是同步接口的时钟频率;对于异步接口来说,这是模块的工作时钟,异步接口的时序由SETUP/STROBE/HOLD三个阶段组成,所以数据通信速率肯定比UPP慢。EMIFA的通讯速率广州创龙官方给出的测试数据是:
EMIF_FPGA通信案例是CPU直接读写数据,数据吞吐率为:
向FPGA写数据:4.54MB/s;
向FPGA读数据:4.23MB/s。
经过DMA优化后,EMIFA的通信速率大幅提升,数据吞吐率为:
向FPGA写数据:46.96MB/s (按当前配置最大理论值为:48MB/s);
向FPGA读数据:41.62MB/s (按当前配置最大理论值为:48MB/s)。
2,综上所述,选择DSP与FPGA的接口方式时,应该考虑实际的需求,如果做图像处理之类FPGA采集大量数据需实时传送到DSP做运算处理,这种情况最好在FPGA里建立FIFO采用UPP的通讯方式。如果做控制类的产品,FPGA一般是管理大量的IO接口和外设等,FPGA里建立有很多的状态寄存器,用于保存采集数据和输出控制等,这种情况使用EMIFA接口更加方便,因为有地址,所以DSP可以任意读取或写入FPGA的某个或多个寄存器。
|