APP下载

基于FPGA的SPWM波两种实现方法及分析

2015-09-28陈晓雷全召韩雪琴

现代计算机 2015年33期
关键词:正弦波波形逻辑

陈晓雷,全召,韩雪琴

(郑州轻工业学院计算机与通信工程学院,郑州 450000)

基于FPGA的SPWM波两种实现方法及分析

陈晓雷,全召,韩雪琴

(郑州轻工业学院计算机与通信工程学院,郑州 450000)

0 引言

正弦波脉宽调制(SPWM)波在日常生活中有广泛的应用,通常使用单片机或者DSP芯片进行实现[1]。在设计数字电路生成SPWM波时,通常采用三角波与正弦波采样数据相比较的方法,它们之间值的大小决定了输出脉冲序列的宽度。通常,在数字电路中得到波形数据有两种方法。一种是设计逻辑电路模拟实际的波形方程,电路在时钟信号的驱动下实时生成波形对应的值;另一种方案是事先用MATLAB等工具生成所需要的波形文件,将其载入到存储单元中,然后通过查表方式获得所需数据[2]。这两种方法各有优劣。我们通过这两种方法分别设计三角波数据生成电路,进而与正弦波比较得到SPWM波。

本文采用FPGA来分别实现上述两种方法。与单片机和DSP相比,FPGA芯片既拥有可编程的灵活性,可动态设置输出SPWM的频率和精度,又具有硬件运行并行度高,速度快的优势,特别适合步进电机控制这种需要多路同时输出的情况[3-4]。

1 SPWM两种实现方式分析

1.1SPWM原理分析

为了生成SPWM波,我们通常将正弦波与三角载波相比较,它们的交点决定了SPWM波的脉冲输出。当正弦波的值大于三角波时,输出高电平,反之,输出低电平[5]。其中,正弦波与三角波的频率之比称为载波比。然而,要使用真正的正弦波进行比较,需要使用模拟电路或专门的DSP芯片,设计难度较大[6]。实际往往使用采样过的正弦波,即正弦阶梯波来代替,如图1所示。从图中可以看出,正弦波的采样频率越高,采样后的阶梯波就越接近实际的正弦波,它与三角波的交点也就越接近实际正弦波与三角波的交点,生成的SPWM波精度也就越高[7]。

从这里可以看出,如何在电路中生成波形数据是设计SPWM电路的关键。下面以三角波为例探讨两种实现方式的不同。

1.2逻辑法生成三角波

逻辑法生成三角波,就是设计逻辑电路来模拟三角波的函数公式,对地址数据进行逻辑运算,将地址转换为对应的三角波数据。简便起见,我们以位宽为3bits、采样深度为8的三角波生成过程为例说明其计算原理,选取三角波上升边斜率为2,下降边斜率为-2。为与正弦波数据格式保持一致,负值采用二进制补码的形式保存。在一个周期内,三角波的数据和地址对应关系如表1所示。

图1 生成SPWM波原理示意图

表1 位宽3bits、深度为8的三角波数据对应表

结合三角波变化规律可知,当地址addr<4时,斜率为2,相当于将地址左移一位。同时注意到数据最低位为0,将地址左移一位后,在最低位补0,与数据补码比较,最高位相反;当地址 addr>4时,斜率为-2,相当于将地址取反后左移一位。同时注意到数据最低位为1,将地址取反后左移一位,在最低位补1,与数据补码比较,最高位取反。

当我们需要其他采样精度或斜率的三角波数据时,需要按照上述过程重新推导,建立地址与数据间的逻辑公式,因而十分不便。另外,这种方式仅适用于一维线性方程的实现,对于二次及以上的波形,基本上无法通过观察来找出地址和数据间的逻辑关系,因此这种方式应用范围有限。

1.3查表法生成三角波

使用查表的方法生成三角波,只需要将预先生成的三角波数据,放入FPGA的片内存储单元中,地址到数据的转换过程,被简化为内存查表操作,避免了第一种方法所需要的布尔运算推演,大大降低了设计难度。另外,对于复杂一点的波形,它们的地址和数据之间往往不是简单的逻辑关系,因而不能通过动态计算的方式来实现[8]。例如本文中的正弦波发生电路,就只能通过这种ROM载入查表的方式来实现,而无法通过第一种方式实现。我们使用MATLAB生成三角波数据,代码如下所示:

其中,tri_data即为所需要的三角波数据如图2所示。将上述代码生成的数据载入到FPGA中,只需简单的查表电路即可生成三角波[9]。

图2 MATLAB生成三角波数据

1.4生成正弦波数据

如前所述,逻辑法只能用来生成三角波或阶梯波这种最基本的波形。对于像正弦波这样稍微复杂的波形,基本上无法用逻辑法来生成,而只能通过MATLAB事先生成波形数据,采用查表法实现,生成的正弦波如图3所示。

2 硬件电路实现

我们在实际实现时,使用MATLAB生成位宽为10bits、采样频率为1024的正弦阶梯波数据。而三角波使用前述的两种方式分别实现。

2.1电路原理图

电路原理框图如图4所示,我们分别对三角波和正弦波的数据输出电路施加不同的驱动时钟,两个时钟的频率之比即为载波比。对输出的两个波形数据进行比较,从而得到SPWM输出。

图3 MATLAB生成正弦波数据

图4 生成SPWM波电路原理框图

如前所述,正弦波发生电路所需的采样数据可由MATLAB生成,以内存初始化文件MIF格式存放,并由FPGA上电时载入。而三角波的数据既可由MATLAB用相似方法生成,也可设计电路在运行时动态计算产生。下面对三角波发生电路这两种实现方法分别进行分析和对比。

2.2逻辑法实现SPWM

本文采用的三角波数据宽度为10bits,深度为1024,结合上面的分析进行扩展,可得到逻辑法生成三角波数据的Verilog代码如下:

其中,addr为输入地址,data为生成的输出数据。使用Quartus II对设计进行综合,结果如图5所示。

图5 逻辑法电路设计综合结果

使用STP工具对电路的三角波、正弦波和生成的SPWM进行数据采样,结果如图6所示。

图6 逻辑法电路的STP采样结果

2.3查表法实现SPWM

使用查表法时,三角波数据和正弦波数据均由MATLAB生成,然后载入到FPGA中。原理图中所示的三角波和正弦波发生电路为简单的内存访问电路,通过访存操作实现地址到数据的转换。使用MATLAB模拟这一过程,如图7所示。

图7 MATLAB模拟SPWM波生成过程

使用Quartus II对上述设计进行综合,结果如图8所示。

图8 查表法电路设计综合结果

使用STP工具对电路的三角波、正弦波和生成的SPWM进行数据采样,结果如图9所示。

图9 查表法电路的STP采样结果

2.4两种设计方法对比

从STP的采样结果可以看出,两种电路生成的三角波并无区别,最终都能得到所需的SPWM波,电路功能相同。对比图5和图8的综合结果,在“Total memory bits”那一栏,后一种设计方式比前一种多占用了10240bits的片内存储单元,这恰好是ROM存储三角波数据所需的空间(数据位宽x采样深度)。两种设计方法的各有优缺点,使用逻辑法时所用的逻辑单元更少,但设计过程更加复杂;使用查表法设计简单,但需要额外的存储单元来载入预先生成的数据。

3 实际测试结果及结论

我们将上述两种设计综合后下载到EP2C70芯片上,用示波器测量它们的输出,如图10所示。

图10 输入频率为2KHz时SPWM波

降低输入的时钟频率,可以观察到示波器上出现明显的正弦波轮廓,如图11所示。若想得到更加精确的正弦波,需要对输出进一步进行低通滤波处理。

图11 输入频率为500Hz时SPWM波

实际结果表明,两种方式都能正确生成需要的SPWM波。相较而言,逻辑法设计更为复杂,只能用来生成较为简单的波形,像本文中所需要的正弦波数据就不能使用该种方法生成;查表法实现方式避免了复杂的逻辑分析,简化了电路的设计,应用更加广阔,因而更加实用。

[1]魏文秀.基于单片机的正弦波输出逆变电源的设计及应用[J].自动化应用,2015,02:3-4.

[2]刘彬彬,林伟.基于MATLAB和FPGA的CIC滤波器的设计[J].电子器件,2010,02:231-234.

[3]孙宏兵,王宝忠.基于FPGA的逆变电源设计[J].常州信息职业技术学院学报,2014,06:16-19.

[4]吕娣.基于单片机生成SPWM信号控制电机实现变频调速的设计[J].电脑知识与技术,2014,34:8320-8321.

[5]张成,王心坚,衣鹏,孙泽昌.SVPWM与SPWM比较仿真研究[J].机械与电子,2013,01:3-7.

[6]逄海萍,费洪伟.DSP基于模型设计的单极性倍频SPWM波形生成[J].微电机,2015,08:83-86+90.

[7]范云飞,任小洪,袁文林,黄勇.微元法生成SPWM的算法研究与实现[J].软件导刊,2015,05:62-64.

[8]刘必旺,王宝忠.基于FPGA控制的开关电源的仿真与设计[J].科学技术与工程,2012,31:8281-8286.

[9]丁卫东,郭前岗,周西峰.一种基于FPGA的SPWM波的实时生成方法[J].计算机技术与发展,2011,02:211-214.

FPGA;SPWM;MATLAB

The Two Implements and Analysis of SPWM Based on FPGA

CHEN Xiao-lei,QUAN Zhao,HAN Xue-qin
(School of Computer and Communication Engineering,Zhengzhou University of Light Industry,Zhengzhou 450000)

河南省科技攻关计划项目(No.142102210080)、国家自然基金项目(No.61272038)

1007-1423(2015)33-0042-05

10.3969/j.issn.1007-1423.2015.33.012

陈晓雷(1964-),男,河南郑州人,硕士,教授,研究方向为嵌入式系统及应用

全召(1988-),男,河南南阳人,在读硕士研究生,研究方向为嵌入式系统研究方向

韩雪琴(1969-),女,河南郑州人,副教授,硕士,研究方向为嵌入式系统应用开发

2015-10-20

2015-11-05

在数字电路设计中,要生成SPWM波通常需要三角波和正弦波的波形数据。它们可由两种方式得到,一种由逻辑器件模拟实际的波形变化关系来实时生成,另一种是将已有的数据文件载入到存储器件中通过查表获取。对这两种生成波形的方式分别进行分析讨论,比较它们各自的优缺点,并在FPGA上实现验证。

FPGA;正弦波脉宽调制;MATLAB

In the design of digital circuit,we always need the data of sinusoidal and triangle waves to generate SPWM.The data can be obtained in two different ways,either by using the logic components to simulate the functions of real waves,or storing the existing data file to storage units and getting them lately by looking up it.Analyses and discusses these two methods,compares the pros and cons,and realizes them on FPGA respectively.

猜你喜欢

正弦波波形逻辑
刑事印证证明准确达成的逻辑反思
逻辑
单相正弦波变频电源设计与实现
创新的逻辑
基于Halbach阵列磁钢的PMSM气隙磁密波形优化
采用BC5016S的纯正弦波逆变器设计及制作
用于SAR与通信一体化系统的滤波器组多载波波形
女人买买买的神逻辑
基于STM32的风力摆控制系统的设计
基于ARM的任意波形电源设计