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