基于STM32 ARM+FPGA的电能质量分析仪方案(二)软件设计

这篇具有很好参考价值的文章主要介绍了基于STM32 ARM+FPGA的电能质量分析仪方案(二)软件设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本部分主要介绍 FPGA+ARM 控制部分的软件设计。 FPGA+ARM 控制部分包括 Verilog
HDL 硬件描述语言和 C 语言的开发。 FPGA 部分主要控制 AD7606 模数转换、数字三相锁相
环和FFT谐波计算模块、 SDRAM 控制器的设计、 FSMC 接口模块等。 ARM 部分主要完成嵌
入式实时操作系统 FreeRTOS 的移植、 FPGA ARM 之间数据的读取和写入、 ARM 和上位机
之间的串口通信、以及经浮点运算后得出电能质量的各项参数等。
4.1 FPGA 模块软件设计
4.1.1 FPGA设计优势
FPGA 采用的是自顶向下的设计方法,将复杂的系统划分为低层次的功能模块,再将低
层次的模块划分为下一层的模块,一直划分直到能够使用基本模块为止。这种方式极大地
提高了开发效率和便于管理,使用 FPGA 开发具有很多优点:
1)运行速度高。 FPGA 通过外部输入晶振产生系统时钟,再利用内部的锁相环倍频
功能可以生成各模块所需的时钟,频率可以达到很高。
2)代码运行效率高。与单片机、 DSP 不同, FPGA 打破了传统的顺序执行模式,采
用硬件并行执行方式,其运行效率更高。
3)数字接口丰富。 FPGA I/O 口众多,能够完成大规模的系统设计,而且开发人
员可以自定义这些 I/O ,使得 FPGA 的灵活性很高,其功耗低,输入输出接口能与 TTL
CMOS 等兼容。
4)可重构。 FPGA 的内部逻辑可以根据需求而改变,可以极大地缩短集成电路的设
计周期,还能够降低成本,市场前景广阔。
4.1.2 FPGA开发语言及软件
Verilog HDL 是一种硬件描述语言 [45] ,用来描述数字系统硬件的结构和行为。和一般的
高级设计语言不同,硬件描述语言并行执行,还能描述过程中的时序,可以对各种抽象层
次的数字系统进行建模,这些层次按级别有系统级、算法级、 RTL 级、门级、开关级,在模
块中对设计的描述方式分为数据流、行为和结构三种方式, Verilog HDL 1995 年被正式
纳入 IEEE 标准。
QuartusII Altera 公司的 FPGA 开发软件,输入形式包括原理图、 Verilog HDL 等,其
界面友好且操作方便,涵盖了可编程逻辑器件的完整开发过程,包括设计输入、综合、布
局布线、时序分析、仿真和编程配置,用户可以在 QuartusII 中实现整个数字集成电路的
FPGA 设计流程。开发流程图如 4.1 所示。
基于STM32 ARM+FPGA的电能质量分析仪方案(二)软件设计,电力应用,fpga开发
4.1.3 FPGA软件运行流程
(1)设备上电后,复位,完成初始化。 PLL 锁相环将输入的 25MHz 晶振时钟倍频到
100MHz ,作为系统运行的主时钟。 PLL 输出稳定后,主状态机开始运行,并等待 AD7606
始化完成后,设备正式开始运行。
2)采样周期计数模块产生一个周期中断作为 AD7606 的采样频率,中断频率大小由三
相锁相环的输出决定(初始值为 100MHz/12.8KHz=7812 )。
3) ADC 采集模块接收到周期中断后,立刻开始同步采集并转换 3 路电压和 3 路电流信
号 ,转换方程如下: ( 5 ) =
32768
5
2.
5
V
I
N R
E
F
V CODE
V
V
 
。同时正余弦计算模块,根据三相锁
相环输出的锁定相位角(初始值为 0 ),计算 1-17 次谐波的正余弦值。
4) SDRAM 计算模块,将 AD 采样的三相电流和正余弦值作为输入,计算出其实部和
虚部,然后将其存储在 SDRAM 中。
(5)FFT 计算模块,以一定的周期,在 SDRAM 模块中,抽取三相电流数据点,分别进
256 FFT 计算,然后将计算出的三相电流谐波分量幅值,存入到 RAM 中。
(6)三相锁相环模块,对AD 采样的三相电压,进行锁相环计算,并输出采样频率,通
过该值调整 AD 的采样频率,使当前正余弦值计算模块的相角与三相电压同相。
(7)最后将所有的计算数据同步更新到FSMC 的存储寄存器组中,并输出一个 ARM
断信号,通知 ARM 对这些寄存器数据进行访问。步骤 3-7 ,必须在下一个周期中断产生之前
完成。步骤 3-6 完成后,主状态机将等待下一个周期中断,然后重复以上步骤继续运行。
FPGA 主程序流程图如 4.2 所示。
基于STM32 ARM+FPGA的电能质量分析仪方案(二)软件设计,电力应用,fpga开发
4.1.4 AD7606 采样
AD7606 的工作是通过 FPGA 控制其信号时序进行的。 AD7606 通过 CONVST_A
CONVST_B 引脚分别控制 V1~V4 V5~V8 八个通道的转换,通过 CS RD 控制数据的读
取,通过 PAR/SER SEL 引脚控制选择数据接口模式。本设计中将 CONVST_A CONVST_B
连接在一起实现 8 通道同步采样,将 PAR/SER SEL 引脚设置为低电平时采用并行数据线
DB[15: 0] 输出。在开始采样之前,需要给 RESET 引脚一个大于 50ns 的正脉冲进行复位,当
CONVST 信号的上升沿时 AD 转换开启, AD7606 内含有的片内振荡器用来实现转换,同时
BUSY 信号变为高电平并发送至 FPGA 表示正在进行数据转换,当转换结束时 BUSY 信号恢复
低电平,此时 8 路转换数据被锁村到输出数据寄存器中,设置 CS RD 设置为低电平,使能
数据输出总线 DB[15:0] 并将数据发送至 FPGA ,一次 A/D 转换结束。 BUSY 信号高电平的持
续时间 t CONV 的长短取决于芯片的采样速率 ,转换控制时序如图 4.3 所示。
基于STM32 ARM+FPGA的电能质量分析仪方案(二)软件设计,电力应用,fpga开发
驱动程序的编写是利用 FSM
Finite State Machine ,有限状态机)设计实现的, AD
据读取状态转换过程如图 4.5 所示,关键程序部分见附录。
基于STM32 ARM+FPGA的电能质量分析仪方案(二)软件设计,电力应用,fpga开发
4.1.6 FFT运算模块
本设计中谐波计算采用基 -2 FFT 变换, FFT 运算模块有两种实现方法:第一种是根据
FFT 的基本原理自定义 FFT 模块,设计模块有蝶形运算单元、旋转因子单元、地址发生器以
及时序控制单元等,然后再进行仿真测试,这种方式占用较多的资源,而且计算效率较
低;第二种是利用 Quartus ii 软件上提供了专门的 FFT IP 核,根据设计要求设置参数就能得
到一个高效地 FFT 模块,在实际工程应用中可以直接移植,在移植之前需要对其进行时序
仿真验证。本文选择第二种方法。
Quartus ii 提供了两种定制 FFT 的方法: DSP Builder MegaWizard Plug-in Wizard ,本
设计选择了第二种方法,其可以手动配置 FFT 的参数。选择 Transforms FFT v13.1 ,选
择输出文件类型为 Verilog HDL [47] ,新建 FFT 如图 4.9 所示。
基于STM32 ARM+FPGA的电能质量分析仪方案(二)软件设计,电力应用,fpga开发
进入 FFT 配置界面后,配置的是转换长度为 256 点,数据位度和旋转因子精度都为
16bits FFT IP 核元件图如 4.10 所示,包含 10 个输入和 8 个输出信号:
sink_real[1 5 0] sink_imag[1 5 0] :是输入数据的实部和虚部;
source_real[1 5 0] source_imag[1 5 0] :是输出数据的实部和虚部;
Source_exp[5 0] :是所得输出实部和虚部数据的指数;
Sink_valid :为 1 时,表示 FFT 正接收数据;
Source_valid :为 1 时,表示正读取 FFT 的转换结果。
基于STM32 ARM+FPGA的电能质量分析仪方案(二)软件设计,电力应用,fpga开发
FFT 核的引擎架构分为四输出和单输出,这里的“单”和“四”是指内部FFT蝶形处理
器的吞吐量,前者分时复用一个复数乘法器,单个时钟内得到 1 个输出,单输出消耗资源
少;后者同时使用 4 个复数乘法器,单个时钟内得到 4 个输出,四输出计算速度快。本设计
采用单输出引擎架构,可以使 FFT 处理器的资源消耗最小化。其中单输出实现结果如图
4.11 所示, FFT 引擎通过并行方式从 RAM 中读取复数输入 x[k,i] ,然后通过蝶形运算得到
FFT 输出一路结果 G[k,i]
基于STM32 ARM+FPGA的电能质量分析仪方案(二)软件设计,电力应用,fpga开发
FFT 核内部数据使用块浮点结构,以达到高信噪比 (SNR) Altera FFT 核可以设置
为四种 I/O 数据流结构,按不同的速度要求由高速到低速分别为流结构、变流结构、缓
冲突发结构、突发结构四种 I/O 流方式。流结构和变流结构都是流水线型的,是对时间
要求很严格的应用场合,能实现很高的数据吞吐率,但缺点是占用最多的逻辑资源。硬
件实现的 FFT 处理速度快,即便是突发结构, 1ms 内便可完成一次 256 FFT ,故选
Burst 架构。
最后要对FFT仿真激励文件进行编写,利用 Modelsim 仿真软件,与 Quartus ii 自带的
仿真功能不一样, Modelsim 仿真需要编写激励文件 (Testbench)。激励文件主要用于给子
模块提供信号激励。 FFT 数据输入输出时序如图 4.12 所示,仿真图如 4.13 所示,左侧为
模块端口变量名。
基于STM32 ARM+FPGA的电能质量分析仪方案(二)软件设计,电力应用,fpga开发

基于STM32 ARM+FPGA的电能质量分析仪方案(二)软件设计,电力应用,fpga开发

4.2 ARM 模块软件设计
4.2.1FreeRTOS简介
近年来嵌入式操作系统因其高实时性、多任务调度等优点在各个领域得到了广泛的应
用,目前主流的嵌入式操作系统有 Vxworks Linux µC/OS-II FreeRTOS 等,不同于 Unix
操作系统给每个任务分配同样的运行时间的任务调度方式, RTOS的任务调度设计是可预测
的, FreeRTOS 的任务调度就是根据优先级来决定下一刻该运行哪个任务,这样在实时环境
中操作系统就能够对某一事件做出实时的响应。本设计采用 FreeRTOS 嵌入式实时操作系
统,可以更合理、更有效地利用 CPU 的资源,简化应用软件的设计,缩短系统开发时间,更
好地保证系统的实时性和可靠性。 FreeRTOS 是一个可裁剪的小型实时操作系统,其特点包
括:
1)性价比高。 FreeRTOS 是完全开源的操作系统,其完整的源码在官网就可以方便的
下载到。
2)高可移植性。 FreeRTOS 源码大多用 C 语言编写,移植起来更加方便。
3)可裁剪性。用户可根据 FreeRTOS 提供的丰富的配置,选择自己需要的内核功能。
4)混合任务调度模式。 FreeRTOS 同时支持优先级抢占式、轮转式协同调度和时间片
调度三种方式,优先级高的任务优先处理,优先级相同时则按时间片轮流执行,这样使得
系统运行时的灵活性强。
5 FreeRTOS 系统简单、小巧,一般内核仅占用4k-9k字节空间,大大节约了资源。
4.2.2 ARM软件运行流程
ARM 上电后执行以下初始化: FreeRTOS 内核初始化、板载信号灯初始化、串口初始
化、 FSMC 总线初始化、中断 IO 初始化。
初始化完成后,将会创建 4 个线程:
(1)参数设置线程:ARM 通过串口,接收上位机设置的参数,并执行响应操作。
(2)数据上传线程:ARM 通过串口,将设备运行数据上传给上位机。
(3)FPGA 通信线程:完成 ARM FPGA 写入参数及 ARM FPGA 读取数据。
(4)数据计算线程:计算FPGA 上传的数据。
线程创建完成后,开启任务调度器, RTOS 将调度上述三个线程进行运行, ARM 主程序
流程图如 4.14 所示。
基于STM32 ARM+FPGA的电能质量分析仪方案(二)软件设计,电力应用,fpga开发

 信迈提供STM32 ARM+FPGA的解决方案。

上位机软件主要实现功能是:接受串口发送的数据并发出指令,处理和存储通过串口
通信接收到的电能质量数据,并实现对电能质量指标和波形的显示和分析。
5.1 基本框架
本文上位机软件开发平台为 Microsoft Visual Studio 2013 ,开发语言为 C# C# 语言具有
开发速度快、良好的面向对象的特性、基础类库全等优点 [48] 。数据分析软件编写采用了模块
化设计思想,方便系统后期的功能更新,主要包括绘图部分、数据存储部分以及数据分析
部分。软件基本框架如图 5.1 所示。
基于STM32 ARM+FPGA的电能质量分析仪方案(二)软件设计,电力应用,fpga开发

基于STM32 ARM+FPGA的电能质量分析仪方案(二)软件设计,电力应用,fpga开发 

基于STM32 ARM+FPGA的电能质量分析仪方案(二)软件设计,电力应用,fpga开发 文章来源地址https://www.toymoban.com/news/detail-539907.html

到了这里,关于基于STM32 ARM+FPGA的电能质量分析仪方案(二)软件设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • LabVIEW开发基于物联网的多功能功率分析仪

    LabVIEW开发基于物联网的多功能功率分析仪 根据技术规则,电气元件网络中的单个被创建为在标称正弦波振动制造频率下运行。失真顺序的电流和电压波与正弦波不同,它们或多或少地扭曲成形状。它是由交流网络中非线性组件的存在引起的,例如静态转换器、旋转电气设备

    2024年02月07日
    浏览(33)
  • 《AP音频分析仪的使用》

    AP,音频分析仪器(AudioPrecision),是指既能够测量话筒、音频功放、扬声器等各类单一音频设备的各种电声参数,也能测试组合音响、调音台等组合音频设备的整体性能的分析类仪器。所谓音频设备就是将实际的声音拾取到将声音播放出来的全部过程中需要用到的各类电子设

    2023年04月09日
    浏览(27)
  • APx500音频分析仪硬件简介

    两通道模拟输出,两通道或以上的模拟输入接口 线性编码数字音频接口(AES/EBU,TOSLINK,SPDIF)Linear PCM 脉冲密度调制码流(需要APx-PDM选件支持) Bluetooth 蓝牙音频码流(需APx-BT选件支持) 最高支持192kHz数字采样音频(APx555最高支持216kHz) APx500 v4.0 新增Bench模式,有效帮助工程师

    2024年04月12日
    浏览(31)
  • 第五章 在线逻辑分析仪-SIGNALTAP

    ps:仿真实在pc端进行仿真,和fpga一点关系也没有,而signaltap是直接反馈芯片的信号。 进行 FPGA 开发的过程中,在逻辑代码上板运行前都会进行仿真验证,而 EDA 仿真工具(如 Modelsim 等)的使用更是可以可以让工程师提早发现工程中出现的一些错误。但这并不代表经过仿真工具

    2024年02月03日
    浏览(29)
  • 一个 24 通道 100Msps 逻辑分析仪

    这是一个创建非常便宜的逻辑分析仪的项目,但其功能可与昂贵的商业分析仪相媲美。该分析仪可以以每秒 1 亿个样本的最高速度对多达 24 个通道进行采样,并且可以通过单个通道中的极性变化或多达 16 个通道形成的模式来触发。 该项目不仅包含硬件,还包含软件,它有一

    2024年02月01日
    浏览(34)
  • CAN总线分析仪使用及调试方式

    1、软件安装 工具下载地址: 关注公众号:Kevin的学习站;后台发送:CAN总线分析仪;即可获取软件! 安装: 1、以管理员身份运行软件;选择简体中文安装。 点击下一步; 勾选“我同意此协议”选项,点击下一步; 选择所需的安装路径,点击下一步 USB_CAN TOOL:调试软件,

    2024年02月10日
    浏览(45)
  • 用逻辑分析仪观察串口Uart数据波形

    只讨论嵌入式编程中较为常用的异步串行接口(Universal Asynchronous Receiver/Transmitter, UART),TTL电平。 串口的参数一般有: 1. 波特率 ,数据传输速率,单位bps(bits per second),即每秒传输的位数,常见的波特率有9600bps、19200bps、115200bps等;如果波特率为115200bps,则传输一个

    2024年02月06日
    浏览(37)
  • 高云软件的在线逻辑分析仪使用教程

    最近Altera和Xilinx的芯片涨价太严重,经过寻找国内替代型号,发现广东高云半导体的FPGA基本可以满足项目需求(非广告,实际项目使用);所以就切换使用高云的GW2A型号的FPGA;(GW2A-LV18LQ144C8/I7); 由于在使用GoWin过程中走过不少弯路,因此记录下来,一是能提醒自己在忘记

    2024年02月15日
    浏览(31)
  • Audio Precision SYS-2722音频分析仪

    181/2461/8938产品概述: 2700系列专为需要最高性能的音频工程师而设计, 最低的失真和最大的灵活性。 2722的真正双域架构实现了以下方面的无与伦比的测量 模拟和数字信号:模拟发生器和分析仪性能超过 任何基于数字转换器的设计,而数字分析技术提供了广泛的 适用于任何领

    2024年01月16日
    浏览(25)
  • 如何有效提高矢量网络分析仪的动态范围

            动态范围是网络分析仪(VNA)接收机的最大输入功率与最小可测量功率(本底噪声)之间的差值,如图所示,要使测量有效,输入信号必须在这些边界内。         如果需要测量信号幅度非常大的变化,例如,滤波器带通和抑制,那么增加动态范围非常重要,

    2024年02月02日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包