楊敏+王芳+龍艷花
摘 要 工科實驗往往被認為是嚴肅無趣的,如果能打造一些趣味實驗,對吸引學生的課堂投入有很大的促進作用。在FPGA課程教學中,如何通過增加實驗的趣味性提高學生對實驗的專注度和主動性,值得去探究。通過“打地鼠”實例,具體闡述趣味實驗的開展過程。
關鍵詞 FPGA;趣味實驗;實驗教學;系統設計
中圖分類號:G652 文獻標識碼:B
文章編號:1671-489X(2017)12-0139-02
1 引言
增強課程的趣味性在中小學教育中比較提倡,普遍認為是符合學生身心發展規律的舉措,滿足學生愛說、愛玩的特點。趣味課堂能夠有效促進知識吸收,到了大學階段卻鮮有提及。目前高校中對課程內容及課程實驗趣味性的嘗試主要發生在體育、藝術類學科,而在工科尤其是信息學科范圍內非常少見。其實大學生正處于精力充沛、求知欲強的年齡階段,正需要在專業方向和人生目標上得到正確的指導。
工科知識普遍語言平實,偏重嚴謹的邏輯思維和大量的實踐操作,加上教師授課時一板一眼、不茍言笑,工科給學生留下“艱深”“古板”“無趣”的印象,往往還沒開始學就已經抗拒了。如果教師在課堂上能夠適當加入一些趣味性的內容,結合一些好玩的游戲,引入身邊常見的電子、科技元素,使學生在輕松愉悅的氣氛中進行主動探索,有助于吸引學生將精力更多地投入問題鉆研、任務解決中,順利實現知識的消化和創新。筆者在將FPGA課程的實驗環節改造成趣味實驗以來,學生的實驗完成主動性和自我評價都有很大提高。
2 FPGA課程中的實驗設置
FPGA(Field Programmable Gate Array,現場可編程門陣列)課程是很多高校電子與信息類專業的必修科目,主講VHDL/Verilog HDL語言在FPGA器件上的開發編程方法。由于VHDL/Verilog HDL這一類硬件描述語言在FPGA開發平臺上的可移植性很好,實驗前不需要預先選擇特定的器件,也不必對具體目標芯片的器件結構有非常細致的了解,因此,很多教材包括國外的教材[1-2]都是花大篇幅介紹硬件描述語言的語法規則,做編程的基本訓練,而很少介紹硬件有關的內容。在硬件描述語言的編程訓練上,又停留在常見組合邏輯電路和常見時序邏輯電路的描述階段,如各種碼制轉換電路、多位加法/減法器、計數器、移位寄存器和簡單的狀態機等中規模數字邏輯電路的獨立設計。這些實驗編程簡單,電路規模小,強化了某一種基礎電路的訓練,對掌握FPGA的開發有非常重要的奠基作用,但僅有這些是不夠的。
FPGA不僅自身具備實現高速復雜數字邏輯的強大功能,近年來更在SOPC(System On Programmable Chip,可編程片上系統)方向上迅速發展,以FPGA為核心加部分可選外圍設備的軟硬件協同設計,在電子制造和測試領域有著越來越成熟的運用。要讓初學者通過一門課程了解到,課程實驗中除了要有簡單的基礎實驗,還必須有相對復雜的芯片級系統設計,將基本組合邏輯與時序邏輯做出各種整合,暫且把這部分內容叫作提高實驗。提高實驗決定了學生對FPGA開發能夠達到的認識高度,具有系統性、綜合性、完整性的特點,難度必須適中。很多學生也是真正從這里開始領會FPGA與其他電子芯片的根本區別,了解FPGA作為邏輯開發首選器件的優勢,體會電子設計的艱難。
現有的很多FPGA教材,要么缺少這個部分,要么直接給出CPU設計這樣的更高難度的綜合實驗,并不適合作為給定課時下的課內實驗。那么,如何挑選和規劃提高實驗,是教師需要重點考慮的部分。而為了學生在實驗過程中能夠順利地實現過渡,提高設計水平的同時減少畏難情緒,趣味實驗是較好的選擇。
3 趣味實驗的開展
以打地鼠實驗為例,打地鼠是日常流行的一個小游戲,基本上所有學生都熟悉它的游戲規則,但對它的印象只停留在游玩項目繁多、聲音嘈雜的游戲室里。當這個主題和畫面出現在實驗室里時,學生的情緒會很快被回憶調動起來,積極地配合實驗要求即游戲規則去思考如何在FPGA的平臺上實現打地鼠游戲,因為這里的實驗要求不再是古板的、疏遠的,而是親切的、生動的。一方面,把游戲作為實驗,學生會切身感受到游戲中的快樂;另一方面,當學生完成思考的時候,會有一種把生活科技掌握在手的感覺,對后續的設計工作充滿自信。游戲程序的模塊劃分如圖1所示,軟件功能上主要包括地鼠顯示模塊、計分模塊和計時模塊。從設計原則上看,打地鼠這個系統里囊括了FPGA課程中需要教會學生的多個元素。
現代電子系統設計自頂向下的設計方法 以實現整個游戲的功能作為設計目標,需要學生全盤考慮頂層設計:這個設計任務應該劃分為多少個子模塊?各個子模塊之間又有怎樣的相互聯系?盡管頂層設計的程序需要放在后面完成,但這種從系統全局出發的思考是進行高層次電路設計必經的思路。
頂層程序設計的輸入輸出端口與FPGA器件引腳之間的對應關系 需要學生從系統功能出發,分析出設計這個系統需要哪些輸入輸出端口?各有多少位?還要結合實驗室使用的FPGA開發板,考慮選擇哪些輸入元件才能讓敲擊的動作更快更順手?選擇開發板哪些位置上的輸出元件才能讓顯示部分安排得更加清晰合理?使用LCD顯示屏更好,還是使用多個七段數碼管更好?等等。最后通過查找開發板使用手冊,自行定義設計端口與器件引腳的分配關系。
系統中包含多個重要的常見邏輯電路設計 從游戲功能分析,系統中必須包含多個顯示模塊,包括地鼠位置的顯示、游戲分值的顯示和游戲時間的顯示,涉及多位二進制數轉換為BCD碼并在七段譯碼器上顯示的碼制轉換設計,是重要的組合邏輯電路,分秒計時和游戲計分都是計數器基本功能的修改,是重要的時序邏輯電路。其中隱藏的分頻電路設計是每一個實用型系統設計所必需的,也屬于時序邏輯。
在實驗過程中,根據實驗內容劃分為3~4課時,難度分為兩級。計分模塊與計時模塊設計方法相近,都包含兩位數BCD碼的轉換,屬于第一級難度,Verilog HDL模塊的大體結構如下:endprint
case (xx%10) //數值的個位
……………
endcase
case(xx/10) //數值的十位
……………
endcase
因此,將學生每兩人編成一組,兩位學生先分別負責第一級計分模塊與計時模塊的編程實現,再合作完成第二級難度分頻模塊和頂層模塊的設計,在硬件實現層面也是由兩人相互配合查找手冊和部署引腳。在實驗過程中既有合理分工又有合作,每位學生結合自身游戲經驗增加對設計的理解,是促使這個實驗相對于其他同等難度的實驗能夠更快速有效完成的重要因素。
在FPGA教學過程中,類似可選的實驗內容還有很多,只要符合以下兩點要求。
1)實驗內容生活化,可以是孩童時期玩的游戲,也可以是日常生活中的常見電路,只要它們的操作規則和結果是學生熟悉的,就不會把實驗作為深奧嚴肅的學術課題而敬而遠之。
2)實驗內容不能過于簡單,應該在一個實驗中包含若干個組合和時序邏輯基本設計,通過幾個實驗覆蓋FPGA課程全部知識點。實驗內容也不要過于復雜,應該在進行拆解之后,保證1~2次的實驗課內能夠完成。
符合這兩點要求,實驗主題的選取未必需要教師一手包辦,如果可以由學生自主設計一些趣味實驗,更能提高學生的自主學習能力[3]。實驗的趣味性不僅僅體現在實驗方案和實驗內容上,在組織實驗過程、討論實驗結果等階段,均可以考慮加入趣味的設計環節[4],不斷激發學生的積極性和創造性。
4 總結
FPGA課程針對本科中高年級學生開設,是數字邏輯電路課程之后進行電路系統設計的重要拓展。為了學生能夠盡快投入系統設計提高實驗,實驗過程應包含有生活化、趣味性的內容,寓學于玩、寓教于樂,更能提高學生的主觀能動性和創造性。
參考文獻
[1]Ciletti M D. Verilog HDL高級數字設計[M].李廣軍,等,譯.2版.北京:電子工業出版社,2014.
[2]Cavanagh J. Digital Design and Verilog HDL Fundamentals[M].CRC Press,2008.
[3]馬書云,王慧,吳方平,等.自主趣味實驗提高自主學習能力的實踐[J].實驗室技術與管理,2015(9):194-196.
[4]黃飛騰,翁國慶,吳建元.大學工科實驗趣味教學法探討[J].中國電力教育,2013(7):160-161,184.endprint