三項6路互補PWM波輸出_第1頁
三項6路互補PWM波輸出_第2頁
三項6路互補PWM波輸出_第3頁
三項6路互補PWM波輸出_第4頁
三項6路互補PWM波輸出_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

安徽工業(yè)大學實驗報告課程名稱: 硬件描述語言與系統(tǒng)仿真課題名稱:通用PWMIP核模塊學院: 電氣學院 專業(yè): 電氣工程(專碩) 姓名: 丁凱 學號: 20120278 指導教師:武衛(wèi)華2013.1.10摘要利用QuartusII6.0軟件,在其特定的VHDL語言運行的環(huán)境下,設計出了一個通用的三相6路互補輸出的PWM波IP核模塊。其中每項PWM波帶死區(qū),頻率從5k變換到10k,占空比從0.1?0.9可調,這些都可由用戶設置。本文用軟件方法實現(xiàn)死區(qū)可控,通過改變調制波的值來實現(xiàn)占空比調節(jié),并采用DDS技術設計一個自加模塊對三角波ROM尋址來實現(xiàn)頻率可控。在設計的過程中運用了分頻器模塊,三角波和比較器模塊,在實際的實驗仿真中得出所需要的信號發(fā)生模塊,是的進一步對VHDL語言的理解與應用在電力電子上,對軟件QuartusII6.0軟件更進一步了解。關鍵詞:PWM波分頻模塊比較器DDS技術1、 引言隨著FPGA(FieldProgrammableGateArray)和EDA(ElectronicDesignAutomation)技術的發(fā)展。一些研究者紛紛采用可編程邏輯器件構建多路PWM發(fā)生器來簡化電力電子核心數(shù)字電路,提高系統(tǒng)的可靠性,但是所有這些設計均根據(jù)主電路特定的應用場合定制,因而缺乏通用性和靈活性。由于三項PWM波有緊密的相關性,本文設計了統(tǒng)一的時鐘頻率,對每一對PWM波的開關頻率、死去時間、占空比實行同時同頻控制。這大大減少了該小核的模塊,并非常易于實現(xiàn)PWM信號的同步。這樣的設計也簡化了用戶使用時的參數(shù)設置。通用PWMIP核是針對一般電力電子應用場合而設計,應具有較好的可設置性,如開關周期、死區(qū)時間、PWM模式以及功率保護等設置。2、 通用PWMIP核的構建2.1總體結構為了簡化說明,下面以單項PWM波的產生為例來說明三項PWM波發(fā)生器。單項PWM波產生主要包括如下圖(一)中的幾個模塊。硬件的時鐘脈沖經(jīng)分頻器分頻后作為系統(tǒng)的各個模塊的同一時基。DDS(DirectDigitalSynthesizer)即直接數(shù)字合成器,是一種新型的頻率合成技術。具有較高的頻率分辨率,可以實現(xiàn)快速頻率切換并且在改變時能夠保持相位的連續(xù)。本文的9

位自加器就是根據(jù)DDS原理來實現(xiàn)對三角波ROM進行循環(huán)尋址,從而得到頻率可調的三角波。將所得三角波與用戶輸入的一個數(shù)值在比較器中比較后得到一路占空比可控的PWM波。最后加一個死去產生模塊就能輸出兩路互補的死去可控的PWM波,分別標記為XH、XL。三項6路互補PWM波的產生,原理上與單項PWM波產生一樣,只不過在三角波ROM中分別錯開了120度角。加數(shù)*率控制字—20分頻器'兆加數(shù)*率控制字—20分頻器'兆*自加器 >三角波ROM死區(qū)挫制字常數(shù)二占空比控制字比較器FWM波死區(qū)控

制模塊XHXL2.2各個模塊的設計1、分頻器模塊:由于而本設計系統(tǒng)用的是1M的時鐘,并且三角波ROM中總共存了1000個值,根據(jù)公式f 1000m(M是頻率控制字),就可以實現(xiàn)步長為1K的頻率跳轉。而FPGA硬件用的是20M的時鐘脈沖,所以設計中加了一個20倍的分頻器。其模塊和代碼如下:Pclkfen_pinclkclkoutinst18Pclkfen_pinclkclkoutinst18--20倍的分頻器設計libraryieee;useieee.std_logic_1164.all;--20倍的分頻器設計libraryieee;useieee.std_logic_1164.all;signalnt:std_logic_vector(4downto0);signalcnt:std_logic;beginuseieee.std_logic_arith.all;Process(nt,clk)useieee.std_logic_unsigned.all;entityfen_pinISport(clk:instd_logic;useieee.std_logic_unsigned.all;entityfen_pinISport(clk:instd_logic;clkout:outstd_logic);endfen_pin;architecturertloffen_pinisbeginifclk'eventandclk='1'thenifnt=9thennt<="00000";--強制回零clkout<=cnt;cnt<=notcnt;--翻轉endprocess;endrtl;endprocess;endrtl;endif;endif;2、自加器模塊:首先對DDS原理進行簡單介紹,對于信號發(fā)生器而言,他的輸出可以用下式來描述:S=Asin①t=Asin(2丸ft) (1)其中,sout是指該信號發(fā)生器的輸出信號波形,fout指輸出信號對應的頻率。上式的表述對于時間是連續(xù)的,為了用數(shù)字邏輯實現(xiàn)該表達式,必須進行離散化處理,用基準時鐘clk進行抽樣,令正弦信號的相位。為0=2兀ft2兀f out在一個clk周期Tclk2兀f out(3)fclkA°=(3)fclk其中如指clk的頻率,對于2??梢岳斫獬伞皾M”相位,為了對A0進行數(shù)字量化,把2兀切個clk成N份,由此每個clk周期的相位增量^0用量化值氣0來表述:B/^.N,且B履為整數(shù)。與公式(3)聯(lián)立,可得BA0='out,B=N?'outNfA0fclk clk本文的自加器就是基于這樣一個原理,由外部輸入一個頻率控制字M,在自加器中以M為步長從零開始自加至超過1000后強制回零,從而在三角波ROM中循環(huán)尋址輸出不同頻率的三角波。三角波輸出頻率為:f=念m。其模塊和代碼如下:ADDftA/nrrirQHl | 、|?F_ADDftA/nrrirQHl | 、|?F_T」 : A[9..O] 3[9..O:B[9..O]elkirisFHLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYADDISPORT(A:INSTD_LOGIC_VECTOR(9

DOWNTO0);B:INSTD_LOGIC_VECTOR(9DOWNTO0);clk:INSTD_LOGIC;S:INOUTSTD_LOGIC_VECTOR(9

DOWNTO0));--10位自加法器模塊ARCHITECTUREbehavOFADDISBEGINPROCESS(clk)BEGINIFclk'eventandclk='1'thenIFS>="1111100111"THENS<="0000000000"; --強制回零ELSES<=A+B;ENDIF;ENDIF;ENDPROCESS;ENDADD; ENDbehav;3、三角波ROM:本設計中將三角波采了1000個計數(shù)點(便于頻率計算),存放在一個10位ROM中,為了盡可能精確,輸出采用8位二進制輸出形式。將所采的1000個值分別錯開120度排列存放在三個不同的ROM中實現(xiàn)了三角波的相位移動從而得到三項PWM波輸出。三個ROM表里的值如下圖所示:

AddrF+1+7T+4+5祁日0170169169168168167167166316616516516416416316316216162161161160160159159158241581571561561551551641643215315315215216115115015040149'149148148147147M614648145145144144143143142142561411411401401391391381386413713713613613513513413472133132132131131130130129301291281281271271261261268812512412412312312212212196121120120119'11911811811710411711611611511511411411311211311211211111111011010912010810810710710610G105105128104104103103102102101101136100100999998989797144969695969494939316292929191909089891608888878786868584168848383828281818017680797978781111761847675757474737372Addr+0+1+2Addr+0+1+2+3+5+6H017017017117117217217317381741741751751761761771771617817817917918018018118124182182183183184184185186321861871871881881891891904019019119119219219319319448194195195196196197197198561981991992002002012012026420220320320420420520520672206207207208209209210210802112112122122132132142148821521521621621721721821896219219220220221221222222104223223224224226226226226112227227228228229229230230120231232232233233234234235128235236236237237238238239136239240240241241242242243144243244244245245246246247152247248248249249260260251160251252252263263264255255168254253253252252251251250176250249249248248247247246184246245245244244243243242(一)初相為零三角波ROM部分值(二)初相為120°三角波ROM部分值(三)初相為240°三角波ROM部分值

4、占空比控制字模塊:由于三角波以8位二進制輸出,最大值為255。要實現(xiàn)占空比可控,就要不斷調節(jié)與三角波的比較常值大小。當比較值為230時,由230/255=0.9可知此時占空比為90%,比較值為204時,有204/255可知此時占空比為80%,以此類推。但是這樣輸入值使得用戶還要計算,很不方便。為了解決這個問題,我們把比較值裝入一個ROM,由外部尋址來調節(jié)占空比。當外部輸入值為9時,尋址找到ROM的230,即輸出波形占空比為90%;輸入8時,尋址找到204,即輸出波形占空比為80%,輸入7時,尋址找到178,即輸出波形為占空比70%,以此類推。占空比控制字模塊及ROM表如下:I7hwn_knng_hi-address[4..O]->clockii模塊Addr+0噸+3+4+5+7002551761021271531788204230占空比控制字的ROM表5、比較器模塊:產生三項三角波后,將每項三角波與占空比控制字在比較器中作比較。令8位占空比控制字為A,三角波為令8位占空比控制字為A,三角波為B,為高電平;當A<B為高電平;當A<B時,Y輸出低電平。這就得到了頻率和占空比都可控的PWM波。比較器模塊和代碼如下所示:比較器模塊及其連接圖比較器模塊及其連接圖--8位比較器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYcomp8_1ISPORT(A:INSTD_LOGIC_VECTOR(7DOWNTO0);B:INSTD_LOGIC_VECTOR(7DOWNTO0);Y:OUTSTD_LOGIC);ENDcomp8_1;ARCHITECTUREbehaveOFcomp8_1ISBEGINPROCESS(A,B)BEGINIF(A>=B)THEN<='0';ELSE<='1';ENDIF;ENDPROCESS;ENDbehave;6、死區(qū)產生模塊:本實驗的把產生死去放在最后一個模塊是出于以下幾個原因:1) 改變死區(qū)時不會影響前面模塊的參數(shù);2) 編程算法相對容易實現(xiàn);3) 所產生的死區(qū)更不容易上失真;下面以A相為例說明死去產生的原理,算法中使加計數(shù)和減計數(shù)交替執(zhí)行,計數(shù)周期由外部用戶輸入決定。死區(qū)計數(shù)采用飽和計數(shù),飽和計數(shù)的特性類似于電容的充放電過程,飽和溢出則回零,規(guī)則:(1) 當輸入為0時,如果計數(shù)值等于0,則計數(shù)值保持不變,否則作減1計數(shù);(2) 當輸入為1時,如果計數(shù)值等于max,則計數(shù)值保持不變,否則作加1計數(shù);(3) 當輸入為1且死區(qū)計數(shù)數(shù)值為max時,AL=0,AH=1;(4) 當輸入為0且死區(qū)計數(shù)數(shù)值為0時,AL=1,AH=0;(5) 當死區(qū)計數(shù)數(shù)值在0~max之間時,AL=0,AH=0,從而形成死區(qū)。其中,max就是用戶控制輸入的死區(qū)控制字,具體時序參見下圖。設置一個8位用戶控制死區(qū)時間,使得用戶有一個較寬的死區(qū)控制時間,但是所設定的死去時間不應超過輸出PWM波寬度的一半。以下是死區(qū)產生模塊及其代碼:死區(qū)產生的時序原理圖模塊圖死區(qū)產生的時序原理圖模塊圖--死區(qū)產生模塊LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;Entitydead_1isPort(AH,AL:outstd_logic;clk,Ax:instd_logic;Dead_time:instd_logic_vector(7downto0));Enddead_1;Architecturedeadofdead_1is

signalpA:std_logic_vector(7downto0);BeginProcess(clk)BeginIf(clk'EVENTandclk='1')thenIf((Ax=T)and(pA/=dead_time))thenpA<=pA+1;Elsif((Ax='0')and(pA/="00000000"))then

pA<=pA-1;Endif;If((Ax=T)and(pA=dead_time))thenAL<='1';ElseAL<='0';Endif;If((Ax='0')and(pA="00000000"))thenAH<='1';ElseAH<='0';Endif;Endif;Endpro

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論