现在在做一块主控板,板子搭载DSP的28335芯片,利用FPGA的飓风2代EP2C144芯片桥接100脚STM32F103,起初规划是用双口RAM通信,后来改用FIFO通信,现在的情况是,DSP与FPGA读写都正常,读写频率是36.86MHZ,但ARM这边的FSMC使用出现问题,由于100脚的STM32的地址A0到A15采用与数据线复用模式,所以在FSMC使用模式上我们选择了模式A,即异步模式,STM32主频72MHZ,FSMC频率为36MHZ,当DSP写数据到STM32时,经FPGA仿真发现写的数据都是正确的,但ARM这边读的时候数据线的数据也是正确的,但用JLINK仿真查看地址数据时,发现数据不对,我写16个数据进去(从1到16)但仿真看到的都是C、D、E、F,改变写的数据还是这样,不知道是怎么回事? 另外,ARM写数据的时候,数据线上有数据,但FPGA一直没有检测到,没有写进去,片选和读写使能都是有效的,这个现在不知道哪里出了问题?
q = GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14);
if(q)
{
for(i=0;i<=15;i++)
{
read_data=FIFO_Read(i);
}
delay_us(1);
}
PIN14是检测FPGA的满信号,满信号一置位ARM这边就开始读,并发出片选NE1和读使能NOE信号,FPGA检测到片选和读使能信号好开始发数据,现在我们定的FIFO深度为16个,数据宽度为16位,程序运行时发现DSP那边是一个写使能写一个数据,但这边一个读使能数据线上有几个数据,不知道是FPGA的问题还是STM32的问题,是时钟不对还是片选信号又问题?
这是STM32的片选和读使能信号,黄色的是读使能,蓝色的是片选,底下的是放大图,现在一个片选里发现读使能有一个短暂的高电平不知怎么回事,而且一个读使能里一个位有几个数据出现,比如说检测D0位,有几个高低电平出现,FPGA程序是检测到片选和读使能的低电平就开始发数据. 求大神帮忙分析分析。。。
|