白云逸,韓振國,王悅
(航空工業(yè)西安航空計(jì)算技術(shù)研究所,陜西西安,710065)
嵌入式系統(tǒng)是一種專用的計(jì)算機(jī)系統(tǒng),可作為裝置或設(shè)備的一部分,具有功耗低、體積小的優(yōu)勢(shì)[1]。嵌入式系統(tǒng)由軟件和硬件兩部分組成,其中嵌入式軟件包含系統(tǒng)軟件、中間件和應(yīng)用軟件,嵌入式硬件包含運(yùn)算器、控制器、存儲(chǔ)器和輸入輸出設(shè)備。隨著計(jì)算機(jī)技術(shù)的發(fā)展與應(yīng)用,運(yùn)算器和控制器等資源被集成為一體,統(tǒng)稱中央處理單元(簡(jiǎn)稱CPU)。CPU 是嵌入式硬件的核心,用于執(zhí)行各種算數(shù)、邏輯運(yùn)算及控制功能。
目前CPU架構(gòu)主要包含ARM、MIPS、PowerPC、X86等。其中MIPS 架構(gòu)基于精簡(jiǎn)指令集(簡(jiǎn)稱RISC),與其他架構(gòu)處理器相比,MIPS 架構(gòu)的特點(diǎn)是運(yùn)算靈活高效、功耗低,因此被廣泛應(yīng)用于嵌入式處理、網(wǎng)絡(luò)設(shè)備和數(shù)字信號(hào)處理等領(lǐng)域[2~3]。
數(shù)據(jù)處理模塊是一種基于CPU 可實(shí)現(xiàn)計(jì)算和數(shù)據(jù)收發(fā)功能的模塊,是嵌入式計(jì)算機(jī)的核心組成模塊。本文提出一種基于MIPS 架構(gòu)的數(shù)據(jù)處理模塊設(shè)計(jì),以處理器LS2K1000 為核心,通過配置邏輯電路、存儲(chǔ)電路及周邊接口電路等硬件資源,保證模塊能夠?qū)崿F(xiàn)各種運(yùn)算控制功能,并與外設(shè)有效交聯(lián)。其中LS2K1000 片內(nèi)集成2 個(gè)64 位雙發(fā)射超標(biāo)量GS264 處理器核,工作主頻為200MHz~1GHz可調(diào),具有64 位DDR3 控制器以及豐富的外設(shè)接口[4]。處理器功耗低且接口豐富,目前已廣泛應(yīng)用于工控車載等嵌入式領(lǐng)域。
如圖1 所示,數(shù)據(jù)處理模塊主要包含供電電路、存儲(chǔ)電路、時(shí)鐘電路、邏輯電路。存儲(chǔ)電路包括DDR3 主存儲(chǔ)器以及FLASH、NVRAM。本設(shè)計(jì)選用 16 位并行總線Nor FLASH 與8 位并行總線NvRAM,讓FLASH 與NVRAM 分別與可編程邏輯器件(簡(jiǎn)稱CPLD)相連,采用2K1000 處理器通過Local Bus 訪問CPLD 間接訪問存儲(chǔ)資源。通過CPLD 實(shí)現(xiàn)基本的邏輯控制,主要實(shí)現(xiàn)復(fù)位控制管理、上電配置、上電時(shí)序控制、Local Bus 總線地址譯碼、看門狗定時(shí)器功能及輔助寄存器功能。模塊對(duì)外提供2 路PCIe 2.0 接口、1 路CAN 接口與1 路USB 接口,并集成2 個(gè)100/1000Mbps 以太網(wǎng)接口[5]。
圖1 數(shù)據(jù)處理模塊架構(gòu)圖
LS2K1000 處理器具有7 種電源電壓。模塊采用5V 外部供電,考慮到鎖相環(huán)電源電壓及對(duì)電壓穩(wěn)定性要求較高,為此采用線性穩(wěn)壓電源(簡(jiǎn)稱LDO)進(jìn)行電壓轉(zhuǎn)換[4]。為降低數(shù)據(jù)處理模塊功耗,對(duì)部分供電進(jìn)行合并,故模塊供電電路采用5 個(gè)開關(guān)電源(簡(jiǎn)稱DC/DC)與1 個(gè)LDO 為處理器及周邊配置電路進(jìn)行供電。采用CPLD 進(jìn)行控制不同電源芯片的上電時(shí)序,供電電路設(shè)計(jì)如圖2 所示。
圖2 供電電路結(jié)構(gòu)圖
模塊使用32.768kHz 晶振為L(zhǎng)S2K1000 處理器的實(shí)時(shí)時(shí)鐘(簡(jiǎn)稱RTC)單元提供單端時(shí)鐘。模塊使用100MHz晶振經(jīng)過時(shí)鐘驅(qū)動(dòng)器獲得三路100MHz 時(shí)鐘,其中一路作為L(zhǎng)S2K1000 數(shù)據(jù)處理單元的基本時(shí)鐘源,供LS2K1000數(shù)據(jù)處理單元內(nèi)各電路使用,第二路作為CPLD 內(nèi)部系統(tǒng)時(shí)鐘,供CPLD 所有邏輯資源使用,第三路時(shí)鐘供外部使用。
模塊外設(shè)以太網(wǎng)、PCIe、RS232、USB 與CAN 等對(duì)外接口,具體介紹如下:
以太網(wǎng)接口:LS2K1000 處理器利用內(nèi)部集成以太網(wǎng)控制器,經(jīng)過PHY 芯片與變壓器,對(duì)外提供2 路1000/100Mbps 自適應(yīng)以太網(wǎng)。
PCIe 接 口:模 塊 將2 路PCIe 接 口 配 置 為6 路X1 PCIe 端口。PCIe 參考輸入時(shí)鐘由外部提供。差分時(shí)鐘采用100M HCSL 邏輯電平,單端擺幅為700mV,共模電壓約為350mV,驅(qū)動(dòng)電流15mA。
RS232 接口:將LS2K1000 芯片的TTL 電平轉(zhuǎn)換為RS232 電平,速率115200bps。
USB 接口:LS2K1000 處理器內(nèi)部集成USB 控制器,通過外置負(fù)載開關(guān)與ESD 芯片實(shí)現(xiàn)USB 接口防靜電功能;
CAN接口:LS2K1000處理器利用內(nèi)部集成CAN控制器,采用驅(qū)動(dòng)器將接口轉(zhuǎn)換為差分電平。
LS2K1000 處理器的DDR 控制器支持DDR3 模式,本設(shè)計(jì)采用64 位數(shù)據(jù)寬度,共設(shè)計(jì)4 片DDR3 顆粒,總?cè)萘繛?GB,LS2K1000 處理器DDR3 控制器工作時(shí)鐘500MHz。DDR3 芯片直接連到LS2K1000 內(nèi)存控制器,控制器完成所有內(nèi)存芯片操作(除復(fù)位信號(hào)),包括片選,行地址、列地址以及bank 地址映射,時(shí)序等操作[4]。
本設(shè)計(jì)選用SPI 接口FLASH 引導(dǎo)系統(tǒng)啟動(dòng),BOOT 啟動(dòng)時(shí)SPI 接口速度為10Mbps。
本設(shè)計(jì)所選用Nor FLASH 存儲(chǔ)容量為64MB,NVRAM存儲(chǔ)容量為128KB,F(xiàn)LASH 與NvRAM 分別與CPLD 相連,LS2K1000 處理器可通過Local Bus 訪 問CPLD 間 接 訪 問FLASH 和NvRAM。
模塊可編程邏輯器件采用成都華微公司的CPLD,可用IO 數(shù)目204 個(gè),等效可用門數(shù)為38000,最高運(yùn)行頻率220MHz,I/O口支持3.3V、2.5V、1.8V、1.5V邏輯電平。實(shí)現(xiàn)基本的邏輯控制,主要實(shí)現(xiàn)模塊上電控制、片選譯碼與看門狗控制等功能。
LS2K1000 處理器共分三個(gè)電源域(RTC 電源域、RSM 電源域與CORE 電源域),不同電源域電壓不可合并。為保證上電時(shí)序符合要求,通過CPLD 使能電源芯片的RUN 管腳實(shí)現(xiàn)上電時(shí)序控制。通過設(shè)定4 個(gè)上電定時(shí)寄存器,控制不同電源的上電時(shí)間間隔,具體控制流程如圖3 所示。
圖3 數(shù)據(jù)處理模塊上電順序控制
數(shù)據(jù)處理模塊CPLD 掛接在LS2K1000 處理器的Local Bus 總線,實(shí)現(xiàn)了處理器和CPLD 內(nèi)部資源間的通信,地址鎖存及片選譯碼功能即對(duì)Local Bus 總線的地址進(jìn)行鎖存,對(duì)FLASH、NVRAM、CPLD 內(nèi)部寄存器等進(jìn)行譯碼的功能。具體為對(duì)LS2K1000 處理器的Local Bus 總線地址進(jìn)行鎖存,并根據(jù)Local Bus 片選和地址空間對(duì)FLASH、NVRAM、CPLD 內(nèi)部寄存器(包括看門狗寄存器)的片選進(jìn)行譯碼。
數(shù)據(jù)處理模塊CPLD 具備復(fù)位信號(hào)產(chǎn)生的功能。當(dāng)系統(tǒng)上電復(fù)位、看門狗復(fù)位或手動(dòng)復(fù)位有效后,CPLD 產(chǎn)生復(fù)位信號(hào),可對(duì)內(nèi)部邏輯、存儲(chǔ)器、PHY 芯片等進(jìn)行復(fù)位操作。看門狗復(fù)位持續(xù)200ms,其余復(fù)位輸出持續(xù)時(shí)長(zhǎng)由輸入的復(fù)位信號(hào)時(shí)長(zhǎng)決定。數(shù)據(jù)處理模塊具體復(fù)位接口信號(hào)見表1。
表1 復(fù)位信號(hào)說明
數(shù)據(jù)處理模塊上由邏輯實(shí)現(xiàn)看門狗定時(shí)器功能,使用3 個(gè)CPLD內(nèi)部寄存器(看門狗狗叫定時(shí)寄存器(初值設(shè)定為100ms)、看門狗復(fù)位定時(shí)寄存器(初值設(shè)定為50ms)和空中態(tài)定時(shí)寄存器(初值設(shè)定為10s)),完成看門狗定時(shí)器使能操作,喂狗操作以及設(shè)定周期操作。可編程看門狗定時(shí)器基準(zhǔn)時(shí)鐘為100MHz,定時(shí)分辨率為10ns,定時(shí)器寬度為32 位,三個(gè)定時(shí)器采用遞減計(jì)數(shù),復(fù)位結(jié)束后默認(rèn)為初值。看門狗設(shè)置分為空中態(tài)與地面態(tài)。當(dāng)模塊處于空中態(tài)時(shí),看門狗每隔100ms 產(chǎn)生中斷,若產(chǎn)生中斷后50ms 內(nèi)未得到處理時(shí),產(chǎn)生看門狗復(fù)位,模塊發(fā)出全局復(fù)位信號(hào)。模塊處于空中態(tài)時(shí),看門狗在10s 后自動(dòng)使能,10s 內(nèi)看門狗可通過軟件使能/禁止,地面態(tài)默認(rèn)禁止(可通過軟件使能、禁止看門狗定時(shí)器)??撮T狗邏輯控制示意如圖4 所示。
圖4 看門狗邏輯控制流程圖
CPLD 內(nèi)部邏輯產(chǎn)生輸入離散量控制信號(hào),用于離散量的輸入控制。設(shè)置輸入離散量狀態(tài)寄存器。離散量邏輯信號(hào)定義見表2。
表2 復(fù)位信號(hào)說明
數(shù)據(jù)處理卡為了保證中斷控制的靈活,將外部中斷和CPLD 內(nèi)部中斷通過CPLD 分配到LS2K1000 處理器的外部中斷上,分配時(shí)由對(duì)應(yīng)輸入中斷信號(hào)直接賦值即可,中斷信號(hào)見表3。
表3 中斷信號(hào)分配
處理器模塊軟件包括天脈1 嵌入式操作系統(tǒng)與系統(tǒng)軟件及測(cè)試程序[6~7]。其中天脈1 操作系統(tǒng)是運(yùn)行在嵌入式計(jì)算機(jī)上實(shí)時(shí)操作系統(tǒng)[8],具有存儲(chǔ)器管理和分配、設(shè)備管理、中斷管理、事件管理、消息管理等功能[9]。
測(cè)試程序主要包括上電BIT 與驗(yàn)收測(cè)試程序等。其中應(yīng)用程序固化在16 位Nor FLASH 中,BOOT 程序固化在SPI Flash 中。當(dāng)處理器模塊加電后,開始執(zhí)行SPI FLASH 內(nèi)部程序,SPI Flash 內(nèi)部駐留的引導(dǎo)程序開始啟動(dòng),等待用戶的輸入從而進(jìn)入不同的工作方式。BOOT 菜單主要包含啟動(dòng)串口操作系統(tǒng)、PUBIT、更改程序入口地址與設(shè)置默認(rèn)啟動(dòng)項(xiàng),模塊正常啟動(dòng)后,可進(jìn)入處理器模塊BOOT 菜單[8~9]。
根據(jù)處理器模塊設(shè)計(jì)的功能搭建測(cè)試平臺(tái),模塊通過連接器與外部基板連接,RS232 串口與以太網(wǎng)接口通過外部基板與PC 機(jī)相連[10]。數(shù)據(jù)處理模塊在固化BOOT 程序與應(yīng)用程序后,對(duì)處理器模塊進(jìn)行相應(yīng)的功能性能測(cè)試。測(cè)試內(nèi)容主要包含以下功能。
(1)處理器測(cè)試
處理器測(cè)試包括讀取當(dāng)前處理器型號(hào)及主頻、算術(shù)運(yùn)算測(cè)試、邏輯運(yùn)算測(cè)試和浮點(diǎn)雙精度測(cè)試。處理器型號(hào)測(cè)試為讀取處理器DEVICE ID 寄存器的ID 值與預(yù)期ID 值比較,頻率測(cè)試為讀取處理器特定寄存器的頻率配置與預(yù)期配置值比較,算術(shù)運(yùn)算測(cè)試包括加、減、乘、除測(cè)試,邏輯運(yùn)算測(cè)試包括邏輯與、或、非、異或、左移和右移測(cè)試,浮點(diǎn)運(yùn)算測(cè)試包括浮點(diǎn)的加減、乘、除測(cè)試,將測(cè)試結(jié)果與預(yù)期的結(jié)果進(jìn)行比較一致認(rèn)定測(cè)試通過。
(2)DDR 測(cè)試
DDR 測(cè)試采用布碼測(cè)試對(duì)DDR 讀寫功能進(jìn)行測(cè)試。讀寫測(cè)試方法為,軟件進(jìn)行一個(gè)有返回值的函數(shù)調(diào)用,在函數(shù)中定義一段內(nèi)存空間,測(cè)試時(shí)軟件依次從該地址第一個(gè)字節(jié)開始使用測(cè)試碼進(jìn)行讀寫操作,每進(jìn)行一次操作后,與預(yù)期值進(jìn)行比較。如比較結(jié)果一致則認(rèn)定通過。
(3)FLASH 測(cè)試
FLASH 測(cè)試針對(duì)FLASH 內(nèi)容的正確性進(jìn)行判斷。具體測(cè)試方法為對(duì)FLASH 進(jìn)行固化時(shí),計(jì)算校驗(yàn)和并存儲(chǔ)在預(yù)定的地址,進(jìn)行上電BIT 測(cè)試時(shí)再次計(jì)算FLASH 的校驗(yàn)和,并與已存儲(chǔ)在預(yù)定地址的校驗(yàn)和進(jìn)行比較,比較FLASH 在使用過程中是否發(fā)生數(shù)據(jù)跳變;讀取數(shù)據(jù)測(cè)試方法為多次讀取同一FLASH 地址的數(shù)據(jù),并比對(duì)多次讀取數(shù)據(jù)是否一致。如比較結(jié)果一致則認(rèn)定通過。
(4)NvRAM 測(cè)試
NVRAM 測(cè)試進(jìn)行讀寫訪問測(cè)試。具體測(cè)試方法為對(duì)NVRAM 預(yù)定的存儲(chǔ)空間進(jìn)行讀寫操作,進(jìn)行布碼測(cè)試,比較讀出的內(nèi)容和寫入的內(nèi)容是否一致。如一致則認(rèn)定測(cè)試通過。
(5)離散量測(cè)試
離散量測(cè)試方法為在系統(tǒng)測(cè)試臺(tái)上離散量輸入開關(guān)依次撥至相關(guān)狀態(tài)(1 表示“開路”,0 表示“接地”),讀取模塊CPLD 內(nèi)部寄存器數(shù)值,并與預(yù)期數(shù)值進(jìn)行對(duì)比,如比較結(jié)果一致則認(rèn)定通過。
(6)看門狗測(cè)試
對(duì)看門狗進(jìn)行使能,判斷看門狗工作是否正常。具體測(cè)試方法為使能看門狗,對(duì)處理器延時(shí),觀測(cè)處理器能否正常響應(yīng)看門狗中斷,同時(shí)在規(guī)定時(shí)間內(nèi)執(zhí)行喂狗操作,如看門狗狗叫標(biāo)志信號(hào)被置位,模塊正常工作未復(fù)位,則判定測(cè)試通過,否則不通過。
經(jīng)測(cè)試數(shù)據(jù)處理模塊能夠正常啟動(dòng),具體結(jié)果如下:通過用萬用表對(duì)模塊瞬態(tài)電壓進(jìn)行測(cè)量,測(cè)量結(jié)果符合LS2K1000 供電要求,并且上電時(shí)序滿足處理器需求。對(duì)模塊進(jìn)行手動(dòng)復(fù)位后模塊能重新啟動(dòng)。用示波器測(cè)量離散量的輸入電平均與寄存器中寫入的值相對(duì)應(yīng),離散量測(cè)試無誤[10]。對(duì)模塊CPU、DDR、Flash、NvRAM 等功能通過測(cè)試程序驗(yàn)證均正常工作。
本文結(jié)合LS2K1000 處理器特征提出一種基于MIPS 架構(gòu)的數(shù)據(jù)處理模塊設(shè)計(jì)方案,對(duì)模塊硬件與邏輯設(shè)計(jì)進(jìn)行了介紹。在天脈操作系統(tǒng)下對(duì)模塊功能進(jìn)行測(cè)試,結(jié)果表明該模塊具有高集成、低功耗等特點(diǎn),可廣泛應(yīng)用于車載嵌入式計(jì)算領(lǐng)域,具有較大應(yīng)用價(jià)值。