黃 方 劍
(電子科技大學 能源科學與工程學院,成都 611731)
·實驗教學與創新·
主線實驗教學法研究及其在VHDL程序設計課程中的應用
黃 方 劍
(電子科技大學 能源科學與工程學院,成都 611731)

現有的不少實驗課程中,練習實驗普遍存在著零散、不系統的缺憾。為了讓同學們在有限的課程實驗中更好地得到系統地訓練,主線實驗教學法將一系列高度系統化的實驗練習銜接起來,途徑各個階段性小實驗,最后完成終極實驗。整個實驗流程具有很強的目的性和循序漸進性,各個子項之間環環相扣,承前啟后。通過在本科課程VHDL程序設計中近兩年來的教學測試,與原來的傳統教學方法成效相比,采用主線實驗的教學方法能夠大大地提高同學們學習的主動性,層層遞進的階段實驗使大家一直保持著學習的動力與激情,解決問題式的實驗要求又能夠培養創新意識。同時,終極實驗的完成也帶來很強的學習成就感。
超高速集成電路; 硬件描述語言; 主線實驗教學; 系統化
實驗教學是理工科課程學習必不可少的一個重要環節。傳統的教學模式,有些將實驗與理論部分分割為兩個單獨的課程、或者雖在同一課程內,但為兩個獨立的階段,這些做法容易導致實踐練習與理論知識學習之間的交互性出現斷層,學生的理解、動手情況不能很好地反饋到理論教學中去。而在實驗時,學生往往是跟著老師看一遍,做一遍,做完之后就忘掉。學習的主動性不高,沒有成就感,很容易失去學習的動力和激情,就更不要說創新了。如何解決上述問題,教學人員提出了一些改革方案,有結合應用階段強調理論與實驗的結合教學方法[1];一些新的教學體系,如“三位一體”實驗教學體系[2]、計算機專業硬件基礎課程實驗教學體系[3];基于情景教學的實驗平臺[4];使用翻轉課堂的教學模式[5]等。文獻[6]中研究了Matlab與EDA軟件聯合仿真的新方法,利用Matlab的數據計算、分析等優勢,納入信號與系統、數字信號處理等多門課程中的知識點,提高了實驗課程的綜合性水平。文獻[7]中對實驗所使用的硬件系統提出改革,以模塊化的思想引導學生學習、自制系統。這些研究均有很好的教學效果。文獻[8]中提出了“實驗教學內容是影響實驗教學質量的重要因素之一”的觀點。文獻[9]中提出了“設計型實驗和探究型實驗是實現高層次實驗教學目標所必需的實驗類型”的觀點。對練習實驗的設計提出了新的要求。文獻[10]中也提出要選用與科研、生產和生活相聯系的課題,以激發學生學習和應用的興趣。因此,如何設計實驗項目,以便更好地服務于教學、練習,需要更多的考慮與探索。如何消除實驗的零散性,提高實驗部分整體的系統性,同時,激勵學生的學習、動手積極性、自主性、創新性,是一個需要持續研究、探索的問題。
VHDL程序設計或者其他相似硬件描述類語言課程在多個理工科類高校均有開設。作為電子設計自動化的一個主要工具,硬件描述類語言與一般的軟件類語言在語法上有些相似,但在設計思路上有很大的不同。如何讓同學們迅速掌握其設計方法,明白與軟件類語言的區別,同時又能吸取原有的軟件類語言設計經驗給授課教員提出了不小的挑戰。
在針對教學實驗的設計進行大量研究后[11-14],提出了圍繞主線實驗的教學方案。這個方法的主要特點是將理論和實驗融合在一起,建立整個實驗階段的系統性,消除了單個實驗的零散性。具體來說,就是設立一個(或多個)終極目標實驗以及一些圍繞它的階段性實驗,即每個小實驗都是在為最終目標做準備,具有承前啟后的作用。教師提供各個實驗的設計原理、要求、參數,而將具體實現的算法留給大家自己思考。這樣,就容易保持學生的實驗中的動手積極性,使得他們能有自己的想法并且實現之。同時,通過實驗,能夠給學生們帶來成就感,激勵他們的創新意識。通俗地講,整個實驗階段,就好像是在打一個具有很多關卡的游戲,完成一個小實驗就相當于通一關,當完成所有階段性實驗及最后目標實驗(打通關)時,那成就感不言而喻。
從理論上而言,在這個模式下設計實驗有點類似于EDA中的自頂而下的設計流程。在提出最終目標實驗后,教師需要根據理論知識點將其分解為多個模塊。當然,為了更多的練習,也可以衍生出更多的相關小實驗。在學習相應的知識點后,學生根據各個實驗的要求,自行完成程序設計。
本節以VHDL程序設計課程的具體安排來說明主線實驗教學法的教學流程,并以各階段實驗來闡述涵蓋的知識點及學習重、難點。
(1) 在課程設計時選定主線實驗。因本課程性質是全校性的素質公選課,教學內容是介紹基本語法及設計思路。主要知識點涵蓋有:基本結構(實體、結構體)、各類并行、順序選擇語句、元件例化、有限狀態機等。主要目的是引導學生進入以硬件功能描述的方式來設計電路的領域。所以,選擇了帶暫停功能的數碼二極管時鐘顯示電路設計作為主線實驗。
(2) 將選定主線實驗分解為幾個階段性實驗。其實,這個劃分也與功能分塊相似。當然,為了教與學,對其進行了一些改動。具體包括(按教學進度排序):譯碼電路、(帶暫停功能的)對時鐘信號上升沿的計數器、(帶暫停功能的)1位固定位數碼管顯示電路、1位切換位數碼管顯示電路。下面對各階段練習實驗進行詳細說明。
第1階段譯碼電路。這是一個組合電路器件,要求:輸入0~9范圍內的整數,輸出共陰極(或者共陽極)數碼管顯示該輸入數字的7位控制向量。這個器件可以有很多種描述方式,可以使用when_else, with_select, if, case等語句,也可以用純組合邏輯方式將控制向量的每一位表示出來。在介紹了最基本的結構語法(實體、結構體聲明)及簡單的選擇語句(一般是when_else結構)后,就可以安排學生著手此實驗。通過這個實驗可練習的語法點很多,除了具體的選擇語句,還可以分辨并行與順序語句結構上的不同。此實驗只要求仿真,沒有開發板操作。通過該實驗,除了語法練習,還要求同學們對開發平臺(選用QuartusII)的使用要熟練。教學人員可以根據需要,將其中一、兩種方法作為必做題,余下的作為拓展練習。練習階段,只講原理及要求,不講具體代碼。激勵學生自己動手寫。以檢查RTL電路圖是否是純組合電路及仿真結果是否正確作為合格條件。
第2階段(帶暫停功能的)對時鐘信號上升沿的計數器。這也是一個仿真實驗,最基本的要求是對輸入的時鐘信號的上升沿計數,從零開始數至給定的值再循環,并輸出當前的計數以及進位信號。此實驗主要是練習使用不完整if語句構成時序電路的方法、數據類型轉換等。進一步可以要求增加端口實現異步復位功能,實現同步使能,再進一步實現暫停功能等。特別是暫停功能的實現,經課堂觀察,同學們很容易受到一般軟件語言工程設計慣性思維的影響。通過此實驗,同學們除了能夠得到相應的語法練習以外,還能夠加深以軟件代碼設計硬件電路的思想。特別是能具體地理解是綜合器將程序映射為相應電路的,與一般高級軟件語言設計不一樣,并不是所有符合語法規則的代碼都能夠成功完成預想功能的。這個實驗也有很多衍生實驗,基本上與計數相關的都能涉及,比如:修改輸出的進位信號,可以很容易地拓展為分頻器。
上述兩個實驗是基本實驗,對同學們的要求是一定要通過自己的思考來解決,基本上在4或5個課時內大部分認真的同學都能很好地完成。這兩個實驗也都是仿真類型的,不用上板子測試。經過此兩階段,同學們對QuartusII平臺的操作基本上均已熟練,VHDL基本語法的掌握已入門。
第3階段(帶暫停功能的)1位固定位數碼管計數顯示電路。從這個實驗開始,同學們開始接觸開發板的使用及多層系統的設計。基本的要求是在開發板的8位數碼二極管上使用一位固定位置,每秒計數一次,循環顯示計時0~9。進一步,可以加上異步復位功能、暫停功能、更改計數頻率等要求。同學們逐步學習如何將軟件與硬件相連接,了解開發板的實際性能,體會到仿真結果正確并不能代表硬件設置滿足要求,并且能夠從開發板的實際使用中發現的問題出發,尋找解決方案,培養獨立發現、思考問題的能力,進一步提高大家的激情和創新意識。比如,在仿真時是無法發現按鍵抖動問題的。在實現異步復位功能時,雖然要求有按鍵,但也不容易感覺到。只有在實現暫停功能時,才會真正體會到按鍵防抖的重要性。大部分同學在設計此電路是都能夠體會到按鍵防抖的必要性,大家也能夠自行設計方案解決。除了語法學習,根據功能來進行元件劃分及調用也是這個實驗的一個重要結構訓練點。大家逐漸開始有意識在復雜系統中進行功能分塊,慢慢開始理解自頂而下的設計思路。
第4階段1位切換位數碼管顯示電路。此實驗的基本要求是用8位數碼管顯示一個固定的1位數字,每秒鐘切換一個顯示位置,8個管位循環顯示。進一步可以要求8個位置上的固定數字不同;更改切換位置的頻率,尋找8個位置能夠同時顯示數字的切換頻率等。這個實驗主要是要求同學們理解數碼管掃描顯示的原理。據課堂統計,顯示固定數字比較容易,但當要求不同位置顯示不同數字時,學生容易出現不知道如何將數字顯示到對應位置上的問題,對功能模塊的劃分也需要多次重復設計。總之,這個實驗是理解數碼管掃描顯示的重、難點,需要3個左右的課時才能較好地完成。
在完成這4個階段實驗后,就可以開始進行最終實驗的設計了:(帶暫停的)8位數碼管掃描時鐘顯示電路。此實驗是前面4個實驗的系統綜合,基本上涵蓋了除去有限狀態機以外的所有基礎語法點。基本要求是利用開發板上的晶振進行計時,并用8位數碼管以hh-mm-ss格式顯示。進一步,可以要求異步復位、暫停等功能。這個實驗對同學們的考查,從結構上來說,是對復雜系統的功能模塊劃分;從語法來說,是基本上所有的基礎語法點;從操作來說,是QuartusII平臺的整體設計流程及開發板上晶振、數碼管、按鍵等器件的使用。具有很強的綜合性。這個實驗涉及多次分頻,據課堂觀察,雖有前面實驗做鋪墊,但在剛開始時,有部分同學仍然對功能模塊劃分不夠熟練,直接使用if語句嵌套計數來計時。部分同學有分頻的意識,但也未使用多層次器件設計的模式。當然,這樣設計的器件從功能上來講是成功的,但整個程序的可讀性不太好,代碼的可復用率也較低。在自行設計階段完成后,教師可對同學們的設計進行總結,邀請幾位設計思路有特色的同學來分享交流。在從功能模塊劃分角度稍作分析解釋后,大部分同學能夠對自己的器件重新進行模塊劃分、設計,基本上程序可讀性會有很大提高,整體電路圖層次、分塊清晰。
在本課程中,還設計了選做的擴展實驗:1路交通信號燈數碼管及LED燈顯示電路。基本要求:利用有限狀態機設計,仿照交通燈讓紅黃綠三色LED燈循環亮固定時長,同時用數碼管顯示倒計時。因為開發板上并未設置紅黃綠三色LED燈,所有相應接口需要從開發板原理圖上查找而得,所以這個實驗可以訓練同學自行查閱資料的能力,培養興趣。經過前面實驗的練習,這個實驗成功率很高。
在前幾屆授課中,基本上都是采用傳統的教學模式,雖然采用了理論課時與實驗課時的交替教授方法,實驗練習也設計得不少。但是從實驗課堂答疑發現同學們的動手積極性并不高,設計進度也比較緩慢。自從最近2年開始采用主線實驗教學法后,3學期共6個實驗班,效果可謂越來越好。同學們理論學習,實驗動手的積極性都有很大提高。特別是在一開始實驗時,就提出了最后目標,不少同學課下自行查閱相關資料。由于整個實驗階段具有很強的系統性與循序漸進性,同學們在整個階段中都能夠保持很高的動手熱情,每個階段實驗練習時,不時提出新的設計方案,最后綜合實驗的完成率也比往年大有提高。
經過近2年的教學,發現主線實驗教學法非常適合語言類課程入門階段的教學。系統性的實驗能夠讓同學們從一開始就有目標;循序漸進的階段實驗能讓大家一直保持學習的激情;完成一個階段時,又能夠找到學習成就感;每個階段可有多種方案,這又可以培養大家的創新意識;實驗中,特別是需要結合硬件開發板的時候,可能碰到的各種硬件問題,又可以給大家提供獨立發現、思考、解決問題的機會,提高了同學們進行科學研究的能力。
現在的實驗方案主要是針對入門教學等級的,我們準備進行更深入的研究,為更加有效地發揮實驗教學在創新型人才培養中的作用,針對不同學習深度的要求設計出更多的主線實驗。
[1] 王保麗,印興耀,張廣智.“理論-實驗-應用”一體化教學的探索與實踐[J].實驗室研究與探索,2015,34(11):152-155.
[2] 王革思,周 天,高明生,等.構建“三位一體”實驗教學體系培養本科生創新型人才[J].實驗技術與管理,2016,33(9):18-21.
[3] 盛建倫,鞏玉璽,劉淑霞,等.計算機專業硬件基礎課程實驗教學體系的研究[J].實驗室研究與探索,2013,32(10):387-391.
[4] 職會亮,馬 超,施宏偉. 基于情景教學的創新實踐教學平臺研究與實驗過程設計[J]. 現代教育技術,2011,21(10):112-116.
[5] 丁雪梅,張曉君,王 鵬,等. 翻轉課堂教學模式在大學實驗教學中的應用[J]. 實驗室研究與探索,2015,34(6):207-212.
[6] 李琳琳,任家富,吳建平,等. EDA新實驗模式的研究與設計[J]. 實驗室研究與探索,2014,33(12):176-178,315.
[7] 黃衛華,賈歷程. 基于FPGA的EDA實驗系統改革與實踐[J]. 實驗室研究與探索,2012,31(4):203-206.
[8] 許家瑞,周 勤,陳步云,等.構建創新實驗教學體系的探索與實踐[J].實驗技術與管理,2009,26(5):1-4.
[9] 趙建華. 高校實驗教學目標探析[J]. 高教探索,2012(4):71-73.
[10] 徐彥凱,雙 凱,姜 珊. EDA課程設計課題的開發和體會[J]. 實驗室研究與探索,2011,30(2):114-116.
[11] 唐志強.計算機專業數字邏輯實驗的改革與創新[J].實驗室研究與探索,2013,32(10):182-184.
[12] 杜新虎,韓芝俠.基于FPGA的智力競賽搶答器實驗設計與實現[J].實驗室研究與探索, 2008,27(3):36-39.
[13] 頡洪睿,孫丹丹,魏學軍. 基于CPLD的智能密碼鎖設計與實現[J].實驗室研究與探索,2015,34(11):99-102.
[14] 徐愛萍,張玉萍,涂國慶. 基于VHDL之CPU設計與實踐[J].實驗室研究與探索,2014,33(5):120-124.
ResearchontheMain-lineExperimentTeachingMethodandItsApplicationtoVHDLDesign
HUANGFangjian
(School of Energy Science and Engineering, University of Electronic Science and Technology of China, Chengdu 611731, China)
In some experiment courses, there is a common weakness that the exercise experiments are discrete and not systematic. In order to provide some systematic training for the students in the limited courses, the main-line experiment proposed in this paper is a systematic collection of a series of experiments including some phase ones and a final goal. The entire course is with a strong purpose and the items are hierarchical and connected to each other. This method has been applied to design course of VHDL (very high speed integrated circuit hardware description language) for undergraduate students for two years. Compared to the traditional method, the main-line experiment teaching method can greatly improve student initiative, keep their motivation and passion to study, foster their innovation and bring them a very strong sense of achievement.
very high speed integrated circuit; hardware description language(VHDL); main-line experimental teaching; systematization
TP 312; G 642.0
A
1006-7167(2017)09-0136-04
2016-09-22
國家自然科學基金(61374001);電子科技大學教師實驗教學改革研究項目(BKSJY-2016-85)
黃方劍(1980-),男,四川富順人,博士,講師,現從事電力電子穩壓器設計研究及電子設計自動化的教學工作。Tel.: 18980412131;E-mail: huangfangjian@hotmail.com