葉朝輝, 華成英, 張利偉, 楊知樂, 田 珊
(清華大學 自動化系, 北京 100084)
SOPC(system on programmable chip,可編程片上系統),即用可編程邏輯技術將整個系統集成到一塊芯片上。SOPC通常是指基于FPGA(field-programmable gate array,現場可編程門陣列)的帶1個或多個軟核或者硬核微處理器以及一些外圍設備的片上系統SoC(system on chip)。SOPC也是一種特殊的嵌入式系統,既具有微處理器處理能力強大的優勢,又具有FPGA設計方式靈活和在系統可編程的優勢,因此利用SOPC設計電子系統的應用越來越多,例如文獻[1]介紹了其在通信領域的應用,文獻[2]介紹了在醫療領域的應用,文獻[3]介紹了在能源領域的應用,文獻[4]介紹了在圖形圖像處理中的應用?;诖?在電子系統設計相關教學中引入SOPC技術的內容就成了必然趨勢。
目前國內外開設的SOPC系統設計課程大致分為2大類。第一類是嵌入式系統或計算機結構課程,基于FPGA平臺設計一個微處理器系統或者計算機系統,側重于培養學生對微處理器結構或計算機結構及外設的認識和理解,如參考文獻[5]—[9]。第二類是電子系統設計課程,基于FPGA平臺,利用已有的軟核或硬核微處理器和總線設計IP核,組成系統,培養學生設計SOPC系統的能力,如參考文獻[10]—[14]。以上這些課程所用的實驗平臺有的是自己研制的,有的則是直接應用了Altera或者Xilinx提供的教育版實驗平臺。
我校自動化系從2010年開始在本科生二年級暑期的“現代電子系統設計”課程中開設了基于FPGA的SOPC電子系統設計內容,并從相關課程知識的融合和銜接、培養學生進行SOPC設計最有利的方法、SOPC電子系統最適合的實際應用、自動化專業的特點等4個方面研究教學方法和教學內容,幾年中不斷改進內容體系、教學方法和實驗實踐環節,形成了一門獨具特色和富有創新性的課程。
“現代電子系統設計”課程在大二暑期開設,學生已經具備了微處理器及外設、數字和模擬電子技術、C和C++語言等技術基礎和一定的實驗技能,綜合這些知識設置課程內容和實驗,有利于培養學生綜合設計的能力和創新設計能力。因此“現代電子系統設計”課程首要的教學指導思想是采用先進的集微處理器和外圍設備的SoC作為設計系統的核心芯片。
本課程最初選擇了PSoC作為電子系統設計的核心器件,之后逐步增加了FPGA-SOPC和ARM CortexM4的內容。基于FPGA的SOPC系統通常帶有軟核或硬核微處理器,由于軟核微處理器的系統設計方便靈活,因此本課程選擇了基于Altera FPGA的軟核NIOSII的SOPC系統,同時選擇Altera 提供的DE2教學實驗平臺,該平臺被很多國內外大學課程采用。
由于SOPC集數字可編程邏輯陣列FPGA及微處理器和部分外設于一體,因此可以運用“計算機語言與程序設計”“計算機原理及應用”和“數字電子技術基礎”3門課程知識綜合進行系統設計。另外,當需要實現SOPC系統與計算機通信時,實驗室提供計算機通信接口程序,如UART、USB等,而應用程序則需要學生自己編寫,可以運用“計算機語言與程序設計”和“C++程序設計與訓練”2門課程知識進行設計。為了融合模擬電子技術基礎課程的知識,實驗室提供了各種各樣的傳感器和執行器以及現代模擬器件,可以設計SOPC的外圍傳感和執行電路。從傳感器采集到的信號經過放大后直接通過電壓比較器或模數轉換器ADC,將模擬信號轉換為數字信號后再輸入SOPC,而SOPC輸出的數字信號則通過數模轉換器DAC轉換為模擬信號,之后再經過功率放大或直接輸出給執行器。以上教學設計思想可以將之前的5門課程知識融合在1門課程的FPGA-SOPC教學內容中。
由于SOPC系統設計內容需要綜合運用多門課程知識,對學生來說難度較大,因此開課之初的2年主要考慮如何將實驗開設起來并積累經驗,重點從3個方面研究了進行SOPC設計最有利的方法。
(1) 編寫符合認識規律的實驗指導書,使學生容易理解什么是SOPC、SOPC有何特點、如何設計查找合適的參考資料等。
(2) 確定循序漸進2個層次的實驗教學過程,讓學生一步一步完成實驗,減少難度。2個層次實驗為基本實驗和提高實驗,使絕大多數學生能夠完成實驗。
(3) 精心設計實驗內容。基本實驗難度較小,有詳細的指導手冊。之后設計了幾個有一定難度的提高實驗,同時將提高實驗拆分為幾個步驟,減少了學生綜合的困難。通過2年的實踐,學生不僅能夠完成實驗,而且非常感興趣。在此基礎上,又將實驗改為3個層次,增加了綜合實驗。同樣,為了降低難度,除了將綜合實驗拆分為幾個步驟外,還對關鍵問題給出適當的提示。
最近幾年,隨著教學經驗的積累和SOPC設計方法的更新,不但多次修改了基本實驗、提高實驗,還增加了綜合實驗的數量和種類,并且鼓勵學生研究創新實驗,不斷提高教學質量和課程的挑戰性,使學生能夠完成從電子系統設計到硬件實現的全過程,提高了學生的綜合應用能力、系統設計能力和實踐能力。
SOPC既具有微處理器處理能力強的特點,又具有FPGA設計靈活的特點。微處理器適合處理復雜的順序執行的任務,而FPGA適合處理并行的或時序復雜的任務,因此SOPC最適合處理既有復雜的順序執行的任務,又具有并行的或時序復雜的任務的實驗項目。對于嵌入式系統,時序復雜的任務通常包括串行通信、液晶顯示控制、ADC數據采集和DAC數據輸出等,而并行任務通常包括多通道數據采集、數字濾波等數據處理任務。因此設計實驗時可以考慮以上應用。
自動化專業的特點主要是利用自動化理論和技術來設計和實現自動化系統,用于各行各業的自動化生產監測和控制等,以提高效率和質量,創造社會和經濟效益。自動化人才的培養目標就是要面對實際問題,能夠自主地探索解決問題的方法,完成系統設計、模型建立、仿真、硬件實現、系統調試。課程內容設置一方面要考慮自動化專業特點。由于自動化系統通常包括硬件和軟件2部分,硬件部分除了計算機外,絕大多數都是由嵌入式系統組成,而嵌入式自動化系統最具代表性的就是工業測量和控制系統、機器人、無人機等,這些系統中大都會用到數據輸入、數據采集和數據處理、液晶顯示、通信等子系統功能,因此設計SOPC實驗時需要考慮自動化系統的特點。另一方面要考慮自動化人才的培養目標,重點體現在課程中培養學生系統設計、系統調試、硬件實現等實踐能力。
教學模式上力求做到激發學習興趣、促進學習效果、增強實踐研究和創新能力。為達到這些目標,教學內容分為講課、自學、交流討論、實驗4部分,講課、自學、實驗3部分內容循序漸進、因材施教,著重培養學生的研究能力和創新能力。
主要講授內容包括:
(1) 實驗要求、實驗內容、實驗設備、實驗平臺、實驗器材等。實驗平臺為Altera公司的DE2教學平臺,實驗器材包括常用電子元器件、各種各樣的傳感器和執行器模塊等。
(2) SOPC結構及特點。這是教學內容的一個難點,需要融合數字電路和計算機結構內容,以及嵌入式系統的知識。
(3) 基于NiosII的SOPC系統設計軟件、設計流程、設計方法、設計樣例。設計軟件包括QuartusII和Eclipse,分別用于硬件和軟件設計?;贜iosII的SOPC系統是一個軟硬件復合系統,軟件和硬件需根據需求靈活劃分,系統設計方法需采用軟硬件協同設計的新方法,因此也是教學內容的一個難點。由于設計靈活,非常適合于學生進行創新設計,培養軟硬件創新設計能力。
(4) Verilog設計硬件設備的要點。主要對比C語言設計方法的相似點和不同點,其次強調用Modelsim仿真軟件協助設計和調試的方法。SOPC系統硬件設計的主要任務是定制設計合適的微處理器和外設。微處理器采用NiosII,需要設置許多特性;外設通常通過Avalon總線與微處理器交換信息,需要使用Verilog或VHDL來自行設計基于Avalon總線的IP核。因此SOPC系統硬件設備設計是教學內容的又一個難點。
由于之前學習的一些課程內容會隨著時間的推移淡忘,因此要求學生復習FPGA及Verilog語言、模擬電子技術基礎、計算機原理,同時閱讀嵌入式系統、NIOSII SOPC、Avalon總線結構、QuartusII和Modelsim仿真軟件、DE2實驗平臺手冊等相關資料,這些自學任務從課程開始前的假期就布置了,學生可以根據自己的基礎有選擇性地自學。
由于SOPC系統設計涉及到硬件和軟件2部分,而且硬件和軟件又都多種多樣,需要學生綜合起來協同設計和調試,對學生來說困難較大。為了促進學習、激發興趣,鼓勵交流討論。首先給學生提供常見問題及解決辦法,學生遇到無法解決的問題可以參看;其次要求每位學生每天將自己遇到的問題和解決辦法發布
在網絡課堂的討論欄與其他學生交流討論;另外創新實驗時學生自己組成團隊交流討論;最后實驗結束后統一進行交流討論。通過多種方式的交流討論,有效地促進了學習效果,增強了學生的實踐能力。
實驗內容循序漸進,培養學生的實踐研究能力和創新能力。實驗內容包括4個層次:基本實驗、提高實驗、綜合實驗和創新實驗。
(1) 基本實驗。實驗目的是讓學生盡快了解SOPC的基本結構、特點及設計方法,實驗內容為簡單的帶NIOSII軟核微處理器的SOPC系統的實驗,該實驗沒有設計IP核。
(2) 提高實驗。實驗目的是讓學生掌握利用SOPC實現帶Avalon總線IP核功能的方法,實驗內容選擇了適合于SOPC實現的自動化系統硬件常見的液晶顯示、輸入設備和串行通信,利用DE2自帶的遙控器和液晶顯示器實現信息輸入和信息顯示,遙控器與DE2平臺之間通過I2C通信輸入信息,要求基于NIOSII處理器和Avalon總線IP核實現。該實驗有較高難度,因此提供了液晶顯示器和遙控器IP核實現的提示,以降低難度。
(3) 綜合實驗。實驗目的是讓學生掌握用SOPC設計適合于SOPC實現的自動化實用電子系統的方法,設計了多個信號采集及顯示系統實驗,例如多路溫度采集、溫濕度測量、脈搏測量、超聲波測距、光強測量等,以及一個簡易數碼相框圖片顯示實驗。
(4) 創新實驗。實驗目的主要是讓學生自由選題、團隊合作完成1個具有創新性的系統設計,實驗內容則結合自動化實用系統,給學生提供創意之星機器人套件、四旋翼飛行器套件等,學生還可根據自己興趣利用其他設備進行創新設計,也有些學生利用FPGA并行處理能力強的優勢設計快速智能算法IP核,組成信號處理SOPC系統。
通過4個層次的實驗,逐步培養學生綜合、設計、研究、創新及合作的能力。
現代電子系統設計課程內容包括PSoC、ARM CortexM4、FPGA-SOPC 3部分SoC系統設計,其中基于FPGA的SOPC系統設計雖然難度大,但是學生學習熱情很高,反映在課程中收獲很大,提高了對實際系統的設計能力和創新能力。
圖1—4分別是學生的實驗作品。圖1為提高實驗完成結果,圖2—圖3為綜合實驗完成結果,圖4為利用FPGA-SOPC、PSoC完成的創新實驗結果。

圖1 FPGA-SOPC遙控器輸入和液晶顯示提高實驗

圖2 FPGA-SOPC超聲波測距和溫濕度測量綜合實驗

圖3 FPGA-SOPC簡易數碼相框綜合實驗

圖4 利用FPGA-SOPC、PSoC完成的游戲創新實驗
本文將基于FPGA-SOPC的電子系統設計引入相關課程教學,從4個方面研究了適合的實驗方法,教學模式上力求做到激發學習興趣和促進學習效果。講課、自學、實驗3部分內容循序漸進、因材施教,著重培養學生的研究能力和創新能力。課程和實驗內容開設幾年來一直受到學生的歡迎,達到了課程開設的目標。
References)
[1] 聶偉,陳奕,楊曉青.基于SOPC的Turbo碼實驗平臺設計[J].實驗技術與管理,2007,24(12):69-73.
[2] 吳忠.基于NiosⅡ和FPGA的便攜B超的交互系統的設計與實現[D].長沙:中南大學,2011.
[3] 閻昌國,龔仁喜,劉小雍.基于SOPC的交錯APFC變換器設計[J].電子技術應用,2017,43(7):135-139.
[4] 包明,余成波,張睿.基于NiosII處理器液晶圖形顯示技術的研究[J].微計算機信息,2007,24(14):126-128.
[5] Bartik M,Pichlova D,Kubatova H. Hardware-Software Co-Design:A Practical Course for Future Embedded Engineers[C]//5thMediterranean Conference on Embedded Computing.2016:347-350.
[6] Shi Q S,Xiang L X, Chen T Z,et al.FPGA-Based Embedded System Education[C]//First International Workshop on Education Technology and Computer Science. 2009:123-127.
[7] 龔向東,黃虹賓,楊靖. UP3板在SoPC嵌入式系統教學實驗中的應用[J].電氣電子教學學報,2006,28(4):83-86.
[8] 李貞妮,金碩巍,李晶皎,等.基于FPGA的SOPC設計實踐教學方法探索[J].電氣電子教學學報,2013,35(6):81-85.
[9] 周悅芝,董代潔.基于FPGA的計算機系統接口實驗平臺的設計與研制[J].實驗技術與管理,2013,30(5):70-86.
[10] Li X J,Guan Y,Yuan H M.A Novel Course System and Engineering Practice Design for Embed System Education[C]// International Conference on Computer Science and Software Engineering. 2008:1388-1391.
[11] 江晉劍.基于SOPC實驗平臺的創新型實驗方法研究[J].微型電腦應用,2009,25(3):36-38.
[12] 田淑珍,全成斌,董代潔.基于SOPC及USB鍵盤的簡易電子琴綜合設計實驗[J].實驗科學與技術,2015,13(1):44-48.
[13] 何劍春,龍勝春.基于SOPC技術的電機控制實驗[J].電氣電子教學學報,2010,32(2):58-63.
[14] 陸小鋒,張競,吳燁丹,等.基于自制SOPC平臺的圖像空間變換實驗設計[J].實驗科學與技術,2013,11(4):9-12.