畢業(yè)設(shè)計(jì)(論文)-基于FPGA的電機(jī)控制_第1頁
畢業(yè)設(shè)計(jì)(論文)-基于FPGA的電機(jī)控制_第2頁
畢業(yè)設(shè)計(jì)(論文)-基于FPGA的電機(jī)控制_第3頁
畢業(yè)設(shè)計(jì)(論文)-基于FPGA的電機(jī)控制_第4頁
畢業(yè)設(shè)計(jì)(論文)-基于FPGA的電機(jī)控制_第5頁
已閱讀5頁,還剩56頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

畢業(yè)設(shè)計(jì)(論文)-基于FPGA的電機(jī)控制PAGEPAGE1基于FPGA的電機(jī)控制指導(dǎo)老師:設(shè)計(jì)了一個(gè)基于現(xiàn)場(chǎng)可編程門陣列(FPGA)的電機(jī)控制系統(tǒng)。簡(jiǎn)單介紹了步進(jìn)電機(jī)和直流電機(jī)的工作原理和工作特點(diǎn),并根據(jù)兩種電機(jī)的不同特性設(shè)計(jì)了基于FPGA的不同的控制電路:以改變頻率來控制步進(jìn)電機(jī)的轉(zhuǎn)速;調(diào)節(jié)脈沖的占空比大小改變輸出電壓的大小,從而達(dá)到控制直流電機(jī)的轉(zhuǎn)速的目的。關(guān)鍵字:FPGA步進(jìn)電機(jī)直流電機(jī)電機(jī)控制PWMDesignoftheMotor-ControlBasedonFPGAAbstract:theelectromotorcontrolsystemisdesignedbasedonFPGA.Thispapersimplyintroducestheprincipleandthecharacrersofcurrent-motorandstep-motor.Andwhat’smore,differentcontrolcircuitsbasedFPGAaredesignedaccorderingtothedifferentcharacteristicofcurrent-motorandstep-motor.Therotatespeedofstep-motoriscontrolledbychangingfrequency.Theoutput-voltagechangesaccorderingtotherateofimpulses,andsotheaimtocontroltherotateofcurrent-motorachieve.Keyword:step-motormotor-controlPWMFPGA目錄1.系統(tǒng)設(shè)計(jì)…………………31.1功能介紹…………………31.2電機(jī)控制簡(jiǎn)介……………31.2.1步進(jìn)電機(jī)的控制………31.2.2直流電機(jī)的控制………31.3總體設(shè)計(jì)方案………41.3.1總體設(shè)計(jì)思路…………41.3.2方案論證與比較…………………42.單元電路設(shè)計(jì)……………72.1.步進(jìn)電機(jī)驅(qū)動(dòng)電路……………72.2.直流電機(jī)驅(qū)動(dòng)電路……………………83.軟件設(shè)計(jì)……………………83.1實(shí)現(xiàn)方法……………………83.2程序流程圖………………94.系統(tǒng)測(cè)試……………………105.結(jié)論及參考文獻(xiàn)………105.1.結(jié)論:…………105.2.參考文獻(xiàn):……………………106.附控制轉(zhuǎn)子中電樞的電流的方向和大小,就可以控制直流電動(dòng)機(jī)的轉(zhuǎn)動(dòng)方向和轉(zhuǎn)動(dòng)速度。電樞電流為零時(shí)直流電機(jī)則停止不動(dòng)。1.系統(tǒng)設(shè)計(jì)1.1功能簡(jiǎn)介一、基本功能(1)步進(jìn)電機(jī)能夠在四相八拍工作方式下連續(xù)運(yùn)行。(2)能實(shí)現(xiàn)步進(jìn)電機(jī)正\反轉(zhuǎn)及速度變換。(3)能夠?qū)崿F(xiàn)直流電機(jī)的正反轉(zhuǎn)及速度調(diào)節(jié)(4)顯示電機(jī)工作狀態(tài)1.2電機(jī)控制簡(jiǎn)介1.2.1步進(jìn)電機(jī)的控制步進(jìn)電機(jī)能夠直接將數(shù)字脈沖信號(hào)轉(zhuǎn)化成為角位移,不需要A/D轉(zhuǎn)換,步進(jìn)電機(jī)的空載啟動(dòng)頻率一般較高,而運(yùn)行頻率相對(duì)來說較低,以超過空載頻率啟動(dòng)將出現(xiàn)失步甚至無法啟動(dòng)。為了保證控制速度的精確性,要從一個(gè)速度準(zhǔn)確達(dá)到另外一個(gè)速度,就要建立一個(gè)校驗(yàn)機(jī)制,以防超過或未達(dá)到所需速度.步進(jìn)電機(jī)的脈沖分配:步進(jìn)電機(jī)的脈沖分配是通過電機(jī)的通電換相來實(shí)現(xiàn)的。例如:四相步進(jìn)電機(jī)的八拍工作方式,當(dāng)電機(jī)正轉(zhuǎn)時(shí),其各相通電順序?yàn)锳-AB-B-BC-C-CD-D-DA-A,當(dāng)電機(jī)反轉(zhuǎn)時(shí),其各相通電相序?yàn)锳-AD-D-DC-C-CB-B-BA。步進(jìn)電機(jī)換向時(shí),一定要在電機(jī)降速停止或降到頻率較低時(shí)才換向,以免產(chǎn)生較大的沖擊而損壞電機(jī)。換向信號(hào)一定要在前一個(gè)方向的最后一個(gè)CP脈沖結(jié)束后以及下一個(gè)方向的第一個(gè)CP脈沖前發(fā)出。步進(jìn)電機(jī)的轉(zhuǎn)速控制:步進(jìn)電機(jī)的轉(zhuǎn)速控制實(shí)際上就是控制觸發(fā)脈沖的頻率。當(dāng)脈沖的頻率升高時(shí),電機(jī)轉(zhuǎn)速增加,當(dāng)脈沖的頻率降低時(shí),電機(jī)的轉(zhuǎn)速變慢。1.2.2直流電機(jī)具有很好的線性調(diào)速特性,簡(jiǎn)單的控制性能??刂浦绷麟妱?dòng)機(jī)的轉(zhuǎn)動(dòng)方向比較簡(jiǎn)單,只需使驅(qū)動(dòng)電路控制直流電源正接、反接,便可以達(dá)到對(duì)方向的控制。直流電機(jī)轉(zhuǎn)速n的表達(dá)式為式中U--電樞端電壓;I電樞電流;R--電樞電路總電阻;φ每極磁通量;K電機(jī)結(jié)構(gòu)參數(shù)。由式可得,直流電機(jī)的轉(zhuǎn)速控制方法可以分為兩類:一類是對(duì)勵(lì)磁通進(jìn)行控制的厲磁控制法即改變磁通ф,一類是對(duì)電樞電壓進(jìn)行控制的電樞控制法即改變電樞電壓U?,F(xiàn)在一般采用后面一種方法。1.3總體設(shè)計(jì)方案1.3.1用于控制的電機(jī)是廣州致遠(yuǎn)電子公司生產(chǎn)的電機(jī)實(shí)驗(yàn)儀:DP-51MOTOR(帶有驅(qū)動(dòng)電路,我們可以另外設(shè)計(jì)驅(qū)動(dòng)電路)。為了實(shí)現(xiàn)對(duì)電機(jī)的控制,我們沒有去做FPGA最小控制系統(tǒng),而是直接采用F廣州致遠(yuǎn)電子有限公FPGA實(shí)驗(yàn)儀:DP-FPGA。關(guān)鍵問題是如何產(chǎn)生對(duì)電機(jī)的控制信號(hào)。1.3.2一.控制部分的方案論證方案一、用邏輯電路實(shí)現(xiàn)。用定時(shí)芯片產(chǎn)生脈沖,用組合和時(shí)序電路實(shí)現(xiàn)對(duì)脈沖的分配及頻率的調(diào)節(jié)。整個(gè)電路用到的分立元件較多,電路構(gòu)成復(fù)雜,不易焊接,且電路的抗干擾能力較差。方案二:采用單片機(jī)作為核心控制部件。單片機(jī)設(shè)計(jì)控制電路省去了很多分立元器件。對(duì)于脈沖的產(chǎn)生及分配,頻率的調(diào)節(jié),轉(zhuǎn)速及狀態(tài)的改變都可以由單片機(jī)實(shí)現(xiàn),不必再分別用分立元器件實(shí)現(xiàn)。但是按照給定的通電換相順序,通過單片機(jī)的I/O向驅(qū)動(dòng)電路發(fā)出控制脈沖,在電機(jī)的運(yùn)行過程中要不停的產(chǎn)生控制脈沖,占用了大量的CPU時(shí)間,可能使單片機(jī)無法進(jìn)行其它工作。方案三、用FPGA作控制部件,F(xiàn)PGA控制外圍電路簡(jiǎn)單,整體性能好,有更好的穩(wěn)定性好。精度高,抗干擾能力強(qiáng)。顯然第三種方案具有更大的優(yōu)越性,靈活性,經(jīng)比較采用第三種方案。二.功率驅(qū)動(dòng)電路的方案論證為了便于控制,我們把步進(jìn)與直流電機(jī)的驅(qū)動(dòng)電路做在一塊PCB板子上。由于從FPGA的I/O中出來的電流較少,不足以驅(qū)動(dòng)電機(jī),或者能夠驅(qū)動(dòng)起來,但功率達(dá)不到要求。對(duì)于直流電機(jī)的驅(qū)動(dòng)方案,有一個(gè)非常精典的驅(qū)動(dòng)電路,不做過多論證。即采用由晶體管功率放大器8050和8550組成的H型PWM電路。用FPGA控制晶體管功率放大器使之工作在占空比可調(diào)的開關(guān)狀態(tài),精確調(diào)整電動(dòng)機(jī)的轉(zhuǎn)速,這種電路由于工作在管子的飽和截止模式下,效率非常高;H型電路保證了可以簡(jiǎn)單的實(shí)現(xiàn)轉(zhuǎn)速和方向的控制;電子開關(guān)速度很快,穩(wěn)定性也極強(qiáng),是一種廣泛應(yīng)用的PWM調(diào)速技術(shù)。下面就步進(jìn)電機(jī)的驅(qū)動(dòng)作如下論證。方案一:?jiǎn)坞妷候?qū)動(dòng)。單電壓驅(qū)動(dòng)是指電機(jī)在工作時(shí),只用一個(gè)電壓源對(duì)繞組供電。如下圖所示。步進(jìn)電機(jī)單電壓驅(qū)動(dòng)它的特點(diǎn)是電路最簡(jiǎn)單。電路中的限流電阻R1決定了時(shí)間常數(shù),但R1太大會(huì)使繞組供電電流減小??稍赗1兩端并聯(lián)一個(gè)電容C,這樣就可使電流的上升波形變陡,改善了高頻特性。該電路一般只適用于小功率步進(jìn)電機(jī)的驅(qū)動(dòng)。方案二:斬波恒流驅(qū)動(dòng)斬波驅(qū)動(dòng)原理圖T1是一個(gè)高頻開關(guān)管,T2開關(guān)管的發(fā)射極接一只小電阻R0。以上的驅(qū)動(dòng)過程表現(xiàn)為;T2每導(dǎo)通一次,T1導(dǎo)通多次,繞組的電流波形為:在T2導(dǎo)通的時(shí)間里,電源是脈沖式供電,提高了電源效率,并且能在效抑制共振。但是,由于電流波形為鋸齒形,將會(huì)產(chǎn)生較大的電磁噪聲。經(jīng)比較,單電壓驅(qū)動(dòng)電路簡(jiǎn)單,比較適合小功率驅(qū)動(dòng),正好適合本設(shè)計(jì)的要求。所以采用方案一。經(jīng)過上面的比較與論證,可以得出電機(jī)控制的總方框圖LED顯示LED顯示直流電機(jī)直流驅(qū)動(dòng)直流電機(jī)直流驅(qū)動(dòng)FPGA最小FPGA最小系統(tǒng)按鍵步進(jìn)驅(qū)動(dòng)步進(jìn)電機(jī)步進(jìn)驅(qū)動(dòng)步進(jìn)電機(jī)2.單元電路設(shè)計(jì)2.1.步進(jìn)電機(jī)驅(qū)動(dòng)電路步進(jìn)電機(jī)的驅(qū)動(dòng)電路如下圖所示,其驅(qū)動(dòng)電路原理為:從FPGA出來的脈沖信號(hào)按一定的順序分別接到晶體管Q3Q6的基極,四個(gè)8050的集電極分別有四個(gè)相應(yīng)的信號(hào)輸出,并接到電機(jī)的1、4、3、6腳,2、5腳接高電平。我們要求的電機(jī)的工作方式為四相八拍。正轉(zhuǎn)各相通電順序?yàn)锳-AB-B-BC-C-CD-D-DA-A,則只要依次通1110-1100-1101-1001-1011-0011-0111-0110-1110脈沖序列。反轉(zhuǎn)也可以此類推。則電機(jī)在脈沖序列信號(hào)的作用下按預(yù)定方向轉(zhuǎn)動(dòng),通過改變脈沖序列信號(hào)的快慢即頻率來控制步進(jìn)電機(jī)轉(zhuǎn)速。步進(jìn)電機(jī)驅(qū)動(dòng)原理圖2.2.直流電機(jī)驅(qū)動(dòng)電路直流電機(jī)驅(qū)動(dòng)原理圖P1為直流電機(jī)的選擇信號(hào),即直流電機(jī)的總控制信號(hào)。當(dāng)P1為高電平時(shí),就是讓直流電機(jī)處于工作狀態(tài)。當(dāng)P2輸入為低電平,P3輸入為高電平時(shí),晶體管功率放大器Q2、Q5導(dǎo)通,Q3、Q4截止。Q2、Q5與電機(jī)J10一起形成一個(gè)回路。從而驅(qū)動(dòng)電機(jī)正轉(zhuǎn)。當(dāng)P2輸入為高電平,P3輸入為低電平時(shí),晶體管功率放大器Q2、Q5截止,Q3、Q4導(dǎo)通,Q3、Q4與電機(jī)J10形成回路,驅(qū)動(dòng)電機(jī)反轉(zhuǎn)。從FPGA的I/O口中輸出的電壓只有3.3V,若功放管的基極直接與FPGA的I/O口相連,則控制電壓最高為3.3V,再加上晶體管本身的壓降,加到電動(dòng)機(jī)兩端的電壓就更少了,電動(dòng)機(jī)的驅(qū)動(dòng)力明顯不夠.。因此,我們運(yùn)用了TLP521-2光耦集成芯片,將控制部分與電機(jī)的驅(qū)動(dòng)部分隔離開來,這樣不僅增加了各系統(tǒng)模塊之間的隔離度,也使驅(qū)動(dòng)電流得到大大的加強(qiáng)。3.軟件設(shè)計(jì)3.1實(shí)現(xiàn)方法總控制模塊是采用VHDL語言在DP-FPGA實(shí)驗(yàn)板上編程。通過對(duì)各個(gè)按鍵的選擇來實(shí)現(xiàn)各種功能??偟目刂颇K就是一個(gè)對(duì)不同按鍵的響應(yīng)程序。共有復(fù)位RESET鍵,步進(jìn)與直流電機(jī)選擇SLECT鍵,正反選擇SHIFT鍵,速度選擇SPEED鍵四個(gè)按鍵3.2程序流程圖開始開始程序初始化程序初始化掃描按鍵掃描按鍵是否有鍵按下 N是否有鍵按下 Y按鍵處理程序按鍵處理程序直流電機(jī)控制進(jìn)程步進(jìn)電機(jī)控制進(jìn)程直流電機(jī)控制進(jìn)程步進(jìn)電機(jī)控制進(jìn)程直流驅(qū)動(dòng)模塊步進(jìn)驅(qū)動(dòng)模塊直流驅(qū)動(dòng)模塊步進(jìn)驅(qū)動(dòng)模塊LED顯示LED顯示步進(jìn)電機(jī)的轉(zhuǎn)速或者頻率直流電機(jī)步進(jìn)電機(jī)直流電機(jī)步進(jìn)電機(jī) 4.系統(tǒng)測(cè)試4.1.使用儀器:FPGA實(shí)驗(yàn)儀:DP-FPGA,廣州致遠(yuǎn)電子有限公司電機(jī)實(shí)驗(yàn)儀:DP-51MOTOR,廣州致遠(yuǎn)電子有限公司數(shù)字萬用表:UT101MULTIMETER金創(chuàng)電子儀器廠直流穩(wěn)壓電源:DCPOWERSUPPLYDF1731SL2A,ZhongCeElectronicsCO.,LTD5.結(jié)論及參考文獻(xiàn)5.1.結(jié)論:步進(jìn)電機(jī)控制的控制通過程序較易實(shí)現(xiàn),但要注意其起動(dòng)時(shí)的頻率不能太大,否則易產(chǎn)生失步,甚至根本起動(dòng)不起來。步進(jìn)電機(jī)的轉(zhuǎn)速越快,其轉(zhuǎn)矩將越小。5.2.參考文獻(xiàn):1王曉明電動(dòng)機(jī)的單片機(jī)控制北京:北京航空航天大學(xué)出版社2002年第一版2.潘松,黃繼業(yè).EDA技術(shù)實(shí)用教程[m].北京:科學(xué)出版社.20023.黃智偉全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽訓(xùn)練教程北京:電子工業(yè)出版社2005年第一版4.南華大學(xué)第六屆全國(guó)電子設(shè)計(jì)競(jìng)賽全體參賽成員.第六屆電子大賽資料6.附錄libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;--Uncommentthefollowinglinestousethedeclarationsthatare--providedforinstantiatingXilinxprimitivecomponents.--libraryUNISIM;--useUNISIM.VComponents.all;entitytopisPort(clk:instd_logic; reset:instd_logic;1為復(fù)位 0開啟 button1:instd_logic; 速度選擇 button2:instd_logic; 正反選擇control:outstd_logic_vector(3downto0);四相電機(jī)輸入信號(hào) buzzer:outstd_logic; 報(bào)警信號(hào) cs:outstd_logic; 數(shù)碼管選中 shift:outstd_logic_vector(3downto0);數(shù)碼管位選信號(hào) data_led:outstd_logic_vector(7downto0));數(shù)碼管數(shù)據(jù)endtop;architectureBehavioraloftopiscomponentkeyisPort(reset:instd_logic;輸入復(fù)位信號(hào) clk:instd_logic; button1:instd_logic; 輸入速度按鍵信號(hào) button2:instd_logic; 輸入正反轉(zhuǎn)按鍵信號(hào) speed:outstd_logic_vector(2downto0);速度數(shù)據(jù)輸出端 sel:outstd_logic_vector(1downto0));正反轉(zhuǎn)信號(hào)輸出端endcomponent;componentmcfpisPort(pwm_clk:instd_logic;速度控制脈沖 clk:instd_logic; reset:instd_logic; sel:instd_logic_vector(1downto0);正反轉(zhuǎn) qs:outstd_logic;control:outstd_logic_vector(3downto0));endcomponent;componentmcfsisPort(clk:instd_logic; reset:instd_logic; speed:instd_logic_vector(2downto0); pwm_clk:outstd_logic);endcomponent;componentjishuisPort(reset:instd_logic; qs:instd_logic; sel:instd_logic_vector(1downto0); alarm:outstd_logic; shuju1:outstd_logic_vector(7downto0); shuju2:outstd_logic_vector(7downto0));endcomponent;componentbaojinisPort(clk:instd_logic; alarm:instd_logic; buzzer:outstd_logic);endcomponent;componentxsisPort(clk:instd_logic; reset:instd_logic; shuju1:instd_logic_vector(7downto0); shuju2:instd_logic_vector(7downto0); cs:outstd_logic; shift:outstd_logic_vector(3downto0); data_led:outstd_logic_vector(7downto0));endcomponent;signalload1:std_logic_vector(2downto0);signalload2:std_logic;signalload3:std_logic_vector(1downto0);signalload4:std_logic;signalload5:std_logic;signalload6:std_logic_vector(7downto0);signalload7:std_logic_vector(7downto0);beginu1:keyportmap(reset=>reset,clk=>clk,button1=>button1,button2=>button2,speed=>load1,sel=>load3);u2:mcfsportmap(clk=>clk,reset=>reset,speed=>load1,pwm_clk=>load2);u3:mcfpportmap(pwm_clk=>load2,clk=>clk,reset=>reset,sel=>load3,control=>control,qs=>load4);u4:jishuportmap(reset=>reset,qs=>load4,sel=>load3,alarm=>load5,shuju1=>load6,shuju2=>load7);u5:baojinportmap(clk=>clk,alarm=>load5,buzzer=>buzzer);u6:xsportmap(clk=>clk,reset=>reset,shuju1=>load6,shuju2=>load7,cs=>cs,shift=>shift,data_led=>data_led);endBehavioral;libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;--Uncommentthefollowinglinestousethedeclarationsthatare--providedforinstantiatingXilinxprimitivecomponents.--libraryUNISIM;--useUNISIM.VComponents.all;entitybaojinisPort(clk:instd_logic; alarm:instd_logic; buzzer:outstd_logic);endbaojin;architectureBehavioralofbaojinissignalc:std_logic;beginprocess(clk,alarm,c)variablecnt:integerrange0to50000; beginifclk'eventandclk='1'thencnt:=cnt+1;ifcnt<25000thenc<='1'; elsifcnt<50000thenc<='0'; elsecnt:=0;c<='0';endif; endif;ifalarm='1'thenbuzzer<=c;elsebuzzer<='0';endif;endprocess;endBehavioral;libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;--Uncommentthefollowinglinestousethedeclarationsthatare--providedforinstantiatingXilinxprimitivecomponents.--libraryUNISIM;--useUNISIM.VComponents.all;entityjishuisPort(reset:instd_logic; qs:instd_logic;1個(gè)八拍信號(hào) sel:instd_logic_vector(1downto0); 01正轉(zhuǎn)10反轉(zhuǎn) alarm:outstd_logic;報(bào)警信號(hào) shuju1:outstd_logic_vector(7downto0); shuju2:outstd_logic_vector(7downto0));endjishu;architectureBehavioralofjishuissignalc1,c2:std_logic;beginprocess(qs)variablecnt:integerrange0to50;beginifrising_edge(qs)then cnt:=cnt+1; ifcnt=50then cnt:=0;alarm<='1';c1<='1'; elsealarm<='0';c1<='0'; endif; endif;endprocess;process(reset,c1,sel)variablecnt:std_logic_vector(7downto0):="00000000";beginifreset='1'thenshuju1<="00000000";elsifrising_edge(c1)then ifsel="01"then ifcnt(3downto0)>="1001"then cnt(3downto0):="0000"; cnt(7downto4):=cnt(7downto4)+1; elsecnt(3downto0):=cnt(3downto0)+1; endif; ifcnt>"10011001"then cnt:="00000000";c2<='1'; elsec2<='0'; endif;endif; ifsel="10"then ifcnt(3downto0)="0000"then cnt(3downto0):="1001"; cnt(7downto4):=cnt(7downto4)-1; elsecnt(3downto0):=cnt(3downto0)-1; endif; ifcnt<="00000000"then cnt:="10011001";c2<='1';elsec2<='0'; endif; endif; endif;shuju1<=cnt;endprocess;process(reset,c2)variablecnt:std_logic_vector(7downto0):="00000000";beginifreset='1'thenshuju2<="00000000";elsifrising_edge(c2)then ifsel="01"then ifcnt(3downto0)>="1001"then cnt(3downto0):="0000"; cnt(7downto4):=cnt(7downto4)+1; elsecnt(3downto0):=cnt(3downto0)+1; endif; ifcnt>"10011001"then cnt:="00000000"; endif; endif;ifsel="10"then ifcnt(3downto0)="0000"then cnt(3downto0):="1001"; cnt(7downto4):=cnt(7downto4)-1; elsecnt(3downto0):=cnt(3downto0)-1; endif; ifcnt<="00000000"then cnt:="10011001"; endif; endif; endif;shuju2<=cnt;endprocess;endBehavioral;libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;--Uncommentthefollowinglinestousethedeclarationsthatare--providedforinstantiatingXilinxprimitivecomponents.--libraryUNISIM;--useUNISIM.VComponents.all;entitymcfsisPort(clk:instd_logic; reset:instd_logic; speed:instd_logic_vector(2downto0); pwm_clk:outstd_logic); endmcfs;architectureBehavioralofmcfsissignalcoefficentl,coefficenth:integer;beginprocess(speed)begincasespeedis when"001"=>coefficentl<=500000;coefficenth<=1000000;50hz when"010" =>coefficentl<=166666;coefficenth<=333333;150hz when"011" =>coefficentl<=250000;coefficenth<=500000;200hz whenothers=>coefficentl<=2500000;coefficenth<=5000000;10hz endcase;endprocess;process(clk,reset,coefficentl,coefficenth)variablecnt:integer;beginifreset='1'then cnt:=0;pwm_clk<='1';elsifclk'eventandclk='1'thencnt:=cnt+1; ifcnt<coefficentlthen pwm_clk<='1'; elsifcnt<coefficenththen pwm_clk<='0';elsepwm_clk<='0';cnt:=0; endif; endif;endprocess;endBehavioral; libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;--Uncommentthefollowinglinestousethedeclarationsthatare--providedforinstantiatingXilinxprimitivecomponents.--libraryUNISIM;--useUNISIM.VComponents.all;entityxsisPort(clk:instd_logic; reset:instd_logic; shuju1:instd_logic_vector(7downto0); shuju2:instd_logic_vector(7downto0); cs:outstd_logic; shift:outstd_logic_vector(3downto0); data_led:outstd_logic_vector(7downto0));endxs;architectureBehavioralofxsissignalclk_shift:std_logic;signaldata_ledin:std_logic_vector(3downto0);beginprocess(clk,reset)variablecnt:integerrange0to50000;beginifreset='1'then cnt:=0; elsifclk'eventandclk='1'then cnt:=cnt+1; ifcnt=24999then clk_shift<=notclk_shift; cnt:=0;endif;endif;endprocess;process(clk_shift,reset)variablecnt:std_logic_vector(1downto0);beginifreset='1'thencnt:="00"; cs<='1'; shift<="1111"; data_ledin<="1111";elsifclk_shift'eventandclk_shift='1'then casecntis when"00"=> cs<='1'; shift<="1110"; data_ledin<=shuju1(3downto0); cnt:=cnt+1; when"01"=> cs<='1'; shift<="1101"; data_ledin<=shuju1(7downto4); cnt:=cnt+1; when"10"=> cs<='1'; shift<="1011"; data_ledin<=shuju2(3downto0); cnt:=cnt+1; when"11"=> cs<='1'; shift<="0111"; data_ledin<=shuju2(7downto4); cnt:="00"; whenothers=> cs<='1'; shift<="1111"; data_ledin<="1111"; endcase; endif;endprocess;process(data_ledin)--譯碼begincasedata_lediniswhen"0000"=>data_led<="11000000";--0 when"0001"=>data_led<="11111001";--1 when"0010"=>data_led<="10100100";--2 when"0011"=>data_led<="10110000";--3 when"0100"=>data_led<="10011001";--4 when"0101"=>data_led<="10010010";--5 when"0110"=>data_led<="10000010";--6 when"0111"=>data_led<="11111000";--7 when"1000"=>data_led<="10000000";--8 when"1001"=>data_led<="10010000";--9 when"1010"=>data_led<="11000000"; whenothers=>data_led<="11111111";--Nosignal;endcase;endprocess;endBehavioral;libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;--Uncommentthefollowinglinestousethedeclarationsthatare--providedforinstantiatingXilinxprimitivecomponents.--libraryUNISIM;--useUNISIM.VComponents.all;entitymcfpisPort(pwm_clk:instd_logic; clk:instd_logic; reset:instd_logic; sel:instd_logic_vector(1downto0);正反轉(zhuǎn)信號(hào)1為正轉(zhuǎn)0為反轉(zhuǎn) control:outstd_logic_vector(3downto0); qs:outstd_logic);endmcfp;architectureBehavioralofmcfpistypestatesis(st0,st1,st2,st3,st4,st5,st6,st7);signalstx:states;四相八拍通電方式beginprocess(clk,reset,sel)beginifreset='1'thenstx<=st0;elsifclk'eventandclk='1'then casestxiswhenst0=>ifpwm_clk='0'then ifsel="01"thenstx<=st1; elsifsel="10"thenstx<=st7; elsestx<=st0; endif; endif;whenst1=>ifpwm_clk='1'then

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論