嵌入式开发者社区
标题:
关于DSP通过EMIFA读取FPGA里的数据问题
[打印本页]
作者:
迷足
时间:
2016-7-9 17:40
标题:
关于DSP通过EMIFA读取FPGA里的数据问题
通过FPGA采集AD7606的转化数据,放在两个缓冲区里,当其中一个缓冲区满后,就会有一个脚产生下降沿,输入到DSP,DSP进入BANK中断,里进行
数据读取。利用普通的方式存储数据是OK的,但是速度太慢,想要用FPGA读取数据,但是读出的数据并不正确,请问什么原因?
void FPGAIntIsr0(UArg arg)
{
#ifdef FPGA_EDMA3_Transport
AD7606_CHIP0_SELECTED; // 选中片0
char retVal;
// 设置数据传输 源/目标 地址
srcBuff = (char *)(SOC_EMIFA_CS2_ADDR);
// srcBuff = (char *)(TX_buffer);
dstBuff = (char *)(emif_rbuffer);
// 初始化EDMA配置参数
Init_EDMA3();
// 缓存
// Cache_wbInv(&SOC_EMIFA_CS2_ADDR, MAX_BUFFER_SIZE, Cache_Type_ALLD, true);
// 使能DMA3传输
retVal = EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, chNum, EDMA3_TRIG_MODE_MANUAL);
// 缓存
Cache_wbInv(&emif_rbuffer, MAX_BUFFER_SIZE, Cache_Type_ALLD, true);
if (TRUE != retVal)
{
// UARTPuts ("edma3Test: EDMA3EnableTransfer Failed.\r\n", -1);
}
作者:
Lewis
时间:
2016-7-11 12:07
提高EMIFA的读写速度主要可以从三个方面来考虑:
1、对时序进行调节。根据外设时序调节建立(Setup)、触发(Strobe)、保持(Hold)的周期
2、使能DSP的缓存。使能缓存后CPU对EMIFA的读写速度会大大提高
3、使用EDMA来访问EMIFA。(可参考EMIFA_FPGA_DMA)
作者:
迷足
时间:
2016-7-11 14:41
Lewis 发表于 2016-7-11 12:07
提高EMIFA的读写速度主要可以从三个方面来考虑:
1、对时序进行调节。根据外设时序调节建立(Setup)、触发( ...
我是在SYS/BIOS操作系统下进行的,是不是需要注意存放数据不能放到DDR里。
我看了EDMA3的SYS/BIOS工程:
// 按照计算的次数使能传输
retVal = EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, chNum, EDMA3_TRIG_MODE_MANUAL);
// 缓存
Cache_wbInv(&_dstBuff, MAX_BUFFER_SIZE, Cache_Type_ALLD, true);
开缓存,何时需要释放,需要注意缓存一致性的问题吗?
作者:
Lewis
时间:
2016-7-20 12:04
EMIFA发送数据前,需要对EMDA3的源地址区域缓存写回,而EMIFA接受数据时,需要对EDMA3的目的地址失效缓存。
欢迎光临 嵌入式开发者社区 (https://www.51ele.net/)
Powered by Discuz! X3.4