徐尚中,李 靖
(周口師范學(xué)院 計算機(jī)科學(xué)與技術(shù)學(xué)院,河南 周口 466001)
基于FPGA的數(shù)字邏輯新型實驗方法研究
徐尚中,李 靖
(周口師范學(xué)院 計算機(jī)科學(xué)與技術(shù)學(xué)院,河南 周口 466001)
針對《數(shù)字邏輯》實驗教學(xué)目前存在的問題,對《數(shù)字邏輯》課程的實驗方法進(jìn)行了分析和探討,提出了一種基于FPGA的新型實驗方法.該方法不僅具有很大的靈活性與可重構(gòu)性,而且能提高實驗的準(zhǔn)確性和成功率,具有很大的發(fā)展空間.
實驗方法;FPGA;數(shù)字邏輯
《數(shù)字邏輯》是計算機(jī)、自動化和電子工程等專業(yè)的專業(yè)基礎(chǔ)課程之一,具有很強(qiáng)的工程實踐性,是深入了解計算機(jī)內(nèi)核的一門最關(guān)鍵的基礎(chǔ)課程.作為課堂所授理論知識的必要的補(bǔ)充,《數(shù)字邏輯》課程實驗是學(xué)生獲得所學(xué)知識和進(jìn)行能力訓(xùn)練的重要途徑,對學(xué)生能否真正掌握所學(xué)的課程內(nèi)容以及能否靈活運(yùn)用所學(xué)知識去解決實際問題起著決定性的作用.
目前,在地方師范院?!稊?shù)字邏輯》實驗課程的開設(shè)主要有兩種情況:一是部分高校雖然開設(shè)了《數(shù)字邏輯》課程,但由于種種原因并不開設(shè)相應(yīng)的實驗課程,即純粹的理論講解;二是絕大部分高校開設(shè)了《數(shù)字邏輯》實驗課程,但實驗設(shè)施和實驗方法相對落后,實驗效果不佳.在具體的實驗方法上,也有兩種情況:
當(dāng)前許多高校在進(jìn)行《數(shù)字邏輯》實驗教學(xué)時,還是沿用傳統(tǒng)的實驗箱來實現(xiàn)組合邏輯實驗和時序邏輯實驗.傳統(tǒng)的實驗方法都是在集成電路等各組成部件相對固定的情況下進(jìn)行的,如基本的組合邏輯器件:與、或、非門、編碼器、譯碼器、觸發(fā)器、寄存器、計數(shù)器等,通過連線,學(xué)生用這些器件可以完成一些基本的功能性驗證或簡單的設(shè)計性實驗.其優(yōu)點(diǎn)是:通過這些看得見摸得著的實物儀器裝置,學(xué)生可以較容易的獲得感性認(rèn)識,從而將抽象的理論變成直觀的現(xiàn)實,這種傳統(tǒng)實驗室為學(xué)生提供了真實的實驗環(huán)境,使學(xué)生身臨其境,理論上來講教學(xué)效果應(yīng)當(dāng)非常好.但是這種實驗方法局限性很大.首先,學(xué)生的設(shè)計很難突破實驗箱的限制,難以實現(xiàn)一些綜合性、設(shè)計性實驗.其次,在傳統(tǒng)實驗室中,由于實驗設(shè)備較為復(fù)雜,實驗環(huán)境等客觀因素對實驗有很大的影響,其中有些問題是由學(xué)生操作不當(dāng)引起的,有些問題可能是當(dāng)時的設(shè)備狀態(tài)出了問題,如不能及時檢查糾正,過后就很難確定問題出現(xiàn)的原因,這樣往往使學(xué)生無法找到問題的本質(zhì),嚴(yán)重影響學(xué)生對實驗的理解.另外,有些實驗需要學(xué)生插接的連線可能比較多,在實驗過程中,只要有一個連線或元器件出現(xiàn)接觸不良現(xiàn)象就會影響到整個實驗的完成情況,實驗的成功率很低,也會影響到學(xué)生的學(xué)習(xí)興趣.所以,學(xué)生盡管花了許多的時間去做實驗,卻收獲甚微.
另一種常用的方法是采用所謂的“虛擬實驗室[1]”,如 EWB、Multisim、QuartusⅡ等都是專門用于電子電路仿真的“虛擬電子工作平臺”,它以軟件為基礎(chǔ),軟件即為儀器,以計算機(jī)為操作平臺,采用一定的數(shù)學(xué)模型和仿真算法,在輸入即將實驗的電路模型及元器件參數(shù)后,軟件會依據(jù)元器件的特性對電路模型進(jìn)行仿真,虛擬儀器、儀表可將電路測試點(diǎn)的波形和數(shù)據(jù)顯示出來,能方便地應(yīng)用在實驗教學(xué)中,有效地降低實驗成本,提高實驗效率.同時,“虛擬實驗室”提供了傳統(tǒng)實驗室無法相比的大量的虛擬元器件庫,提供了修改電路設(shè)計的靈活性、提供了實驗室在數(shù)量、質(zhì)量上難以相比的虛擬儀器、儀表,使得學(xué)生在實驗中能夠打破傳統(tǒng)實驗方法的束縛,自主的從事一些綜合性、創(chuàng)新性的實驗設(shè)計,大大提高學(xué)生的學(xué)習(xí)興趣[2,3].虛擬實驗室有效的彌補(bǔ)了傳統(tǒng)實驗室存在的不足,在教育領(lǐng)域得到了越來越廣泛的應(yīng)用.目前,國內(nèi)許多高校都根據(jù)自身需求建立了虛擬實驗室,取得了很好的教學(xué)效果.但是虛擬實驗方法也有其自身的缺點(diǎn).首先,虛擬實驗方法采用虛擬環(huán)境,虛擬設(shè)備與真實的實驗設(shè)備還有一定的差距,無法使學(xué)生掌握對真實元器件進(jìn)行識別和引腳功能判斷的方法,無法掌握實際電路元器件的安裝與連接的方法以及真實儀器、儀表的使用方法等.其次,實際電路中各元器件之間及連線之間的相互干擾問題也是虛擬實驗設(shè)備所無法表達(dá)的.因此,這種實驗方法不能培養(yǎng)學(xué)生在元器件識別、電路連接,電路調(diào)試、儀器操作等方面的實踐動手能力[4].
通過對傳統(tǒng)實驗方法和虛擬實驗方法進(jìn)行比較,可以看出,二者各有優(yōu)缺點(diǎn),只有將二者結(jié)合起來,才能為學(xué)習(xí)者營造一個不受時間、地點(diǎn)、實驗設(shè)備約束的實驗環(huán)境,使學(xué)生既可以感受到逼真的實驗過程,提高實驗數(shù)據(jù)的準(zhǔn)確性,又能節(jié)約學(xué)校專用實驗室的投入,提高實驗的成功率.
EDA技術(shù)的快速發(fā)展使數(shù)字系統(tǒng)的設(shè)計發(fā)生了革命性的變化[5],將這一技術(shù)運(yùn)用到《數(shù)字邏輯》實驗中,即可構(gòu)建出基于計算機(jī)平臺“虛實結(jié)合”的《數(shù)字邏輯》實驗系統(tǒng).
具體來講,基于EDA技術(shù)的《數(shù)字邏輯》實驗系統(tǒng)就是選用高性能的FPGA芯片作為硬件平臺,采用VHDL語言在QuartusⅡ環(huán)境中設(shè)計實驗電路模型并進(jìn)行仿真[6,7],即首先運(yùn)用虛擬實驗的方法在計算機(jī)軟件平臺上設(shè)計出實驗電路模型和進(jìn)行初步的軟件仿真,確認(rèn)無誤后再將設(shè)計好的相應(yīng)程序經(jīng)數(shù)據(jù)線下載到實驗系統(tǒng)中的實驗電路板上進(jìn)行實際驗證.學(xué)生在實驗過程中可以節(jié)省出大量的接線時間,把實驗的重點(diǎn)放在電路模型的設(shè)計、仿真和驗證上,從而培養(yǎng)學(xué)生的分析設(shè)計能力和實踐操作能力.其設(shè)計流程如圖1所示.
圖1 FPGA設(shè)計器件的一般流程
圖1中,設(shè)計輸入是將設(shè)計者所要設(shè)計的電路模型以VHDL代碼形式或以原理圖的形式表達(dá)出來.綜合是將VHDL語言或原理圖等設(shè)計輸入進(jìn)行編譯、優(yōu)化、轉(zhuǎn)換和綜合,生成門級電路.適配是將邏輯綜合生成的網(wǎng)表文件映射到某一具體的器件.仿真驗證則是驗證設(shè)計輸入邏輯功能的正確性.器件編程是指設(shè)計輸入編譯成功后,設(shè)計者使用器件編程器將程序下載到實際器件的過程.
以帶使能端的四位二進(jìn)制計數(shù)器為例,要完成一個計數(shù)器實驗,首先需要編寫計數(shù)器VHDL程序來作為實驗的設(shè)計輸入,其核心代碼如下:
代碼中enable為使能控制端,高電平時有效.cnt為計數(shù)變量,每當(dāng)clk來一個上升沿時且使能端有效時進(jìn)行一次計數(shù).將計數(shù)器VHDL代碼所形成的.vhd文件作為QuartusⅡ的設(shè)計輸入進(jìn)行編譯,檢查無誤后對計數(shù)器進(jìn)行時序仿真,得到計數(shù)器輸出波形如圖2所示.
圖2 QuartusⅡ環(huán)境下計數(shù)器波形仿真
由圖2可知,計數(shù)器在軟件環(huán)境下通過編譯、仿真,輸出波形完全符合實驗設(shè)計的要求,說明在虛擬環(huán)境下所做的實驗設(shè)計是完全正確的.下面要做的工作就是綁定FPGA芯片引腳,將程序下載到FPGA芯片中,進(jìn)行實驗的實際驗證.由此可以看出,這種實驗方法真正做到了實驗的虛實結(jié)合,它既能提高實驗的成功率,又能觀察實驗的實際運(yùn)行效果.
與傳統(tǒng)的實驗方法相比,基于VHDL虛實結(jié)合的實驗方法的優(yōu)點(diǎn)還體現(xiàn)在它的靈活性與可重構(gòu)性上.采用傳統(tǒng)的實驗方法,一旦所設(shè)計的實驗出現(xiàn)了問題,設(shè)計者必須重新對實驗電路檢查一遍,實驗電路越復(fù)雜,連線也會越多,出現(xiàn)的問題也越多.有時辛辛苦苦連了一兩個小時候的線,卻不到實驗結(jié)果,有時也會有一些粗心的同學(xué)出現(xiàn)燒壞芯片的事情.但是,基于VHDL的新型實驗方法卻不會有這些現(xiàn)象發(fā)生.
在VHDL語言中,電路模型都是通過程序來編寫的.實驗電路的正確與否可以在軟件環(huán)境中進(jìn)行檢測,當(dāng)出現(xiàn)問題時,只需修改VHDL代碼就行了.另外,由于實驗系統(tǒng)的硬件平臺采用的是可編程的FPGA芯片,掉電后設(shè)計好的電路就不復(fù)存在了,所以在同一個系統(tǒng)下,可做多次實驗、多個實驗.編寫不同的程序,即可實現(xiàn)不同的功能電路.比如:對帶有使能端的四位二進(jìn)制計數(shù)器進(jìn)行適當(dāng)?shù)男薷?,即可變成一個加/減計數(shù)器電路.VHDL關(guān)鍵代碼如下:
上述代碼中加入了一個加/減計數(shù)控制端(up_down),為高電平時進(jìn)行加法計數(shù),為低電平時進(jìn)行減法計數(shù).可得到其仿真波形如圖3所示.
圖3 QuartusⅡ環(huán)境下加減計數(shù)器波形仿真
此外,新型實驗設(shè)計的靈活性還體現(xiàn)在QuartusⅡ環(huán)境下設(shè)計輸入的多樣化.QuartusⅡ軟件支持模塊/原理圖輸入、文本輸入、第三方EDA工具輸入等多種輸入方式.因此,在進(jìn)行實驗設(shè)計時,即使學(xué)生不懂得VHDL語言,也能通過原理圖的輸入方式設(shè)計出相應(yīng)的實驗電路.
FPGA是英文Field Programmable Gate Array的縮寫,即現(xiàn)場可編程門陣列,它是作為專用集成電路 ASIC(Application Specific Integrated Circuit)領(lǐng)域中的一種半定制電路而出現(xiàn)的,F(xiàn)PGA能夠完成任何數(shù)字邏輯器件的功能,上至高性能的CPU,下至簡單的74系列電路,都可以用FPGA來實現(xiàn).FPGA如同一張白紙或是一堆積木,工程師可以通過傳統(tǒng)的原理圖輸入法,或是硬件描述語言(VHDL)自由地設(shè)計一個數(shù)字系統(tǒng).
基于FPGA的電路設(shè)計采取的是一種自頂向下的設(shè)計方式[8],即按照數(shù)字系統(tǒng)的功能描述,把系統(tǒng)劃分為若干個功能模塊,然后再把每個模塊劃分為不同層次,從高層次到低層次逐步細(xì)化.把這種思想應(yīng)用到《數(shù)字邏輯》實驗中,可以大大簡化實驗設(shè)計的復(fù)雜程度.采用模塊化設(shè)計的方法,把每個實驗課題內(nèi)容逐步細(xì)化為若干個具體的模塊,每個模塊具體為一個或若干個程序,能夠完成一定的功能.同時若干個模塊又可以組合成一個大的模塊,即可實現(xiàn)電路設(shè)計的可重構(gòu).比如:本次設(shè)計好的實驗電路可以作為一個模塊保存下來,當(dāng)下次實驗設(shè)計剛好需要用到這個模塊的時候,可以隨時取過來作為新的實驗設(shè)計的一部分,這樣做的實驗越多,積累的模塊也越多,學(xué)生做起實驗也就越方便.
實驗教學(xué)是培養(yǎng)學(xué)生實踐和創(chuàng)新能力的一個重要環(huán)節(jié).作為傳統(tǒng)實驗方法和虛擬實驗方法的給合體,基于FPGA的新型實驗方法具有很大的發(fā)展前景,代表了未來的發(fā)展方向.然而,這種先進(jìn)的實驗方式并沒有在中國大多數(shù)著名高校廣泛使用,由此可見,實驗教學(xué)在國內(nèi)的創(chuàng)新研究和推廣工作無疑任重而道遠(yuǎn)的.
〔1〕汪航,孫琪.教學(xué)型虛擬實驗室的應(yīng)用研究[J].現(xiàn)代遠(yuǎn)距離教育,2010(4).
〔2〕劉輝,曾松.計算機(jī)類課程虛實結(jié)合的實驗構(gòu)建[J].計算機(jī)教育,2011(10)
〔3〕湯書森,李蜀嫻,饒增仁.仿真技術(shù)在數(shù)字邏輯電路實驗教學(xué)中的應(yīng)用與實踐[J].高校實驗室工作研究,2012(1).
〔4〕徐尚中,崔仲遠(yuǎn).高?!稊?shù)字邏輯》課程教學(xué)改革的思考與探討[J].現(xiàn)代計算機(jī)(專業(yè)版),2010(9).
〔5〕江晉劍.基于FPGA的可重構(gòu)性數(shù)字邏輯實驗方法[J].安慶師范學(xué)院學(xué)報(自然科學(xué)版),2011(4).
〔6〕羅苑堂.CPLD/FPGA常用模塊與綜合系統(tǒng)設(shè)計實例精講[M].北京:電子工業(yè)出版社,2007.
〔7〕劉福奇.基于VHDL的 FPGA和NoisⅡ?qū)嵗珶抂M].北京:北京航空航天大學(xué)出版社,2011.
〔8〕鄭亞民,董曉舟.可編程邏輯器件開發(fā)軟件QuartusⅡ[M].北京:國防工業(yè)出版社,2006.
TP302.2
A
1673-260X(2012)09-0020-03
河南省教育廳自然科學(xué)項目(No.2010B520035),周口師范學(xué)院校級教改項目(No.J2010086)