張燕青 盧 山
(西安電子工程研究所 西安710100)
Intel X86 系列計(jì)算機(jī)在嵌入式裝備中有大量應(yīng)用,它的用法通常有兩種形式:一是直接采用X86 CPU 及其芯片組進(jìn)行設(shè)計(jì)、布板;另一種形式是采用嵌入式計(jì)算機(jī)模塊、設(shè)計(jì)一個載板。前一種方式設(shè)計(jì)得到的計(jì)算機(jī)主板優(yōu)點(diǎn)是結(jié)構(gòu)緊湊、一體化強(qiáng),缺點(diǎn)是布板成本高、設(shè)計(jì)周期長。后一種方式是把現(xiàn)成的計(jì)算機(jī)模塊作為一個元件,設(shè)計(jì)者僅需要設(shè)計(jì)一個I/O 擴(kuò)展載板,設(shè)計(jì)比較容易。再有一點(diǎn),軍事裝備研制周期通常需要5 ~10年,定型后裝備部隊(duì)的生產(chǎn)周期通常也為10年左右,而新的Intel X86系列CPU 持續(xù)供貨周期僅為7 ~8年,裝備在生產(chǎn)過程中常常面臨元件換型問題,有時甚至在裝備剛剛定型,原先選用的CPU 就要停產(chǎn)了。在這種情況下,若采用第一種方法,則需要重新設(shè)計(jì)印制板;采用第二種方法,由于嵌入式計(jì)算機(jī)模塊在設(shè)計(jì)時通常遵循標(biāo)準(zhǔn)協(xié)議,后續(xù)新的模塊只要與以前的模塊協(xié)議標(biāo)準(zhǔn)相同,就可以直接更換模塊,不需要重新設(shè)計(jì)硬件。這種方法帶來的好處是顯而易見的??梢赃x用的嵌入式模塊的種類多種多樣,文獻(xiàn)[1]采用的PC104 模塊主頻偏低,無法完成測控車所需要的大量實(shí)時接收任務(wù),文獻(xiàn)[2-3]采用的COM 模塊功耗較高、外形尺寸較大,本文采用基于COM-E標(biāo)準(zhǔn)的Nano 模塊,外形尺寸如一張名片大小,主頻可達(dá)1.6GHz,模塊內(nèi)還集成了4GB 的固態(tài)電子盤,而本身功耗僅5W 左右,非常適合嵌入式應(yīng)用。
COM-E 標(biāo)準(zhǔn)來源于COM(Computer On Module)標(biāo)準(zhǔn),主要是增加了PCI-Express 總線的擴(kuò)展功能。COM 標(biāo)準(zhǔn)是計(jì)算機(jī)應(yīng)用領(lǐng)域繼PC104 后最為成功的嵌入式模塊標(biāo)準(zhǔn),得到廣泛的應(yīng)用。在PC104 標(biāo)準(zhǔn)中,總線接口僅有ISA 總線和電源信號,其它的鍵盤、鼠標(biāo)、顯示器等接口都要從模塊上引出電纜。COM 標(biāo)準(zhǔn)的最大特點(diǎn)是所有對外接口都匯集到與載板相連的接插件中,因此,基于COM 模塊設(shè)計(jì)的載板可以沒有任何電纜。除此之外,COM 標(biāo)準(zhǔn)中包含了PCI總線,豐富了I/O 接口設(shè)計(jì)。
隨著PCI總線向PCI-Express 總線的發(fā)展,COM 標(biāo)準(zhǔn)中的PCI總線也更改為PCI-Express 總線,從而形成了新的COM-E 標(biāo)準(zhǔn)。COM-E 標(biāo)準(zhǔn)發(fā)布于2005年夏天,由PICMG 研發(fā)和維護(hù),它定義了新的模塊化電腦的物理尺寸、接口連接及散熱接口。COM-E 標(biāo)準(zhǔn)中包含了當(dāng)今計(jì)算機(jī)界廣泛使用的外設(shè)接口,包括USB、SATA、PATA、Ethernet、VGA、LVDS、DVI、HDMI、SDVO、PCI和PCI-Express等,還定義了三種模塊尺寸:緊湊型、基本型和擴(kuò)展型。后來,PICMG 在COM.0 Rev 2.0 版本中推出了第四種類型:迷你型,這就是Nano 模塊。
Nano 模塊的物理尺寸為84mm×55mm,與一張名片大小相當(dāng)。它的背面有一個表貼的220 芯連接器,分為A、B 兩排,這220 芯中囊括了Nano 模塊所有對外接口信號。Nano 模塊通常的框圖如下(以使用Intel 靈動系列CPU 的Nano 模塊為例)。
圖1 Nano 模塊框圖
Nano 模塊需要的電源有三種,分別是主電源、Standby 電源和CMOS 電源。這些電源都從模塊對外的接插件引入,其中主電源輸入占用了21 個電源輸入端和27 個回線端,可以給Nano 模塊提供高達(dá)120W 的電源容量。大部分的Nano 模塊不需要Standby 電源供電,但有些型號的Nano 模塊要求系統(tǒng)工作前,Standby 電源必須加電。為確保Nano 模塊以及后續(xù)的模塊能正常工作,最后統(tǒng)一給Nano 模塊加一個+5V 的電源。Nano 模塊主電源的輸入范圍比較寬,通常為+3 ~+20V,為減少電源供電種類,可以選擇和Standby 電源電壓相同的+5V。CMOS 電源可以用鈕扣電池供電。
給Nano 模塊供電最好用印制板線路而不是電源層,因?yàn)殡娫磳拥牟▌訉ano 模塊上使用的LVDS、PCI-Express 等低電壓、高速率的總線干擾較大,使其正常工作受影響。一根印制板銅線通過電流能力的大小與其溫度上升值有關(guān),通常用電流流經(jīng)導(dǎo)線時,在一定時間內(nèi)使其溫度升高不超過10℃或20℃的電流值作為銅線通過的最大電流。導(dǎo)線寬度與電流的關(guān)系如下表所示[4]。
現(xiàn)在常用的印制板銅層厚度為1oz,也就是厚度為35μm 左右。Nano 模塊功耗為10W(+5V,2A)左右,考慮到軍事裝備降額設(shè)計(jì)的要求,我們選用200mil 寬度的印制板銅線給Nano 模塊供電。
Nano 模塊對外連接器上還有電源開始按鈕信號輸入端,該信號接地就可以啟動Nano 模塊加電工作。由于我們研制的設(shè)備安裝在組合框架里,要求組合加電后Nano 模塊就開始工作,無需進(jìn)行外部控制,因此把信號通過電阻上拉到VCC 上。
對于X86 系統(tǒng)的調(diào)試和應(yīng)用來說,鍵盤、鼠標(biāo)接口是必不可少的。雖然Nano 模塊由于物理尺寸的限制,本身并不提供鍵盤、鼠標(biāo)接口,但我們還是可以通過LPC 總線擴(kuò)展的方法連接鍵盤、鼠標(biāo)。LPC 總線是X86 系統(tǒng)去除ISA 總線后用于擴(kuò)展低速外設(shè)的專用總線,它的特點(diǎn)是總線引腳數(shù)少,僅用4根信號就可以實(shí)現(xiàn)外設(shè)的擴(kuò)展。選用擴(kuò)展芯片時要注意Nano 模塊的BIOS 系統(tǒng)是否支持,對于BIOS系統(tǒng)支持的芯片,BIOS 會對應(yīng)用軟件模擬原有鍵盤、鼠標(biāo)接口的寄存器操作,原來編寫的應(yīng)用軟件不用做任何修改就可以正常使用鍵盤、鼠標(biāo)。我們選用的擴(kuò)展芯片時Winbond 公司生產(chǎn)的W83697HF,該芯片可以連接LPC 總線,提供并口、串口、鍵盤、鼠標(biāo)的支持。
表1 導(dǎo)線寬度與電流關(guān)系
Nano 模塊對外連接器上設(shè)置了LVDS 視頻顯示接口,它基于LVDS 串行差分高速總線技術(shù),采用一對時鐘信號和多對數(shù)據(jù)信號,適合在一個獨(dú)立機(jī)箱內(nèi)直接與液晶顯示屏連接。LVDS 視頻顯示接口的缺點(diǎn)是信號線較多,LVDS 信號本身也容易受到干擾,如果要把視頻信號送到機(jī)箱外部,還是要轉(zhuǎn)成其它標(biāo)準(zhǔn)的視頻接口為好??紤]到多數(shù)的加固顯示器還是采用VGA 接口,所以有必要設(shè)計(jì)LVDS 接口到VGA 接口的轉(zhuǎn)換電路。
轉(zhuǎn)換電路的設(shè)計(jì)方法是先把LVDS 串行信號進(jìn)行串行到并行的變化,得到R、G、B 各個顏色分量的數(shù)據(jù),然后把并行的數(shù)據(jù)進(jìn)行DA 轉(zhuǎn)換成模擬量的輸出,可以采用的芯片是 SN75LVDS86A 和ADV7127。SN75LVDS86A 具有三路數(shù)據(jù)轉(zhuǎn)換通道,數(shù)據(jù)吞吐率可達(dá)178.5Mbytes/s,可以完成LVDS 串行信號進(jìn)行串行到并行的變化,適用于SVGA、XGA和SXGA 標(biāo)準(zhǔn)的視頻接口數(shù)據(jù)傳輸。ADV7127 具有三路高速DA 變換器,變換率高達(dá)330Mbps。這兩款芯片串聯(lián)配合使用,完成從LVDS 到VGA 標(biāo)準(zhǔn)的轉(zhuǎn)換。
Nano 模塊對外的總線有兩種,一種是LPC,另一種是PCI-Express。LPC 總線的擴(kuò)展需要BIOS系統(tǒng)支持,一般用于CPU 系統(tǒng)部件的擴(kuò)展,不用于用戶IO 設(shè)備的擴(kuò)展。所以如果Nano 模塊需要IO設(shè)備的擴(kuò)展,需要用PCI-Express 來實(shí)現(xiàn)。
使用Nano 模塊的PCI-Express 接口有兩種方式,一種是使用專用總線橋接芯片,例如PLX 公司的PEX8311[5],另一種是采用帶PCI-Express 硬核的FPGA 芯片來實(shí)現(xiàn)。前一種方式PEX8311 與以前的PCI橋接芯片類似,提供CPU 內(nèi)存空間到外部空間的映射轉(zhuǎn)換,軟件驅(qū)動方式與PCI橋接芯片也是兼容的。唯一不同的是PEX8311 與CPU 連接方式是串行的,信號線數(shù)量少。這種設(shè)計(jì)方式下,用戶需要用FPGA 芯片設(shè)計(jì)一個時序狀態(tài)機(jī),實(shí)現(xiàn)用戶IO 系統(tǒng)與PEX8311 芯片的連接。后一種方式用IP核的方式把橋接芯片的功能合并到FPGA 中,在一片F(xiàn)PGA 中同時實(shí)現(xiàn)了總線橋接和時序狀態(tài)機(jī),這樣就減少了芯片數(shù)量,設(shè)計(jì)更為緊湊。我們選擇后一種方式實(shí)現(xiàn)PCI-Express 接口的擴(kuò)展,采用的FPGA 為Xilinx 公司的Spartan6 系列FPGA。
Xilinx 公司的PCI-Express 硬核是基于GTP(吉比特收發(fā)器)收發(fā)器組件的[6]。每個GTP 收發(fā)器組件由發(fā)送單元和接收單元組成,可以實(shí)現(xiàn)吉比特?cái)?shù)據(jù)的發(fā)送和接收,原理框圖如下。
圖2 GTP 原理框圖
GTP 收發(fā)器作為本系統(tǒng)的核心,在整個系統(tǒng)中實(shí)現(xiàn)最關(guān)鍵的數(shù)據(jù)轉(zhuǎn)換功能,提升了系統(tǒng)的穩(wěn)定性和數(shù)據(jù)傳輸?shù)乃俾省TP 是集成在Spartan-6 系列FPGA 中的低功耗收發(fā)器,具有高度可配置性,與FPGA 上的可編程邏輯資源是緊密結(jié)合的。Spartan-6 FPGA GTP 收發(fā)器的每一個GTP 收發(fā)器均包括獨(dú)立的發(fā)送器和接收器,發(fā)送器和接收器均由物理編碼子層Physical Coding Sublayer(PCS)和物理媒介適配層Physical Media Attachment(PMA)兩個子層組成,其中PCS 子層負(fù)責(zé)8B/10B 編解碼和CRC校驗(yàn),并集成了負(fù)責(zé)通道綁定和時鐘修正的彈性緩沖8B/10B 編碼可以避免數(shù)據(jù)流中出現(xiàn)連0 連1 的情況,便于時鐘的恢復(fù)。彈性緩沖可以解決恢復(fù)時鐘與本地時鐘不一致的問題并進(jìn)行數(shù)據(jù)速率的匹配,使得通道綁定成為可能。PMA 子層中集成了SERDES 發(fā)送和接收緩沖時鐘發(fā)生器及時鐘恢復(fù)電路,SERDES 是一個串/并轉(zhuǎn)換器負(fù)責(zé)FPGA 中本地的32 位并行數(shù)據(jù),也可以是16 位或8 位與GTP 收發(fā)器接口的串行數(shù)據(jù)之間的轉(zhuǎn)換,采用串行數(shù)據(jù)收發(fā)可以在高頻條件下很好地避免數(shù)據(jù)間的串?dāng)_。時鐘發(fā)生器和時鐘恢復(fù)電路用于將時鐘與數(shù)據(jù)綁定發(fā)送以及將時鐘從接收到的數(shù)據(jù)流中恢復(fù)出來,從而避免了在高速傳輸條件下時鐘與數(shù)據(jù)分開傳輸所帶來的時鐘抖動等問題。
PCIExpress 硬核由下至上分為物理層、數(shù)據(jù)鏈路層和事務(wù)層。物理層采用片上的高速吉比特收發(fā)器GTP 實(shí)現(xiàn)高速串行數(shù)據(jù)的傳輸,同時要實(shí)現(xiàn)數(shù)據(jù)包的合并和拆分。鏈路訓(xùn)練和初始化8B/10B 編解碼操作數(shù)據(jù)鏈路層位于物理層和事務(wù)層之間,主要實(shí)現(xiàn)鏈路管理和數(shù)據(jù)完整性校驗(yàn)等功能。事務(wù)層位于最頂層,接收用戶邏輯產(chǎn)生的TLP(transaction layer packets)經(jīng)過調(diào)度傳到合適的VC(virtual channel)中,同時它也負(fù)責(zé)向用戶邏輯發(fā)送接收到的TLP 數(shù)據(jù)包。事務(wù)層是PCI-Express 總線層次結(jié)構(gòu)的最高層,該層次將接收PCI-E 設(shè)備核心層的數(shù)據(jù)請求,并將其轉(zhuǎn)化為PCI-E 總線事務(wù)。PCI-E總線使用的這些總線事務(wù)在TLP 頭中定義,而用戶邏輯主要與事務(wù)層和配置模塊進(jìn)行交互,一方面讀取配置模塊的控制和狀態(tài)參數(shù),用于設(shè)置PXIExpress 設(shè)備的工作狀態(tài),另一方面將DMA 讀和寫操作轉(zhuǎn)化為向事務(wù)層發(fā)送存儲器讀、寫請求TLP 和接收事務(wù)層的存儲器讀完成TLP。PCI-Express 硬核原理框圖如圖3所示。設(shè)計(jì)時序狀態(tài)機(jī)的主要任務(wù)就是根據(jù)PCI-Express硬核接口設(shè)計(jì)與之相適應(yīng)的控制邏輯。按照系統(tǒng)要求,時序狀態(tài)機(jī)一般包括如下幾個部分:接收模塊、發(fā)送模塊、中斷申請、DMA 控制模塊和數(shù)據(jù)存儲區(qū)等。時序狀態(tài)機(jī)框圖如下圖所示。
圖3 PCI-E 硬核原理框圖
圖4 時序狀態(tài)機(jī)框圖
我們研制的系統(tǒng)控制器是地面測控車的重要組成部分,它完成彈道測量數(shù)據(jù)預(yù)處理、系統(tǒng)時序產(chǎn)生、分機(jī)工作模式/參數(shù)下達(dá)、工作狀態(tài)上報(bào)等功能,要求計(jì)算能力強(qiáng)、數(shù)據(jù)吞吐率高。系統(tǒng)控制器以Nano 模塊為核心元件,它的供電、鍵盤/鼠標(biāo)、顯示等接口采用前面所述的方法進(jìn)行設(shè)計(jì),用其自帶的PCI-Express 總線擴(kuò)展I/O 接口。為了提高PCI-Express 總線效率,減少數(shù)據(jù)收發(fā)對Nano 模塊的影響,我們采用IDT 公司的雙口RAM 器件IDT70V06作為數(shù)據(jù)交換的接口器件。IDT70V06 共有16KB的RAM,可以分成兩個8KB 的區(qū)域,分別用于Nano模塊發(fā)送和接收處理。系統(tǒng)控制器接收到彈道測量數(shù)據(jù)后,先存放在雙口RAM 的接收區(qū)域,然后利用IDT70V06 的中斷信號線通知Nano 模塊,Nano 模塊接收到中斷信號后,進(jìn)入中斷服務(wù)程序,在中斷服務(wù)程序中啟動PCI-Express 的DMA 傳輸方式,一次性把數(shù)據(jù)從雙口RAM 都讀到內(nèi)存中;Nano 模塊對這些數(shù)據(jù)進(jìn)行預(yù)處理,再打包通過以太網(wǎng)絡(luò)接口發(fā)送給數(shù)據(jù)處理單元進(jìn)行彈道濾波和外推。
系統(tǒng)時序的產(chǎn)生由FPGA 來完成。每個脈沖相關(guān)處理周期內(nèi)安排的工作內(nèi)容都是變化的,需要Nano 模塊根據(jù)上一個脈沖相關(guān)處理周期測量、控制的結(jié)果進(jìn)行設(shè)置。Nano 模塊在每個相關(guān)脈沖處理周期的末尾,對下一個脈沖相關(guān)處理周期內(nèi)的每一個脈沖重復(fù)周期應(yīng)該完成的工作進(jìn)行編排,啟動PCI-Express 的DMA 傳輸方式,一次性把工作安排內(nèi)容都寫到雙口RAM 中,并觸發(fā)中斷,通知FPGA讀取。FPGA 讀取到工作安排數(shù)據(jù)后,在下一個脈沖相關(guān)處理周期到來時,逐個生成需要的系統(tǒng)時序信號。
Nano 模塊具有體積小、功耗低的特點(diǎn),PCI-Express 總線吞吐率高,且自帶4GB 的電子盤,很適合在嵌入式設(shè)備中使用。低溫試驗(yàn)表明,Nano 模塊在-40℃依然可以正常工作。在我們歷次試驗(yàn)中,Nano 模塊都未出過故障,是一款質(zhì)量可靠、性能優(yōu)良的CPU 模塊,很適合用于嵌入式計(jì)算機(jī)板的開發(fā)。
[1]雷剛,汪健等.基于PC104 和PCL6025B 的數(shù)控切割機(jī)控制系統(tǒng)設(shè)計(jì)[J],制造業(yè)自動化,2014,36(3):148-151.
[2]徐宏,方方等.基于ETX 載板測控平臺的研制[J],核電子學(xué)與探測技術(shù),2013,33(9):1139-1143.
[3]李孟華,欒前進(jìn)等.基于ETX 模塊的機(jī)載數(shù)據(jù)處理模塊的設(shè)計(jì)[J],航空計(jì)算技術(shù),2011,41(6):116-118.
[4]高峰鴿,宜健.PCB 電源布線設(shè)計(jì)[J],無線通信技術(shù),2011,11(4):116-118.
[5]申得玉,張善從.PEX8311 芯片在圖像模擬源中的應(yīng)用[J],計(jì)算機(jī)技術(shù)與發(fā)展,2013,23(10):143-150.
[6]Xilinx.UG386 Spartan-6 FPGA GTP Transceivers User Guide[N].2010.