曾 浩*,韓 術,何 偉
(重慶大學電工電子基礎實驗教學示范中心 重慶 400044)
對于電子信息類本科人才培養,“數字電子技術”課程的基本要求是通過對常用電子器件、數字電路及其系統的分析和設計的學習,使學生獲得數字電子技術方面的基本知識、基本理論和基本技能,為深入學習數字電子技術及其在專業中的應用打好基礎[1]。“數字電子技術”課程實驗環節,一直是實現課程目標的重要教學手段。然而,傳統的實驗通常采用實驗箱完成,這樣的教學手段存在明顯不足,不符合現代工程教育理念[2-4]。目前工程上采用FPGA作為數字電路實現的主要手段[5],所以,選擇FPGA 平臺作為實驗操作的硬件載體,開發與課程教學目標相符合的相關實驗,是目前“數字電子技術”課程實驗需要解決的問題。
隨著FPGA 芯片技術的發展,中小規模的FPGA 平臺成本并不高,基本可以控制在1000 元以下,對于數字電子技術實驗室建設來說,并不困難。一個基本的數字電子技術硬件平臺,核心模塊包括FPGA 芯片、AD/DA 信號采集和輸出、存儲器、時鐘源、電源,也包括諸如顯示、按鍵、總線擴展接口等輔助功能的模塊,它們的整體結構和連接關系如圖1 所示。遺憾的是,為了增強通用性,市場提供的這些FPGA 開發板往往并不包括AD/DA 部分,因而,硬件平臺自制擴展AD/DA 通常是實驗室需要自行研制的工作。

圖1 硬件平臺總體框圖
擴展板的AD/DA 相關參數可以根據實驗內容選擇。在數字電子技術實驗課程中,AD/DA相關內容的實驗教學目的往往是學習AD/DA 的基本使用方法,而不是追求高的性能[6]。課程組自行研制的AD/DA 擴展板選擇ADI 公司9280 和9708,它們都是并行接口,使用簡單。ADC 的分辨率為8 位,最高采樣率達到32MSPS;DAC與之對應,分辨率也為8 位,最高轉換率為125MSPS。為了簡化模擬電路設計,ADC 之前的模擬電路沒有設置抗混疊濾波,但為了消除DAC 輸出各次諧波,DAC 輸出采用了RC 類型的無源低通濾波器,其通帶截止頻率為10MHz。
“數字電子技術”的實驗課程內容,應該與課程理論教學密切結合,根據培養方案設計,總共可以是16 或者32 學時。一方面,要通過實驗教學,使得學生掌握FPGA 使用的基本技能,另一方面也要求學生理解理論教學中教授的各種基本數字電路的應用和設計方法。對于電子信息類本科學生,“數字電子技術”課程主要內容包括了組合邏輯電路、觸發器、時序邏輯電路、存儲器、可編程邏輯器件、脈沖整形電路、ADC 和DAC。顯然,除了可編程邏輯器件,其他部分都可以作為一個獨立單元,設置相應的實驗內容。實驗內容與理論知識對應關系如表1 所示。該實驗內容設置,一方面涵蓋了理論教學的主要內容,另一方面,通過實驗內容的精心設計,各個實驗間具有繼承性,后續實驗往往需要使用前期實驗掌握的技能。

表1 實驗內容與理論知識對應關系
為了使學生能夠應用圖1 所示硬件平臺,首先要對平臺基本結構進行介紹。由于平臺中的電源輸入、下載線接口、時鐘與FPGA 關系這些基本接口是建立正常硬件開發環境必需的內容,所以在第一次實驗中應該進行介紹,使得學生能夠正確搭建硬件平臺。ADC 和DAC 雖然也是重要的硬件組成部分,但由于第一次實驗時,理論教學內容尚未對其進行講述,此時可以不進行介紹。
此次實驗的重點內容還是EDA 軟件開發環境的建立和基本使用方法學習。不同的FPGA 廠家有著各自不同的EDA 開發軟件,其中Quartus 和Vivado 是兩款主要的產品,具體使用哪一個取決于硬件平臺采用何種FPGA。雖然不同的開發軟件細節不同,但整體使用方法是完全相同的。
軟件開發環境的使用包括很多必要的步驟。可以通過一個最為簡單的邏輯運算實現的例程,使學生經歷從建立工程到通過下載線下載程序的完整過程。在教學過程中,建立工程和源文件、完成編譯是教學重點,但難點卻是實現邏輯仿真、下載線硬件配置的方法。另外,管腳約束和邏輯分析儀的使用由于其復雜性,可以在后續實驗中學習。
組合邏輯電路設計實驗的目的,一方面是理解常用組合邏輯電路功能,比如邏輯門、譯碼器、數據選擇器等,另一方面則是進一步熟悉FPGA 的軟件開發環境。
在這個實驗中,設計一個兩輸入多輸出的邏輯電路,輸入為兩個播鍵開關,輸出接一個7 段數碼管。電路設計要實現的功能就是根據播鍵開關輸入4 種狀態,分別在數碼管上顯示4 個不同的數字。電路設計中的一個難點就是顯示譯碼電路設計需要考慮硬件平臺顯示電路設計,即顯示譯碼電路是在FPGA 內部還是在FPGA 外部。同時,由于顯示分為靜態和動態兩種,顯示的數字采用2 個數碼管更為合適。
學生通過該實驗,一方面可以掌握顯示電路的設計方法,另一方面也可以掌握FPGA 管腳分配方法,也就是管腳配置文件或者叫物理約束文件建立方法。還有,考慮大多數高校在培養方案設置中把數字電子技術和EDA 技術作為兩個課程,FPGA的硬件編程語言通常是在EDA課程中學習而不是數字電子技術課程,所以,學生實驗中源文件采用原理圖文件格式更為合適。
觸發器是設計時序邏輯電路的基本器件,通過實驗理解觸發器的邏輯功能是一個必要的教學內容。觸發器功能相對簡單,但通過巧妙設計,也可以實現一些實用的邏輯功能。實驗可以選擇一個D 觸發器,實現對輸入時鐘信號的二分頻。
電路輸入是一個固定頻率的方波時鐘,輸出為兩個管腳,一個是輸入時鐘經過非門的輸出,另一個則是輸入時鐘經過D 觸發器分頻后的輸出。為了增加可觀測性,通過雙通道示波器對輸出的兩個信號同時進行觀察,驗證是否實現了二分頻作用。為了增加趣味性,在完成基本功能后,可以對D觸發器支路進行各種調整,比如采用兩個D觸發器串聯,實現對輸入時鐘的四分頻;通過連接D 觸發器輸出,觀察輸出時鐘的極性。
時序邏輯電路可以實現很多功能,其中計數器是典型的時序邏輯電路。實驗采用集成計數器74160 或者74161來實現分頻功能。通過置位法、復位法均可以實現任意進制計數,學生可以在實驗中對不同的計數方法進行驗證。由于具有了2.3 和2.4 所述實驗的基礎,學生可以把計數器計數值通過數碼管進行顯示,也可以通過示波器直接對電路分頻輸出信號進行觀察。
驗證設計電路功能的另一個方法就是使用邏輯分析儀。通過計數器實驗,要求學生掌握對數據的在線觀測方法,即邏輯分析儀的使用方法,是本次實驗的另一個重要目的。教學過程中,教師首先要對邏輯分析儀的原理進行說明,特別強調參考時鐘的作用。學生在掌握邏輯分析儀原理的基礎上,就能夠理解邏輯分析儀使用過程中各個參數設置的含義,從而靈活應用。
根據數字電子技術課程教學大綱,脈沖單元電路是獨立的一章,涉及施密特觸發器、單穩態觸發器、多諧振蕩器、555 電路。但這些器件在實現原理上,需要依靠外圍阻容器件,所以并不能完全靠FPGA 實現,無法在本實驗硬件平臺上完成。事實上,脈沖單元電路最為重要的作用是對數字信號的整形,因而,設計一個按鍵去抖動電路,可以幫助學生理解脈沖整形的實際工程意義。
按鍵去抖動電路有不同的實現方法,采用單穩態觸發器較為簡單,也可以采用D 觸發器等其他基本觸發器。
在觀測去抖動效果時分兩個步驟:第一步,把一個機械按鍵作為電路輸入,按鍵輸入信號連接一個計數器的時鐘,計數器的計數值作為輸出,用FPGA 片外數碼管顯示,顯然,數碼管顯示的數字就是按鍵產生脈沖的數量。第二步,在按鍵輸入和計數器之間接入去抖動電路。通過兩個步驟下數碼管計數值的變化,可以讓學生清楚觀測到去抖動電路的效果。
雖然在理論課程大綱中存儲器所占學時遠不及組合邏輯和時序邏輯電路的內容,但存儲器卻是數字電子設備中非常重要的組成部分,所以,針對存儲器的實驗環節必不可少。FPGA 具有建立片內存儲器的功能,既支持ROM也支持RAM。實驗內容是建立一個基于ROM 的正弦查找表,然后通過時序邏輯電路讀取該查找表,并用邏輯分析儀工具進行觀察。
實驗首先要求學生采用MATLAB 等輔助工具,建立具有一定bit 寬度的定點正弦數據,該數據為一個完整的正弦周期,數據長度決定于采樣率和正弦頻率。然后把該正弦數據按照FPGA 數據文件格式要求,生成一個可以加載進ROM 的數據文件。接著就是建立工程和源文件,源文件中包括了ROM 正弦查找表,也包括了根據時鐘CLK循環讀取正弦查找表的時序電路,用于產生地址數據。為了循環讀取ROM,采用一個計數器產生ROM 的地址數據。最后,為了觀察讀取數據是否正確,采用邏輯分析儀觀察,并以圖形方式顯示。顯然,讀取ROM 數據的時鐘頻率,會影響邏輯分析儀中顯示正弦波的頻率。
該實驗內容不僅僅讓學生掌握了存儲器的基本使用方法,對于計數器、邏輯分析儀、外部輸入時鐘等前期實驗涉及的知識和技能也起到了進一步鞏固的作用。
在現代的信號處理中,把模擬信號轉換為數字信號,往往是實現系統功能的首要步驟。而且隨著信號處理帶寬的增加,ADC工藝越來越復雜,使用方法也越來越復雜,涉及各種工作寄存器配置、高速數據接收、多ADC 間信號同步等復雜問題。為此,讓學生掌握簡單的ADC 使用方法,能夠為學生奠定良好基礎。
實驗首先需要在基本硬件平臺上,加上前文提到的獨立設計的信號采集輸出子板。9280 型號的ADC 雖然不需要進行復雜配置,但采樣時鐘控制、數據接收需要學生設計合理的邏輯電路來完成。實驗除了基本軟件編程要求,輸入信號建議采用外部信號源而不是板上晶振,這一步驟有利于學生掌握信號源儀器使用方法。觀察數據則是通過邏輯分析儀,對ADC 輸出數據以圖形方式顯示,從而可以直觀確定ADC 采樣數據是否正確。作為提高要求,可以讓學生學習片內PLL改變時鐘頻率的方法,從而控制采樣率。
在信號處理中,DAC 的使用和ADC 的使用往往是同時需要完成的工作。與ADC 實驗相同,DAC 實驗也需要前文所述的擴展板。通過DAC 轉換時鐘和接口數據操作,設計一個信號發生器,輸出一定形式的模擬信號,使學生掌握DAC 的基本使用方法。
為了與前期實驗相結合,DAC的數據來源可以有兩種選擇,一是采用基于ROM 的正弦查找表,二是采用ADC采樣獲得的數據。這樣的設計可以提升作為最后一次實驗的綜合性。當然,信號波形可以是正弦,也可以是其他任意波形。DAC 的轉換時鐘頻率可以通過計數器分頻功能降低,也可以通過PLL 倍頻功能提高。DAC 輸出可以通過示波器進行觀察,并可以通過邏輯分析儀觀察波形進行對比。
由于該實驗涉及信號源、示波器這些儀器的使用,也涉及時鐘、ROM、計數器、邏輯分析儀等基本模塊的使用,能夠大大檢驗學生綜合設計和調試數字電路的能力。
重慶大學“數字電子技術”課程2020年在教育部“雙萬計劃”中被評為首批國家級一流課程,其實驗內容建設由重慶大學國家級電工電子基礎實驗教學示范中心完成,是一流課程建設的重要組成部分。采用前文介紹的實驗平臺和實驗內容,已經在電子信息類本科學生中開展了連續3 屆學生的教學實踐檢驗。從高年級學生發展情況可以看出,“數字電子技術”實驗課程改革顯著提升了學生的實踐能力、創新意識,提升了學生對于專業的學習興趣。首先,通過實驗,學生對數字電路的知識體系有了較為清晰的認識,不僅掌握了組合邏輯和時序邏輯電路的設計方法,也認識到了存儲器、可編程邏輯器件、ADC 和DAC 這些基本數字電路器件的重要作用。其次,學生掌握了FPGA這一電子信息技術領域重要實現工具的使用方法,為后續EDA 課程、數字信號處理、通信原理等課程奠定了良好基礎,特別有效支撐了這些課程的課程設計環節。另外,學生利用FPGA 使用技能,在電子設計競賽、互聯網+大賽、大學生創新訓練計劃、電子綜合設計、畢業設計等等綜合性的設計活動中,表現優異,成果也更加豐富。
基于FPGA 平臺的“數字電子技術”實驗課程平臺開發,為相應的實驗內容開發提供了良好的硬件基礎。合理的實驗內容開發,有效提升了學生對數字電路理論知識的全面掌握,為后續課程學習奠定了良好基礎。課程建設方法投資小,容易掌握,具有良好的可復制性。