周 越
(北京林業大學 理學院, 北京 100083)
為主動應對新一輪科技革命與產業變革,教育部高等教育司于2017年在“卓越工程師教育培養計劃”的基礎上發布了《關于開展新工科研究與實踐的通知》,旨在深化工程教育改革,推進新工科的建設與發展,從而適應以新技術、新業態、新模式、新產業為代表的新經濟的要求。就電子信息科學與技術專業來說,要求培養在信息技術和智能制造產業鏈中熟悉軟硬件的,系統層面上的綜合創新型工程技術人才[1]。
課程是人才培養的核心要素,其質量直接決定了人才培養質量,課程的教學內容和方法要緊跟時代的發展步伐,與時俱進。教育部于2019年出臺了關于一流本科課程建設的意見,為課程教學改革指明了方向。本文結合新工科的建設要求和課程定位,對“EDA技術”課程教學中存在的主要問題做了剖析,并結合近年的教學實踐探討了課程改革的目標和具體措施。
就“EDA技術”課程而言,EDA(Electrical Design Automation,電子設計自動化)指以硬件描述語言為邏輯功能的主要表達方式,以EDA工具軟件為開發環境,以大規??删幊踢壿嬈骷檩d體的設計方式。EDA技術的發展打破了軟件與硬件之間的壁壘,利用硬件描述語言和高性能的綜合工具,可以用類似開發軟件的方式開發硬件。與傳統電子設計技術相比,這種新的方法具有投資少、周期短、便于升級、開發工具智能化等特點,因而在通信、航天、醫療電子、工業控制等領域得到了廣泛的應用。掌握可編程器件的開發、應用技術日益成為電子工程師的基本要求。
在北京林業大學電子信息科學與技術專業中,“EDA技術”是專業核心課程之一,主要教學內容包括EDA集成開發環境Quartus Prime和仿真工具Modelsim的使用,基于硬件描述語言VHDL和Verilog HDL的電子系統設計。從形式上看教學內容偏重于軟件,但本質上又是描述和開發硬件,這決定了“EDA技術”是一門軟硬結合,工程性、綜合性和實踐性都很強的課程。
與數電、模電等相比,“EDA技術”是一門開設較晚的課程,在很多方面尚無成熟的模式可循,經過近年的教學實踐,在教學內容和組織等方面都暴露出一些問題。
硬件描述語言的使用是“EDA技術”課程的核心部分。目前最常用的兩種硬件描述語言是VHDL和Verilog HDL,國內院校在制訂該課程的教學大綱時,或者兼修兩種語言,或者選擇其中一種講授。北京林業大學以往采用的是第一種方案,兩種語言各分配10學時左右。但在總學時并不充裕的條件下,平均分配學時使得兩個章節的教學時間都很有限,只能介紹比較基礎的內容,結果學生對兩種硬件描述語言的掌握都難以達到解決實際問題的程度。這種“概論”式的講法無疑與專業核心課程的定位是不匹配的。
在現有的教材中,硬件描述語言的章節基本上是遵循語法本身的知識結構來組織的,即先說明文字規則,然后講授數據對象和各類運算符,最后介紹各種語句的格式和功能。這種編排方式的優點是條理清楚,結構完整,便于學生隨時查閱,但這種以語法為主線,過度側重介紹語法本身的講法并不合乎語言學習的認知規律。從教學實踐看,脫離實際應用場景,專門記憶大量語法規則,學習效率很低。即使能勉強記住,也只適合應付書面考試,難以靈活運用解決實際問題。此外,規則性的內容羅列過多,也使課堂教學像復述一本流水賬,較為枯燥乏味,無法激發學生的學習興趣。
作為一門實踐性很強的課程,實踐環節是“EDA技術”課程極為重要的組成部分。從EDA開發工具的使用到硬件描述語言的編程開發,都是需要大量上機操作才能真正掌握的。從國內電子類強校開設的同類課程來看,實驗與理論學時的比例通常為1∶1到1∶2[2],且近年來實驗學時所占的比例是趨向增加的。以往北京林業大學開設的“EDA技術”課程只有6個實驗學時,不足理論學時的四分之一,這使課時不足的問題十分突出。在必要的講解之后,往往時間已所剩無幾,只能安排幾個非常基礎的實驗,且以驗證性實驗為主,達不到必要的訓練強度。此外,部分更適合在實驗學時中講授的內容如EDA工具軟件的使用,被迫放在理論學時中進行,但學生在普通教室中只能單純觀看教師演示,無法跟隨示范動手操作,下課后對操作步驟只有一個粗略的印象,當自己上機時很難順利上手。
傳統上,EDA的實驗主要在各型教學實驗箱上完成。目前市場上常見的教學實驗箱產品通常在設計上一味貪大求全,結構復雜,價格昂貴,實際并不切合本科教學的需要。相當一部分功能在整個使用年限內很少能用到。實驗箱本身的體積和重量較大,儲存、攜帶、分發都不夠便利,也不太適合借給學生在課下練習。特別是,EDA教學實驗箱的報價普遍較高且換代周期較短,由于經費限制每次一般只能采購十余臺,這樣即使采用分班上課的形式也只能兩個或者更多學生合用一臺設備。從實踐看,在入門階段采用這種分組的形式,并不能起到共同提高、提升協作能力的作用,往往是自覺性較好的學生唱獨角戲,自覺性差的學生搭便車過關,無從保證教學效果。
新工科人才培養的要求迫切需要對現有課程進行改革。除設立新專業外,目前各高校普遍在傳統電子類專業中增加了大數據、物聯網、人工智能等新興領域的選修課程。但是沒有基礎課程的支撐,學習任何新技術都是無本之木。如何在總學時大體不變的條件下加入前沿課程,同時保證教學效果,是制訂專業課程體系時面臨的挑戰。這要求協調各門課程的分工與合作,精簡重復性內容,激發學生的自主性學習,并將工程實踐和創新能力的培養貫穿于整個課程體系?;谶@些考慮,我們對“EDA技術”課程做了如下改革。
1)增加實踐環節學時
在新版的教學大綱中,“EDA技術”的實驗課時由6個調整到14個,并根據理論課的進度分配到5個教學周中。這樣,EDA工具軟件的使用相關章節可以改在實驗室中講授,便于學生跟隨教師操作練習。實驗內容方面,在保留原有驗證性實驗的基礎上,增加2~4個設計性實驗。通過這些調整,顯著改善了實踐環節內容單薄,訓練不足的問題。
2)借鑒翻轉課堂,挖掘學生課余時間
增加學時數只是部分地解決了學時緊張的問題,課時的調整涉及整個培養方案的協調,受到各種客觀因素的限制,因此還應適當挖掘學生的課余時間。對此筆者借鑒了“翻轉課堂”的教學模式[3]。即學生在課前利用教師提供的各種資料自主學習必要的背景知識,完成源程序的編寫、仿真和初步的硬件測試;在課堂上教師組織學生以討論的形式交流實驗設計思路、實驗心得和改進方向等,協助處理學生未能獨立解決的問題,并就學生在實驗中出現的共性問題進行重點講解;學生在課后繼續改進完善實驗設計并撰寫實驗報告。
1)從實際出發選擇和組織教學內容
“EDA技術”課程的一個主要教學目標是使學生初步具備使用硬件描述語言對數字邏輯電路建模和驗證的能力。在課時有限的條件下,要達到這一目標,兩種硬件描述語言應當有所側重。從社會需求看,國內外大部分企業單位中設計開發以Verilog HDL為主,VHDL只在科研院所和軍工領域中相對普遍一些,以Verilog HDL為主要學習對象更符合農林院校電子專業的定位。從學習難度看,VHDL是強類型語言,語法嚴格,代碼較長,初學者不易上手;Verilog HDL語法相對簡單自由,代碼風格接近學生比較熟悉的C語言,學習的門檻要低得多,更適合作為入門的硬件描述語言?;谶@兩點考慮,筆者對教學內容做了如下調整:將教材中第四章Verilog HDL的講授時間提到第三章VHDL之前,并且用15~16個學時的時間精講。由于兩種硬件描述語言的語法存在很多共通之處,學生在掌握Verilog HDL之后,再學習VHDL的難度會大大降低。利用剩余的4~5學時扼要地介紹VHDL,即可讓學生具備通讀VHDL代碼的能力。通過這些調整,使教學內容符合從易到難的學習規律,也更切合社會的實際需求。
2)補充教材中講解不細致的要點和難點
學生以往所學習的計算機語言只要代碼符合語法規則,都是可以編譯通過的。硬件描述語言用于描述數字電子系統,其代碼經過邏輯綜合等設計處理步驟,將轉化成反映電路具體結構的門級網表。由于綜合器的性能,以及硬件的可實現性等客觀因素限制,可以邏輯綜合的代碼只是硬件描述語言全部語法的一個子集,即使代碼合乎語法規則,也可能是不可綜合的。目前的教材往往對可綜合性的要求言之不詳,學生即使認真研讀教材,有時也難以找出編譯不通的原因。針對這種情況,筆者總結了在實踐中非常普遍,而教材中未提及或一筆帶過的規則和技巧,并添加到教學課件中。例如,描述一個帶有異步清零功能的時序邏輯電路模塊是設計中很常見的問題。異步清零信號本身是一個電平敏感信號,按照教材中介紹的規則在敏感信號列表中沒有posedge/negedge修飾。但可綜合性要求同一敏感信號列表中的所有信號必須都有或者都沒有修飾,如果沒有修飾,就不能和有修飾的時鐘并列;可綜合性還要求不能在兩個always塊中對同一變量賦值,因此也不能把時鐘和清零信號放在不同的always塊中。正確的寫法是:形式上要把異步清零信號加上posedge/negedge修飾,在always塊內部通過合理安排if語句的分支條件可以實現電平敏感的實際效果。只有讓學生清晰地了解這些特殊規則,才能寫出合乎規范的代碼。
3)重構實踐教學內容
提升學生的工程實踐能力是課程教學改革的一個核心內容,在解決了學時過少的問題之后,下一步要做的是結合專業培養目標重構實踐教學內容。作為學生熟悉EDA工具軟件使用和開發流程的必要步驟,原有的基礎驗證性實驗酌情保留,在此基礎上增加設計性實驗。對于后者,采用項目教學法來組織是比較理想的方法[4],即在教師的指導下,由學生自主完成相對獨立的項目,涵蓋資料調研、項目方案的制定和具體實施等內容。
布置合理的實驗項目是項目教學法成功的關鍵,筆者在設計實驗項目時,主要遵循以下幾個原則:
(1) 難度和規模適中。實驗項目應該是多數學生經過必要的努力之后,在合理的時間內可以完成的。為了照顧不同層次的學生,可以將實驗項目設計要求分為基本要求和擴展要求,后者在有余力的條件下完成。這樣既可以達到訓練目的,又不會打擊學生的學習熱情和信心。
(2) 典型性。實驗項目的主體應該是電子系統中具有較大實用價值的典型模塊,便于與電子設計競賽、大創和畢業設計等環節銜接。
(3) 綜合性。從結構上說,實驗項目應該是一個由多個子模塊構成的系統,使學生掌握基本的層次化設計技術。同時,項目應該盡可能覆蓋課程的重要知識點,學生在完成實驗的過程中,也對理論課所學內容做了復習和鞏固。
(4) 結果便于觀察。實驗項目的運行結果應該是可以在七段數碼管、蜂鳴器和示波器等設備上展示的。成果清晰直觀,可以使學生在完成之后更有成就感,同時也便于教師檢查驗收。
當然,項目內容還必須是現有開發板上的硬件資源所支持的。UART和SPI串行通信、PWM調制、DDS,頻率測量等都是在中小型開發板上可以實現的典型應用技術。
例如, UART串行通信是單片機技術課程的教學內容之一,但側重于相關的軟件開發,學生在學習后對UART的理解局限于面向程序員的抽象模型。在完成對UART的硬件描述語言建模后,可使學生獲得對底層硬件的工作過程的深入理解。
仿真和驗證是EDA開發的重要環節,作為初學者學生一般更喜歡用Quartus Prime自帶的波形編輯工具創建激勵信號,并通過觀察仿真波形驗證設計的正確性。這種方式簡便易行,但只能做初級的仿真,應使學生初步掌握在Modelsim中利用Verilog測試平臺仿真的方法。例如,對UART接收模塊,可以要求學生用測試平臺產生測試激勵信號,實現接收數據與測試數據的自動比較并給出問題報告。
將基本模塊的功能適當組合,即可構造有一定綜合性的實驗項目。例如,以PWM方式產生不同頻率的方波信號驅動蜂鳴器可以產生各種音調作為簡易音樂播放器;與UART模塊結合可以實現在計算機中輸入音符文件,在開發板上播放的功能;添加七段數碼管譯碼和驅動模塊可以實現音符的實時顯示;如學生有興趣和余力,還可以自行添加音樂存儲和回放等功能。
1)以案例為中心組織教學
按照認知規律,學習計算機語言的一般過程可以概括為“讀”“仿”“造”[5]。即先通過讀懂別人的代碼,初步領會編程思路和語法規則,然后在模仿和局部修改別人程序的基礎上,嘗試編寫功能相近的程序,最終做到根據具體需求自如地開發各種程序。學習者在閱讀、模仿示例程序和上機調試的過程中,自然而然地掌握常用的語法結構,即使再專門學習語法知識,也是在此基礎上的規范化和系統化。因此,應該從對示例程序的解讀入手組織教學。教材中雖然也提供了一些例子,但這些程序段大都是為說明語法本身的功能服務的,總體過于簡單。硬件描述語言中的語句(特別是順序語句)與其他高級語言差別并不大,對已有一定的計算機語言基礎的學生來說,這些例子的示范作用很有限。當學生嘗試編寫面向實際問題的程序時,由于復雜度陡然增大,往往感到無從措手。這就要求示例程序具備必要的規模和深度,同時應盡可能地體現硬件描述語言區別于一般高級語言的特點。例如,并行結構是硬件描述語言的一個重要特性,也是學生經常不能很好領會的。如果用包含多個并行結構(VHDL中的進程或Verilog HDL中的always塊),且并行結構之間存在通信的程序作為示例,就可以讓學生更好地理解和掌握這個知識點。
2)為學生提供在線指導
2020年上半年的疫情迫使全部課程教學改在線上進行,現在雖已恢復正常教學秩序,但以微信群、QQ群等方式加強師生間的溝通仍然是有益的。學生作為初學者在課下做實驗的過程中經常會遇到各種調試不通的情況,如果能提供及時的指導,可以避免學生長時間卡在某個特定的問題上,大大提升效率。學生一般習慣于單獨向教師提問而不是將問題直接發到群里,QQ群允許非好友成員發起臨時會話,相比微信更適合作為師生間在線交流的平臺。特別是,EDA工具軟件在使用中的一些問題很難只通過文字交流解決,QQ提供了完善的遠程協助功能,教師可以通過遠程桌面直接操作學生的電腦,實時解決學生遇到的難題。
翻轉課堂的教學模式要求學生在課下具備必要的實驗條件。筆記本電腦在學生中的普及率接近100%,設計輸入、設計處理和仿真等環節均可在學生的個人電腦上完成;利用Quartus Prime內置的嵌入式邏輯分析儀,在計算機屏幕上即可觀察信號波形,基本可以滿足各種調試任務。需要學院提供的主要是以可編程邏輯器件為核心的硬件開發環境,而傳統的試驗箱并不適應這一角色。近年出現的“口袋實驗室”打破了傳統實驗室的時限性和封閉性,使學生隨時隨地進行實驗成為可能[6]。“口袋實驗室”本質上是將實驗儀器設備微型化,方便學生隨身攜帶,甚至可以放在口袋中。以STEP MAX10-02 FPGA開發板為例,集成了按鍵、撥碼開關、三色LED燈、七段數碼管、LCD顯示屏、AD/DA轉換器、串口、蜂鳴器、溫度傳感器等資源,而主板僅5×2 cm,加上擴展板也只有半個手掌大小。開發板上自帶配置芯片,無需另備USB-Blaster下載器,利用手機通用的數據線連接電腦和開發板即可實現編程配置。其低于300元的價格只有傳統教學實驗箱的十分之一左右,利用較少的經費即可實現學生人手一臺。在開課后將開發板下發給學生,學生就可以在課余靈活安排時間進行各種實驗,結課后再將開發板回收。
“EDA技術”課程的總評成績由平時成績和期末考試組成,以往由于實驗學時有限,平時成績所占的比重較低,且側重于實驗課的考勤情況,難以全面評估學生的學習情況和綜合能力。針對這種情況對課程考核方式做了若干調整,力圖兼顧公平性、客觀性和有效性。其一是在期末試卷中減少對基本概念、語法規則等記憶性內容的直接考查,相應增加綜合分析類題目的比重,從而杜絕了依靠考前突擊復習,死記硬背輕松過關的可能性。其二是加強對實踐環節的考核。如何客觀評價學生在實踐環節的總體表現是一個難點,教師在較短的學時內觀察幾十名學生的實驗情況并分別給出客觀性強的表現分不具備可操作性,因此仍以實驗結果和實驗報告的撰寫情況作為主要評分依據。實驗結果根據設計目標的完成情況給出相應分數;對實驗報告則結合完整性、規范性和個人創見等方面做出綜合評價。為了盡可能消除靠抄襲、搭便車獲得高分的情況,實驗報告一律提交到自帶查重功能的“課堂派”平臺;以小組為單位完成的實驗,要求學生在撰寫實驗報告時突出個人完成的部分并重點考查,從而確??己私Y果的公平公正。
通過優化教學內容和方法,改善了以往課堂教學內容枯燥、氣氛沉悶、效率低下的問題。在圍繞典型性案例分析和探究的過程中,學生的注意力普遍較為集中,而且能夠針對其中的問題展開積極的討論。近幾年“EDA技術”課程的課堂教學評價由87分左右提升到92分以上,說明學生總體上對教學改革的結果是滿意的。
以往由于訓練量不足,學生通常閱讀程序的能力尚可,而一旦自己動筆,各種低級問題就層出不窮。書面考試受評分標準的客觀性所限,程序類題目以程序補全為主,并不需要學生從頭寫完整的程序,即使如此,以往這一部分的得分率也只有40%左右。教學改革后,學生通過由淺入深,從易到難的訓練,編程能力得到明顯提升。反映到測試中,在難度大體相當的條件下,程序題的平均得分率提高到70%以上。
以往受課時限制,實踐環節以驗證性實驗為主,按照說明的步驟操作即可得到結果,對提升解決實際應用問題能力的幫助有限。通過教學改革,學生在教師指導的基礎上,自主進行資料查閱、方案選擇、程序開發、系統調試,完成有一定綜合性和實用性的實驗項目。從結果看,學生一般都能較好地實現基本要求,部分基礎好的還能在擴展要求之外,進一步加上個人發揮的部分。在近年的畢業設計和電子類學科競賽中,基于FPGA方案的設計多次獲得校級優秀畢業設計、北京賽區二等獎等獎項,體現了學生工程實踐與創新能力的提升。
“EDA技術”作為電子信息類專業的核心課程,是卓越工程師培養中的一個重要環節。當前技術市場與人才市場對EDA 的需求日益增長,凸顯了加強課程建設的必要性和緊迫性。在對“EDA技術”課程教學中存在的問題做具體分析的基礎上,通過重組和優化教學內容,在實踐環節引入翻轉課堂和項目制模式等舉措,在提升課堂教學效果,提高學生創新和工程實踐能力等方面取得了階段性成效。電子設計自動化是目前發展迅速的領域,只有與時俱進,不斷對課程的教學內容和方法進行改革和創新,才能培養切合社會需要的專業技術人才。