【正文】
FPGA 的設(shè)計方法。基于FPGA的步進電機控制系統(tǒng)的數(shù)字硬件設(shè)計研究基于FPGA的步進電機控制系統(tǒng)的數(shù)字硬件設(shè)計研究作 者 姓 名: 專 業(yè) 名 稱:電子信息科學與技術(shù)專業(yè)指 導 老 師: II 摘要步進電機因其能夠精確地控制機械的移動量而被廣泛采用。采用VHDL 的設(shè)計方法有著不依賴器件、移植容易、能加快設(shè)計的特點。為了提高對步進電機的細分要求,提出了基于FPGA控制的步進電機控制器方案。關(guān)鍵詞:VHDL FPGA 步進電機AbstractStepper motors can be precise because of mechanical control of the movement of production and are widely used. Stepper motor input from the pulse signal to control. Although analog circuits can be used to produce continuously adjustable pulse signal, but it is difficult to control, and the use of digital integrated circuits to the stepper motor control, to overe the above drawbacks. Now, digital IC design increasingly used VHDL + FPGA design methods. VHDL design is not dependent on devices, easily transplanted, can speed up the design characteristics. Furthermore, VHDL at the scene can make changes and FPGA devices bine can greatly improve the design flexibility and efficiency, shorten product development cycles, accelerate product time to market. VHDL + FPGA design methodology for digital systems design an innovative, as well as the future direction of development. Stepping motor is a electrical impulses into angular displacement of the executive agency, has been widely used in all kinds of automatic control system. In order to improve the stepper motor subdivision requirements, is put forward based on FPGA control stepping motor controller scheme. In this paper, a VHDL language the function module design of hierarchical process, use Ⅱ Quartus simulation, then the simulation results, and succeeded in the FPGA device validate design of possibilities. Based on FPGA device and VHDL language, only modify module procedure parameters, without having to change hardware circuit can achieve all kinds of control. The hardware design of simple structure and reliable, but according to the practice needs is flexible and convenient for configuration.Keywords : FPGA,VHDL, stepper motor 目錄摘要 IAbstract II目錄 III前言 11 步進電機脈沖信號發(fā)生器原理與設(shè)計要求 2 2 3 4 52 本研究課題所涉及的主要理論和技術(shù) 72 .1 數(shù)字系統(tǒng)現(xiàn)場集成技術(shù)的基本概念 7 7 現(xiàn)場集成技術(shù) 8 現(xiàn)場集成的編程方式 9 9 VHDL 設(shè)計方法及技術(shù)原理 10 VHDL 的發(fā)展概況 10 VHDL 設(shè)計綜合過程 11 設(shè)計要求的定義 11 采用VHDL 進行設(shè)計描述 11 EDA 工具 123 設(shè)計與實現(xiàn) 13 13 VHDL 設(shè)計 16 部分 16 Step_wave . vhd 部分 214 設(shè)計調(diào)試與問題討論 26 設(shè)計調(diào)試 26 問題討論 26 VHDL 程序編寫 27 VHDL 程序的順序問題 27 改進設(shè)計或其它方案的思索 275 總結(jié) 29致謝 30參考文獻 31附件1 VHDL源程序 32 VHDL源程序— 32 VHDL源程序— 35附件2 電路圖 40 40 42 電路總圖 43IV前言電子系統(tǒng)設(shè)計的變革是從八十年代中期開始的。目前, FPGA / CPLD 產(chǎn)品可以完成更加復雜的工作,其應(yīng)用范圍擴展到了數(shù)據(jù)處理、網(wǎng)絡(luò)、儀器儀表、工業(yè)控制、軍事和航空航天等更廣泛的領(lǐng)域。三、設(shè)計意義 VHDL 和 FPGA 為特征的數(shù)字系統(tǒng)現(xiàn)場集成技術(shù)是將來 ASIC 設(shè)計的主要發(fā)展趨勢之一,通過本課題研究,學習和掌握數(shù)字邏輯的 VHDL 設(shè)計方法和系統(tǒng)功能的 FPGA 實現(xiàn)方法,推動了數(shù)字系統(tǒng)現(xiàn)場集成技術(shù)的應(yīng)用。二十世紀末以來,步進電機因其能夠精確地控制機械的移動量而被廣泛采用。其最大特征是容易精確地控制機械位置。在實用上,輸入脈沖數(shù)的單位多為pps ( pulse per second :每秒的脈沖數(shù)) ( 2 )旋轉(zhuǎn)角誤差不會逐步累積。 脈沖速率與電機旋轉(zhuǎn)速度的關(guān)系如果步進電機僅需能夠旋轉(zhuǎn)即可的場合,則只要脈沖產(chǎn)生電路所產(chǎn)生的脈沖供給步進電機即可。用戶要求,步進電機的控制系統(tǒng)一脈沖信號發(fā)生器的輸出脈沖能完成定速、加速、減速,且速率和加減速度都能做到連續(xù)可調(diào)。這種方法的優(yōu)點是:用模擬電路可以比較容易地得到連續(xù)可調(diào)的脈沖信號。這種方法所具有的優(yōu)點是:輸出脈沖的穩(wěn)定度很高。結(jié)合上述幾種傳統(tǒng)的方法進行比較之后得出:我們可以采用可編程ASIC 來實現(xiàn)步進電機的控制,其主要優(yōu)點在于:①根據(jù)具體的邏輯要求來設(shè)計ASIC 。2 本研究課題所涉及的主要理論和技術(shù)本研究課題的主要知識要點是:以FPGA (現(xiàn)場可編程門陣列)為系統(tǒng)目標器件,以VHDL 設(shè)計方法為目標系統(tǒng)邏輯設(shè)計的基本方法,采用Altera公司的Quartus II開發(fā)系統(tǒng),以現(xiàn)代EDA 的數(shù)字設(shè)計方式,來設(shè)計實現(xiàn)前面所述的基于FPGA 的步進電機脈沖信號控制系統(tǒng)的數(shù)字硬件。當前,由于復雜電路的單芯片集成技術(shù)日益完善,使得整個系統(tǒng)集成在一起成為可能。而主要電路的設(shè)計方式,可以分為門陣列設(shè)計、標準單元設(shè)計和全定制電路設(shè)計等。對于利用現(xiàn)場集成技術(shù)來實現(xiàn)數(shù)字系統(tǒng)的單片化,其基本要素是:① 現(xiàn)場集成的目標載體—現(xiàn)場可編程器件;② 現(xiàn)場集成的設(shè)計工具及IP 庫資源;③ 針對具體目標器件的不同編程方式。同時,模擬可編程陣列、數(shù)/?;旌峡删幊剃嚵校瑒討B(tài)可重構(gòu)陣列器件等新概念也正在涌現(xiàn)。一是邏輯功能仿真,即對經(jīng)過合并處理的網(wǎng)表文件進行邏輯功能的驗證,這時不考慮布線及不同分區(qū)規(guī)劃而產(chǎn)生的時延對系統(tǒng)功能的影響,僅僅為了驗證系統(tǒng)設(shè)計的功能;二是布局、布線后的LCA 系統(tǒng)仿真,此時要考慮不同的布線,分區(qū)規(guī)劃產(chǎn)生的各種時延對系統(tǒng)功能的影響,而且往往是考慮最壞的情況,即惡劣的溫度環(huán)境、電源供電等情況。具有ISP 功能的器件在下載時無需專門的編程器,可直接在己制成的系統(tǒng)(稱為目標系統(tǒng))中或印制板上對芯片進行編程數(shù)據(jù)下載。具備ISR 功能的器件也可直接在目標系統(tǒng)中或印制電路板上通過數(shù)據(jù)下載電纜配置和重新配置,無需專門的編程器。1 .高密度型的可編程邏輯器件密度型的可編程邏輯器件以ALTERA公司推出的ACEX1K系列FPGA 為代表。器件的密度為576~4992個邏輯單元,可以滿足比較復雜的設(shè)計要求。系列中的EPF6010A 、EPF6016A V,大大降低了功耗。一個LE由一個四輸入的查找表和一個寄存器組成。這種語言首次開發(fā)出來時,其目標僅是作為一個電路文本化的一種標準,為了使人們用文本方式描述設(shè)計能夠被其它人所理解。 今天,VHDL 己成為數(shù)字電路和系統(tǒng)的描述、建模、綜合的工業(yè)標準。 設(shè)計要求的定義在從事設(shè)計進行編寫代碼工作之前,必須對設(shè)計目的和要求有一個明確的認識。只有對如何描述我們的設(shè)計有了一個最佳的認識,才能更有效地編寫設(shè)計代碼,然后再通過綜合,進行所需要的邏輯實現(xiàn)。 EDA 工具EDA 工具有多種,本研究課題所采用的Altera公司的Quartus II軟件便是為了使用戶能夠有效地使用Altera 公司的器件進行數(shù)字系統(tǒng)現(xiàn)場開發(fā)所推出的。Altera的CPLD和FPGA器件具有良好的性能、極高密度和非常大的靈活性,它通過集成化、多I/O容量及最快的速度,為用戶的各種需求提供了有效的解決方案,極大地滿足了對片上系統(tǒng)日益增長的需求。流程可見圖3 . 1 。 16位計數(shù)器的16種不會重疊的狀態(tài)有了16 種不同頻率而且互相不重疊的脈沖后,就可以提取16 種頻率的脈沖中所需要的幾種來進行疊加,從而構(gòu)成所需的連續(xù)可調(diào)的輸出脈沖。 所示,只要將脈沖速率的二進制數(shù)寫進寄存器,就可以得到相應(yīng)速率的輸出脈沖。 系統(tǒng)電路框圖 VHDL 設(shè)計通過上面的設(shè)計討論,己經(jīng)弄清楚要用什么樣的邏輯電路來實現(xiàn),剩下的任務(wù)就是用VHDL 語言將各個電路模塊描述出來,具體程序見附錄。 部分的結(jié)構(gòu)框圖如圖3 .6 所示。所以,開始的時候我直接用VHDL 描述一個7bit 的計數(shù)器。end if。然而,結(jié)合后續(xù)所需模塊,分析可知,由于需要可調(diào)的加速度,所以,系統(tǒng)每秒鐘都要根據(jù)加速度調(diào)整輸出脈沖的個數(shù)。 count23 = ( others = ‘0’ ) 。 if ( count23 = “11111111111111111111111” ) then sclkout = ‘ l 39。 end if。 CLKOUT = count23 ( 6 ) 。 。 。end process 。當輸出脈沖個數(shù)計數(shù)器pulse _ counter 沒有達到設(shè)定的總輸出脈沖個數(shù)max_plus 的時候,iocontrol 為‘ 1 39。(3)每秒輸出的脈沖個數(shù)寄存器更新模塊對輸出脈沖個數(shù)寄存器的更新,我利用前端模塊產(chǎn)生的控制信號Sclkout , 在每一周期(秒)的最后一個脈沖輸出后進行更新。對于正的加速度,大于65535 的結(jié)果被強制為系統(tǒng)所能輸出的最大脈沖數(shù)65535 。 elseskeyout = speed 。end process 。本系統(tǒng)能設(shè)定的速度范圍為O —65535pps ,不過,由于速度差距不大時示波器上不容易看出區(qū)別,所以,外接的DSP開關(guān)只為8 位,設(shè)定的速度為256 級,這樣可以方便地觀測輸出波形。上面三個模塊的連接關(guān)系圖即step_wave .vhd 部分的結(jié)構(gòu)框圖如圖3 .9 所示。所以,這部分的第一個模塊就是用來產(chǎn)生一個16bit 的計數(shù)器。 。 程序中的CLK 就是由step _ control 分頻得到65536 HZ的時鐘。process ( Countl6 , Outputl6 ) begin if ( RESET = ‘ O ’ ) then Outputl6 = ( others = ‘ O ’ ) 。 else Outputl6 ( 15 ) = ‘ O ’ 。 else Outputl6 ( 14 ) = 39。end process 。由前面的公式可知,最后,在指定的輸出脈沖個數(shù)下,對于這16 種頻率的脈沖,應(yīng)提取出需要的那幾種進行疊加。所以,與這些為“1 ”的位相連接的與門打開,讓對應(yīng)頻率的脈沖l / 16CLK 、l / 32CLK 、l / 64CLK 、l / 128CLK 、l / 256CLK 和l / 1O24CLK 輸出到16 輸入的或門上進行疊加。 swave _ out = key_tmp ( O ) or key_tmp ( l ) or key_tmp ( 2 ) or key_tmp ( 3 ) or key_tmp ( 4 ) or key_tmp ( 5 ) or key_tmp ( 6 ) or key_tmp ( 7 ) or key_tmp ( 8 ) or key_tmp ( 9 ) or key_tmp ( 10 ) or key_tmp ( 11 ) or key_tmp ( 12 ) or key_tmp ( 13 ) or key_tmp ( 14 ) or key_tmp ( 15 ) 。 部分完成以后,單獨對此部分進行時序仿真,波形圖如3 .9 所示。通過測試,結(jié)果顯示,實測值和理論值相吻合,證明了本課題設(shè)計是成功的。 ElaboraionAnalysis amp。所以,在編程時,應(yīng)該時