数据采集实验

Tags
Hardware Architecture Design
Digital Signal Processing Design
Verilog Programming
Data Acquisition System Design
Signal Processing Techniques
FPGA-Based Signal Processing
Last edited by
AI summary
数据采集实验涉及信号处理的核心原理,包括信号的采样、序列化和量化编码。系统分为低频和高频采集,设计了基于zx-2的数据采集系统,支持多通道信号采集,使用UART进行数据发送和人机交互。详细描述了各通道的信号采集驱动程序、数据传输接口、命令参数解析及按键控制等功能,确保有效的数据处理和交互。
Last edited time
Nov 7, 2024 01:58 PM

第一节:数据采集系统

在信号处理领域数字电路发挥着重要作用,尤其是数据采集往往需要硬件实现,数据采集系统小到一个芯片完成,大到一个电路板完成。
信号处理在应用中包括2部分,分别是数据采集和数据处理,简单的说
信号处理  =  数据采集  +  数据处理
通过以上的分析可以看出 数据采集系统是信号处理领域的电路,作用就是为数据处理提供数据源。
由于FPGA的灵活性,很适合用来作为数据采集芯片,为DPS或者ARM,以及其它AISC以及其它电路提供信号处理所需要的数据。

1.1 数据采集系统的核心原理

数据采集系统的核心就是为数据处理提供源数据,源数据为信号,连续的模拟信号是不能够被软件或者电路进行处理的,因此我们需要连续信号经过变换,转化为电路或者软件能够处理的数据。
notion image
想在计算机或者电路中表示信号,需要采样,将转换为非连续的值,如果源信号为周期信号,我们至少采2个点以上(奈奎斯特定理),直接将采集的赋值电压表示,在计算机或者电路中运用不理想,需要转化为另外一种表示。
  1. 序列化
    1. 通过整形,将源信号转化为离散序列
  1. 量化编码(PCM码)
    1. 如当前采样电压为1.8v,参考电压是5V,规定量化精度N=8
      1.8/5  =  PCM码值/256
      PCM码值 =  92

1.2 数据采集系统分类

按照源采样信号的频率高低可分为低频采集系统(简易采集系统)和高频采集系统(复杂采集系统)。
简易采集系统:一般使用低频AD
复杂采集系统:高速AD
按照采样信号源个数又可将采集系统划分为单通道采集系统和多通道采集系统
单通道:只对一个通道的信号源采集数据
多通道:对2个或者2个以上的信号源采集

1.3 数据采集系统的基本工作原理

notion image
notion image

第二节:基于zx-2的数据采集系统设计

需求分析
  1. 2通道信号采集
    1. 通道0使用TL549采集信号源
      通道1使用频率和相位可调的DDS,精度N=32
  1. 通道选择(人机交互1)
    1. 通道选择使用独立按键,使用一个独立按键即可
  1. 缓存
    1. 使用深度=1024的FIFO
  1. 预处理
    1. 本设计不需要
  1. 数据发送
    1. 使用UART发送
  1. 人机交互(人机交互2)
    1. 使用uart接收寄存器命令或者参数,采用命令参数解析分实现人机交互2

2.1 数据采集系统架构设计

notion image

2.1.1 通道0信号采集驱动程序设计

功能:通道0信号采样
notion image
  1. 端口说明
    1. 信号名
      描述
      系统相关
      clk
      系统时钟,默认50mhz
      rst_n
      系统复位,低电平有效
      TL549 ad芯片接口
      scl
      TL549接口同步时钟,最高1.1mhz
      cs_n
      TL549接口片选,最高1.1mhz
      sdi
      TL549接口采样数据输入
      人机交互控制
      ch0_en
      当ch0_en==1的时候开始采样
      输出采样数据
      data_Ch0_[7:0]
      通道0采样数据输出
      flag_data_Ch0
      当flag_data_Ch0==1表示data_Ch0_[7:0]有效
  1. TL549采样率
    1. 数据采集中,采样率是一个重要的指标,表示采集数据的快慢,我们用hz表示
      由于一般采样为周期采样,2个相邻的点的时间间隔为采样周期,它对应的频率就是采样率。
      TMIN(type)  >= 1.4US +  7.5*tSCL  +  36*0.250us
      >= 1.4US +  7.5*1us  +  36*0.250us
      >= 1.4US +  7.5*1us  +  9
      >= 17.9us

2.1.2 通道1信号采集电路设计与实现

功能:通道1信号采样
notion image
  1. 端口说明
    1. 信号名
      描述
      系统相关
      clk
      系统时钟,默认50mhz
      rst_n
      系统复位,低电平有效
      人机交互控制
      fword[31:0]
      控制dds输出波形的频率
      pword[10:0]
      控制输出波形的相位
      ch1_en
      控制输出波形的采样率
      输出波形采样输出
      data_ch1[7:0]
      通道1采样数据
      flag_data_Ch1
      当flag_data_Ch1==1表示data_ch1[7:0]有效
  1. DDS
    1. DDS是数字电路设计中一种常见的产生不同输出波形的一种数字电路,可以理解为波形发生器,本质上是将采样量化的编码数据存放在存储器中,在原始参考采样控制下输出采样数据
      notion image
  1. DDS输出波形频率计算
    1. Fout =  Fsap /2N
      N :PCM码表示精度
      Fout :输出波形频率
      Fsap   :原始参考采样时钟频率
      Fout =  (Fsap /2N )*K (K>0)
      DDS 中输出波形频率
      Addr =addr  +K   等效于(Fsap /2N )*K (K>0)
  1. DDS相位
    1. notion image
      Addr =  addr  +  pword

2.1.3 采样数据传输接口驱动程序设计

功能:
从存储器(这里默认FIFO)中将采样数据读出,经过数据传输接口(这里采用uart)发送给数据处理电路系统。
notion image
端口说明
信号名
描述
系统相关
clk
系统时钟,默认50mhz
rst_n
系统复位,低电平复位
Fifo读相关
rd_en
FIFO读使能
rd_clk
FIFO读时钟
rddata[7:0]
FIFO读数据
empty
FIFO读状态
人机控制相关
en_t
控制发送速率
Uart接口相关
tx
发送信号

2.1.4 人机交互信息接收程序设计

功能:在数据采集系统中,通过接口(默认uart)接收人机交互信息
notion image
  1. 端口说明
    1. 信号名
      描述
      系统相关
      clk
      系统时钟,默认50mhz
      rst_n
      系统复位,低电平复位
      Uart接口相关
      rx
      Uart接收
      人机交互接收速率控制
      en_r
      接收速率控制
      接收数据输出
      rvdata[7:0]
      接收数据
      flag_rvdata
      当flag_rvdata==1表示rvdata[7:0]有效

2.1.5 人机交互2的电路设计

在数字电路设计中,在实际应用中交互方式有2种,具体如下:
  1. 设备交互
    1. 通过诸如终端类设备控制电路的运行状态,比如逻辑分析仪设计中通过PS2键盘控制波形采样和波形显示。
  1. 命令参数解析法
    1. 命令参数解析法是数字电路设计中一种重要的交互电路设计方法,实现了和上位机信息交互的手段,可以是是和软件(上位机)。
      命令参数解析法的实现方式是通过配置寄存器完成此种电路设计。
      notion image
      上位机 :一般是软件,它是控制设备
      下位机 :人机交互电路的硬件设计,即交互电路
      Reg[N-1:0]    : 功能寄存器,带有属性的寄存器
      设计电路 :人机交互被控制电路
      在实际中我们的控制可能不只一个,需要多个人机控制,因此我们需要定义多个功能寄存器,当我们在操作多个寄存器的时候,要区分是操作那个寄存器,需要给寄存器编号,我们叫做寄存器地址。

2.1.5.1 功能寄存器定义

根据当前我们的设计,我们自定功能寄存器,根据实际需要定义寄存器,需要多少寄存器定义多少寄存器。
  1. 人机交互控制分析
    1. 功能
      控制信号
      通道0采样率控制
      ch0_en
      通道1采样率控制
      ch1_en
      通道1输出波形频率控制
      fword[31:0]
      通道1输出波形的相位控制
      pword[10:0]
      UART波特率控制
      en_t
      en_r
  1. 寄存器定义
    1. 经过分析寄存器的位宽定义为8位,16为,32位都可以,这里我们选择16位作为我们寄存器的位宽。
      寄存器定义
      属性
      控制信号
      描述
      cnt_ch0_max_h[31:16]
      地址:0 读写:w
      ch0_en
      通道0采样率计数器最大值的高16位
      cnt_ch0_max_l[15:00]
      地址:1 读写:w
      通道0采样率计数器最大值的低16位
      cnt_ch1_max_h[31:16]
      地址:2 读写:w
      ch1_en
      通道1采样率计数器最大值的高16位
      cnt_ch1_max_l[15:00]
      地址:3 读写:w
      通道1采样率计数器最大值的低16位
      fword_h[31:16]
      地址:4 读写:w
      fword[31:0]
      通道1输出波形频率控制参数高16位
      fword_l[15:00]
      地址:5 读写:w
      通道1输出波形频率控制参数低16位
      pword_rg[10:0]
      地址:6 读写:w
      Pword[10:0]
      通道1输出波形相位控制参数
      uart_sel[2:0]
      地址:7 读写:w
      en_t en_r
      Uart波特率选择
      notion image

2.1.5.2 人机交互2程序设计

由于我们和上位机交互通过uart接收命令参数,UART以比特最基本通信数据传输单位每次接收的数据我们无法区分数据类型,因此我们需要规定上位机和下位机的数据通信格式,这里我们和上位机以包作为数据传输单位。
包数据传输是数字电路设计中一种比较重要的数据通信方式,包是一种数据结构,这里我们规定包的格式如下:
notion image
0x88:表示包开始指示符,8bit,默认8’h88
0x03:包数据长度,默认3字节
寄存器地址:配置寄存器的地址,默认8位
寄存器高8位:参数的 高8位
寄存器低8位:参数的 低8位
0x66: 表示包结束指示符,8bit,默认8’h66
  1. 包解析程序设计
    1. 功能:根据已经定义的包结构解析数据包,输出寄存配置信息(地址+参数)
      notion image
      端口说明
      信号名
      描述
      系统相关
      clk
      系统时钟,默认50mhz
      rst_n
      系统复位,低电平有效
      Uart接收数据输出
      rvdata[7:0]
      Uart接收数据
      flag_rvdata
      当flag_rvdata==1表示rvdata[7:0]有效
      寄存器配置相关
      wr
      当wr==1表示寄存器写
      addr[7:0]
      寄存器编号
      data[15:0]
      寄存器参数
      notion image
  1. 命令参数解析(uart控制)
    1. 功能:解析uart相关的命令参数,控制它接收或者发送速率
      notion image
      端口说明
      信号名
      描述
      系统相关
      clk
      系统时钟,默认50mhz
      rst_n
      系统复位,低电平有效
      寄存器配置相关
      wr
      当wr==1表示寄存器写
      addr[7:0]
      寄存器编号
      data[15:0]
      寄存器参数
      人机交互控制
      en_r
      Uart接收速率控制,默认波特率的7倍
      en_t
      Uart发送速率控制
  1. 其它命令参数解析程序设计(非uart控制)
    1. notion image
      端口说明
      信号名
      描述
      系统相关
      clk
      系统时钟,默认50mhz
      rst_n
      系统复位,低电平有效
      寄存器配置相关
      wr
      当wr==1表示寄存器写
      addr[7:0]
      寄存器编号
      data[15:0]
      寄存器参数
      人机交互控制
      ch0_en
      通道0采样率控制
      ch1_en
      通道1采样率控制
      fword[31:0]
      通道1输出波形频率控制
      pword[10:0]
      通道1输出波形相位控制

2.1.6 人机交互1电路设计

功能:在按键的控制下选择当前缓存数据的采样通道
notion image

2.1.6.1 按键消抖程序设计

notion image
端口描述
信号名
描述
系统相关
clk
系统时钟,默认50mhz
rst_n
系统复位,低电平有效
按键输出
key_i:有抖动
按键输入电平
按键输出电平
key_o:无抖动
按键输出电平
后沿
notion image
notion image

2.1.6.2 缓存通道写程序设计

功能:根据当前选择的通道采样通道数据,将数据写入FIFO
notion image
端口说明
信号名
描述
系统相关
clk
系统时钟,默认50mhz
rst_n
系统复位,低电平有效
按键输出电平
key_o:无抖动
按键输出电平
Fifo写相关
wr_clk
FIFO写时钟
wr_en
FIFO写使能
wrdata[7:0]
FIFO写数据
full
FIFO写满标志
通道采样数据输入
ch0_data[7:0]
0通道采样数据
flag_ch0_data
当flag_ch0_data==1表示ch0_data[7:0]有效
ch1_data[7:0]
1通道采样数据
flag_ch1_data
当flag_ch1_data==1表示ch1_data[7:0]有效

2.2 验证

notion image
Loading...