王靖
(東南大學 電子科學與工程學院,江蘇 南京 210096)
隨著電子設備及電子產(chǎn)品逐漸向低功耗、小體積、多功能和快速更新的方向發(fā)展,使得電子設計自動化(EDA)技術(shù)快速發(fā)展。由于成本和功耗的進一步降低,在許多的領(lǐng)域運用到了可編程門陣列即FPGA,它在通信、儀器、網(wǎng)絡、數(shù)據(jù)處理、工業(yè)控制、軍事和航空航天等眾多領(lǐng)域有著廣泛的應用[1]。
現(xiàn)場可編程門陣列即FPGA(Field Programmable Gate Array),是從EPLD、PAL、GAL 等這些可編程器件的基礎上進一步發(fā)展起來的。作為專業(yè)集成電路領(lǐng)域中的半定制電路而出現(xiàn)的FPGA,不但解決了定制電路的不足,而且克服了原有可編程器件因門電路數(shù)有限的而產(chǎn)生的缺點。FPGA 的使用十分的靈活,同一片F(xiàn)PGA 只要使用不同的程序就能夠達到不同的電路功能。現(xiàn)在FPGA 在通信、儀器、網(wǎng)絡、數(shù)據(jù)處理、工業(yè)控制、軍事和航空航天等眾多領(lǐng)域有著廣泛的應用。隨著成本和功耗的進一步降低,將在更多的領(lǐng)域運用FPGA。
基于FPGA 的電機測速系統(tǒng)設計,以Quartus II為設計平臺,采用硬件描述語言VHDL 和模塊化設計的方式,并通過數(shù)碼管驅(qū)動電路動態(tài)顯示測量的結(jié)果。本設計具有外圍電路少,集成度高,可靠性強等特點,可以用來測量電機的轉(zhuǎn)速值。
傳感器將電機轉(zhuǎn)速的模擬信號轉(zhuǎn)換成數(shù)字脈沖信號送入FPGA 模塊。同時由基準時鐘電路產(chǎn)生準確的時鐘信號和復位電路產(chǎn)生的復位信號送入FPGA 模塊。再由FPGA 模塊產(chǎn)生分頻電路、十進制計數(shù)器電路、數(shù)據(jù)處理電路和顯示譯碼電路。由分頻電路將送入的基準時鐘信號進行分頻,得到一個閘門信號,作為十進制計數(shù)器的使能信號。數(shù)據(jù)處理電路的作用是將十進制計數(shù)器得到的數(shù)據(jù)進行相應的處理后,再送入顯示譯碼電路進行轉(zhuǎn)換譯碼[2]。電機測速系統(tǒng)的總體框圖如圖1 所示。外圍電路分為:基準時基電路,復位電路,傳感器測量電路和顯示電路。
基準時基電路采用50 MHz 的有源晶振,3.3 V 電源通過FB5 接入有源晶振的VCC 端口,同時通過C10 和C11 濾去高頻干擾信號[3]。從OUT 端口輸出50 MHz 的時鐘信號。晶振電路如圖2 所示。
圖1 電機測速系統(tǒng)的總體框圖Fig.1 Chart of the motor speed measurement system
圖2 有源晶振電路圖Fig.2 Circuit of the active crystal oscillator
按鍵作為嵌入式智能控制系統(tǒng)中人機交互的常用接口,我們通常會通過按鍵向系統(tǒng)輸入各種信息,調(diào)整各種參數(shù)或者發(fā)出控制指令,按鍵的處理是一個很重要的功能模塊,它關(guān)系到整個系統(tǒng)的交互性能,同時也影響系統(tǒng)的穩(wěn)定性。在本次設計中,通過按鍵實現(xiàn)了FPGA 模塊的手動復位。復位按鍵如圖3 所示。
圖3 復位按鍵電路圖Fig.3 Circuit of the reset button
若要測量轉(zhuǎn)速信號,需要先將其轉(zhuǎn)換為電信號,所以就需要用到光電脈沖傳感器。本次設計所選用的光電編碼器為歐姆龍編碼器E6B2-CWZ6C360P/R。
在本次設計中我們用到的顯示電路如圖4 所示。
由數(shù)碼管顯示電路可以知道,這是共陽極數(shù)碼管。當在位選端SE1~SE4 輸入低電平時,三極管導通,從而D1~D4 接入高電平。由a 到DP 端輸入數(shù)碼管顯示碼,就可以得到我們所需要的數(shù)字,由位選端讓數(shù)碼管選擇導通。
FPGA 模塊的設計主要是實現(xiàn)將由光電編碼器轉(zhuǎn)換得到的電信號轉(zhuǎn)換成轉(zhuǎn)速值,通過數(shù)碼管顯示。因此本次設計的模塊主要有分頻模塊、計數(shù)模塊、鎖存模塊、數(shù)據(jù)處理模塊和動態(tài)顯示模塊等組成。
圖4 數(shù)碼管顯示電路Fig.4 Circuit of the digitron display
在本次設計中我們需要得到的是轉(zhuǎn)速值,而測量的根本原理就是將轉(zhuǎn)速信號轉(zhuǎn)換為頻率信號,同過測量頻率信號從而算出轉(zhuǎn)速值。由于外部時鐘提供的是50 MHz 的時鐘信號,此信號送入FPGA 模塊,通過程序?qū)⑵溥M行分頻,設計需要的是1 s 的閘門脈沖,來統(tǒng)計被測信號的個數(shù),從而計算出被測信號的頻率[4]。
分頻模塊的設計流程圖如圖5 所示。
圖5 分頻程序流程圖Fig.5 Chart of the frequency division
四位十進制計數(shù)模塊是通過復位信號和閘門信號來控制模塊對外部被測信號的十進制計數(shù)。當復位信號為高電平時,b1、b2、b3、b4 四位計數(shù)信號都為0。當復位信號為低電平,并且閘門信號為高電平時,計數(shù)模塊開始統(tǒng)計外部信號clk1 的個數(shù),b4為最高位,b1為最低位[5]。
計數(shù)模塊流程圖如圖6 所示。
圖6 計數(shù)程序流程圖Fig.6 Chart of the count program
start為復位信號,當為0 時系統(tǒng)復位。
b4、b3、b2、b1為計數(shù)信號,依次代表千位到個位,每一位最大計數(shù)
鎖存模塊具有存儲1 s 計數(shù)完時,所計數(shù)的數(shù)據(jù)和提供自動復位信號的功能。而且,在按下復位信號時,清除計數(shù)數(shù)據(jù)。當閘門信號en為下降沿時,就將計數(shù)模塊所得到的數(shù)值存入鎖存模塊。當閘門信號en為‘0’時,程序就輸出一個低電平的復位信號,反之則輸出高電平的信號。
動態(tài)顯示譯碼是所有數(shù)碼管共用數(shù)據(jù)通道,由位選端選通,每位依次導通。由于人眼具有視覺延遲性,所以觀察到的數(shù)碼管為每一位顯示不同的數(shù)據(jù),同時顯示[6]。
設計利用外部時鐘50 MHz 分頻來實現(xiàn)延遲,延遲系數(shù)為62 499。則clock 上升沿個數(shù)為62 499個時,位選信號加1,下一位導通顯示數(shù)據(jù)。數(shù)碼管的顯示需要將0 到9 的BCD碼轉(zhuǎn)換為七段數(shù)碼管顯示。與分頻模塊類似,由于時間較長,設計將延遲系數(shù)62 499 改為8,則clock 每8個上升沿則數(shù)碼管顯示下一位。
動態(tài)顯示模塊仿真如圖7 所示。
圖7 動態(tài)顯示模塊仿真Fig.7 Simulation of the module of dynamic display
本次實驗是為了完成電機轉(zhuǎn)速的測量,而測量的原理是利用傳感器將轉(zhuǎn)速信號變?yōu)殡娒}沖信號,通過測量脈沖信號的頻率值,帶入公式從而計算出轉(zhuǎn)速值。數(shù)據(jù)處理模塊就是利用VHDL 語言編寫程序進行數(shù)據(jù)的運算,將會運用到加減乘除這4 種運算。
通過推理可以得出電脈沖的個數(shù)N 與電機的轉(zhuǎn)速n 的關(guān)系式如式(1)所示。
N—電脈沖個數(shù)
n—電機轉(zhuǎn)速(單位為:轉(zhuǎn)每分鐘)
Z—光電編碼器倍增數(shù)(此設計中為360)
t—測量時間(單位為:秒)
通過式(1)可以推出電機轉(zhuǎn)速值n 的計算公式如式(2)所示。
而電脈沖個數(shù)N 與測量時間t 的比值等于測量頻率,所以式(2)可以轉(zhuǎn)換為式(3)所示。
f—測量頻率
由式(3),程序在運算模塊中將會編寫的模塊有數(shù)據(jù)相加模塊、乘60 模塊、除360 模塊和數(shù)據(jù)分解模塊。運算模塊流程圖如圖8 所示。
圖8 運算模塊流程圖Fig.8 Chart of the calculate module
數(shù)據(jù)相加模塊是為了將頻率計所得到的四位數(shù)值乘以相應的倍數(shù),再將其相加后得到一個整體的二進制數(shù),以便于進行下面的運算。又因為電脈沖的個數(shù)單位為個每秒,而電機轉(zhuǎn)速的單位為轉(zhuǎn)每分鐘,所以存在60 s 的轉(zhuǎn)換值。利用程序?qū)⒅暗玫降臄?shù)據(jù)乘以60。使用的傳感器是歐姆龍編碼器E6B2-CWZ6C360P/R,所以倍增數(shù)是360,所以在運算模塊中我們要除去360。在運算得出轉(zhuǎn)速值后,還需要一個將這個二進制數(shù)值分解的模塊,因為數(shù)碼管顯示模塊是將個十百千位單獨顯示的[7],所以要先將每一位分解出來,再送入數(shù)碼管顯示。
本次設計是基于FPGA 的電機測速系統(tǒng)設計,利用的是Altera 公司開發(fā)的Quartus II 軟件作為設計平臺,可以在FPGA 開發(fā)板上實現(xiàn)測量由傳感器轉(zhuǎn)換得到的脈沖信號,并且通過計算得到電機轉(zhuǎn)速值。
在本次設計中,還可以進行一些擴展,可以添加報警電路,設定一個報警值,當測量的轉(zhuǎn)速值大于這個報警值時,就可以讓蜂鳴器報警或數(shù)碼管點亮。
[1]潘松.EDA技術(shù)實用教程[M].4版.北京:科學出版社,2010(6):1-2.
[2]黃智偉.FPGA系統(tǒng)設計與實踐[M].北京:電子工業(yè)出版社,2005(1):336-341.
[3]趙艷華.基于Quartus II的FPGA/CPLD設計與應用[M].北京:電子工業(yè)出版社,2009.
[4]周夢然.CPLD/FPGA的開發(fā)與應用[M].北京:中國礦業(yè)大學出版社,2007.
[5]黃智宇,李彥,等.基于Verilog HDL的FPGA設計與工程應用[M].北京:人民郵電出版社,2009.
[6]張洪潤,張亞凡.FPGA/CPLD應用設計200例(上冊)[M].北京:北京航空航天大學出版社,2009.
[7]周維國.汽輪發(fā)電機組振動在線監(jiān)測系統(tǒng)失真原因分析及處理[J].陜西電力,2011(9):78-82.ZHOU Wei-guo.Cause analysis and treatment of distortion in turbine vibration online monitoring system[J].Shaanxi Electric Power,2011(9):78-82.