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