主線實驗教學法研究
時間:2022-03-21 10:22:00
導語:主線實驗教學法研究一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。
在針對教學實驗的設計進行大量研究后[11-14],提出了圍繞主線實驗的教學方案。這個方法的主要特點是將理論和實驗融合在一起,建立整個實驗階段的系統性,消除了單個實驗的零散性。具體來說,就是設立一個(或多個)終極目標實驗以及一些圍繞它的階段性實驗,即每個小實驗都是在為最終目標做準備,具有承前啟后的作用。教師提供各個實驗的設計原理、要求、參數,而將具體實現的算法留給大家自己思考。這樣,就容易保持學生的實驗中的動手積極性,使得他們能有自己的想法并且實現之。同時,通過實驗,能夠給學生們帶來成就感,激勵他們的創新意識。通俗地講,整個實驗階段,就好像是在打一個具有很多關卡的游戲,完成一個小實驗就相當于通一關,當完成所有階段性實驗及最后目標實驗(打通關)時,那成就感不言而喻。
從理論上而言,在這個模式下設計實驗有點類似于EDA中的自頂而下的設計流程。在提出最終目標實驗后,教師需要根據理論知識點將其分解為多個模塊。當然,為了更多的練習,也可以衍生出更多的相關小實驗。在學習相應的知識點后,學生根據各個實驗的要求,自行完成程序設計。
2應用
本節以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燈,所有相應接口需要從開發板原理圖上查找而得,所以這個實驗可以訓練同學自行查閱資料的能力,培養興趣。經過前面實驗的練習,這個實驗成功率很高。
3結語
在前幾屆授課中,基本上都是采用傳統的教學模式,雖然采用了理論課時與實驗課時的交替教授方法,實驗練習也設計得不少。但是從實驗課堂答疑發現同學們的動手積極性并不高,設計進度也比較緩慢。自從最近2年開始采用主線實驗教學法后,3學期共6個實驗班,效果可謂越來越好。同學們理論學習,實驗動手的積極性都有很大提高。特別是在一開始實驗時,就提出了最后目標,不少同學課下自行查閱相關資料。由于整個實驗階段具有很強的系統性與循序漸進性,同學們在整個階段中都能夠保持很高的動手熱情,每個階段實驗練習時,不時提出新的設計方案,最后綜合實驗的完成率也比往年大有提高。
經過近2年的教學,發現主線實驗教學法非常適合語言類課程入門階段的教學。系統性的實驗能夠讓同學們從一開始就有目標;循序漸進的階段實驗能讓大家一直保持學習的激情;完成一個階段時,又能夠找到學習成就感;每個階段可有多種方案,這又可以培養大家的創新意識;實驗中,特別是需要結合硬件開發板的時候,可能碰到的各種硬件問題,又可以給大家提供獨立發現、思考、解決問題的機會,提高了同學們進行科學研究的能力。
現在的實驗方案主要是針對入門教學等級的,我們準備進行更深入的研究,為更加有效地發揮實驗教學在創新型人才培養中的作用,針對不同學習深度的要求設計出更多的主線實驗。
作者:黃方劍 單位:電子科技大學