基于 ZYNQ 的电能质量系统高速数据采集系统设计

news2024/11/15 10:29:57
随着电网中非线性负荷用户的不断增加 电能质量问题日益严重 高精度数据采集系统能够为电能质
量分析提供准确的数据支持 是解决电能质量问题的关键依据 通过对比现有高速采集系统的设计方案
控电路多以 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/547580.html

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

相关文章

抖音seo排名系统/账号矩阵源码关键词开发部署

抖音seo排名系统/账号矩阵源码关键词开发技术 如何提高 抖音 搜索排名?如何优化抖音搜索排名? 部分代码分析:场景:创建一个Tree()函数来实现以下特性,当我们需要时,所有中间对象 branch1、branch2 和 bra…

Mysql常见的索引模型

目录 有序数组哈希表二叉搜索树B-TreeBTree 有序数组 我们指定一个列为索引,然后按照这个列的值排序,以有序数据存放入数据表中,如下所示 这样,我们在查找数据的时候,就可以通过id这个列,在数据表中进行二…

阿里 P8 整理的《百亿级并发系统设计》实战手册,实在是太香了

面试官问:如何设计一个高并发系统? 说实话,如果面试官问你这个题目,那么你必须要使出全身吃奶劲了。为啥?因为你没看到现在很多公司招聘的 JD 里都是说啥有高并发经验者优先。 如果你确实有真才实学,在互…

9-《数据结构》

[TOC](9-《数据结构》 一、数组1.稀疏数组 二、链表三、队列四、栈五、树5.1 完全二叉树5.2 满二叉树:深度为k且有2^k-1个结点的二叉树称为满二叉树**5.3 二叉排序树(二叉搜索树、二叉查找树)5.4 平衡二叉树:5.5 红黑树 六、堆七、…

文件夹加密码的方法有哪些?文件夹加密方法盘点

在我们使用电脑的过程中,我们会将一些重要的数据放入文件夹内进行统一管理,为了保护数据安全,文件夹加密码通常是一个不错的选择。那么文件夹该怎么加密码呢?电脑文件夹加密码的方法有哪些呢? 文件夹加密码方法 首先…

opencv读取图片

opencv是一款非常强大的图像处理库,可以用来进行图像的处理。opencv库提供了丰富的工具,比如图像缩放,旋转,倾斜校正,自动对齐等等,使用这些工具可以很方便的进行图像的处理。那么你知道 opencv怎么读取图片…

Java学习笔记-04

目录 静态成员 mian方法 多态 抽象类 接口 内部类 成员内部类 静态内部类 方法内部类 匿名内部类 静态成员 static关键字可以修饰成员方法,成员变量被static修饰的成员,成员变量就变成了静态变量,成员方法就变成了静态方法static修…

Java流程控制(一)

⭐ 控制语句⭐ 条件判断结构(选择结构)⭐ switch 语句 做任何事情事情都要遵循一定的原则,毕竟不以规矩,不成方圆,例如,到图书馆去借书,就必须要有借书证,并且借书证不能过期,这两个条件缺一不可…

【新星计划回顾】第二篇学习计划-通过定义变量简单批量模拟数据

🏆🏆又到周末,最近这段时间非常忙,虽然导师首次参与新星计划活动已经在4月16日圆满结束,早想腾出时间来好好整理活动期间分享的知识点。 🏆🏆非常感谢大家的支持和活动期间的文章输出&#xff0…

软件测试基础(V模型W模型)

软件测试基础 1. 软件测试的生命周期 需求分析:站在用户的角度查看需求逻辑是否正确,是否符合用户的需求和行为习惯。站在开发的角度思考需求是否可以实现,或者说实现起来难度高不高测试计划:指定测试计划(包括不限于…

Linux用户和组管理

1、用户和组简介 Linux 是多用户多任务操作系统。换句话说,Linux 系统支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响。不同用户具有不问的权限,毎个用户在权限允许的范围内完成不同的任务。 用户组是具…

进攻即是最好的防御!19个练习黑客技术的在线网站

前言 进攻即是最好的防御,这句话同样适用于信息安全的世界。这里罗列了19个合法的来练习黑客技术的网站,不管你是一名开发人员、安全工程师、代码审计师、渗透测试人员,通过不断的练习才能让你成为一个优秀安全研究人员。以下网站希望能给各…

智能排班系统 【技术选型与工具版本】

技术架构图 前端工具及环境 名称版本介绍NodeJS16.13.2开源、跨平台的 JavaScript 运行时环境Npm8.1.2npm包管理工具可以快速引入别人开发好的工具包进行使用Webpack4.0.0打包工具Vue2.6.14Vue 的核心库只关注视图层,易于上手,便于与第三方库或既有项目…

每日学术速递5.17

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.HACK: Learning a Parametric Head and Neck Model for High-fidelity Animation 标题:HACK:学习用于高保真动画的参数化头颈模型 作者:Longwe…

FEC功能在40G和100G光模块中的应用和注意事项

FEC(Forward Error Correction,前向纠错)功能是一种在数字通信中用于纠正传输过程中产生的误码的技术。在100G和40G光模块中,FEC功能被广泛应用于光纤传输过程中,以提高传输的可靠性和抗干扰能力。 本期文章我们主要介…

Twitter架构决策

技术决策需要在不同限制条件下做出权衡,本文介绍了Twitter早期应对用户大规模增长所做出的技术架构决策。原文:Twitter’s Tough Architectural Decision[1] Jeremy BezangerUnsplash 研究大规模互联网应用可以学到很多东西,像Netflix这样的公…

强大而可靠的DiskQ:持久化队列的解决方案

强大而可靠的DiskQ:持久化队列的解决方案 简介: 在软件开发中,处理大量数据和任务调度是常见的挑战。为了有效地处理这些问题,开发人员需要一种可靠的队列解决方案,以确保数据和任务在处理过程中不会丢失。DiskQ作为一种持久化队…

浏览器如果免费安装ChatGPT插件?

一、什么是ChatGPT? ​ ChatGPT是一种基于自然语言处理的机器学习算法,通过大规模的训练数据和优化算法来生成自然语言响应。目前,它在聊天机器人,自动回答问题,自动文本生成等方面有广泛的应用。ChatGPT是由OpenAI公…

[组合数学] 排列组合

文章目录 加法法则 --每一类都能够独立的完成任务乘法法则 --集合论 任务分步骤1000和9999之间有多个具有不同数位的奇数n 7 3 1 1 2 1 3 4 ^311^213^4 3112134 求除尽n的整数个数0到10000之间有多少个整数恰好是有一位数字是5两位数字可以组成多少两位互异且非零的两位数 减…

suricata中command的实现分析和自定义命令方法

suricata提供了suricatasc这个工具用来与其进行通信,比如修改规则文件后,通知suricata重新加载规则,就可以通过suricatasc下发重新加载规则命令,suricatasc和suricata通过unix socket进行通信,unix socke好处就是不占用…