陳曉雷,全召,韓雪琴
(鄭州輕工業(yè)學(xué)院計(jì)算機(jī)與通信工程學(xué)院,鄭州 450000)
基于FPGA的SPWM波兩種實(shí)現(xiàn)方法及分析
陳曉雷,全召,韓雪琴
(鄭州輕工業(yè)學(xué)院計(jì)算機(jī)與通信工程學(xué)院,鄭州 450000)
正弦波脈寬調(diào)制(SPWM)波在日常生活中有廣泛的應(yīng)用,通常使用單片機(jī)或者DSP芯片進(jìn)行實(shí)現(xiàn)[1]。在設(shè)計(jì)數(shù)字電路生成SPWM波時(shí),通常采用三角波與正弦波采樣數(shù)據(jù)相比較的方法,它們之間值的大小決定了輸出脈沖序列的寬度。通常,在數(shù)字電路中得到波形數(shù)據(jù)有兩種方法。一種是設(shè)計(jì)邏輯電路模擬實(shí)際的波形方程,電路在時(shí)鐘信號(hào)的驅(qū)動(dòng)下實(shí)時(shí)生成波形對(duì)應(yīng)的值;另一種方案是事先用MATLAB等工具生成所需要的波形文件,將其載入到存儲(chǔ)單元中,然后通過(guò)查表方式獲得所需數(shù)據(jù)[2]。這兩種方法各有優(yōu)劣。我們通過(guò)這兩種方法分別設(shè)計(jì)三角波數(shù)據(jù)生成電路,進(jìn)而與正弦波比較得到SPWM波。
本文采用FPGA來(lái)分別實(shí)現(xiàn)上述兩種方法。與單片機(jī)和DSP相比,F(xiàn)PGA芯片既擁有可編程的靈活性,可動(dòng)態(tài)設(shè)置輸出SPWM的頻率和精度,又具有硬件運(yùn)行并行度高,速度快的優(yōu)勢(shì),特別適合步進(jìn)電機(jī)控制這種需要多路同時(shí)輸出的情況[3-4]。
1.1SPWM原理分析
為了生成SPWM波,我們通常將正弦波與三角載波相比較,它們的交點(diǎn)決定了SPWM波的脈沖輸出。當(dāng)正弦波的值大于三角波時(shí),輸出高電平,反之,輸出低電平[5]。其中,正弦波與三角波的頻率之比稱(chēng)為載波比。然而,要使用真正的正弦波進(jìn)行比較,需要使用模擬電路或?qū)iT(mén)的DSP芯片,設(shè)計(jì)難度較大[6]。實(shí)際往往使用采樣過(guò)的正弦波,即正弦階梯波來(lái)代替,如圖1所示。從圖中可以看出,正弦波的采樣頻率越高,采樣后的階梯波就越接近實(shí)際的正弦波,它與三角波的交點(diǎn)也就越接近實(shí)際正弦波與三角波的交點(diǎn),生成的SPWM波精度也就越高[7]。
從這里可以看出,如何在電路中生成波形數(shù)據(jù)是設(shè)計(jì)SPWM電路的關(guān)鍵。下面以三角波為例探討兩種實(shí)現(xiàn)方式的不同。
1.2邏輯法生成三角波
邏輯法生成三角波,就是設(shè)計(jì)邏輯電路來(lái)模擬三角波的函數(shù)公式,對(duì)地址數(shù)據(jù)進(jìn)行邏輯運(yùn)算,將地址轉(zhuǎn)換為對(duì)應(yīng)的三角波數(shù)據(jù)。簡(jiǎn)便起見(jiàn),我們以位寬為3bits、采樣深度為8的三角波生成過(guò)程為例說(shuō)明其計(jì)算原理,選取三角波上升邊斜率為2,下降邊斜率為-2。為與正弦波數(shù)據(jù)格式保持一致,負(fù)值采用二進(jìn)制補(bǔ)碼的形式保存。在一個(gè)周期內(nèi),三角波的數(shù)據(jù)和地址對(duì)應(yīng)關(guān)系如表1所示。
圖1 生成SPWM波原理示意圖
表1 位寬3bits、深度為8的三角波數(shù)據(jù)對(duì)應(yīng)表
結(jié)合三角波變化規(guī)律可知,當(dāng)?shù)刂穉ddr<4時(shí),斜率為2,相當(dāng)于將地址左移一位。同時(shí)注意到數(shù)據(jù)最低位為0,將地址左移一位后,在最低位補(bǔ)0,與數(shù)據(jù)補(bǔ)碼比較,最高位相反;當(dāng)?shù)刂?addr>4時(shí),斜率為-2,相當(dāng)于將地址取反后左移一位。同時(shí)注意到數(shù)據(jù)最低位為1,將地址取反后左移一位,在最低位補(bǔ)1,與數(shù)據(jù)補(bǔ)碼比較,最高位取反。
當(dāng)我們需要其他采樣精度或斜率的三角波數(shù)據(jù)時(shí),需要按照上述過(guò)程重新推導(dǎo),建立地址與數(shù)據(jù)間的邏輯公式,因而十分不便。另外,這種方式僅適用于一維線(xiàn)性方程的實(shí)現(xiàn),對(duì)于二次及以上的波形,基本上無(wú)法通過(guò)觀察來(lái)找出地址和數(shù)據(jù)間的邏輯關(guān)系,因此這種方式應(yīng)用范圍有限。
1.3查表法生成三角波
使用查表的方法生成三角波,只需要將預(yù)先生成的三角波數(shù)據(jù),放入FPGA的片內(nèi)存儲(chǔ)單元中,地址到數(shù)據(jù)的轉(zhuǎn)換過(guò)程,被簡(jiǎn)化為內(nèi)存查表操作,避免了第一種方法所需要的布爾運(yùn)算推演,大大降低了設(shè)計(jì)難度。另外,對(duì)于復(fù)雜一點(diǎn)的波形,它們的地址和數(shù)據(jù)之間往往不是簡(jiǎn)單的邏輯關(guān)系,因而不能通過(guò)動(dòng)態(tài)計(jì)算的方式來(lái)實(shí)現(xiàn)[8]。例如本文中的正弦波發(fā)生電路,就只能通過(guò)這種ROM載入查表的方式來(lái)實(shí)現(xiàn),而無(wú)法通過(guò)第一種方式實(shí)現(xiàn)。我們使用MATLAB生成三角波數(shù)據(jù),代碼如下所示:
其中,tri_data即為所需要的三角波數(shù)據(jù)如圖2所示。將上述代碼生成的數(shù)據(jù)載入到FPGA中,只需簡(jiǎn)單的查表電路即可生成三角波[9]。
圖2 MATLAB生成三角波數(shù)據(jù)
1.4生成正弦波數(shù)據(jù)
如前所述,邏輯法只能用來(lái)生成三角波或階梯波這種最基本的波形。對(duì)于像正弦波這樣稍微復(fù)雜的波形,基本上無(wú)法用邏輯法來(lái)生成,而只能通過(guò)MATLAB事先生成波形數(shù)據(jù),采用查表法實(shí)現(xiàn),生成的正弦波如圖3所示。
我們?cè)趯?shí)際實(shí)現(xiàn)時(shí),使用MATLAB生成位寬為10bits、采樣頻率為1024的正弦階梯波數(shù)據(jù)。而三角波使用前述的兩種方式分別實(shí)現(xiàn)。
2.1電路原理圖
電路原理框圖如圖4所示,我們分別對(duì)三角波和正弦波的數(shù)據(jù)輸出電路施加不同的驅(qū)動(dòng)時(shí)鐘,兩個(gè)時(shí)鐘的頻率之比即為載波比。對(duì)輸出的兩個(gè)波形數(shù)據(jù)進(jìn)行比較,從而得到SPWM輸出。
圖3 MATLAB生成正弦波數(shù)據(jù)
圖4 生成SPWM波電路原理框圖
如前所述,正弦波發(fā)生電路所需的采樣數(shù)據(jù)可由MATLAB生成,以?xún)?nèi)存初始化文件MIF格式存放,并由FPGA上電時(shí)載入。而三角波的數(shù)據(jù)既可由MATLAB用相似方法生成,也可設(shè)計(jì)電路在運(yùn)行時(shí)動(dòng)態(tài)計(jì)算產(chǎn)生。下面對(duì)三角波發(fā)生電路這兩種實(shí)現(xiàn)方法分別進(jìn)行分析和對(duì)比。
2.2邏輯法實(shí)現(xiàn)SPWM
本文采用的三角波數(shù)據(jù)寬度為10bits,深度為1024,結(jié)合上面的分析進(jìn)行擴(kuò)展,可得到邏輯法生成三角波數(shù)據(jù)的Verilog代碼如下:
其中,addr為輸入地址,data為生成的輸出數(shù)據(jù)。使用Quartus II對(duì)設(shè)計(jì)進(jìn)行綜合,結(jié)果如圖5所示。
圖5 邏輯法電路設(shè)計(jì)綜合結(jié)果
使用STP工具對(duì)電路的三角波、正弦波和生成的SPWM進(jìn)行數(shù)據(jù)采樣,結(jié)果如圖6所示。
圖6 邏輯法電路的STP采樣結(jié)果
2.3查表法實(shí)現(xiàn)SPWM
使用查表法時(shí),三角波數(shù)據(jù)和正弦波數(shù)據(jù)均由MATLAB生成,然后載入到FPGA中。原理圖中所示的三角波和正弦波發(fā)生電路為簡(jiǎn)單的內(nèi)存訪(fǎng)問(wèn)電路,通過(guò)訪(fǎng)存操作實(shí)現(xiàn)地址到數(shù)據(jù)的轉(zhuǎn)換。使用MATLAB模擬這一過(guò)程,如圖7所示。
圖7 MATLAB模擬SPWM波生成過(guò)程
使用Quartus II對(duì)上述設(shè)計(jì)進(jìn)行綜合,結(jié)果如圖8所示。
圖8 查表法電路設(shè)計(jì)綜合結(jié)果
使用STP工具對(duì)電路的三角波、正弦波和生成的SPWM進(jìn)行數(shù)據(jù)采樣,結(jié)果如圖9所示。
圖9 查表法電路的STP采樣結(jié)果
2.4兩種設(shè)計(jì)方法對(duì)比
從STP的采樣結(jié)果可以看出,兩種電路生成的三角波并無(wú)區(qū)別,最終都能得到所需的SPWM波,電路功能相同。對(duì)比圖5和圖8的綜合結(jié)果,在“Total memory bits”那一欄,后一種設(shè)計(jì)方式比前一種多占用了10240bits的片內(nèi)存儲(chǔ)單元,這恰好是ROM存儲(chǔ)三角波數(shù)據(jù)所需的空間(數(shù)據(jù)位寬x采樣深度)。兩種設(shè)計(jì)方法的各有優(yōu)缺點(diǎn),使用邏輯法時(shí)所用的邏輯單元更少,但設(shè)計(jì)過(guò)程更加復(fù)雜;使用查表法設(shè)計(jì)簡(jiǎn)單,但需要額外的存儲(chǔ)單元來(lái)載入預(yù)先生成的數(shù)據(jù)。
我們將上述兩種設(shè)計(jì)綜合后下載到EP2C70芯片上,用示波器測(cè)量它們的輸出,如圖10所示。
圖10 輸入頻率為2KHz時(shí)SPWM波
降低輸入的時(shí)鐘頻率,可以觀察到示波器上出現(xiàn)明顯的正弦波輪廓,如圖11所示。若想得到更加精確的正弦波,需要對(duì)輸出進(jìn)一步進(jìn)行低通濾波處理。
圖11 輸入頻率為500Hz時(shí)SPWM波
實(shí)際結(jié)果表明,兩種方式都能正確生成需要的SPWM波。相較而言,邏輯法設(shè)計(jì)更為復(fù)雜,只能用來(lái)生成較為簡(jiǎn)單的波形,像本文中所需要的正弦波數(shù)據(jù)就不能使用該種方法生成;查表法實(shí)現(xiàn)方式避免了復(fù)雜的邏輯分析,簡(jiǎn)化了電路的設(shè)計(jì),應(yīng)用更加廣闊,因而更加實(shí)用。
[1]魏文秀.基于單片機(jī)的正弦波輸出逆變電源的設(shè)計(jì)及應(yīng)用[J].自動(dòng)化應(yīng)用,2015,02:3-4.
[2]劉彬彬,林偉.基于MATLAB和FPGA的CIC濾波器的設(shè)計(jì)[J].電子器件,2010,02:231-234.
[3]孫宏兵,王寶忠.基于FPGA的逆變電源設(shè)計(jì)[J].常州信息職業(yè)技術(shù)學(xué)院學(xué)報(bào),2014,06:16-19.
[4]呂娣.基于單片機(jī)生成SPWM信號(hào)控制電機(jī)實(shí)現(xiàn)變頻調(diào)速的設(shè)計(jì)[J].電腦知識(shí)與技術(shù),2014,34:8320-8321.
[5]張成,王心堅(jiān),衣鵬,孫澤昌.SVPWM與SPWM比較仿真研究[J].機(jī)械與電子,2013,01:3-7.
[6]逄海萍,費(fèi)洪偉.DSP基于模型設(shè)計(jì)的單極性倍頻SPWM波形生成[J].微電機(jī),2015,08:83-86+90.
[7]范云飛,任小洪,袁文林,黃勇.微元法生成SPWM的算法研究與實(shí)現(xiàn)[J].軟件導(dǎo)刊,2015,05:62-64.
[8]劉必旺,王寶忠.基于FPGA控制的開(kāi)關(guān)電源的仿真與設(shè)計(jì)[J].科學(xué)技術(shù)與工程,2012,31:8281-8286.
[9]丁衛(wèi)東,郭前崗,周西峰.一種基于FPGA的SPWM波的實(shí)時(shí)生成方法[J].計(jì)算機(jī)技術(shù)與發(fā)展,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)
河南省科技攻關(guān)計(jì)劃項(xiàng)目(No.142102210080)、國(guó)家自然基金項(xiàng)目(No.61272038)
1007-1423(2015)33-0042-05
10.3969/j.issn.1007-1423.2015.33.012
陳曉雷(1964-),男,河南鄭州人,碩士,教授,研究方向?yàn)榍度胧较到y(tǒng)及應(yīng)用
全召(1988-),男,河南南陽(yáng)人,在讀碩士研究生,研究方向?yàn)榍度胧较到y(tǒng)研究方向
韓雪琴(1969-),女,河南鄭州人,副教授,碩士,研究方向?yàn)榍度胧较到y(tǒng)應(yīng)用開(kāi)發(fā)
2015-10-20
2015-11-05
在數(shù)字電路設(shè)計(jì)中,要生成SPWM波通常需要三角波和正弦波的波形數(shù)據(jù)。它們可由兩種方式得到,一種由邏輯器件模擬實(shí)際的波形變化關(guān)系來(lái)實(shí)時(shí)生成,另一種是將已有的數(shù)據(jù)文件載入到存儲(chǔ)器件中通過(guò)查表獲取。對(duì)這兩種生成波形的方式分別進(jìn)行分析討論,比較它們各自的優(yōu)缺點(diǎn),并在FPGA上實(shí)現(xiàn)驗(yàn)證。
FPGA;正弦波脈寬調(diào)制;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.