EPI与FPGA通信的问题

现在我们的一个项目需要一个高速的数据传送,速率大概为40M Bit/s,FPGA将这个高速的数据采集进来,在内部建一个FIFO,M3通过EPI总线与FPGA进行数据的传送,现在项目只需要M3将FIFO中的数据读出而不需要向FIFO中写数据,M3将数据接收后以UDP的形式向上位机发送。

通信机制如下:

EPI采用GP MODE,8bit data,0bit address,clk en ,iRDY en.FPGA中的FIFO在有数据时将iRDY拉高,读空后将iRDY拉低。clk一直发给FIFO,作为我的读时钟。

实际测试时发现读出的数据会出现FIFO中的数据每个都被读了很多次的情况。

想请问一下按照我的这种配置,我的读数据的时钟周期和我发给FIFO的CLK(EPI0S31引脚的输出)是怎样的一个关系,datasheet上的介绍不明确。

代码如下:void EPI_Init()

{

SysCtlPeripheralEnable(SYSCTL_PERIPH_EPI0); //使能EPI模块

SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);

SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);

    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);

    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);

    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG);

    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOH);

    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOJ);

GPIOPinConfigure(GPIO_PH3_EPI0S0); //引脚设置

GPIOPinConfigure(GPIO_PH2_EPI0S1);

GPIOPinConfigure(GPIO_PC4_EPI0S2);

GPIOPinConfigure(GPIO_PC5_EPI0S3);

GPIOPinConfigure(GPIO_PC6_EPI0S4);

GPIOPinConfigure(GPIO_PC7_EPI0S5);

GPIOPinConfigure(GPIO_PH0_EPI0S6);

GPIOPinConfigure(GPIO_PH1_EPI0S7);

GPIOPinConfigure(GPIO_PH7_EPI0S27);

    GPIOPinConfigure(GPIO_PD5_EPI0S28);

GPIOPinConfigure(GPIO_PD6_EPI0S29);

// GPIOPinConfigure(GPIO_PJ6_EPI0S30);

GPIOPinConfigure(GPIO_PG7_EPI0S31);  

GPIOPinTypeEPI(GPIO_PORTH_BASE,GPIO_PIN_3 );  //D0

GPIOPinTypeEPI(GPIO_PORTH_BASE,GPIO_PIN_2 );  //D1

GPIOPinTypeEPI(GPIO_PORTC_BASE,GPIO_PIN_4 );  //D2

GPIOPinTypeEPI(GPIO_PORTC_BASE,GPIO_PIN_5 );  //D3

GPIOPinTypeEPI(GPIO_PORTC_BASE,GPIO_PIN_6 );  //D4

GPIOPinTypeEPI(GPIO_PORTC_BASE,GPIO_PIN_7 );  //D5

GPIOPinTypeEPI(GPIO_PORTH_BASE,GPIO_PIN_0 );  //D6

GPIOPinTypeEPI(GPIO_PORTH_BASE,GPIO_PIN_1 );  //D7

GPIOPinTypeEPI(GPIO_PORTH_BASE,GPIO_PIN_7 );  //iRDY

GPIOPinTypeEPI(GPIO_PORTD_BASE,GPIO_PIN_5 );  //WR

GPIOPinTypeEPI(GPIO_PORTD_BASE,GPIO_PIN_6 );  //RD

// GPIOPinTypeEPI(GPIO_PORTJ_BASE,GPIO_PIN_6 );  //FRAME

GPIOPinTypeEPI(GPIO_PORTG_BASE,GPIO_PIN_7 );  //clk  

EPIModeSet(EPI0_BASE,EPI_MODE_GENERAL);  

EPIConfigGPModeSet(EPI0_BASE,EPI_GPMODE_ASIZE_NONE|EPI_GPMODE_DSIZE_8|EPI_GPMODE_RDYEN|EPI_GPMODE_CLKPIN|EPI_GPMODE_READWRITE|EPI_GPMODE_READ2CYCLE,0,0); //no addr/8bit data/clk/iRDY

EPIFIFOConfig(EPI0_BASE,EPI_FIFO_CONFIG_RX_1_2);

EPIDividerSet(EPI0_BASE, 2);  //25M

EPIIntEnable(EPI0_BASE,EPI_INT_RXREQ);  //接收中断  

IntEnable(INT_EPI0);

IntMasterEnable();

// EPIAddressMapSet(EPI0_BASE,EPI_ADDR_PER_BASE_NONE|EPI_ADDR_RAM_BASE_NONE);

EPINonBlockingReadConfigure(EPI0_BASE,0,EPI_NBCONFIG_SIZE_8,0);

}