新闻中心

EEPW首页>测试测量>设计应用> 数字示波器之DMA高速数据采集方案设计

数字示波器之DMA高速数据采集方案设计

作者: 时间:2017-01-12 来源:网络 收藏

  数据写入RAM后,还要能够被MCU从RAM中获取,RAM数据读出时序如图6所示。

  从图中看出,当CE=0;OE=0时,RAM将地址选择的内部单元数据输出到数据总线从而可以被MCU读取。

  这里有一个问题要考虑清楚,为了实现ADC结果直接存入RAM,已经将5510的数据线和RAM的数据线直接相连了,现在还要将MCU的数据线和RAM的数据线相连,会不会出现数据冲突?其实只要器件数据线具有三态功能,就能够实现数据线分时复用,通过控制电路实现数据总线上某阶段只能有一个数据输出源,例如当ADC直接给RAM存入数据时,MCU要让出数据总线,当MCU读取RAM数据时,ADC要高阻态隔离数据总线。

  三、控制电路设计

  控制电路原理如图7所示,在MCU的控制下,RAM和ADC的控制信号通过多路选择器选择与MCU总线模式或DMA模式相连,这两种模式被MCU完全控制,可以自由切换,当选择DMA模式时,MCU首先要让出数据总线,确保ADC与RAM占用数据总线,此时,RAM的地址由地址计数器产生,RAM_CE=0(片选有效);RAM_OE=1(禁止读);ADC_OE=0(内部数据总线上的数据直接输出到外部数据总线上);RAM_WE与ADC_CLK、地址计数器共用同一时钟信号,按图5中4节拍实现AD转换后数据直接存储到RAM中,DMA过程在MCU清零地址计数器后开始,没一个时钟周期AD输出一个数据直接存入RAM,同时地址计数器加1,当地址计数器溢出后被MCU检测到则表示一帧数据采集完成。

  一帧数据采集完成后,MCU切换到MCU总线模式读取RAM的结果,这时RAM_CE=0(或接MCU地址引脚);RAM_OE=RD(MCU读控制信号);ADC_OE=1(禁止ADC数据占用数据线);RAM_WE=WR,ADC_CLK=0,这时MCU可以自由读取RAM。

  图7所示逻辑电路用硬件描述语言在CPLD上实现非常方便,请读者吸收DMA设计思路后自己完成电路设计。

  四、结束语

  笔者完成的DMA高速数据采集卡对2MHz、1MHz的正弦信号采样并绘图效果如图8(a)、(b)所示。对于低于1MHz的正弦信号采集后能够非常光滑清晰的还原出正弦波形。在CPLD内部时钟精确分频后还可以实现多频点采样,例如20MHz采样,10MHz采样,1MHz采样。



上一页 1 2 下一页

评论


技术专区

关闭