2.2 高速存储与读取在FPGA里的逻辑实现
在第一节中我们已说到A/D转换器的数据率是125M,16BIT,而本设计中用的HY57V641620的最高时钟可达200M,因此完全可以满足A/D转换器的速率要求。A/D转换器的数字输出已经被我们直接存储到了FPGA的内部FIFO当中,FIFO是一种先进先出的存储器,被读出的数据就不会在FIFO中存在了。因此,这个FIFO在使用的时候,A/D转换器的数据一边以125M的速度往FIFO写数据,一边用一个速度更高的时钟,150M的速度往外读数据,这样读的速度大于写,因为FIFO有满和空的标志,因此我们用空的标志来控制读FIFO的操作,即空的时候就不读,这样,在FIFO端,我们可以保证A/D采集的数据无丢失的以150M的速度被读出。我们用这个150M的时钟来驱动一个地址计数器,如图4所示。
SYS_CLK就是那个150M的时钟,地址计数器的位数就决定了本次存储的深度,我们把这个地址计数器的输出SD_ADA[22..1]直接接到SDRAM控制器的AVALON的地址端,把FIFO读出的数据直接接到AVALON的数据端,把WAIT线接到地址计数器的使能端来控制,忙的时候就不让地址计数器计数,当地址计数器从0计到SDRAM的最高地址的时候,我们就实现了FIF0的数据到SDRAM的传输,从而最终实现了A/D转换器的结果到SDRAM的存储。至此,我们已完成了高速数据到SDRAM的存储。读取相对与存储的过程操作比较简单,用户想要调用SDRAM里的数据,只需要把自己的处理器的总线接到FPGA的引脚上,在内部挂载到SDRAM控制器的AVALON读取端,图3中的中间部分,按照总线的操作方式即可读取相应地址里的数据。
3 结束语
本文介绍了一种基于高速A/D转换器,FPGA,SDRAM来实现的控制高速数据采集的数字系统,详细的介绍了各部分的实现方法。该系统具有速度高,存储容量大等优点,能够适应高速数据采集的诸多场合。