微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > 基于CPLD的多路信号采集器的硬件电路设计

基于CPLD的多路信号采集器的硬件电路设计

时间:12-22 来源:互联网 点击:

图3 发送模块时序图


  3.4接收程序设计

  接收电路比发送电路要复杂,接收电路要实时检测起始位的到来,一旦检测到起始位到,就要将这一帧数据接收下来。接受电路一共设计有三个并行进程如图4所示,其中进程1 负责产生9600bps波特率,使系统能够在9600的波特率与外界系统通讯。进程2 产生接收信号RXD的完成标志位,每次在接收到帧的起始位时,标志位RXDF变高,在完成接受数据后,标志位RXDF变低。进程3负责将RXD信号输入的10位串行数据,依照10位的帧格式,先去掉串口的接收起始位和接收结束位,取其中的8位有效数据,并将8位有效数据进行串并转换,变成并行数据后,由8位数据总线DATA0~DATA7并行输出。

图4 接收模块时序图


  4采集存储控制程序设计

  4.1采样主控程序设计:

  此次系统我们使用48M晶振,每路信号采样率不低于12.5khz,一共相当于16路模拟量,所以控制点为48M ÷ (16 12.5khz)=240点,所以主控计数器中有240个计数点可以用于控制。在0~240个点中实现了通道选通、启动AD、帧计数、两次SRAM地址递推等工作。每次循环结束后,系统主控计数器清零,反复循环采集。具体细节如图5所示。

图5 控制程序的主控计数器及在其各个计数点时FPGA逻辑控制设计


  4.2 各个模块的设计

  在本设计中采用Altera公司EPM7064系列CPLD,程序使用VHDL语言编写,并在Quartus II环境下编译通过,程序主要有“采集模块”和“读数模块”。采集模块:在采集模块中,共有5个并行进程,其中在进程1中,首先在主控计数器COUNT=10时开始结合内部时钟COL信号来产生多路开关选通信号CNT,当COL=0时: CNT=0000.COL=1时:CNT=0001.以次类推一直到COL=15时选通15路后,进程1停止。在进程2中,当主控计数器COUNT在130和150区间内时,且内部计数器信号COL在0~15范围内,则开始打开AD,开始采集。在进程3中如果主控计数器COUNT=185~255时打开RAM的写入状态。在进程4中当主控制计数器count=200和220时,结合内部时钟信号COL,分别选择存入高4位、低8位或者帧计数。进程5:count=235递推帧标志位和ADG506(模拟开关)选通标志位,具体见图6所示。

图6 采集模块时序图


  读数模块:读数模块共分为3个并行进程:在进程1中,当时钟上升延时,且如果使能EN_R为高时,且电脑控制读数口CPUCLK=1时开始读数。在进程2中,读完一次数据后,将RAM地址递推一次。进程3中,如果系统为读数模块有效时,数据将通过CPLD发送到MAX232通过异步串行的方法将数据上传,具体见图7所示。

图7 读数模块时序图


  5 结束语

  本文对多路数据采集系统的组成原理、单元电路设计、接口电路设计和系统控制程序设计进行了详细的阐述,完成了多路信号数据采集系统软硬件设计。使系统工作安全可靠,数据采集精度较高,抗干扰能力较强。具有良好的应用前景和很高的使用价值。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top