基于A(yíng)RM Cortex-M3的SoC系統設計
作者 楊斌1,2,韓瑞欣3,董蘇惠4(1.中科院微電子研究所,北京 100029;2.中國科學(xué)院大學(xué),北京 100049;3.中科院聲學(xué)所,北京 100190;4.中科院空間中心,北京 100190)
本文引用地址:http://dyxdggzs.com/article/201901/397273.htm摘要:本項目實(shí)現了一種基于CM3內核的SoC,并且利用該SoC實(shí)現網(wǎng)絡(luò )數據獲取、溫度傳感器數據獲取及數據顯示等功能。在Keil上進(jìn)行軟件開(kāi)發(fā),通過(guò)ST-LINK/V2調試器進(jìn)行調試,調試過(guò)程系統運行正常。在Quartus-II上進(jìn)行Verilog HDL的硬件開(kāi)發(fā)設計,并進(jìn)行IP核的集成,最后將生成的二進(jìn)制文件下載到FPGA開(kāi)發(fā)平臺。該系統使用AHB總線(xiàn)將CM3內核與片內存儲器和GPIO進(jìn)行連接,使用APB總線(xiàn)連接UART、定時(shí)器、看門(mén)狗等外設。
關(guān)鍵詞:FPGA;IP核;Cortex-M3;SoC
0 緒論
項目背景與意義
現今,單片機的發(fā)展速度特別快,種類(lèi)越來(lái)越多,而對于單片機的選擇主要是根據具體的應用情況來(lái)定,在性能、功耗、成本上做折中。
目前,FPGA的集成度越來(lái)越高,價(jià)格也越來(lái)越便宜,所以可以以較低的成本來(lái)構建專(zhuān)用的片上系統。單片機作為片上系統的一種,可以很容易的在FPGA上實(shí)現,并且架構和片上外設都可以根據具體的應用情況隨時(shí)做出更改,這極大的降低了成本,也規避使用通用單片機所帶來(lái)的風(fēng)險。綜上,在某些領(lǐng)域,以FPGA作為平臺構建專(zhuān)用片上系統是最合適的選擇,這也是以后單片機應用領(lǐng)域的發(fā)展趨勢。研究SoC的設計方法和工程應用對于未來(lái)單片機應用領(lǐng)域的革新具有深刻的意義。
內容及章節安排
本項目實(shí)現了一種基于CM3內核的SoC,并且利用該SoC實(shí)現網(wǎng)絡(luò )數據獲取、溫度傳感器數據獲取及數據顯示等功能。
本文共分為五部分,第一部分緒論簡(jiǎn)單介紹了本項目的背景及意義。第二部分說(shuō)明了本項目的整體框架設計。第三部分介紹了SoC設計的總體思路。第四部分討論了軟件開(kāi)發(fā)的大體流程。第五部分對未來(lái)項目的方向做出了展望。
1 系統整體框架
1.1系統設計流程分析
本系統采用的FPGA板卡芯片由Intel PSG(英特爾可編程解決方案事業(yè)部,前身為Altera公司,Altera于2015年被Intel收購)生產(chǎn),所以需要在Quartus-II專(zhuān)用開(kāi)發(fā)平臺上進(jìn)行SoC的硬件設計。Keil軟件開(kāi)發(fā)平臺界面友好,功能強大,兼容ARM公司發(fā)布的所有內核庫,包括本系統使用的CM3內核庫,并且其支持多種硬件調試和下載器,所以在本項目中使用Keil進(jìn)行軟件開(kāi)發(fā)。軟件編譯成功后生成二進(jìn)制可執行文件,并通過(guò)ST-LINK/V2調試器進(jìn)行下載及調試,調試過(guò)程系統功能正常。CM3內核使用AHB總線(xiàn)與外設連接,所以該SoC的設計采用AHB總線(xiàn)將內核與片內存儲器和GPIO進(jìn)行連接,使用APB總線(xiàn)連接UART、定時(shí)器、看門(mén)狗等外設,而APB總線(xiàn)上的外設通過(guò)AHB-APB總線(xiàn)橋接器與內核進(jìn)行數據交互與應答。在Cortex-M3 DesignStart Eval開(kāi)發(fā)套件中提供了本系統用到的基本總線(xiàn)外設,使用Verilog HDL編寫(xiě)了其他組件來(lái)實(shí)現整個(gè)系統的集成。片上系統設計框圖如圖1所示,功能框圖如圖2所示。
本項目的功能框圖如圖2所示。
1.2 模塊選擇
根據系統的網(wǎng)絡(luò )數據獲取及室內溫度顯示等功能要求,本項目選擇特定模塊來(lái)實(shí)現相應功能。網(wǎng)絡(luò )模塊需要從廣域網(wǎng)絡(luò )中獲取數據,并將獲得的數據傳給SoC平臺,該網(wǎng)絡(luò )模塊的默認接口應該是串口,從網(wǎng)絡(luò )中獲取的數據主要是溫度數據,數據的傳輸速率要求不高,盡量選擇價(jià)格便宜、低功耗的網(wǎng)絡(luò )模塊。室內溫度的獲取依賴(lài)于溫度傳感器,本系統對于溫度的測量精度要求不高,所以溫度傳感器需具有接口簡(jiǎn)單、價(jià)格便宜、性能穩定等特點(diǎn)。為了做到系統數據的可視化,在設計時(shí)候考慮添加OLED顯示模塊,OLED模塊選擇具有功耗低、屏幕小、價(jià)格便宜等特點(diǎn)的型號。
2 系統硬件設計
2.1 存儲器設計
存儲器映射
CM3的尋找空間大小是4 GB,代碼段和數據段在存儲空間上是分開(kāi)的,外設相關(guān)的寄存器也有相應的地址段,內核操作相關(guān)的寄存器也占據部分地址空間。本系統采用把程序放到代碼區的設計,從而使取指和數據訪(fǎng)問(wèn)操作使用自己的總線(xiàn)。
CM3只有一個(gè)單一固定的存儲器映射。在Cortex-M3預定義的存儲器地址映射中,Code區的地址從0x00000000到0x1FFFFFFF,本系統使用的地址空間從0x00000000開(kāi)始,結束地址是0x0000FFFF,大小為64KB。內部SRAM區的地址空間從0x20000000到0x3FFFFFFF,本系統使用的地址從0x20000000開(kāi)始,結束地址是0x20000FFFF,大小為64 KB。
該子系統是基于A(yíng)PB總線(xiàn),內部涵蓋系統用到的大部分外設,內部外設的地址劃分見(jiàn)下表1。
2.2 Cortex-M3的結構
Cortex-M3微處理器的內部結構如圖3所示。ARM Cortex-M3微處理器包括:處理器核、嵌套向量中斷控制器(NVIC)、調試子系統、AHB LITE總線(xiàn)接口以及連接這些單元的內部總線(xiàn)系統。
2.2.1 處理器核
處理器核是Cortex-M3最核心的功能部件,它負責對數據進(jìn)行處理。
本項目Cortex-M3處理器內核采用3級流水線(xiàn)操作。流水線(xiàn)的3級分別是:取指,解碼和執行。
2.2.2 嵌套向量中斷控制器
專(zhuān)用的 NVIC用于對中斷進(jìn)行管理,并且向處理器核發(fā)出中斷請求信號,包含最多240個(gè)中斷請求,以及1個(gè)不可屏蔽中斷。NVIC是與CPU緊密耦合的,它還包含了若干個(gè)系統控制寄存器。
2.2.3 總線(xiàn)系統
總線(xiàn)系統用于將Cortex-M3內部的各個(gè)功能部件連接在一起??偩€(xiàn)系統包括:①內部總線(xiàn)系統;②處理器核內部的數據通道;③AHB Lite接口單元。
2.2.4 調試子系統
作為Cortex-M3處理器重要的一部分,調試子系統提供下面的功能。
?、俟芾碚{試控制、程序斷點(diǎn)、以及數據監控點(diǎn)。
?、诋敭a(chǎn)生調試事件時(shí),它將處理器核設置為停止狀態(tài)。此時(shí),可以在該點(diǎn)分析處理器的狀態(tài),如寄存器值和標志。
2.3 異常處理與中斷向量表設計
Cortex-M3在內核水平上搭載了一個(gè)異常響應系統,支持為數眾多的系統異常和外部中斷。
向量中斷控制器(NVIC)以存儲器映射的方式來(lái)訪(fǎng)問(wèn),除了包含控制寄存器和中斷處理的控制邏輯之外,NVIC還包含了MPU的控制寄存器、SysTick定時(shí)器以及調試控制。
2.4 地址譯碼器和多路復用器設計
本系統基于A(yíng)HB-Lite所構建的Cortex-M3 SoC系統設計包含了地址譯碼器和多路復用器。
在系統中,來(lái)自不同從設備的響應信號,包括:HRDATA、HREADY和HRESP連接到多路復用器的輸入,根據地址譯碼器所生成的選擇信號,多路復用器將選擇的從設備響應信號送給主設備。其中HRDATA[31:0]是來(lái)自多路復用器到主設備的讀數據,由多路復用器指向主設備;HREADY是來(lái)自多路復用器到主設備的準備信號,由多路復用器指向主設備和從設備,當該位為高時(shí),該信號表示到主設備和先前完成傳輸的所用從設備。
2.5 APB子系統
該APB子系統的頂層是AHB-Lite總線(xiàn)接口,可以與內核的AHB總線(xiàn)進(jìn)行連接。子系統內部包括的外設有定時(shí)器、UART、雙輸入定時(shí)器、看門(mén)狗電路、AHB到APB的橋接器、異步中斷信號等。表2為APB系統IRQ分配表。
2.6 時(shí)鐘和復位電路設計
本系統片上SoC系統主要包含HCLK、PCLK、PCLKG等三個(gè)時(shí)鐘,HCLK時(shí)鐘主要用于內核的工作時(shí)鐘以及驅動(dòng)片內高性能總線(xiàn)上掛載的外設。PCLK時(shí)鐘主要用于驅動(dòng)APB子系統內掛載在高性能外設總線(xiàn)上的大部分外設。PCLKG時(shí)鐘是當子系統內部的外設無(wú)任何活動(dòng)的時(shí)候,通過(guò)子系統的APBACTIVE信號可以控制該信號的輸出,以實(shí)現降低功耗的目的。
系統的復位信號有兩種,第一種是系統采用FPGA外部管腳控制系統復位,低電平復位的方式;第二種是系統異常請求復位,該復位發(fā)生在系統程序運行錯誤或者硬件錯誤的情況下。
3 軟件系統設計
3.1 CMSIS原理及設計
CMSIS提供了標準的軟件接口,如庫函數。
使用CMSIS后,一切都標準化了,主要體現在以下幾點(diǎn):
一是使用標準化函數訪(fǎng)問(wèn)NVIC、系統控制塊(SCB),以及系統滴答定時(shí)器SysTick。
二是使用標準化函數訪(fǎng)問(wèn)特殊寄存器。
三是使用標準化函數訪(fǎng)問(wèn)特殊指令。
四是標準化的系統初始化函數名字。
3.2 SoC外設驅動(dòng)設計
如圖4所示,設計AHB外設驅動(dòng)的要求包括以下幾點(diǎn):①為每個(gè)外設編寫(xiě)軟件驅動(dòng)程序;②不需要操作系統支持;③軟件驅動(dòng)程序應該提供基本的功能,用于簡(jiǎn)化外設的訪(fǎng)問(wèn)。
3.3 SoC中斷寄存器管理
中斷分組設置函數,void NVIC_ Configuration()中斷配置函數,在這個(gè)函數里面只調用了固件庫的中斷分組配置函數,整個(gè)系統的中斷分組組別為2。這個(gè)函數在系統初始化的時(shí)候調用即可,并且永遠只需要調用一次,示例如下所示。
void NVIC_Configuration(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應優(yōu)先級
}
3.4 系統模塊及程序設計原理
3.4.1 溫度模塊
DS18B20與傳統的熱敏電阻相比,其能夠直接讀出被測溫度并且可根據實(shí)際要求通過(guò)簡(jiǎn)單的編程實(shí)現9~12位的數字值讀數方式。
當DS18B20接收到溫度轉換命令后,開(kāi)始啟動(dòng)轉換。轉換完成后的溫度值就以16位帶符號擴展的二進(jìn)制補碼形式存儲在高速暫存存儲器的第1、2字節。單片機可通過(guò)單線(xiàn)接口讀到該數據,讀取時(shí)高位在后、低位在前,數據格式以0.0625 ℃/LSB形式表示。
3.4.2 顯示器模塊
OLED顯示器是一種由有機分子薄片組成的固態(tài)設備,施加電力之后就能發(fā)光。OLED能讓電子設備產(chǎn)生更明亮、更清晰的圖像,其耗電量小于傳統的LED顯示屏。
3.4.3 網(wǎng)絡(luò )模塊
網(wǎng)絡(luò )模塊采用CH9121,CH9121 是一款網(wǎng)絡(luò )串口透傳芯片。CH9121內部集成TCP/IP協(xié)議棧,可實(shí)現網(wǎng)絡(luò )數據包和串口數據的雙向透明傳輸,具有 TCP CLIENT、TCP SERVER、UDP CLIENT 、UDP SERVER 4 種工作模式,串口波特率最高可支持到 921600bps,可通過(guò)上位機軟件或者串口命令輕松配置,方便快捷。
4 結論
在后續的設計過(guò)程中,我們會(huì )在系統中添加指紋模塊,利用指紋識別技術(shù)可以實(shí)現現代智能家居的安防。通過(guò)指紋識別技術(shù)可以對用戶(hù)指紋進(jìn)行精準識別,防止未注冊陌生人的入侵。同時(shí)也會(huì )添加攝像頭模塊,利用攝像頭模塊進(jìn)行人臉識別,可以判斷當前采集的人臉頭像是否在原有的數據庫里,與數據庫信息進(jìn)行比對,來(lái)判斷是否有非法闖入。
此外,為了更好地實(shí)現智能化,我們會(huì )將居家生活中的各種用電器接入系統中來(lái),通過(guò)繼電器開(kāi)關(guān)來(lái)實(shí)現開(kāi)關(guān)中斷,這樣可以實(shí)現遠程操控用電器的功能。
參考文獻
[1]Cortex-M3權威指南(中文)手冊,2017.
[2]CM3技術(shù)參考手冊,2017.
[3]DE10-Lite_User_Manual handbook,2017,1.
[4]王永虹,徐煒,等.STM32系列ARM?Cortex-M3微控制器原理與實(shí)踐.北京航空航天大學(xué)出版社, 2008.
[5]STM32開(kāi)發(fā)指南——庫函數版本手冊,2016.
作者簡(jiǎn)介:
楊斌 (1994-),男,研究生,主要從事嵌入式系統開(kāi)發(fā)及信號處理的研究。
韓瑞欣 (1994-),男,研究生,主要從事射頻RFID的研究。
董蘇惠 (1994-),女,研究生,主要從事衛星組網(wǎng)通信的研究。
本文來(lái)源于科技期刊《電子產(chǎn)品世界》2019年第2期第55頁(yè),歡迎您寫(xiě)論文時(shí)引用,并注明出處
評論