【国产虚拟仪器】基于 ZYNQ 的电能质量系统高速数据采集系统设计

news2024/12/23 18:30:16
随着电网中非线性负荷用户的不断增加 电能质量问题日益严重 高精度数据采集系统能够为电能质
量分析提供准确的数据支持 是解决电能质量问题的关键依据 通过对比现有高速采集系统的设计方案
控电路多以 ARM 微控制器搭配 AD 转换芯片 ARM+DSP 搭配转换芯片以及 FPGA+DSP 搭配 AD 转换芯片
的架构方式 [1-5] ARM 有着良好的决策控制特性 在工业控制领域被广泛应用 但其数据处理速度慢 不能满
足系统的实时性 由于 DSP 的串行指令流特性 复杂数据处理只能在低速系统中进行 FPGA 的全可编程
和并行数据处理特性使其在数字信号处理领域越来越受到青睐 但是对系统的决策能力较弱 [6-10] 同时
ARM DSP FPGA DSP 之间通过低速工业通信接口 (SPI Mcbsp ) 或者采用处理器外部总线接口连接
多芯片的结构 复杂化了板级电路设计 芯片间频繁通信难以保证系统的稳定性 [11-12]
对此 设计一种基于 ZYNQ 的数据采集系统 ZYNQ SOC 整合了 ARM 双核 cortext-A9 处理器和 Xilinx7
系列 FPGA 架构 片内集成高度定制的 AXI 互联和接口形成两个部分之间桥梁 加速了各模块间的通信且
加强了系统的稳定性 利用 FPGA 的硬件可编程特性设计出与高速 AD 连接的接口控制器 调用 AXI_DMA
官方硬核 IP 可直接将采集数据搬运至 ARM DDR 中进行存储 ARM 驱动串口或者 HDIM 口完成数据显
执行系统的整体决策 经过对某变电所电能质量分析 发现稳态下电网高次谐波为 60 次左右 系统选用
AD7606 采集卡采样频率为 200 kHz 8 通道同步采集 分辨率为 16 采集精度和速度都能满足数据采
集系统设计要求 实现信号的模数转换 相对 ZYNQ 自带 XADC 12 位位宽 1 MHz 采样率 AD7606 有着
更高的转换精度
1 数据采集系统的整体设计
1 为系统的整体设计简图 AD7606 采集卡输入端引出了 16 针接口 分别用于 8 通道连接外部模拟
信号线路的 VP VN 模拟信号进入 AD 采集芯片内 ,经过模拟多路复器输入转换电路完成模拟信号到数
字信号的转换 系统通过 40 针扩展口实现 AD7606 ZYNQ 的高速通信 接口位于 ZYNQ PL 部分 采用
Verilog 代码编写接口控制器程序实现 AD 采集控制功能后封装为 IP 主要设计包括 AD 的复位 时钟
样率 片选 FIFO 数据缓存器以及 AXI 协议例化 调用 Xilinx 官方 IP AXI-DMA PL 数据传输至 PS
DDR 存储器中 ARM 驱动 URAT 或者 HDMI 端口将数据传输给终端显示出来 AD 控制器先将采集数据缓
存到 FIFO FIFO 中读出数据后转换为 AXI-stream 流数据格式 如此可以加快数据处理速度 降低数
据对时序的影响 系统采用 AXI-stream register slice 模块提升接口时序 系统采用异步时序设计 ADC 配置
时钟频率为 50 MHz AXI 总线时钟为 100 MHz 数据显示时钟为 150 MHz 按照输入到输出倍增的方式设
置时钟 可有效防止缓存模块的数据溢出

2
数据采集系统的硬件设计
2.1 ZYNQ 简介
ZYNG Xilinx 推出的新一代 all-programmable system-on-chip SoC 全面可编程片上系统 本质特征
是组合了一个双核 ARM Cortex-A9 处理器 简称 PS 和一个传统的现场可编程门阵列 field programmable
gate array FPGA 逻辑部件简称 PL [13] 芯片集成了 AMBA AXI4 互联 内部存储器 外部存储器和外设 外设
主要包括 USB 总线 以太网 SD 接口 UART 接口 HDMI GPIO 口等 [14-15] 具有高达 6.25 MHz 的逻辑单元
以及 766 MHz 的内部时钟 能够实现硬件加速和可扩展性 充分满足了系统设计的实时性和高精度
2.2 AD7606 控制器设计
AD7606 采用 +5 V 单电源供电 片内集成输入放大器 过电压保护 二阶模拟抗混叠滤波器 模拟多
路复用器 16 200 kbps SAR ADC 和一个数字滤波器 2.5 V 基准电压缓存以及高速串行口和并行口
实现 8 通道同步采样 所有通道均以高达 200 kbps 的吞吐率采样 [16] AD 控制器如图 2 所示 外部信号通过
ad_data[15 0] 端口进入 AD 控制器 未连接的端口采用 Verilog 代码编程控制 根据时序特性设计转换过程
ad_convstad 端口信号上升沿启动时 8 通道同步采样 端口 ad_busy 为高电平时表示信号正在转换 当端口
ad_busy 信号为下降沿时表示 ad_rdd 读信号端口可以启动 控制器可读取数据总线中 8 个通道的采集数据
ad_cs 端口控制数据读片选 ad_os AD 内部数字滤波器采样倍率选择端口 共有 8 种倍率选择 控制器可
以通过此端口选择是否使用滤波器 以达到更高的测量精度 系统通过 DMA ADC 采集数据传输到 DDR
, 端口 M00_AXIS[15:0] 为数据输出通道接口 传输数据为流式数据 在设计时需要将 ADC 数据转换为 AX
IS 流数据 由于 ADC 时钟与 AXIS 的时钟频率不同 需要在 ADC 中添加 FIFO 进行跨时钟域处理 ,起到缓冲
的作用 AXIS 时钟频率是 ADC 时钟的两倍 所以不会发生数据溢出的情况 ARM 配置 adc_clk 时钟端口
adc_rst 和复位端完成采集的时序及复位控制

2.3
采集系统通信
系统分为内部通信和外部通信 内部通过 AX4 总线进行通信 包含 5 个独立的传输通道读地址 读数
写地址 写数据 写回复 这些通道都支持单向传输 包括 AXI4 AXI-Stream AXI-lite 3 种接口 系统数
据从 AD ZYNQ 单向传输 因此只开启了写通道 DMA 采用的 AXI-Stream 接口 主从设备间能够直接进
行数据的读取 数据传输不需要地址 提高了系统的实时性 AXI 协议中主设备和从设备通过握手信号建立
连接 如图 3 所示 使用 UART 接口与外部通信系统采用 Silicon Labs CP20102GM 芯片实现 USB 接口转
UART 接口的功能 并采用 micro USB 线与终端进行串行通信 UART 接口的 TX/RX 信号与 ZYNQ PS
BANK501 信号相连 BANK501 VCCMIO 电平为 1.8 V CP2102GM 的数据电平为 3.3 V 系统中间接入
TXSOQ02DCUR 电平转换芯片实现电平匹配
2.4 DDR 高速存储
4 DDR3 DRAM 硬件连接示意图 DDR 是双倍速率同步动态随机存储器 数据在工作时钟的
上升沿和下降沿都会进行采样 有效提升了存储速率 系统配有两颗 4 Gbit DDR3 芯片 型号为
H5TQ4G63ARFR-PBC DDR 总线位宽为 32 bit 最高运行速度可以达到 533 MHz DDR3 存储器直接与
ZYNQ 处理器的 BANK502 存储接口相连 ZYNQ-Processing System 核配置存储器时 必须确保 DDR 接口型
号一致或者兼容

3
数据采集系统的软件设计
Xilinx IDE 套件中 vivado 完成硬件工程设
计的基础上 SDK 会自动配置一些重要的参数
3 个模块 硬件定义 hardware definition 包含定
义的寄存器类型 地址映射以及当前设计包含的 IP
块信心 板级支持包 board support package 包含支
IP 块的驱动程序和变量参数头文件 应用程序
application 用于测试不同的功能 据此完成系统
软件部分设计
3.1 ADC-DMA 控制
ADC-DMA 控制是系统软件核心模块 程序运
行前对 ADC DMA 相关参数进行初始化设置
ADC 的括基地址 偏移地址 采集长度 系数 字节
位数和通道数 DMA 最大传输字节数 设备 ID
中断 ID 和中断触发源 ADC 数据写入 FIFO 中是
按照 1 8 通道顺序存储 程序定义了二维数组
将每个通道的数据独立出来 并调整了通道顺序
为了在屏幕上显示所有通道数据 系统将每个通道
的系数进行了微调 使各通道波形形成错位 DMA
的中断触发类型为完成触发 此中断属于 ZYNQ
共享中断 触发机制为当任务执行完成后触发
件设计中 DMA 只开起了写通道接口 中断函数只
打开 Streams Memery Map 中断 SDK Terminal
的接口 波特率和数据位配置后 应用 printf 函数驱
动串口通信完成终端数据显示 同时可以通过
HDMI 接口与显示器相连 实现波形的实时显示
ADC 控制流程图如图 5
3.2 DMA-SG 模式应用设计
DMA-SG 模式相对简单模式有着更高效的数据传输特性 允许一次单一 DMA 传输访问多个内存空间
所有任务结束后才触发中断 硬件工程开启 SG 模式后引出 M_AXI_SG 接口 用于读写链表 链表以 13 个寄
存器组成的描述符为基本单元 描述符中包含下一个描述符指针地址 数据缓存地址 控制存储信息等
通道 SG 模式驱动设计流程如图 6 所示 需要在内存中开辟缓存空间和链表制作 将第一个描述符写入当前
地址寄存器 启动 DMA 并建立中断系统 传输结束后会触发中断 将最后一个描述符写入结尾结存器 触发
DMA 通过总线抓取链表描述符 BD 包传输完成后读取下一个描述符 将最后一个描述符指针只指向第一
个描述符的地址 匹配回环模式 数据处理完成后 清除链表状态
3.3
显示控制模块
该模块提供了易于使用的 API 控制显示器通过 VGA HDMI 连接到系统开发板上 根据显示器分辨
率大小设置画布大小 背景和颜色 在画布中取长方形区间作显示波形的幅值和传播时间 区间内设计 32 ×
32 像素点的小方格作为量化单位 水平和垂直方向每隔 4 像素点显示一次 网格显示为灰色 背景显示为
黑色 设计网格叠加函数和波形叠加函数对画布缓存区的数据进行实时读取 实现波形的不间断显示
Catch 中读取的数据在图像上显示为离散点 将数据与前一个数据进行比较 得出差值并在同一列描点 使
波形显示更为平滑 可以通过修改波形起始位置参数改变波形区域的大小 但列起始位置加上波形高度必
须小于显示器分辨率 否则无法正常显示 系统屏幕以彩条作为显示背景 设计了无缝帧缓冲器区 可实现
无痕动画
图像驱动流程如图 7 所示 首先要创建一个显示对象 并对其初始化设置 调用 DisplaySetMode 函数设
置传输模式 调用 DisplayStart 函数将数据传输到显示器上 要实现无缝动画 需要先将一张图像绘制到当
前未显示的帧缓存区 后调用 DisplayChangFrame 函数显示此帧 重复操作显示图像 若更改分辨 需调用显
示模式函数设置模式 然后 从新开始传输数据

4
实验结果分析
采用 digilent Analog Discovery 2 任意函数发生器提供所需的信号进行实验 8 a 为信号发生器设
置页面 实验对正弦信号 20 kHz 2 V 信号进行采集显示 AD 采样频率为 200 kHz 8 个采集通道全部开启
由于硬件条件限制 只进行了单通道实验 HDMI 显示结果以及试验平台如图 8 b 所示 图形界面显示的正
弦波即为系统采集信号 纵向分析 相邻虚线间距表示一个度量单位 波峰到波谷共经过 4 个单位表示
+2 V -2 V 信号 分析得出实验结果和原始信号波形相同 为了进一步验证采集精度 实验进行了 8
4 个模拟电压值的测试 测试结果通过串口打印出来 如表 1 所示 第一列基准电压为信号发生器发出
后面 8 列为系统测量结果 根据式 1 ), 计算出采集误差为 0.02%

 

针对电能质量检测领域的高速数据采集要求 利用 Xilinx 提供的 Vivado 开发套件在 ZYNQ SoC 上完成
高速数据采集系统的设计 该设计在硬件方面 借助 ZYNQ FPGA 部分实现系统的采集控制 ARM 部分
完成数据传输 存储和结果显示 其中基于自定义 ad7606_sample IP 实现了 AD7606 的采集控制 利用 AXI
HP 高速接口 AXI-DMA 硬核 IP DMA-SG 模式加快了系统的数据传输和处理速度 在软件方面 完成了 SG
模式下的 BD 包建立 波形显示设计及 DMA 数据传输控制 通过测试的实验结果表明 ARM 端驱动 HDMI
接口实现了采集信号的实时在线显示 通过对串口终端打印出来的数据进行分析 确定系统的采集误差可
达到 0.02% 系统具备体积小 功耗低 精度高 实时性强 稳定性强等特点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/562599.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1992-2022年经过矫正的夜间灯光数据

夜间灯光数据是我们在各项研究中经常使用的数据!我们平时使用的夜间灯光数据主要来源于NPP/VIIRS和DMSP/OLS两种渠道,我们之前也分享过这两种来源的夜间灯光数据,包括: 2012-2021年逐年的NPP/VIIRS夜间灯光数据2012-2021年逐月的…

MySQL查询性能优化之索引覆盖、索引下推、索引潜水、索引合并

索引覆盖 什么是索引覆盖 select的数据列只用从索引中就能够取得,不必读取数据行,换句话说查询列要被所建的索引覆盖。 如何实现索引覆盖? 最常见的方法就是:将被查询的字段,建立到联合索引(如果只有一…

python---变量(2)

此处,首次使用“”对a进行设置值,也就是对a的初始化。 后续位置对a使用“”,实际上是对a赋值。 因此两行代码得到的结果显然是不同的! 变量的种类 1.整数-int-根据数据大小自动扩容 python中的变量类型不需要显示声明&#…

关于 arduino 中的 constrain(x, a, b)函数

当我们需要将一个变量的值限制在某个范围内时,可以使用 constrain(x, a, b) 函数来实现。该函数可以将参数 x 的值限制在区间 [a, b] 之间,如果 x 小于 a,则返回 a,如果 x 大于 b,则返回 b,否则返回 x。下面…

第五篇、基于Arduino uno,获取超声波(HC04)传感器的距离数据——结果导向

0、结果 说明:先来看看串口调试助手显示的结果,显示的是一个距离值,如果是你想要的,可以接着往下看。 1、外观 说明:虽然超声波传感器形态各异,但是原理和代码都是适用的。 2、连线 说明:只…

材料力学-剪力和弯矩方向规定及关系

剪力和弯矩的方向规定方法 对水平梁的某一指定截面来说, 剪力:在它左侧的向上外力,或右侧的向下外力,将产生正的剪力;反之,即产生负的剪力。 自己的记法(可以不按我的来)&#xff1…

ChatGPT:你真的了解网络安全吗?浅谈网络安全攻击防御进行时之网络安全新总结

ChatGPT:你真的了解网络安全吗?浅谈网络安全攻击防御进行时 网络安全新总结 ChatGPT(全名:Chat Generative Pre-trained Transformer),美国OpenAI 研发的聊天机器人程序,是人工智能技术驱动的自…

ChatGPT在数据分析中的应用

最近,机器学习和人工智能技术在数据分析领域中发挥着越来越大的作用。而chatgpt正是这个领域最受欢迎的仿人聊天 AI 。但是,对于许多数据科学家和分析师来说,chatgpt并不是他们首选的工具。相反,pandas、sk-learn是数据科学家的最…

一起来聊聊ERP

聊聊ERP 哈喽,哈喽,大家好!今天开始,我们就来讲ERP了。 什么是ERP ERP是Enterprise Resource Planning 的缩写,中文含义是企业资源计划。它代表了当前在全球范围内应用最广泛、最有效的一种企业管理方法,…

JVM系列-第12章-垃圾回收器

垃圾回收器 GC 分类与性能指标 垃圾回收器概述 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。 由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本。 从不同角度分析垃圾收集器,…

gym不渲染画面的解决方案(gym版本号0.26.2)

确认gym版本号 我安装了新版gym,版本号是0.26.2,不渲染画面的原因是,新版gym需要在初始化env时新增一个实参render_mode‘human’,并且不需要主动调用render方法,官方文档入门教程如下 import gym import numpy as n…

FreeRTOS学习之路,以STM32F103C8T6为实验MCU(第一章——FreeRTOS的基本框架)

学习之路主要为FreeRTOS操作系统在STM32F103(STM32F103C8T6)上的运用,采用的是标准库编程的方式,使用的IDE为KEIL5。 注意!!!本学习之路可以通过购买STM32最小系统板以及部分配件的方式进行学习…

day15 Servlet-Request-Response

请求对象(request) **请求对象的作用:**封装了所有请求的数据,有服务器实现这个对象,我们直接调用sercive()方法 HttpServletRequest对象的常用方法 request请求方法描述request.getMethod()获得请求方式post\getre…

基于SpringBoot+Uniapp的微信小程序二手购物商城(用户手册+测试报告+详细设计文档)

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 这个微信小程序二手购…

LangChain使用调研

目录 一、LangChain是什么 二、LangChain提供的主要模块 三、Agent使用例子 四、zero-shot-react-description在ChatGPT和LLaMA-7B效果对比 一、LangChain是什么 LangChain是一个程序框架,它允许用户围绕LLM(基座)快速构建应用程序。 La…

多维时序 | MATLAB实现GA-BiLSTM遗传算法优化双向长短期记忆网络的多变量时间序列预测

多维时序 | MATLAB实现GA-BiLSTM遗传算法优化双向长短期记忆网络的多变量时间序列预测 目录 多维时序 | MATLAB实现GA-BiLSTM遗传算法优化双向长短期记忆网络的多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 MATLAB实现GA-BiLSTM遗传算法优化双向长短…

宏工科技“全面”发力CIBF,助推电池智造“高效提质”

5月16-18日,第十五届中国国际电池技术展览会(CIBF2023)在深圳盛大举行。宏工科技携电池材料与电池匀浆领域的创新产品和系统解决方案精彩亮相。 据了解,宏工科技在新能源行业的业务涉及电池材料整线产线、电池匀浆、电池回收三个…

边沿检测电路

目录 同步信号的边沿检测 异步信号的边沿检测 所谓的边沿检测(幼教边沿提取),就是检测输入信号的上升沿和下降沿。在设计数字系统时,边沿检测是一种很重要的思想,实际编程时用的最多的时序电路应该就是边沿检测电路和…

为什么要把一个函数分解成三角函数?(傅利叶级数)

为什么要把一个函数分解成三角函数?(傅利叶级数) 笔记来源:【知识拼图】傅里叶变换从零到一 02集 傅里叶级数从起源到操作,真的很细 把一个函数分解成三角级数体现了化繁为简,一个复杂函数化成许多三角函数的叠加 先回顾一下向量…

CyberLink的颜色修正和调整软件ColorDirector Ultra 11.0版本在win10系统的下载与安装配置教程

目录 前言一、ColorDirector Ultra安装二、使用配置总结 前言 ColorDirector Ultra是由CyberLink公司开发的一款专业的颜色修正和调整工具,可以帮助用户实现对视频中颜色的全方位管理。该软件支持对各种分辨率的视频进行颜色调整,并且可以从各种设备&am…