基于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的电能质量分析仪方案(二)软件设计_第1张图片
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的电能质量分析仪方案(二)软件设计_第2张图片
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的电能质量分析仪方案(二)软件设计_第3张图片
驱动程序的编写是利用 FSM
Finite State Machine ,有限状态机)设计实现的, AD
据读取状态转换过程如图 4.5 所示,关键程序部分见附录。
基于STM32 ARM+FPGA的电能质量分析仪方案(二)软件设计_第4张图片
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的电能质量分析仪方案(二)软件设计_第5张图片
进入 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的电能质量分析仪方案(二)软件设计_第6张图片
FFT 核的引擎架构分为四输出和单输出,这里的“单”和“四”是指内部FFT蝶形处理
器的吞吐量,前者分时复用一个复数乘法器,单个时钟内得到 1 个输出,单输出消耗资源
少;后者同时使用 4 个复数乘法器,单个时钟内得到 4 个输出,四输出计算速度快。本设计
采用单输出引擎架构,可以使 FFT 处理器的资源消耗最小化。其中单输出实现结果如图
4.11 所示, FFT 引擎通过并行方式从 RAM 中读取复数输入 x[k,i] ,然后通过蝶形运算得到
FFT 输出一路结果 G[k,i]
基于STM32 ARM+FPGA的电能质量分析仪方案(二)软件设计_第7张图片
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的电能质量分析仪方案(二)软件设计_第8张图片

基于STM32 ARM+FPGA的电能质量分析仪方案(二)软件设计_第9张图片

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的电能质量分析仪方案(二)软件设计_第10张图片

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

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

基于STM32 ARM+FPGA的电能质量分析仪方案(二)软件设计_第12张图片 

基于STM32 ARM+FPGA的电能质量分析仪方案(二)软件设计_第13张图片 

你可能感兴趣的:(电力应用,fpga开发)