




摘 要 針對傳統數字邏輯電路實驗內容單一、關聯度不夠、應用性不強、難以激發學生創新思維的問題,基于集成電路專業特點及社會發展需要,探索新的實驗教學方式:以實例為導向,設計常用基本功能模塊,層層遞進,構建系統性綜合實驗。通過由淺入深、由點及面到系統的實驗,提升學生的知識理解能力和創新能力。
關鍵詞 數字邏輯電路;實驗教學;FPGA;綜合性實驗
中圖分類號:G642.423 文獻標識碼:B
文章編號:1671-489X(2024)20-0-05
DOI:10.3969/j.issn.1671-489X.2024.20.120
0 引言
數字邏輯電路課程是電子信息、自動化、計算機等專業的基礎課,在專業學科人才培養中占據重要地位。為鞏固和加深數字電路基本原理的理解,實驗是必不可少的。傳統的數字邏輯電路實驗使用實驗箱,學生搭接驗證性電路,完成簡單的數據測試,或者使用Multisim等軟件工具完成仿真設計和驗證。實驗箱實驗電路固定,實驗相對簡單,限制學生的創新思維[1];軟件仿真實驗缺少實際效果的呈現,學生學習的積極性不高。隨著集成電路技術的發展,現場可編程門陣列(Field Pro-grammable Gate Array,FPGA)出現。FPGA是一種半定制集成電路,使用者可以通過對FPGA進行配置和編程,更高效、便捷地設計靈活多樣的數字邏輯電路[2-3]。
本文探索借助FPGA開發板開設數字邏輯電路實驗,讓學生使用Verilog HDL硬件描述語言,分層、分模塊設計數字電路[4],通過實驗加深學生對理論知識的理解,激發學生的學習興趣,提高學生解決工程問題的能力和運用FPGA開發實踐的能力。
1 實驗內容設計
考慮數字邏輯電路理論知識和硬件FPGA的特點,采用基礎+綜合層層遞進的方式,開發具有實用性、可擴展性的實驗項目,幫助學生更好地理解組合邏輯電路與時序邏輯電路。
1.1 基礎實驗
基礎實驗的目的是使學生熟悉Verilog HDL硬件描述語言、學會使用開發工具Vivado進行設計仿真、掌握FPGA設計中常用模塊的原理和使用方法。對應數字邏輯電路的核心知識點,設計三個常用模塊作為基礎實驗。這些模塊功能相對獨立,利于后期綜合性實驗的移植。
1.1.1 編碼譯碼顯示電路
該實驗由編碼和譯碼顯示兩個模塊組成,電路如圖1所示。第一個模塊是8線—3線優先編碼模塊encoder8to3。該模塊八個輸入信號I7~I0,輸出三位二進制代碼Y2~Y0,其中I7輸入端優先級最高。此模塊還包括用于功能擴展的使能輸入端EI、輸出使能端EO和優先編碼標志位GS[5]。第二個模塊是譯碼顯示模塊seg7_decoder。該模塊接收編碼信號,進行譯碼操作,然后驅動數碼管顯示數字。學生用硬件描述語言編寫代碼,實現編碼和譯碼顯示功能,并進行仿真驗證,波形如圖2所示。
由仿真波形可見:
EI=0時,禁止編碼,led=0燈滅(低電平),GS=EO=0,數碼管a~g不顯示(低電平)。
EI=1時,允許編碼,led=1燈亮,此時有兩種情況:
1)輸入I[7:0]=00,八個輸入端均為低電平(無效信號),此時輸出GS=0,EO=1,數碼管a~g低電平,無顯示;
2)輸入I[7:0]為非00的任何數,表明I[7]~
I[0]中某一個或幾個輸入端為高電平(有效信號),此時輸出GS=1,EO=0,按優先級高低進行編碼操作,然后譯碼驅動數碼管a~g顯示相應數據。
仿真驗證邏輯功能無誤后,進行硬件調試。本實驗采用基于Xilinx Artix-7的FPGA數模混合教學平臺。通過閱讀開發板用戶手冊,對輸入、輸出端口進行引腳分配,選用八個撥碼開關對應I7~I0八位編碼輸入,一位數碼管作為譯碼顯示輸出。編譯綜合Verilog HDL代碼后生成比特流文件,下載到開發平臺上,觀察實驗結果。FPGA數模混合開發板如圖3所示。
1.1.2 流水燈電路
流水燈是典型的時序邏輯電路,它的核心是計數+移位,即根據系統時鐘頻率計算計時長度對應的數值,每當計數器計數到該數值時,顯示位向左(或向右)移1位,如此循環往復,原理如圖4所示。以系統時鐘50 MHz,每隔0.5 s顯示移位1次計算,計數值是25×106。待仿真驗證Verilog代碼無誤后,進行引腳分配,將輸出連接到FPGA開發板的LED燈,即可看到流水燈效果。通過修改計數值,調整流水燈顯示速度。
實驗中可以增加該模塊的擴展功能,如添加按鍵控制,即通過按鍵切換流水燈左移/右移,顯示不同效果。按鍵在切換狀態時可能產生機械彈跳導致的多次觸發問題,需要進行消抖處理。
1.1.3 有限狀態機設計
有限狀態機(finite-state machine,FSM)是用于描述有限狀態系統行為的抽象模型,被廣泛應用于控制系統、通信協議、自動化系統等領域。狀態寄存器存儲系統當前狀態,組合邏輯電路完成狀態轉換譯碼和產生輸出。通過狀態寄存器和組合邏輯電路的結合,FSM能夠靈活地表示不同系統狀態和狀態之間的轉換。
實驗以可樂機電路為例,可投入1元和0.5元硬幣,投幣2.5元出可樂,投幣超過2.5元需要找零錢。經過分析可知,1)輸入有三種情況,即沒投幣、投幣0.5元、投幣1元,分別用00、01、10編碼表示;2)輸出有三種情況,即不出可樂、出可樂、出可樂且找零錢,分別用00、10、11編碼表示;3)七種硬幣組合分別是0元、0.5元、1元、1.5元、2元、2.5元、3元。采用Mealy型狀態機設計,可以簡化掉2.5元和3元兩種情況,最后剩五個狀態,狀態轉換如圖5所示。根據狀態圖,編寫三段式狀態機程序,實現可樂機功能,完成本實驗。
通過以上三個基礎實驗,學生可以很好地理解編碼器、譯碼器、計數器、寄存器等模塊的原理和應用,熟練使用開發工具完成簡單的程序設計、編譯和仿真驗證,學會閱讀開發板手冊,熟悉電路、引腳分配和硬件調試。這些基本能力的鍛煉為后續綜合性實驗的開展奠定了堅實的基礎。
1.2 綜合性實驗
綜合性實驗旨在助力學生知識綜合運用能力、解決問題能力、探索創新等多方面能力的提升,因此,選擇的項目具有實用性、可擴展性、實現方案多樣性的特點,如交通燈控制電路、密碼鎖電路、搶答器電路、空調溫度控制器、出租車計價器等。
本文以空調溫度控制器為例,該實驗的設計要求為:空調有加熱和制冷兩種工作模式,加熱模式時,如果室溫低于設定溫度,空調加熱,否則不加熱;制冷模式時,如果室溫高于設定溫度,空調制冷,否則不制冷。用數碼管顯示室內溫度,且設定溫度可調。
綜合性實驗項目屬于系統設計,需要考慮將系統劃分為獨立的功能子模塊。在模塊劃分過程中減少模塊之間的依賴關系,盡量確保各子模塊相對獨立;同時采用開放式接口設計,以減少功能擴展時代碼修改的工作量。通過分析及反復論證,將該實驗項目劃分為四個子模塊:按鍵模塊、溫度檢測模塊、電機驅動模塊和數碼管顯示模塊。系統頂層電路如圖6所示。這種模塊的劃分結構清晰,既注重模塊的獨立性,又考慮模塊間相互連接的靈活性。
1)按鍵模塊key_cnt,用于控制各模塊間的工作狀態和驅動數碼管顯示。該模塊一共六路輸入,分別是時鐘信號clk、復位信號rst_n、四個按鍵信號key0~key3。key0用于切換工作模式是制冷、加熱還是實時顯示溫度;key1用于對設定溫度進行加1操作;key2用于對設定溫度進行減1操作;key3用于控制電機的工作模式。
2)溫度檢測模塊ds18b20_dri。該模塊通過數字溫度傳感器ds18b20采集當前室溫并將數據temp_data傳給數碼管顯示模塊。ds18b20溫度轉換與讀取流程為:初始化→發SKIP ROM命令(0xcc)→
寫入0x44,溫度轉換→延時→復位→發SKIP ROM命令(0xcc)→寫入0xbe,讀取高速暫存器→連續讀出兩個字節溫度數據→結束或開始下一循環。該模塊的操作固定,適合采用狀態機實現。
3)電機驅動模塊motor。該模塊模仿空調的工作狀態。當處于加熱模式時,如果室溫比設定的溫度低,電機正轉(制熱),否則電機不轉動;當處于制冷模式時,如果室溫比設定的溫度高,電機反轉(制冷),否則電機不轉動。
4)數碼管顯示模塊seg_led,顯示相應的室溫和設定的溫度。
學生將在基礎實驗中熟練掌握的顯示、控制、狀態機等模塊設計技巧移植到綜合設計項目中,在整個項目實踐過程中,既考慮子模塊的功能實現,又兼顧各子模塊之間的關聯,不斷反思和調整設計,在滿足設計要求的情況下,確保整個系統的可維護性和穩定性。綜合性實驗項目過程中的能力轉移有助于學生將基礎技能應用于更復雜的工程項目,通過不斷嘗試,形成精進思維。
2 教學方式和成績評定
2.1 教學方式
為確保實驗有序有效開展,從基礎實驗到綜合性實驗分為三個階段。
2.1.1 準備階段
教師主要介紹FPGA設計流程、開發工具的安裝和使用等相關內容,引導學生閱讀開發板手冊,逐步熟悉硬件資源和軟件語法。
2.1.2 基礎實驗
教師布置三個基礎實驗,同時講授實驗原理、實驗步驟,給出可供參考的設計方案和部分程序。學生按照實驗講義自主完成設計、仿真、硬件測試。教師在實驗過程中安排答疑,指導學生自主解決實驗過程中的問題。
2.1.3 綜合性實驗
綜合性實驗是基礎實驗的升級,要求學生進行需求分析并給出設計方案。學生通過查閱文獻、交流分享,不斷嘗試和優化設計。教師在指導過程中主要檢查設計方案的合理性和可操作性,同時引導學生學會反思,總結經驗,完善設計。通過該實驗提升學生對數字電路的理解和應用能力,鼓勵學生自主學習,培養學生的創新思維和實踐精神。此階段的考核采用答辯+實物演示的方式進行。
2.2 成績評定
實驗教學的成績評定不同于理論教學,為防止抄襲現象發生,總成績評定不僅包含程序設計、仿真驗證、硬件調試、語言表達、靈活應變等方面,還包含遵守實驗室規章制度、安全意識、工作態度、與他人溝通協作能力、實驗報告的撰寫規范性等方面,將職業素養、工匠精神、創新意識等德育因素融入其中??茖W合理的成績評定機制可以充分調動學生學習的積極性,激勵學生快樂有效地學習[6]。
3 結束語
本文以硬件描述語言和FPGA實現數字邏輯電路實驗,凸顯集成電路專業特色,通過由表及里、循序漸進的實驗項目,學生能夠熟練使用EDA開發工具和仿真軟件,對數字電路理論知識的理解更加深入透徹,文獻檢索、歸納總結、溝通協作、自主創新等綜合能力均得到鍛煉和提升。
4 參考文獻
[1] 陳藝,王懷登,陳娟.數字電路實驗教學平臺的設計與
實現[J].數字通信世界,2022(8):87-89.
[2] 張琥石,陳妮,何婷婷,等.基于FPGA技術的參與式教
學在“數字電路與邏輯設計”課程中的應用[J].科技
風,2023(6):125-127,132.
[3] 劉凱,王紅航,鄧春健,等.基于FPGA的不同數字電路
設計方法教學探討[J].電子測試,2019(16):15-17.
[4] 張霞,張麗果,李立珺.數字電路與系統設計基礎課程改
革的探索與實踐[J].中國現代教育裝備,2018(11):52-
54.
[5] 王風燕.基于8-3線編碼器的擴展應用探析[J].技術與
市場,2010,17(2):3-4.
[6] 宋強.思政元素融入數控機床控制技術課程教學的教改
初探[J].中國現代教育裝備,2021(19):83-85.
*項目來源:2023年天津市普通高等學校本科教學改革與質量建設研究計劃項目“產教融合背景下集成電路創新人才培養改革研究與實踐”(項目編號:A231006004);2024年天津理工大學教學改革項目“以學生為主體的集成電路設計與集成系統專業綜合性實驗項目探索“(項目編號:ZX24-05)。
作者簡介:郭映,副教授;蘇林、石艷梅,講師。