当前位置: 首页 > news >正文

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

随着电网中非线性负荷用户的不断增加 电能质量问题日益严重 高精度数据采集系统能够为电能质
量分析提供准确的数据支持 是解决电能质量问题的关键依据 通过对比现有高速采集系统的设计方案
控电路多以 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% 系统具备体积小 功耗低 精度高 实时性强 稳定性强等特点

相关文章:

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

随着电网中非线性负荷用户的不断增加 , 电能质量问题日益严重 。 高精度数据采集系统能够为电能质 量分析提供准确的数据支持 , 是解决电能质量问题的关键依据 。 通过对比现有高速采集系统的设计方案 , 主 控电路多以 ARM 微控制器搭配…...

Java前缀和算法

一.什么是前缀和算法 通俗来讲,前缀和算法就是使用一个新数组来储存原数组中前n-1个元素的和(如果新数组的当前元素的下标为n,计算当前元素的值为原数组中从0到n-1下标数组元素的和),可能这样讲起来有点抽象&#xff0…...

pico 的两个双核相关函数的延时问题

pico高级API函数中, multicore_fifo_pop_timeout_us 和 multicore_fifo_push_timeout_us 的延时参数, 如修改为500微秒以上时,其延时似乎远远超过设定值,其反馈速度似乎被主核的交互所左右 ,而修改为200以下时&#x…...

Doxygen源码分析: QCString类依赖的qstr系列C函数浅析

2023-05-20 17:02:21 ChrisZZ imzhuofoxmailcom Hompage https://github.com/zchrissirhcz 文章目录 1. doxygen 版本2. QCString 类简介3. qstr 系列函数浅析qmemmove()qsnprintfqstrdup()qstrfree()qstrlen()qstrcpy()qstrncpy()qisempty()qstrcmp()qstrncmp()qisspace()qstr…...

华为OD机试之一种字符串压缩表示的解压(Java源码)

一种字符串压缩表示的解压 题目描述 有一种简易压缩算法:针对全部由小写英文字母组成的字符串,将其中连续超过两个相同字母的部分压缩为连续个数加该字母,其他部分保持原样不变。 例如:字符串“aaabbccccd”经过压缩成为字符串“…...

Microsoft Project Online部署方案

目录 一、前言 二、Microsoft Project Online简介 三、Microsoft Project Online的优势 1、云端部署 2、多设备支持...

飞浆AI studio人工智能课程学习(3)-在具体场景下优化Prompt

文章目录 在具体场景下优化Prompt营销场景办公效率场景日常生活场景海报背景图生成办公效率场景预设Prompt 生活场景中日常学习Prompt: 给写完的代码做文档 将优质Prompt模板化Prompt 1:Prompt 1:Prompt 2步骤文本过长而导致遗失信息的示例修改后 特殊示例 如何提升安全性主要目…...

企业工程行业管理系统源码-专业的工程管理软件-提供一站式服务

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下: 首页 工作台:待办工作、消息通知、预警信息,点击可进入相应的列表 项目进度图表:选择(总体或单个)项目显示1…...

Ehcache 整合Spring 使用页面、对象缓存

Ehcache在很多项目中都出现过,用法也比较简单。一般的加些配置就可以了,而且Ehcache可以对页面、对象、数据进行缓存,同时支持集群/分布式缓存。如果整合Spring、Hibernate也非常的简单,Spring对Ehcache的支持也非常好。EHCache支…...

Spring Cloud中的服务路由与负载均衡

Spring Cloud中的服务路由与负载均衡 一、服务路由1. 服务发现2. 服务注册3. 服务消费4. 服务提供5. 服务路由实现 二、负载均衡1. 负载均衡的概念2. 负载均衡算法3. 负载均衡实现4. 负载均衡策略5. 使用Spring Cloud实现负载均衡 三、服务路由与负载均衡的集成1. 集成背景2. 集…...

rails routes的使用

Rails routes 是用于确定应该将请求发送到哪个控制器和操作的一种机制。在 Rails 应用程序中,可以通过定义路由来映射 URL 到控制器操作。可以使用 rails routes 命令查看当前应用程序中定义的所有路由。 以下是一些常见的用法: 查看所有路由&#xff…...

Linux基础内容(21)—— 进程消息队列和信号量

Linux基础内容(20)—— 共享内存_哈里沃克的博客-CSDN博客 目录 1.消息队列 1.定义 2.操作 2.信号量 1.定义 2.细节 3.延申 4.操作 3.IPC的特点共性 1.消息队列 1.定义 定义:是操作系统提供的内核级队列 2.操作 msgget:…...

STM32实现基于RS485的简单的Modbus协议

背景 我这里用STM32实现,其实可以搬移到其他MCU,之前有项目使用STM32实现Modbus协议 这个场景比较正常,很多时候都能碰到 这里主要是Modbus和变频器通信 最常见的是使用Modbus实现传感器数据的采集,我记得之前用过一些传感器都…...

springboot服务端接口公网远程调试 - 实现HTTP服务监听【端口映射】

文章目录 前言1. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 2. 内网穿透2.1 安装配置cpolar内网穿透2.1.1 windows系统2.1.2 linux系统 2.2 创建隧道映射本地端口2.3 测试公网地址 3. 固定公网地址3.1 保留一个二级子域名3.2 配置二级子域名3.2 测试使用固定公网地址…...

zabbix监控之javasnmp自定义监控

1、客户端开启 java jmxremote 远程监控功能 上传 tomcat 软件包到 /opt 目录中 cd /opt tar zxvf apache-tomcat-9.0.16.tar.gz mv apache-tomcat-9.0.16 /usr/local/tomcat #配置 java jmxremote 远程监控功能 vim /usr/local/tomcat/bin/catalina.sh ...... #位置在 cygw…...

Inertial Explorer处理pospac数据总结

Inertial Explorer处理pospac数据的过程包括:1)从pospac提取出gps数据和imu数据;2)gps数据转成rinex格式;3)imu数据转成imr格式;4)IE对gps数据进行PPP解算;5)紧耦合融合解…...

tps和qps的区别是什么?怎么理解

区别:QPS指的是“每秒查询率”;而TPS指的是“事务数/秒”。理解:Tps即每秒处理事务数,对于一个页面的一次访问,形成一个Tps;而一次页面请求,可能产生多次对服务器的请求,服务器对这些…...

【Java系列】深入解析枚举类型

序言 即便平凡的日子仿佛毫无波澜,但在某个特定的时刻,执着的努力便会显现出它的价值和意义。 希望这篇文章能让你不仅有一定的收获,而且可以愉快的学习,如果有什么建议,都可以留言和我交流 问题 思考一下这寄个问题&a…...

网络原理(五):IP 协议

目录 认识IP 地址 子网掩码 作用 动态分配IP 地址 NAT 机制 认识MAC地址 MAC地址如何工作 网络设备和相关技术 集线器:转发所有端口 交换机:MAC地址转换表转发 主机&路由器:ARP缓存表ARP寻址 路由器:路由NAPT 数…...

MySQL---空间索引、验证索引、索引特点、索引原理

1. 空间索引 MySQL在5.7之后的版本支持了空间索引,而且支持OpenGIS几何数据模型 空间索引是对空间数据类型的字段建立的索引,MYSQL中的空间数据类型有4种,分别是: 类型 含义 说明 Geometry 空间数据 任何一种空间类型 Poi…...

【JavaEE】-- HTTP

1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

AI,如何重构理解、匹配与决策?

AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

Windows电脑能装鸿蒙吗_Windows电脑体验鸿蒙电脑操作系统教程

鸿蒙电脑版操作系统来了,很多小伙伴想体验鸿蒙电脑版操作系统,可惜,鸿蒙系统并不支持你正在使用的传统的电脑来安装。不过可以通过可以使用华为官方提供的虚拟机,来体验大家心心念念的鸿蒙系统啦!注意:虚拟…...

STM32标准库-ADC数模转换器

文章目录 一、ADC1.1简介1. 2逐次逼近型ADC1.3ADC框图1.4ADC基本结构1.4.1 信号 “上车点”:输入模块(GPIO、温度、V_REFINT)1.4.2 信号 “调度站”:多路开关1.4.3 信号 “加工厂”:ADC 转换器(规则组 注入…...

Windows 下端口占用排查与释放全攻略

Windows 下端口占用排查与释放全攻略​ 在开发和运维过程中,经常会遇到端口被占用的问题(如 8080、3306 等常用端口)。本文将详细介绍如何通过命令行和图形化界面快速定位并释放被占用的端口,帮助你高效解决此类问题。​ 一、准…...