好文档 - 专业文书写作范文服务资料分享网站

基于Verilog HDL的SPWM全数字算法的FPGA实现

天下 分享 时间: 加入收藏 我要投稿 点赞

基于Verilog HDL的SPWM全数字算法的FPGA实现

丁电宽, 梁建均, 王文奇, 杨荣杰

(安阳师范学院电气电子信息工程系, 安阳市 455002)

摘 要 本文在详细阐述正弦脉宽调制算法的基础上,结合DDS技术,以Actel FPGA作为控制核心,通过自然采样法比较1个三角载波和3个相位差为1200的正弦波,利用Verilog HDL语言实现死区时间可调的SPWM全数字算法。并在Fushion StartKit开发板上实现SPWM全数字算法,通过逻辑分析仪和数字存储示波器得到了验证,为该技术进一步应用和推广提供了一个良好的开放平台。 关键词:Actel FPGA; SPWM; DDS; Verilog HDL

中图分类号:TP273 文献标识码 :B 文章编号 :

SPWM Entire Digital Algorithm FPGA Realization Based on Verilog HDL

DING Dian-kuan, LIANG Jian-jun, WANG Wen-qi, YANG Rong-jie

(Department of Electrical & Electronics Information Engineering,Anyang Normal University,anyang 455002,China) Abstract: On the basis of explaining the SPWM algorithm, this paper combines DDS technology and puts Actel FPGA as the controlling core,through natural sampling method compare a triangular carrier with 3 for the 120° phase of the sine wave, using Verilog HDL language to implement adjustable cross-over time of all-digital algorithmic SPWM, and achieve entire digital algorithm SPWM on development board of Fushion StartKit.broad. Through the logic analyzer and digital storage oscilloscope has been verified, the application of technology to further promote and provide a good platform for open.

Key words: Actel FPGA;sinusoidal pulse-width modulation;direct digita frequency synthests;Verilog HDL

0 概述

随着信号处理技术及集成电路制造工艺的不断发展,全数字化SPWM(正弦脉宽调制)算法在调速领域越来越受到青睐。实现SPWM控制算法的方法很多,其中模拟比较法因电路复杂,且不易与数字系统连接而很少采样;传统的微处理器因不能满足电机控制要求较高的采样频率(≥1 kHz)而逐渐被高性能的DSP硬件系统所取代,但该系统成本高,设计复杂。与传统方法相比,在现场可编程逻辑器件FPGA上产生一种新的SPWM控制算法,具有成本低、研发周期短、执行速度高、可扩展能力强等优点。该技术进一步推动了变频调速技术的发展。

本文结合SPWM算法及FPGA的特点,以Actel FPGA作为控制核心,用Verilog HDL语言实现了可 编程死区延时的三相六路SPWM全数字波形,并在 Fushion StartKit开发板上实现了各功能模块,通过逻辑分析仪和数字存储示波器验证了SPWM波形及死区时间,为该技术进一步应用和推广提供了一个平台。

的Flash FPGA数字技术和模拟技术,融合了FPGA数字内核、ADC、Flash存储器、模拟的IO、RTC等数字和模拟部分。Fushion器件内部具有2Mbit到8Mbit不等的用户可用的Flash memory;30个通道、最高12位精度、最高600ksps采样率的ADC;片内100MHz的RC振荡器与PLL(锁相环)一起共同为FPGA提供时钟;Fushion内部40bits的RTC除支持典型的RTC应用外,还可以控制片内1.5V的电压调整器以实现低功耗的睡眠和唤醒模式。这些特点极大地提高了单芯片的功能,简化了整个系统设计,大幅度减少了电路板面积和系统的总成本。

Fushion系列AFS600内部含有用户使用的容量4Mbit的Flash memory存储器,内部存储器模块以Flash memory Block(FB)形式划分,每个FB限制为2Mbit的空间,用户可以单独使用每个FB块,也可以自行用逻辑来级联所有的FB块以构建大容量的Flash存储器。Flash memory读操作可以从FB阵列、页面缓冲区或状态寄存器中读取数据。

2数字系统电路总体设计方案

2.1 SPWM算法原理

[3]

1 Actel Fushion器件介绍

[1-2]

Actel Fushion系列器件是世界上第一款也是唯一一款具有模拟功能的Flash架构FPGA,结合先进

正弦脉宽调制技术(SPWM)是调制波为正弦波、载波为三角波或锯齿波的一种脉宽调制法,是现代变频调速系统中应用最为广泛的脉宽调制方式。

第 1 页

目前有自然采样法、规则采样法、等面积法等方法,其中规则采样法计算简单,但谐波含量较大;一种改进的等面积法谐波含量低,但计算复杂;不利于系统实现,而自然采样法是在正弦波和三角波的自然交点时刻控制功率开关器件的通断,是最理想的采样方法。

本文采用等腰三角波和三路相差120的正弦波比较生成SPWM波,在Fushion StartKit开发板上采用自然采样法,结合数字频率合成技术DDS,生成死区延时可调的SPWM全数字波形。 2.2数字系统电路总体方案设计[4-7]

Verilog HDL代码编写具有很好的易读性和可重用性,结合Verilog HDL硬件描述语言设计规范及SPWM工作机理,用自顶向下的分割方法对整个系统进行总体方案设计。首先从系统设计入手,在顶

复位 Flashmemory模块 正 弦 函 数 表 系统时钟 输入 48MHz PLL模块 三角波发生器 地址选择器 第二相地址加法 器 第三相地址加法 器 A相比较器 B相比较器 C相比较器 死A相上 区时A相下 延 死B相上 区时B相下 延 死C相上 区时C相下 延 0

第一相地址加 法 器

图1 顶层功能方框图

暂存器3 暂存器2 暂存器1 存储器A 存储器B 存储器C 率的正弦波,而且还可以给出不同初始相位的正弦

波,甚至可以给出各种任意波形。电路一般包括基准时钟、频率累加器、相位累加器、幅度/相位转换电路、D/A 转换器。在设计中,将要输出的波形数据(如正弦函数表)预先存在ROM(或RAM)单元中,然后在系统标准时钟频率下,按照一定的顺序从ROM(或RAM)单元中读出数据,再进行D/A转换,就可以得到一定频率的输出波形。本设计直接利用从Flash memory存储单元中读出的离散正弦函数值与生成的三角波进行比较,实现系统的全数字化要求。

3.2 三角波产生模块

本模块采用同步三角波调制方法,利用可逆计数器对输入时钟进行计数。计数器先执行加法,从0计数到255,再执行减法计数从255到0,从而形成三角载波,如此反复就可以得到峰峰值255连续的三角波形。输入时钟是系统时钟通过锁相环输出的1MHz的时钟。

3.3 建立正弦函数表

三角波的幅值范围在0~255,而正弦波的幅值在-1~+1之间,为了实现等幅值比较,将正弦波上移一个单位后,再将所有值同乘以128,即正弦波的幅值也在0~255之间了。即

m=128×(sin(x)+1) (1)

式(1)用C语言对此函数在一个周期(0~2π)内768个量化并且直接生成Flash memory初始化文件(.ahx)格式,再用SmartGen输入将Flash memory配置成常用的数据存储器,将预先生成的.ahx文件导入生成data Storage宏模块,就建立了正弦函数表。生成正弦函数表的流程图如图2所示。

3.4 三相正弦波产生和输出模块[9-10]

FPGA的Fushion芯片理论上可以实现任何方式的数学运算逻辑,但由于芯片的容量限制,并不是任何计算都能实现的。因此需事先将正弦函数离散并加载到FPGA的Flash memory中,在正弦调制波的离散过程中即可将一个周期完整的离散。因此,只对其中A相进行离散化处理,数据存储Flash memory中,每个数据分配1个地址。即可以利用计数器来产生取正弦波数据的地址,通过数字频率合成技术改变计数器的计数频率就可以改变正弦波的频率。这样即可先输出一路的正弦波,另外两路正弦波产生的方法与此类似,只不过,起始取数据的地址相差120,即分别从第256,512个数据开始取数。

为了在每个调制波周期查找正弦函数表以及分别与载波进行比较。在设计中采用时分复用技术,即依据三相关系,由一个地址计数器,通过基本量

0

层进行功能方框图的划分和结构设计。系统顶层功能方框图如图1所示。

从图1可以看出,该系统主要包括:三角波产生模块,建立正弦函数表,三相正弦波产生和输出模块,三角波与正弦波比较控制模块,死区时延控制输出模块,时钟输出控制模块等控制模块。根据顶层设计的思想,采用Verilog HDL语言分别实现各个模块的设计,最后把各个模块嵌入到顶层模块中,使各个模块有机的组成一个完整的整体。

3 系统模块的设计与实现

3.1 直接数字频率合成模块

直接数字频率合成(DDS,Direct Digital Frequency Synthests)是采用数字化技术,通过控制频率控制字直接产生所需的各种不同频率信号,突破了模拟频率合成法的原理,从“相位”的概念出发进行频率合成。这种合成方法不仅可以给出不同频

[8]

第 2 页

开始 初始化变量x、n、i、m 建立只写文件 i=0 i<=768? Y i=i+1 n=i,x=2^pi^n/N m=128^(sin(x)+1) 输出m,i 生成.ahx文件 结束 N

图2 正弦函数表的流程图

加1转移到另一地址计数器中,并且在跳转过程中,

这一地址计数器加1指向下一单元,来分时取出三相地址单元的内容。利用对正弦表寻址的高速度,使一个正弦表在不同时间段查询不同相的正弦波的幅值,以达到减少正弦表所占用的FPGA资源的目的。这样就大大减少了逻辑数目,仅增加了地址选择器和三个同步存储器,实现了正弦函数表的复用,在很大程度上节省了芯片的资源。

电路的具体实现:相位互差1200的三路地址数据并行输入,通过一个三选一的选择器进行选择,选择器的控制端接三进制的计数器。如计数器为0时,输出A相地址,取出A相正弦值。为1时,输出B相地址,取出B相正弦值。为2时,输出C相地址,取出C相正弦值。因此只要使输入的三相地址周期性变化,就可实现并行输入的三相地址数据在时间上形成了连续,也就实现了三相地址数据的合成。其存储单元功能框图如图3。这样就可以利用一个正弦表来得到三相的正弦值,达到减少正弦表占用FPGA资源的目的。

各相 sinA 时钟 分时地址地址 Flash memory sinB 计数器 正弦函数表 sinc 图3 存储单元功能框图

查表时每次只能输出一相的数据,所以每次产生的数据需利用寄存器先暂存一下。首先出来A相, 通过暂存器l存入到A相存储器。接着出来B相,利用暂存器2存入到B相存储器。最后是C相,利用暂存器3存入到C相存储器中。这样,三相正弦波数据都存储在各自的存储器中,这三个寄存器采用同步控制信号,当控制信号触发时候,这时同时输出三相的正弦波数据用于后面的比较。该部分用状态机

实现,其状态转换图如图4所示:

!取三B:取二rst rst|00100 C:路数据 路数据 !rst|00001 !rst|00010 !rst|01000 开始 D:等A:取一 待 路数据 E:输出三 !rst|00001 路数据 !rst|10000 图4 状态转换图 其部分程序代码如下:

case(state1)

A: //初始化状态

begin

ADDRES1<=addr1; //时分复用第一路地址 READ_EN<=1'b1; //读使能开 NEXT<=1'b1; //开启预读模式 if(addr1==18'd767) //生成地址 addr1<=18'd0;

else if (!BUSY) //如不忙状态开始读 begin

addr1<=addr1+18'd1; //地址自增 out0<=DATAOUT; //数据暂存 state1<=B; //取第二路数据地址 end end

B: //取第二路数据 begin

ADDRES1<=addr2; //时分复用第二路地址 READ_EN<=1'b1; NEXT<=1'b1;

if(addr2==18'd767) addr2<=18'd0; else if (!BUSY) begin

addr2<=addr2+18'd1; out1<=DATAOUT; state1<=C; end end

C: //取第三路数据

begin

ADDRES1<=addr3; //时分复用第三路地址 READ_EN<=1'b1; NEXT<=1'b1;

if(addr3==18'd767) addr3<=18'd0; else if (!BUSY) begin

addr3<=addr3+18'd1; out2<=DATAOUT; state1<=D; end end

D: //空操作状态

第 3 页

基于Verilog HDL的SPWM全数字算法的FPGA实现

基于VerilogHDL的SPWM全数字算法的FPGA实现丁电宽,梁建均,王文奇,杨荣杰(安阳师范学院电气电子信息工程系,安阳市455002)摘要本文在详细阐述正弦脉宽调制算法的基础上,结合DDS技术,以ActelFPGA作为控制核心,通过自然采样法比较1个三角载波和3个相位差为1200的正弦波,利用VerilogHDL语
推荐度:
点击下载文档文档为doc格式
1qrjp3s6yb3j4le875ot
领取福利

微信扫码领取福利

微信扫码分享