貴州師范學院物理與電子科學學院 鄧睿 余宏 莫章潔 岳天天 王丹鈺
微機原理與接口技術是計算機及電子信息類相關專業的一門專業基礎課程,其理論課的教學過程中主要側重于講解微機系統的體系結構、各計算機組成模塊的工作原理,包含處理器的架構、總線以及通信外設接口等概念及原理。理論教學環節能夠提高學生對微機和接口的原理性把握,做到“知其所以然”,但是做好教學的前提是要進行驗證,或者說在“知其所以然”之前要能夠“知其然”,那么實驗教學環節就顯得尤為重要[1]。
微機原理與接口技術這門課程概念抽象、實踐性很強,上機實驗和課程設計是兩個重要的教學環節[2]。作為傳統課程實驗所使用的實驗箱,芯片已經固定,線路也已經規劃好,所以實驗箱的功能受到極大的限制,實驗內容也比較固定,造成實驗項目和更新都受到一定限制[3]。針對目前該課實驗教學是以固定單片機硬件為核心教學,而無法靈活與理論無縫地銜接問題,提出一種基于SOC 技術的實驗教學方法,且以ARM 公司開源的Cortex-M3 為軟核處理器為基礎,采用Verilog HDL 語言靈活構建嵌入式SOC 實驗開發平臺,提高了學生地興趣和實驗的靈活性。
因此,為了更好地將微機原理的理論與實踐深度融合,提出基于以ARM 公司開源地Cortex-M3 為處理器軟核,構建SOC 系統架構,采用EDA 開發工具和FPGA硬件分別進行軟硬件平臺的開發,從而達到對微機原理實驗課程教學改革進行探索。
SOC 是一種用于嵌入式開發的片上系統技術,以Verilog HDL 硬件描述語言將軟核處理器(Cortex-M3)、存儲器、總線和外設接口模塊集成在一起,完成微型單片機系統的構建,且基于FPGA 芯片作為硬件驗證的載體。此FPGA平臺具有設計靈活、可裁剪、可擴充,且軟件硬平臺可編程的特點,對微機原理的實踐具有改革性的意義。
系統采用ARM 公司開源的Cortex-M3 為軟核處理器,此軟核是以Verilog HDL 硬件描述語言實現,因此,具有操作靈活性和集成靈活性,且可觀測到處理器內部的結構。構建以ARM 處理器為核心的SOC 系統(如圖1所示),根據微機原理的體系架構理論,最小系統應包含RAM 存 儲器、ROM 存儲 器、AHB 和APB 總 線 系統以及其他外設模塊(如表1 所示),設計均采用硬件描述語言Verilog 實現,可采用Quartus 和Modelsim 軟件實現軟硬件的協同仿真,對系統架構和外設接口進行仿真驗證。

圖1 基于SOC 技術的微機原理最小系統架構Fig.1 The minimum system architecture of the microcomputer base on SOC
輔之以FPGA 硬件平臺,采用Altera 公司的FPGA芯片Cyclone IV 系列EP4CE30F23C7 為核心來構建實驗硬件平臺(如圖2 所示),且將表1 中的外設模塊對應的外圍硬件電路(含LED 燈、LCD 顯示器、數碼管顯示、點陣顯示及步進電機等)集成至硬件平臺,以便于對SOC 微機系統進行硬件功能驗證。

圖2 基于FPGA 芯片的SOC 系統硬件實驗平臺Fig.2 Hardware of the SOC base on FPGA chip

表1 各外設模塊及其相應功能Tab.1 Function of the peripheral module
Cortex-M3 是一個32 位處理器內核,內部的數據路徑、寄存器以及存儲器接口均是。M3 采用了哈佛結構,擁有獨立的指令總線和數據總線,可以讓取指與數據訪問并行不悖。數據訪問不再占用指令總線,從而提升了性能。因此,其內部含有多條總線接口,每條都針對不同的應用場合優化過,并且可以并行工作。此SOC 技術平臺,采 用ARM Design Start 系 列 的Eval 版Cortex-M3 軟 核作為內核CPU 處理器。從M3 軟核源代碼的模塊頂層接口可以看出,其主要功能劃分為系統控制信號(時鐘復位和大小端)、指令總線信號(數據、地址和控制線)、數據總線信號、系統總線信號、中斷信號源、JTAG 接口和HTM 系統狀態跟蹤信號。
從地址線可以看出,存儲器映射CM3 尋址空間為4GB,根據微機系統的理論原理,需要對存儲空間進行劃分和映射,以便于處理器對系統內部的各模塊進行尋址訪問。在此嵌入式SOC 系統中,可以根據不同的需求和應用自定義存儲空間,具有靈活性和便利性,且對理論教學的知識進行很好的實踐。本系統中采用Verilog語言實現譯碼器對地址總線進行譯碼選擇不同地址段的空間操作,其代碼如下所示,hsel 為地址片選信號,HADDR 為系統地址總線:
微機系統采用的是AHB 總線系統,通過AHB 總線的地址對存儲空間進行譯碼,從譯碼邏輯中可以看出,存儲空間主要分為ROM、RAM、APB 外設和高速GPIO 模塊,其中APB 外設的尋址需要在AHB-APB 橋的基地下重新劃分。例如:ROM 地址為0x0000_0000--0x000F-FFFF用于存儲代碼,RAM 地址為0x2000_0000--0x200F-FFFF用于存儲臨時變量,AHB-APB 橋地址為0x5000_0000--0x5000-FFFF 用于連接APB 總線的轉換邏輯。
基于技術平臺的教學實踐過程主要分為3 個部分:微機系統的電路設計實現、C 語言軟件編程及協同仿真和FPGA 硬件平臺實現。
微機原理最小系統的硬件電路實現是采用硬件描述語言(簡稱Verilog)設計在EDA 工具Quartus 開發實現,所設計的整個嵌入式微機系統的運行是根據C 語言編程的程序執行,在此過程中,需要利用Quartus 平臺實現軟硬件協同仿真。然后,將實現的系統硬件電路在FPGA 平臺進行固化,從而形成系統。以SPI 模塊接口集成為例進行教學案例講解。
2.3.1 微機系統的電路設計實現
此內容是在前期采用Verilog 語言設計實現的含有處理器Cortex_M3、程序存儲器ROM、隨機存儲器RAM和AHB 總線系統的最小微機系統基礎上,將SPI 接口的邏輯模塊集成到系統,目的是為了使學生熟悉微機原理總線系統的概念。如圖3 所示為具體的實現邏輯,進而可采用Quartus 平臺實現硬件邏輯圖。

圖3 SPI 模塊集成至微機總線邏輯設計Fig.3 Design of the SPI integrated in system
2.3.2 軟硬件協同仿真
在將SPI 模塊集成到微機的總線系統后,需要通過C語言編寫驅動軟件,利用處理器系統對SPI 模塊的功能性進行驗證。C 語言程序生成的hex 文件是存放在ROM 中,上電復位之后處理器通過ROM 的讀取進行指令的執行。在 Quartus 開發平臺中,可以通過Modelsim 仿真器對系統進行軟硬件協同仿真,觀測微機系統處理器的執行狀況及SPI 驅動的結果。如圖4 所示為SPI 仿真的時序以及系統AHB 總線的運行圖,展示了系統總線信號與SPI接口輸出信號的變化執行情況。

圖4 軟硬件協同仿真系統驗證執行情況Fig.4 The co-simulation of the system verification in hardware and software
2.3.3 FPGA 硬件實現流程
FPGA 內部含有大量的數字邏輯資源(門電路、觸發器和存儲器等),但是彼此之間沒有連接關系,稱為可編程邏輯器件,可靈活多次編程地實現數字邏輯系統電路。本平臺采用了Altera 公司地EP4CE30F23C8 芯片,在完成了微機SOC 系統的電路設計實現和仿真驗證后,需要將所設計的系統與實際的硬件電路板連接,需要根據FPGA 電路板的板級原理圖與所設計的微機系統進行管腳分配,從而完成從軟件到硬件的實現過程。
本文通過Cortex-M3 處理器的Verilog HDL 軟核,使用EDA 軟件Quartus 平臺和硬件FPGA 電路板,運用SOC 技術實現了微機系統的最小系統架構設計、電路的軟連接設計、Modelsim 仿真驗證以及硬件驗證,彌補了當前微機原理實驗的不足和弱點,由于其靈活性方便學生在實驗失敗時進行深度調試,提高實驗的積極性與創新的意義。當然,此教學方式對課程的延續性有一定的要求,需要開設前導課程硬件描述語言Verilog HDL,但是此教學改革模式與微機原理理論吻合度很高,也具有深遠研究的意義。