艾偉清, 陳景波, 王 偉, 鐘黎萍
(常熟理工學(xué)院 電氣與自動化工程學(xué)院,江蘇 常熟 215500)
“數(shù)字電路”是電子信息和自動化類工科專業(yè)必修的一門基礎(chǔ)課。傳統(tǒng)的“數(shù)字電路”理論教學(xué)以布爾代數(shù)和邏輯卡諾圖為理論工具,以門電路和觸發(fā)器作為基本電路單元,以組合電路和時序電路作為知識主干[1~2]。實驗教學(xué)以中小規(guī)模集成芯片為主要器件,實驗手段局限在器件連線和傳統(tǒng)示波器等的使用。這樣傳統(tǒng)的教學(xué)方式導(dǎo)致培養(yǎng)的學(xué)生缺乏設(shè)計復(fù)雜數(shù)字系統(tǒng)的能力、缺乏熟練使用現(xiàn)代數(shù)字系統(tǒng)設(shè)計、測試和調(diào)試工具的能力,所學(xué)的知識與實際的技術(shù)應(yīng)用脫鉤[3]。
相對于集成度較低的標(biāo)準(zhǔn)芯片,現(xiàn)場可編程門陣列FPGA擁有豐富的內(nèi)部資源,能根據(jù)應(yīng)用需求在硬件層進行靈活修改,適用于大型集成電路和數(shù)字系統(tǒng)的開發(fā)。越來越多的高校開始將FPGA作為主要的教改手段引入到“數(shù)字電路”理論和實驗課程中[2~6]。我院以硬件描述語言(Verilog HDL)為主要設(shè)計手段,以FPGA作為實現(xiàn)工具,將“數(shù)字電路”課程改革為“數(shù)字電路與FPGA設(shè)計”課程,精簡了傳統(tǒng)的教學(xué)內(nèi)容,按照從簡單組合電路到復(fù)雜數(shù)字系統(tǒng)的順序,循序漸進地編排了理論教學(xué)內(nèi)容和實例訓(xùn)練[4]。實驗平臺也由傳統(tǒng)的實驗箱變?yōu)榭诖紽PGA開發(fā)平臺。
傳統(tǒng)的教學(xué)內(nèi)容目的是讓學(xué)生掌握采用集成芯片設(shè)計中小規(guī)模數(shù)字電路的能力,因此,邏輯函數(shù)和卡諾圖的化簡是課程教學(xué)的重點。然而,在實際應(yīng)用中,小規(guī)模芯片的使用越來越少,取而代之的是擁有豐富片內(nèi)資源的現(xiàn)場可編程邏輯器件FPGA。因為器件中各種單元電路足夠多,也就沒必要對邏輯函數(shù)進行化簡[5]。因此,新課程對邏輯函數(shù)和卡諾圖的化簡內(nèi)容進行了大幅度的弱化,只介紹了基本的原則,不作為教學(xué)內(nèi)容的重點。
傳統(tǒng)的組合電路教學(xué)內(nèi)容以門電路為基礎(chǔ),以編碼器、譯碼器、數(shù)據(jù)選擇器、數(shù)值比較器和算術(shù)運算電路的集成模塊為主要對象,培養(yǎng)學(xué)生對小規(guī)模組合電路的分析和設(shè)計能力?;贔PGA在工業(yè)現(xiàn)場的大規(guī)模應(yīng)用,傳統(tǒng)的組合電路分析和設(shè)計方法已經(jīng)不適應(yīng)實際的生成需要。因此,新課程只對典型組合電路的功能進行簡單介紹,教學(xué)重點為Verilog HDL行為描述的常用語法介紹,包括always塊、if語句、case語句、參數(shù)和常數(shù)等,并通過一些常見組合邏輯電路實例來介紹基于Verilog HDL語言的設(shè)計方法,如二進制-BCD碼轉(zhuǎn)換器。
傳統(tǒng)的教學(xué)內(nèi)容以各類鎖存器和觸發(fā)器模塊為基礎(chǔ),并把時序邏輯電路的設(shè)計作為重中之重。在使用FPGA設(shè)計中小規(guī)模時序電路時,不需要考慮狀態(tài)的化簡,也不需要考慮觸發(fā)器的類型。因此,新課程中刪減了時序邏輯電路的傳統(tǒng)設(shè)計方法,弱化了不同結(jié)構(gòu)、功能和用途的鎖存器、觸發(fā)器的教學(xué)內(nèi)容,將教學(xué)重點關(guān)注到這些基礎(chǔ)時序邏輯單元的Verilog HDL描述方法上,如觸發(fā)器、寄存器、移位寄存器和計數(shù)器的Verilog HDL行為描述。在學(xué)生掌握簡單時序電路的FPGA設(shè)計方法后,新課程通過PWM脈沖調(diào)試器、7段數(shù)碼管動態(tài)掃描以及秒表等實例,進一步訓(xùn)練學(xué)生設(shè)計復(fù)雜時序電路的能力。
為了進一步培養(yǎng)學(xué)生利用硬件描述語言和FPGA設(shè)計復(fù)雜數(shù)字系統(tǒng)的能力,新增的教學(xué)內(nèi)容包括:FPGA與Vivado基礎(chǔ),Verilog HDL基礎(chǔ),計數(shù)器和狀態(tài)機架構(gòu),IP核設(shè)計方法,串口通信控制器設(shè)計,內(nèi)部存儲器控制器設(shè)計,VGA控制器設(shè)計以及數(shù)字系統(tǒng)設(shè)計案例。
教學(xué)內(nèi)容主要為可編程邏輯器件的基本電路、表示方法,以及現(xiàn)場可編程邏輯門陣列FPGA的基本結(jié)構(gòu)及原理。教學(xué)重點為實驗平臺Basys3 FPGA開發(fā)板的結(jié)構(gòu)及主要資源介紹,并通過一個兩輸入門電路的FPGA設(shè)計實例說明開發(fā)環(huán)境Vivado的整個設(shè)計流程。
教學(xué)內(nèi)容主要為Verilog HDL語言的基礎(chǔ)規(guī)范,包括標(biāo)識符、數(shù)據(jù)類型、運算操作、關(guān)鍵字、注釋、模塊及端口聲明和定義以及編程規(guī)范。通過對Verilog HDL語言的學(xué)習(xí),讓學(xué)生掌握自頂向下、結(jié)構(gòu)化的數(shù)字電路設(shè)計方法。
教學(xué)內(nèi)容主要為計數(shù)器架構(gòu)八步法和有限狀態(tài)機的Verilog HDL語言描述。計數(shù)器架構(gòu)八步法包括明確功能、功能波形分析、計數(shù)架構(gòu)、加1和結(jié)束條件、定義特殊點、完整性檢查、計數(shù)器代碼編寫、功能代碼編寫。通過PWM流水燈和數(shù)字鐘等實例進一步訓(xùn)練學(xué)生利用計數(shù)器架構(gòu)法設(shè)計復(fù)雜時序電路的能力。有限狀態(tài)機分為Moore狀態(tài)機和Mealy狀態(tài)機。通過序列檢測器、交通信號燈數(shù)字系統(tǒng)、密碼鎖設(shè)計和ADC采樣控制電路等實例實現(xiàn)學(xué)生運用狀態(tài)機設(shè)計簡單數(shù)字系統(tǒng)的能力。
隨著FPGA片內(nèi)資源的繼續(xù)增大,市場機制下的設(shè)計周期越來越短,基于可重復(fù)使用的第三方IP核完成復(fù)雜數(shù)字系統(tǒng)設(shè)計的趨勢已經(jīng)不可避免。Xilinx提倡的積木式設(shè)計,正是與IP核緊密相關(guān),用戶可以將功能性設(shè)計做成一個IP核,然后“組裝”起來成為產(chǎn)品[4]。教學(xué)重點為教授學(xué)生如何使用第三方IP核或打包自己開發(fā)的IP核實現(xiàn)簡單數(shù)字電路和數(shù)字系統(tǒng)的設(shè)計。
當(dāng)FPGA需要與外部數(shù)字設(shè)備進行數(shù)據(jù)傳送時,需要用到串行通信協(xié)議。教學(xué)內(nèi)容為四種串行通信協(xié)議的控制器設(shè)計,即UART總線、SPI總線、I2C總線和PS/2總線串行通信控制器的Verilog HDL行為描述。通過UART回環(huán)、OLED顯示、ADT7420溫度設(shè)置以及PS/2鍵盤控制等實例介紹了如何利用自頂向下的設(shè)計理念,基于先前學(xué)習(xí)的基本數(shù)字電路、計數(shù)器以及狀態(tài)機模塊,設(shè)計出具備通信能力的數(shù)字系統(tǒng)。
當(dāng)FPGA控制不同串行通信接口或不同設(shè)備間通信時,需要將多個字節(jié)的數(shù)據(jù)臨時按需要存入內(nèi)部的存儲單元或從內(nèi)部存儲單元中取出,此時需用到內(nèi)部存儲接口控制器。教學(xué)內(nèi)容主要為兩種內(nèi)部存儲器,即FIFO和RAM的Verilog HDL行為描述。從內(nèi)部存儲器的結(jié)構(gòu)和數(shù)據(jù)傳輸時序等方面介紹了內(nèi)部存儲器的數(shù)據(jù)通信原理,并通過PS/2鍵盤數(shù)據(jù)存取命令實例來訓(xùn)練學(xué)生進一步設(shè)計具備通信和數(shù)據(jù)存儲能力的數(shù)字系統(tǒng)。
一個良好的人機交流數(shù)字系統(tǒng)需要有可視化的數(shù)據(jù)輸出。VGA視頻接口作為當(dāng)前仍是最常用的視頻圖像接口,有必要在教學(xué)中引入。教學(xué)內(nèi)容為VGA接口信號功能、掃描顯示原理以及Verilog HDL行為描述。通過VGA顯示條紋、VGA顯示文字、VGA顯示圖像等實例逐步地訓(xùn)練學(xué)生設(shè)計具備通信、數(shù)據(jù)存儲和顯示功能的復(fù)雜數(shù)字系統(tǒng)的能力。
為了進一步培養(yǎng)學(xué)生利用模塊化的思想設(shè)計復(fù)雜數(shù)字系統(tǒng)的能力,新課程提供了若干數(shù)字系統(tǒng)案例。以俄羅斯方塊游戲機為例,需要用到PS/2通信模塊、RAM存儲模塊、VGA顯示模塊??刂坪诵男枰玫较惹皩W(xué)習(xí)的計數(shù)器架構(gòu)和狀態(tài)機架構(gòu)。通過俄羅斯方塊游戲機的學(xué)習(xí),學(xué)生不僅能夠鞏固先前學(xué)習(xí)的數(shù)字電路和數(shù)字系統(tǒng)的FPGA設(shè)計方法,也能夠加強學(xué)習(xí)的興趣,為后續(xù)的創(chuàng)新實踐課程打好基礎(chǔ)。
傳統(tǒng)的“數(shù)字電路”實驗課程獨立于理論課程,由實驗平臺的教師上課。因此,常常出現(xiàn)實驗課與理論課不同步,理論課沒上的內(nèi)容實驗課已經(jīng)開展了,學(xué)生學(xué)習(xí)效果差。另外,傳統(tǒng)的實驗平臺采用的是集成的數(shù)字電路實驗箱。實驗以74LS系列的小規(guī)模集成芯片為主要器件開展,故障率高,能開展的實驗有限,如基于狀態(tài)機的紅綠燈等實驗就很難實現(xiàn)。
改革后的“數(shù)字電路與FPGA設(shè)計”將實驗課程和理論課程相結(jié)合,由理論課教師直接帶領(lǐng)學(xué)生實驗,避免了實驗與理論不同步的問題。此外,實驗平臺也從集成的數(shù)字電路實驗箱改為了迪芝倫公司的口袋儀器Basys 3 FPGA開發(fā)平臺和Xilinx公司的編程軟件Vivado 2017.4。通過該實驗平臺,學(xué)生可以學(xué)習(xí)現(xiàn)代數(shù)字系統(tǒng)的設(shè)計、仿真和調(diào)試流程,并能夠?qū)⒗碚撜n程中教授的案例逐一實現(xiàn)。這大大增強了學(xué)生學(xué)習(xí)的興趣和教學(xué)效果。
本文以FPGA設(shè)計為基礎(chǔ),從教學(xué)內(nèi)容的精簡和強化、實驗教學(xué)的改革兩個角度介紹了對傳統(tǒng)的“數(shù)字電路”課程的教改探索,旨在培養(yǎng)學(xué)生利用硬件描述語言和FPGA設(shè)計數(shù)字電路和數(shù)字系統(tǒng)的能力。改革后的課程實施效果良好,在學(xué)院工程教育專業(yè)認證中獲得了專家好評。