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