龍芯3A處理器在某軍用系統(tǒng)上的應(yīng)用研究
摘要:文章介紹了為探索國(guó)產(chǎn)多核處理器在軍用電子系統(tǒng)上的應(yīng)用,而采用國(guó)產(chǎn)龍芯3A多核處理器及相關(guān)橋芯片,配以VXWORKS操作系統(tǒng)和圖像處理等軟件進(jìn)行的軍用電子系統(tǒng)應(yīng)用設(shè)計(jì);該系統(tǒng)具有圖像處理、串口、SATA、網(wǎng)口、USB等多種接口和PMC接口擴(kuò)展等多種功能。能夠通過USB接口輸入視頻圖像,采用軟件算法進(jìn)行多核圖像實(shí)時(shí)處理,VGA接口進(jìn)行視頻輸出顯示;為滿足軍用電子系統(tǒng)的綜合化、集成化、小型化、低功耗和國(guó)產(chǎn)化等要求提供了設(shè)計(jì)參考。
0 引言
多核處理器,具有多核冗余和并行處理各線程而不掛起、體積小、集成度高等優(yōu)點(diǎn),能夠適應(yīng)軍用嵌入式系統(tǒng)集成化、小型化和低功耗的發(fā)展需求,因而在軍工應(yīng)用中有著特殊的價(jià)值;P2020多核處理器在某航空綜合數(shù)據(jù)處理模塊上已有成功應(yīng)用。
本應(yīng)用采用國(guó)產(chǎn)龍芯3A多核處理器,通過分核實(shí)時(shí)處理進(jìn)行PMC子卡數(shù)據(jù)處理和視頻圖像的并行處理,通過橋片擴(kuò)展,實(shí)現(xiàn)了網(wǎng)口、串口、USB、SATA以及VGA等外圍接口的通信傳輸功能;能通過USB2.0接口對(duì)傳入的視頻圖像和PMC插座傳入的PMC數(shù)據(jù)并行分核實(shí)時(shí)處理,并將處理結(jié)果分別通過VGA接口和PMC插座實(shí)時(shí)輸出。隨著芯片技術(shù)和應(yīng)用水平的不斷發(fā)展,國(guó)產(chǎn)多核處理器將為軍用系統(tǒng)國(guó)產(chǎn)化需求提供強(qiáng)有力的保障。
1 系統(tǒng)設(shè)計(jì)要求
本系統(tǒng)需要通過USB2.0接口接收視頻圖像,經(jīng)多核處理器處理后從VGA口輸出,通過標(biāo)準(zhǔn)PMC接口能夠?qū)崿F(xiàn)接口擴(kuò)展和數(shù)據(jù)處理功能。并具有USB、串口、網(wǎng)口以及SATA接口通信擴(kuò)展傳輸功能。
2 系統(tǒng)構(gòu)架
本設(shè)計(jì)采用龍芯3A處理器的多核特性,分配核1、核2分別進(jìn)行PCI總線擴(kuò)展和視頻圖像處理雙重功能;通過網(wǎng)口芯片GD82551擴(kuò)展實(shí)現(xiàn)網(wǎng)口功能。本項(xiàng)目通過HT接口擴(kuò)展AMD公司的北橋芯片RS780E,實(shí)現(xiàn)VGA顯示接口擴(kuò)展,通過PCIE進(jìn)行南橋SB710芯片擴(kuò)展實(shí)現(xiàn)了USB2.0以及SATA接口的擴(kuò)展。
RS780E是AMD推出的北橋芯片,支持多核功能、片內(nèi)集成圖形圖像功能,具有多個(gè)顯示接口,支持不同的刷新率,支持高速HT3接口和PCIE擴(kuò)展功能。SB710是與RS780E配套的南橋芯片,支持USB、SATA以及PCIE功能。
視頻圖像經(jīng)USB接口輸入存儲(chǔ)到SATA擴(kuò)展存儲(chǔ)盤中,后經(jīng)龍芯3A多核處理器進(jìn)行字符疊加、亮度、對(duì)比度調(diào)節(jié)等處理后從北橋上的VGA接口輸出,通過龍芯3A自帶的GPIO接口進(jìn)行離散量及中斷信號(hào)的輸入輸出,通過兩路串口進(jìn)行調(diào)試顯示。其系統(tǒng)組成框圖如圖1所示。
3 詳細(xì)設(shè)計(jì)
3.1 龍芯3A處理器簡(jiǎn)介
龍芯3A處理器是龍芯多核系列的第一款產(chǎn)品,采用65nm工藝制造,在單個(gè)芯片內(nèi)集成了4個(gè)64位超標(biāo)量通用處理器核,最高工作主頻為1GHz,單顆最大功耗15W,能效比1.06Gflop/W。是X86系列處理器的2倍。主要特征如下:
(1)片內(nèi)集成四個(gè)64位四發(fā)射超標(biāo)量GS464處理器核;屬可實(shí)現(xiàn)64位MIPS64指令集的通用RISC處理器。其指令流水線每個(gè)時(shí)鐘周期取四條指令進(jìn)行譯碼,并動(dòng)態(tài)地發(fā)射到五個(gè)全流水的功能部件中;
(2)片內(nèi)集成四核共享的4MB二級(jí)Cache;
(3)集成2個(gè)64位400MHz的DDR2/3控制器;
(4)集成2個(gè)16位800MHz的HyperTransport控制器;
(5)片內(nèi)集成32位33MHz PCI/PCIX;
(6)片內(nèi)集成一個(gè)LPC、兩個(gè)UART、1個(gè)SPI、16路GPIO接口;
(7)支持多核芯片通過HyperTransport接口互連和跨芯片的全局Cache一致性;
(8)運(yùn)行主頻最高為1GHz,設(shè)計(jì)實(shí)現(xiàn)為800MHz,可配置。
3.2 多核選擇
龍芯3A處理器芯片整體構(gòu)架基于兩級(jí)交叉開關(guān)的方式互聯(lián)實(shí)現(xiàn)如圖2所示。
第一級(jí)互連開關(guān)采用6×6的交叉開關(guān),用于連接四個(gè)CPU(作為主設(shè)備);每個(gè)IO端口連接一個(gè)16位的HT控制器,每個(gè)16位的HT端口也可作為兩個(gè)8位的HT端口使用。HT控制器通過一個(gè)DMA控制器和一級(jí)互聯(lián)開關(guān)相連,DMA控制器負(fù)責(zé)IO的DMA控制并負(fù)責(zé)片間一致性的維護(hù)。
第二級(jí)交叉開關(guān)采用5×4的交叉開關(guān),連接4個(gè)二級(jí)Cache模塊(作為主設(shè)備),四個(gè)二級(jí)Cache模塊(作為從設(shè)備)以及兩個(gè)IO端口(每個(gè)端口使用一個(gè)Master和一個(gè)Slave),交叉開關(guān)連接兩個(gè)DDR2內(nèi)存控制器、低速高速I/O(包括PCI、LPC、SPI等)以及芯片內(nèi)部的控制寄存器模塊。
通過設(shè)置兩級(jí)交叉開關(guān)寄存器實(shí)現(xiàn)了核1、核2分別完成PMC子卡數(shù)據(jù)處理和視頻圖像的并行處理功能。采用讀、寫分離的數(shù)據(jù)通道,數(shù)據(jù)通道寬度為128bit,工作在與處理器核相同的頻率,用以提供高速的片上數(shù)據(jù)傳輸。
3.3 存儲(chǔ)電路部分
采用兩片具有LPC接口的FLASH存儲(chǔ)器SST49LF080B分別連接于龍芯3A的處理器的LPC接口,用于存放龍芯的PMON程序;采用兩片ST公司的串行SPI FLASH存儲(chǔ)器S25FL128SAGMFIR11存放操作系統(tǒng)和測(cè)試程序,使用HT1接口連接北橋芯片進(jìn)行VGA接口擴(kuò)展,再通過北橋的HT接口連接南橋的HT接口進(jìn)行USB和SATA口的擴(kuò)展,外接SATA FLASH存放視頻等相關(guān)數(shù)據(jù);采用2塊DDR3SDRAM存儲(chǔ)器MT41J128M16HA-125IT實(shí)現(xiàn),容量各為2G,用于構(gòu)建內(nèi)部存儲(chǔ)器。
3.3.1 FLASH存儲(chǔ)器電路
該模塊采用三片F(xiàn)LASH,其中SST49LF080A為具有LPC接口,容量為8Mbit(1024k×8(8Mbit))的FLASH芯片,用于存儲(chǔ)PMOON程序,可采用并口進(jìn)行擦除;另兩片具有SPI接口的FLASH芯片S25FL512SAGMFIR11為組合構(gòu)成64Mbyte存儲(chǔ)空間用于存儲(chǔ)操作系統(tǒng)程序:采用SATA NANDrive FLASH電子盤進(jìn)行FLASH擴(kuò)充存儲(chǔ)。
3.3.2 DDR2/3 SDRAM存儲(chǔ)器
龍芯3A多核處理器內(nèi)置兩個(gè)DDR2/3 SDRAM存儲(chǔ)器控制器,提供DDR3的時(shí)序控制邏輯,并且提供DDR3的訪問時(shí)鐘,CPU和PCI主設(shè)備都可以訪問DDR3 SDRAM。
本方案采用256MB容量的DDR3存儲(chǔ)顆粒MT41J128M16HA-125IT實(shí)現(xiàn),工作電壓為1.5V,最高工作頻率667MHz。
為了在系統(tǒng)中支持不同的DDR3 SDRAM顆粒,DDR3 SDRAM需要在加電復(fù)位后配置,內(nèi)存初始化順序如下:系統(tǒng)復(fù)位期間,所有寄存器內(nèi)容將清除為缺省值;接著系統(tǒng)復(fù)位釋放,接著向配置寄存器地址發(fā)64位寫指令,配置所有29個(gè)配置寄存器。此時(shí)如果寫CTRL 03,應(yīng)將其中參數(shù)START設(shè)為0。所有寄存器都必須正確配置才可以正常工作。再向配置寄存器CTRL 03中發(fā)64位寫指令。此時(shí)應(yīng)將參數(shù)START設(shè)為1。結(jié)束后內(nèi)存控制器將自動(dòng)對(duì)內(nèi)存發(fā)起初始化指令。
3.3.3 存儲(chǔ)器地址分配
龍芯3A處理器的系統(tǒng)物理地址分布采用全局可訪問的層次化尋址設(shè)計(jì),以保證系統(tǒng)開發(fā)的擴(kuò)展兼容。整個(gè)系統(tǒng)的物理地址寬度為48位。按照地址的高4位,整個(gè)地址空間被均勻分布到16個(gè)節(jié)點(diǎn)上。龍芯3A采用單節(jié)點(diǎn)4核配置。
在每個(gè)節(jié)點(diǎn)的內(nèi)部,44位地址空間又進(jìn)一步均勻分布給節(jié)點(diǎn)內(nèi)連接的可能最多8個(gè)設(shè)備。其中低43位地址由4個(gè)2級(jí)Cache模塊所擁有,高43位地址則進(jìn)一步按地址的[43:42]位分布給連接在4個(gè)方向端口的設(shè)備上。不同于方向端口的映射關(guān)系,可根據(jù)實(shí)際應(yīng)用的訪問行為來決定二級(jí)Cache的交叉尋址方式。節(jié)點(diǎn)內(nèi)的4個(gè)2級(jí)Cache模塊一共對(duì)應(yīng)43位地址空間,而每個(gè)2級(jí)模塊所對(duì)應(yīng)的地址空間根據(jù)地址位的某兩位選擇位確定,并可以通過軟件進(jìn)行動(dòng)態(tài)配置修改,其存儲(chǔ)器空間分配地址如表1所示。
3.4 接口設(shè)計(jì)
本系統(tǒng)提供10MB/100MB快速以太網(wǎng)接口,通過龍芯3A芯片控制GD82551網(wǎng)口芯片擴(kuò)展實(shí)現(xiàn);采用處理器片內(nèi)集成的UART串行調(diào)試接口提供串行通訊接口,最大速率等可以通過芯片內(nèi)部進(jìn)行設(shè)置;處理器包含16個(gè)GPIO通用I/O可作為離散量接口,該模塊的1路外部離散量輸入信號(hào),3.3V電平GSE#,功能由軟件定義。
此外,龍芯3A提供了一個(gè)兼容JTAG的邊界掃描的EJTAG接口用于測(cè)試處理器引腳是否被正確連接用于調(diào)試底層應(yīng)用軟件;通過南橋上的SATA接口進(jìn)行機(jī)載PMC子卡與視頻圖像處理模塊的電子存儲(chǔ)盤擴(kuò)展;PMC數(shù)據(jù)通過專用的PMC插座進(jìn)行輸入輸出,USB接口可以進(jìn)行視頻圖像的輸入以及USB設(shè)備的連接,VGA接口進(jìn)行處理后的視頻信息的顯示。
3.5 電源電路
龍芯3A處理器所需的電源有:1.1V、3.3V、1.8V、0.9V、2.5V、1.7V共六種。采用5片LTM4616芯片配置高精度電阻輸出實(shí)現(xiàn),LTM4616芯片的輸出配置公式如下:
處理器內(nèi)核電壓1.1 V,最大電流12.8 A,由5V經(jīng)LTM4616的兩路輸出并聯(lián)實(shí)現(xiàn),最大16 A可滿足使用要求,3.3V、1.8V為一組、0.9V、2.5V為一組、1.7V單獨(dú)為一組,可分別由一片LTM4616產(chǎn)生。
DDR2所需要的1.8V VDD、VDDO電源采用MT47H128M16HG-3提供;0.9V的VREF、VTT采用具有3Asink-souce功能的電源轉(zhuǎn)換芯片TPS51100提供。SB710、RS780需要提供+1.2V電源也采用1片LTM4616實(shí)現(xiàn)。
3.6 時(shí)鐘電路
該模塊需要的時(shí)鐘信號(hào)包括:處理器時(shí)鐘、南北橋時(shí)鐘、存儲(chǔ)器時(shí)鐘和接口電路(SATA、USB)時(shí)鐘。
處理器的五個(gè)系統(tǒng)輸入時(shí)鐘信號(hào)分別為:SYSCLK、MEMCLK、PCI_CLK、HTCLK、差分時(shí)鐘HT0_CLKp/HT0_CLKn及乏HT0_CLKp/HT1_CLKn。
龍芯3A的核Core時(shí)鐘通過SYSCLK產(chǎn)生,DDR2/3時(shí)鐘通過MEMCLK產(chǎn)生。HT的單端時(shí)鐘HTCLK100MHz采用晶振SG-8002CA-100MHz-PCB產(chǎn)生。
南、北橋時(shí)鐘采用14.318MHz晶振通過SLG8LP625TTR芯片生成:CK_14M_NB、CK_14M_SB時(shí)鐘信號(hào)分別送往北橋和南橋。南橋的USB時(shí)鐘、HT參考時(shí)鐘、32.768MHz晶振向SB700提供時(shí)鐘,產(chǎn)生SATA時(shí)鐘信號(hào),組成如圖5所示。
3.7 復(fù)位電路
復(fù)位電路包括處理器復(fù)位、南、北橋復(fù)位以及上電復(fù)位等。
該電路模塊處理器的全局復(fù)位信號(hào)為SYSRESETn:這個(gè)復(fù)位信號(hào)是唯一全局復(fù)位信號(hào)。SYSCLK和CLK必須在SYSRESETn釋放到無效前就保持穩(wěn)定。SYSRESETn的有效時(shí)間必須大于一個(gè)時(shí)鐘周期,通過可編程邏輯實(shí)現(xiàn),處理器內(nèi)部的復(fù)位控制邏輯在SYSRESETn無效時(shí)才開始復(fù)位處理器。
系統(tǒng)復(fù)位電路采用MAX708TESA實(shí)現(xiàn)。MAX708TESA提供檢測(cè)電源電壓,MAX708TESA可同時(shí)產(chǎn)生低電平
*和高電平兩種復(fù)位信號(hào)(RESET),MAX708TESA監(jiān)控+3.3V電壓,當(dāng)+3.3V電壓低于3.08V時(shí),復(fù)位輸出有效。同時(shí)還提供有PFI輸入,設(shè)計(jì)中用來監(jiān)控外部供電的5V電平,當(dāng)5V輸入低于4.65V時(shí),
輸出有效,該信號(hào)可作為龍芯3A處理器的一個(gè)外部中斷源。
北橋復(fù)位信號(hào)SYSRESET群來自復(fù)位芯片;POWERGOOD為電源OK輸入信號(hào),從FPGA輸入;LDTSTOP#來自南橋HT的狀態(tài)轉(zhuǎn)換使能信號(hào);ALLOW LDTSTOP由南橋輸入北橋輸出允許LDT STP#插入信號(hào)。各復(fù)位信號(hào)之間的邏輯關(guān)系均采用可編程邏輯芯片XC95288XL-7TQG144I產(chǎn)生。
3.8 中斷電路
龍芯3A處理器的引腳中斷包括4個(gè)系統(tǒng)中斷(INTn),4個(gè)PCI中斷(PCI_IRQ),2個(gè)PCI總線錯(cuò)誤報(bào)告信號(hào)(PCI_SERRn與PCI_PERRn)和1個(gè)不可屏蔽中斷(NMIn)。
本設(shè)計(jì)采用龍芯內(nèi)部中斷控制器處理自帶串口、PCI總線等中斷,PMOON負(fù)責(zé)完成橋片上的PCI/PCIE設(shè)備和插槽的中斷號(hào)申請(qǐng)和路由,操作系統(tǒng)完成中斷號(hào)的分配和芯片內(nèi)部的中斷路由和對(duì)芯片內(nèi)部的中斷控制器進(jìn)行設(shè)置。
龍芯3A處理器的4個(gè)系統(tǒng)中斷(INTn)引腳中斷分別輸入網(wǎng)絡(luò)接口中斷、串口中斷和2路外部中斷,非屏蔽中斷接MAX708電源監(jiān)控,當(dāng)外部5V降到4.65V以下時(shí)產(chǎn)生非屏蔽中斷。所有外部中斷源均為電平觸發(fā)、低電平有效。
3.9 其他考慮
該處理板屬于高速信號(hào)處理板,在PCB設(shè)計(jì)過程中對(duì)沒有特殊說明的信號(hào)采取Space:Height
1:1;打GND via過孔,去耦電容盡量靠近芯片的電源和地引腳布置,大面積鋪銅等手段以保證信號(hào)的質(zhì)量。
另外龍芯3A處理器等芯片,其環(huán)境適應(yīng)性未能滿足軍工的嚴(yán)酷度要求,因此在使用中需要根據(jù)具體情況進(jìn)行減振和溫度控制部件的輔助配合使用。
USB視頻源在手機(jī)等民用領(lǐng)域應(yīng)用廣泛,以至于高清USB視頻源已出現(xiàn)了應(yīng)用,國(guó)內(nèi)USB2.0的視頻圖像處理芯片現(xiàn)在發(fā)展迅猛,民用USB視頻源已經(jīng)很成熟,隨著USB3.0的出臺(tái),國(guó)內(nèi)有關(guān)單位也在加緊探索研制軍用視頻源的應(yīng)用,目前可暫時(shí)采用民用USB視頻源加環(huán)控的方式進(jìn)行軍用USB視頻源的提供,并可通過網(wǎng)絡(luò)進(jìn)行視頻傳輸。
4 軟件系統(tǒng)
該處理器模塊的軟件系統(tǒng)包括:引導(dǎo)軟件、BIT測(cè)試程序、操作系統(tǒng)和應(yīng)用軟件程序。
初始化引導(dǎo)程序采用龍芯自帶的將BIOS和boot程序合并的PMON程序,分兩個(gè)階段進(jìn)行初始化運(yùn)行:第一階段在ROM FLASH中運(yùn)行,主要進(jìn)行基本硬件初始化,如:北橋、南橋、內(nèi)存控制器、緩存和串口初始化等;第二階段在內(nèi)存中執(zhí)行,主要完成環(huán)境變量、基本數(shù)據(jù)結(jié)構(gòu)、PCI總線、設(shè)備初始化、網(wǎng)絡(luò)協(xié)議和設(shè)備初始化,并對(duì)搜索到的PCI總線上的設(shè)備進(jìn)行驅(qū)動(dòng)程序的加載與配置等,最后加載操作系統(tǒng)內(nèi)核。
龍芯多核處理器核1作為主處理器與核2分別完成PMC子卡數(shù)據(jù)處理和視頻圖像的并行處理功能,主處理器的啟動(dòng)流程與單核系統(tǒng)的啟動(dòng)流程基本一樣。主要完成處理器核、TLB、MMU及相關(guān)外設(shè)的啟動(dòng)。而從處理器則根據(jù)輪詢循環(huán)執(zhí)行。
操作系統(tǒng)使用VxWorks 6.7操作系統(tǒng),在linuxVxWorks 6.7下進(jìn)行應(yīng)用系統(tǒng)軟件的應(yīng)用開發(fā)。
BIT采用上電BIT,主要完成產(chǎn)品上電時(shí)的系統(tǒng)檢查,對(duì)系統(tǒng)運(yùn)行所需要的核心資源等進(jìn)行檢測(cè)。
系統(tǒng)啟動(dòng)后所有的處理器核都會(huì)進(jìn)入PMON中位于BOOT.S中的reset exception程序,判別是主還是從處理器從而進(jìn)入不同的程序分支。若是主處理器則執(zhí)行初始化CPIO配置寄存器、時(shí)鐘頻率、local io寄存器,然后執(zhí)行主處理器初始化工作,包括設(shè)置中斷、初始化DDR寄存器、LPC等,然后進(jìn)入操作系統(tǒng)程序的執(zhí)行,至此,主處理器核在PMON中的工作基本完成。接著從處理器初始化從處理器的核,設(shè)置處理器緩存一致性協(xié)議和KSEGO段訪問的緩存,然后初始化MMU和TLB相關(guān)的寄存器,之后得到當(dāng)前從處理器的ID號(hào),得到IP_STATUS的地址,再檢查自己對(duì)應(yīng)郵箱里的值是否不為0,若是,則設(shè)置堆棧指針,進(jìn)入操作系統(tǒng)。
應(yīng)用軟件通過對(duì)USB攝像頭輸出的視頻圖像進(jìn)行對(duì)比度、亮度變換等處理,處理后通過VGA口輸出。
USB視頻圖像的數(shù)據(jù)格式并不是所熟悉的RGB24格式,而是在每個(gè)幀頭包含有12個(gè)字節(jié)的幀頭(FF,F(xiàn)F,00,C4,C4,96,00,XX,XX,XX,XX,XX),并且每幀的數(shù)據(jù)格式是所謂的Bayer模式(它應(yīng)用于CCD和CMOS攝像頭)。它允許從一個(gè)單獨(dú)平面中得到彩色圖像,可以通過編寫相應(yīng)的轉(zhuǎn)換程序把其轉(zhuǎn)變成RGB24的格式通過軟件解碼進(jìn)行視頻數(shù)據(jù)解碼。
5 總結(jié)
本項(xiàng)目研究了龍芯國(guó)產(chǎn)3A多核處理器在軍用嵌入式系統(tǒng)中并行實(shí)時(shí)實(shí)現(xiàn)PMC子卡擴(kuò)展功能與視頻圖像處理器雙種功能的應(yīng)用,隨著芯片技術(shù)和應(yīng)用水平的不斷發(fā)展,國(guó)產(chǎn)多核處理器在為滿足軍用系統(tǒng)通用化、綜合化、集成化、小型化、低功耗方面將發(fā)揮越來越重要的作用。