肖 杰,李 強,龍勝春,胡海根,盧書芳
(浙江工業大學 計算機科學與計算學院,浙江 杭州 310023)
數字電路與數字邏輯課程是計算機科學、計算機+自動化等專業本科生在硬件技術方面的專業基礎必修課。通過該課程的學習,學生能夠獲得數字電路與數字邏輯方面的基本理論、基本知識和基本技能,理解數字電路的工作原理及應用,掌握數字電路的分析與設計方法,為后續相關課程的學習奠定基礎。在物聯網發展大背景以及教育工程專業認證的大環境下,社會發展對學生提出了更高的要求,要求學生能夠根據特定需求對復雜計算機系統的子模塊或子單元進行軟硬件設計和實現,理解計算機系統工程化管理的概念與方法[1-2]。
然而,當前的教學實踐主要通過設計一定的課內實驗,使學生掌握常用電子儀器的使用方法和常用中大規模集成電路的裝配方法,加深學生對數字電路與數字邏輯有關理論的理解,以此培養學生分析設計和解決實際問題的能力[3]。這些設計實驗不具備復雜工程問題背景,學生難以在設計過程中體會相應的思想和方法以及提升足夠的創新意識,也沒有融入社會、健康、安全、法律、文化、環境等因素的考量,而這些因素是當前計算機專業學生需要進一步提升的素養,也是當前學生創業、創新實踐中所需的內容[4]。
我們在實際教學過程中還發現,計算機專業學生往往表現出更加擅長軟件編程,在硬件方面則較為薄弱,具體表現為對硬件缺少了解或者缺少興趣。目前采用VHDL語言開展邏輯電路設計的實踐性教學,對計算機專業學生來說還是較為困難,主要在于缺少相應課程的支撐從而造成學生缺乏EDA編程基礎,難以在短期內快速掌握VHDL語言。因此,在實驗教學過程中,利用類C的Verilog HDL語言,結合學生擅長軟件編程的基礎,通過融入數字邏輯電路知識的學習與實踐,便可較好地在復雜工程綜合設計與運用方面鍛煉學生的能力。
一般來說,數字電路與數字邏輯課程計劃學時數為64學時,其中授課56學時,實驗8學時。該課程的課內實驗8學時只局限于基本數字邏輯電路知識的練習,定位于基本電路的練習和掌握,見表1。顯然,這還不足以支撐該課程教學內容以達成其教學目標。

表1 數字電路與數字邏輯課程課內實驗安排
為了進一步提高學生的實踐動手能力,特別是學習現代數字系統設計方法,開展共計20個學時的數字邏輯電路課程設計實驗課程是有必要的。該課程最初采用VHDL語言,然而從近幾年計算機專業學生的實驗效果來看,教學效果并不理想。主要原因有兩點:①VHDL較為復雜,計算機專業學生沒有EDA編程基礎,難以靈活運用該工具語言進行電路設計,實踐中大都采取“依葫蘆畫瓢”的方式,缺乏主動思考和分析,不利于充分發揮學生的主觀能動性;②當前工程領域中,較多企業采用Verilog HDL進行電路設計[5]。
針對計算機專業的特點與現狀,該課程初步安排了4個理論學時和16個實驗學時進行展開,同時還要求學生自主安排相應的課外自學課時。
理論教學的安排見表2。首先講授FPGA結構和原理,有利于學生快速熟悉數字邏輯電路的設計與實驗平臺;其次講授Verilog HDL語言,便于計算機專業學生快速掌握這一門類C的硬件設計語言;最后借助一個簡單的數字系統設計方法的演示案例,使學生初步掌握電路的基本設計方法與技巧。

表2 數字邏輯電路課程設計理論教學安排
理論教學完成后,再安排“2必做+1自選”的實驗操作與設計內容。需要說明的是,必選題目側重于學生掌握基本知識和熟悉操作;自選題目則充分參照公司項目的操作流程,需要學生組隊完成市場調研、分析設計、確定開發工具、項目實現、評估優化、開發說明書等環節,最終通過項目演示與答辯的形式通過驗收評價。
實驗課題的安排見表3。

表3 數字邏輯電路課程設計實驗操作安排
1.2.1 必做課題1:12進制計數器
實驗要求:基于原理圖設計12進制計數器,原理框圖如圖1所示,狀態轉換圖如圖2所示。計數脈沖由實驗板上的按鍵產生,計數值通過LED數碼管顯示,由EDA軟件自帶元件庫提供的74192(十進制加減計數器)和7447(共陽7段LED顯示譯碼器)元件構成。
1.2.2 必做課題2:4位數字頻率計
實驗要求:①分別采用自頂向下與自底向上的設計方法進行設計。頂層設計可采用原理圖,也可采用Verilog HDL語言描述,底層模塊均通過Verilog HDL語言描述;②系統的輸入標準時鐘信號頻率為1MHz,可測量的頻率范圍為1~9 999 Hz;③系統具有復位信號且有溢出指示,計數頻率通過4位共陰數碼管顯示。
1.2.3 自選課題3
學生可自由選擇3個題目中的1個進行設計實現。自選題目的整個實驗過程參照實際工程項目的實施流程來實施。首先,學生進行自由組隊,2~3人/組,其中,1~2人負責市場調研(以確定擬采用的元器件型號)、電路結構設計、產品測試等,1人負責模塊代碼設計;其次,根據市場調研結果,確定所采用的元器件具有較小的成本,并確定所設計的電路結構具有較高的可靠性以及較強的可操作性,然后開展項目任務的設計、開發與測試;最后,完成報告的撰寫以及答辯材料的準備,并進行答辯,需要注意的是內容上要求完整,包括項目設計目的、結合調研結果的總體方案設計(設計要求、方案論證與選擇、設計思路及原理)、單元模塊設計、頂層設計、系統功能仿真及調試、總結與體會、參考文獻、源代碼等。

圖1 12進制計數器原理框圖

圖2 12進制計數器狀態轉換圖
(1)自選題1:出租車計費器的設計與實現。要求實現如下功能:①實現計費功能,計費標準:按行駛里程計費,起步價為7.0元,并在行駛3 km后按2元/km計費,當計費器達到或超過20元時,每km加收50%的車費,車停不計費;②現場模擬功能:以開關按鍵模擬km計數,能模擬汽車啟動、停止、暫停等狀態;③將車費和路程分別以10進制形式顯示出來。
(2)自選題2:智力搶答器的設計與實現。要求實現如下功能:①實現5人搶答器,一旦有人搶答成功,其他人則搶答無效;②在數碼管上顯示搶答成功者的序號;③搶答成功后開始20 s的答題倒計時,當倒計時結束,通過蜂鳴器響1 s提示回答問題時間到,并開始新一輪搶答,且數碼管要顯示倒計時開始所剩時間;④主持人可通過按鍵清除所有信息。
如圖3所示,經過多次試驗發現,該打磨機器人從端口最低點出發,在沿端口周向轉動進行打磨的過程中會發生打滑失效,尤其在的轉角范圍內明顯存在一個打滑失效區。發生打滑失效的原因是壓緊力過小,也就是說,施加的預緊力在垂直方向的分力小于摩擦力和重力在該方向的合力,機器人在慣性的作用下發生打滑失效,這說明機器人發生打滑失效與預緊力、摩擦力及其自身重力等因素有關。
(3)自選題3:數字鬧鐘的設計與實現。要求實現如下功能:①具有基本的計時功能;②鬧鐘時間可調;③鬧鐘時間到通過蜂鳴器響30 s,中途可以通過按鍵停止;④若無外界干預,鬧鐘每隔3 min響一次,直至15 min后結束。
答辯過程主要由學生PPT展示和教師問答環節構成,使用分組答辯,每組2位老師,再根據實際情況邀請校外專家。首先,學生進行系統演示;其次,學生展示PPT進行答辯;最后,教師點評。
學生成績由以下幾部分構成:功能實現(包括測試)占比50%,可靠性評價[6]占比10%,代碼質量評價占比10%,成本開銷占比10%,報告完整性占比10%,回答問題占比10%。
從實驗過程及結果的反饋來看,針對FPGA結構和原理、數字系統的設計方法這兩部分內容,絕大部分學生能較好掌握,對于Verilog HDL語言基礎的掌握情況則相對較差。一方面,前面兩項內容相對簡單且學生有較好的程序設計基礎,掌握起來相對容易;另一方面,學生平常接觸更多的是串行化的程序設計風格,對Verilog HDL的并行化程序設計風格還不太熟悉,因此實踐過程中較容易犯錯。
實驗1的目的是讓學生通過簡單設計實例熟練掌握Quartus II的基本操作,包括設計輸入、編譯、仿真、管腳鎖定與下載,并熟悉DE2實驗板。實驗結果顯示,學生均能通過基于原理圖方法實現對12進制計數器的設計與仿真。
實驗3的目的是讓學生將Verilog HDL編程與實際工程結合起來,熟悉編制和調試程序的技巧,掌握分析結果的若干方法,進一步提高上機動手能力,培養使用設計綜合電路的能力和規范編程的思想,養成提供文檔資料的習慣。通過這個實驗,學生可以進一步理解觸發器、計數器、鎖存器等的工作原理,掌握利用Verilog HDL行為描述綜合數字系統的基本方法。盡管在5 h的時間內,沒有學生能完全正確地完成這個實驗的設計與仿真,但他們在課外的幾個星期里仍然探討并最終基本完成了這個實驗。雖然學生未能充分結合市場調研結果設計出一個低成本、高可靠性的產品,但是培養了把控產品成本與可靠性的意識、設計綜合電路的能力及團隊協作精神。
總之,這些實驗課題的設計在安排上是從基礎逐漸過渡到擴展提高的能力要求。通過設計12進制計數器,學生可以進一步鞏固和加深對相關課程基本理論和概念,提高綜合運用所學知識的能力;而4位數字頻率計能使學生掌握自底向上和自頂向下的設計方法,充分感受這兩種設計方法的特點。設置一些有趣的自選課題,能調動學生的積極性,促使學生進行獨立分析,最終實現這些具有一定工程復雜性的設計課題,培養學生綜合設計和實踐創新的能力,并在此過程中培養團隊合作能力,初步了解工程項目開發實踐流程。
為了更好地了解本課程設計實驗教學的效果,我們在開課前后分別設計了一套匿名問卷并在學生中進行調研。結果顯示,大部分學生還是對硬件感興趣的,如在開課之前雖然幾乎所有學生沒有接觸過VHDL這樣的硬件開發設計語言,但是仍有35%的學生對硬件開發感興趣,并且認為學習VHDL或者Verilog HDL今后會有用。然而,受限于數字邏輯電路理論課的學習,高達80%的學生認為自己只會基于原理圖完成簡單電路的設計,無法獨立完成更復雜的電路設計或者對電路進行功能與時序測試。
通過本課程設計的學習,90%的學生對硬件開發感興趣;83%的學生認為有必要多開設一些硬件相關的工程實踐類實驗課程;78%的學生認為實驗課題設置合理,通過查閱資料并結合教師課堂所講授知識可以完成實驗。某組學生自選課題的部分實驗結果展示如圖3所示。此外,也有20%左右的學生認為需要教師更詳細地講解并提供更多的相關資料;還有10%左右的學生反映對自選課題毫無頭緒,不知從何著手。

圖3 某組學生自選課題部分實驗結果展示
針對學生反映的問題,我們采取了如下措施幫助學生順利完成課題設計任務:①利用教師與學生的業余時間額外開設了4學時的理論教學課程,供需要的學生自愿聽課;②通過開通即時聊天的群聊與單聊模式、公布移動電話號碼等方式,方便教師隨時隨地為學生答疑。從實際效果來看,相比第①種方式,第②種方式明顯更優。
在數字邏輯電路課程設計的實驗教學改革過程中,我們采用Verilog HDL開展設計性實驗,并設計“2必做+1自選”逐層遞進實驗課題的實踐,使學生理解數字電路的工作原理及應用,掌握數字系統的基本設計流程與方法,熟悉復雜電子系統的相關技術標準、知識產權、產業政策和法律法規;此外,通過產品的可靠性分析與成本測算,培養學生的產品質量與成本控制意識。自選題采用團隊方式開展,以項目答辯的方式進行考核,充分鍛煉學生的團隊協作和綜合設計開發能力。從實驗效果來看,針對計算機專業學生的該項實驗教學改革是有效的,但是實驗過程中也暴露出一些不足,如學生還難以熟練運用Verilog HDL進行復雜電路設計,未能揚長避短設計出更為合理的實驗課題以適應當前計算機行業的發展需求等,這也促使我們在今后的實踐教學中進一步探索,不斷深入和完善。
[1] 中華人民共和國教育部. 工程教育專業認證標準(試行)[EB/OL]. [2017-12-30]. http://www.moe.edu.cn/s78/A08/gjs_left/moe_742/s5638/s3861/201110/t20111008_125419.html.
[2] 趙宏, 王愷. 我國大學計算機課程現狀及改革探索[J]. 中國大學教育, 2015(2): 50-54.
[3] 龍勝春, 孫惠英, 肖杰. 電路與電子技術基礎實驗指導[M]. 北京: 清華大學出版社, 2015: 1-59.
[4] Palnitkar S. Verilog HDL: A guide to digital design and synthesis[M]. 2nd ed. New Jersey: Prentice Hall Press, 2003: 226-237.
[5] Ciletti M D. Verilog HDL高級數字設計[M]. 2版. 北京:電子工業出版社, 2014: 1-4.
[6] Xiao J, Lee W, Jiang J, et al. Circuit reliability estimation based on an iterative PTM model with hybrid coding[J]. Microelectronics Journal, 2016, 52(4): 117-123.