新闻中心

EEPW首页>测试测量>设计应用> 一种多路同步数据采集系统的设计

一种多路同步数据采集系统的设计

作者: 时间:2011-04-08 来源:网络 收藏

  3)使用内部1.2 V参考电源。

  4)时钟输入为4.096 MHz。

  5)数据输出速率4.0 k还是2.0 k由CPU控制。

  2 异步FIFO的设计

  本设计中所用的FPGA芯片是XILINX公司的XC3S100E,XC3S100E是XILINX SPARTAN3E系列一款最低容量的FPGA芯片,此系列FPGA利用90 nm工艺实现低成本高容量的需求,XC3S100E具有以下资源:

  1)有2160个逻辑单元;

  2)具有RAM资源87 kB(其中BLOCK RAM 72 kB,分布式RAM 15 kB);

  3)具有两个DCM;

  4)具有4个乘法器;

  5)可以实现FIFO等多个IP核。

  在XILINX ISE10.1集成开发工具下,很容易利用XININX免费IP核实现一个异步FIFO。异步FIFO是在两个相互独立的时钟域下,数据在一个时钟域写入FIFO,而在另外一个时钟域下又从该FIFO中将数据读出。CS5451A控制框图如图3所示,异步FIFO和串并转换模块作为CPU和CS5451A之间的桥梁,由串并转换模块将ADC输出的串行数据转换成19位的并行数据(其中16位为数据,3位为采样通道号0~5)写入异步FIFO,这样FIFO就成为CPU前端的一个缓冲器。每接收完成1帧数据便向CPU发出一个中断信号,通知CPU读取FIFO中的数据。

CS5451A控制系统框图

图3 CS5451A控制框图

  异步FIFO IP核的参数指标直接影响FIFO的读出速度,首先,FIFO的读出速度快能够减少CPU的开销,这样CPU可以有更多的时间干实时性更高的任务。其次,FIFO的存储深度要适宜,深度过大造成资源的浪费,深度过小会造成控制复杂,这样将占用更多的资源。本设计中的异步FIFO是利用ISE10.1中的参数化的IP核在XC3S100E芯片的实现。由于1个CS5451A芯片共有6通道ADC,ADC的分辨率为16位,考虑到数据的可靠性,每一个ADC通道的数据包括通道号(占3位),考虑到有的时候可能CPU不能及时的读走数据,所以在参数化的FIFO设计中选择FIFO深度为64,宽度为19位。

  3 基于FPGA串并转换模块的设计

  CS5451A通过一个Master模式的串行接口输出采样数据,输出数据通过SDO输出,SCLK为输出串行时钟,CS5451A串行输出时序图如图4所示,FSO是帧同步信号,表示一帧数据的开始,如果SE信号为高电平,这3个信号就有效,如果为低电平,3个信号都为高阻状态,在本设计中,CPU初始化后把SE设置成高电平。正常情况下,FSO信号为低电平,当有一帧数据要输出的时候,FSO信号变为高电平,高电平宽度为1个SCLK周期。当没有数据输出的时候,SCLK为低电平,FSO从高电平变为低电平后,SCLK时钟信号有效,数据在上升沿输出,SCLK共持续16x6个周期,数据串行输出时,MSB最先输出。

CS5451A串行输出时序图

图4 CS5451A串行输出时序图

由于SCLK频率很低,在用CPU的SPI控制器接收数据的时候,CPU接收一位的时间为4tXINe=1μs,如图5所示,一帧数据为96位,接收一帧数据大约为96μs的时间,如果用CPU通过异步FIFO读取数据,因为现在的控制器总线速度很快,假设读一个字节数据需要100 ns,读走一帧数据大约需要100 ns×12=1.2μs(由于MPC8313总线宽度为16位,不能一次读取19位数据,所以在读取FIFO中数据的时候,把通道号锁存到一个暂存寄存器中,读取采样数据后再读取通道号,所以读取一帧数据需要12次)。只有原来的大约1/80的时间,提高了CPU的利用效率。

CS5451A一帧数据输出图

图5 CS5451A一帧数据输出图



评论


相关推荐

技术专区

关闭