張燕青 盧 山
(西安電子工程研究所 西安710100)
Intel X86 系列計算機在嵌入式裝備中有大量應用,它的用法通常有兩種形式:一是直接采用X86 CPU 及其芯片組進行設計、布板;另一種形式是采用嵌入式計算機模塊、設計一個載板。前一種方式設計得到的計算機主板優點是結構緊湊、一體化強,缺點是布板成本高、設計周期長。后一種方式是把現成的計算機模塊作為一個元件,設計者僅需要設計一個I/O 擴展載板,設計比較容易。再有一點,軍事裝備研制周期通常需要5 ~10年,定型后裝備部隊的生產周期通常也為10年左右,而新的Intel X86系列CPU 持續供貨周期僅為7 ~8年,裝備在生產過程中常常面臨元件換型問題,有時甚至在裝備剛剛定型,原先選用的CPU 就要停產了。在這種情況下,若采用第一種方法,則需要重新設計印制板;采用第二種方法,由于嵌入式計算機模塊在設計時通常遵循標準協議,后續新的模塊只要與以前的模塊協議標準相同,就可以直接更換模塊,不需要重新設計硬件。這種方法帶來的好處是顯而易見的。可以選用的嵌入式模塊的種類多種多樣,文獻[1]采用的PC104 模塊主頻偏低,無法完成測控車所需要的大量實時接收任務,文獻[2-3]采用的COM 模塊功耗較高、外形尺寸較大,本文采用基于COM-E標準的Nano 模塊,外形尺寸如一張名片大小,主頻可達1.6GHz,模塊內還集成了4GB 的固態電子盤,而本身功耗僅5W 左右,非常適合嵌入式應用。
COM-E 標準來源于COM(Computer On Module)標準,主要是增加了PCI-Express 總線的擴展功能。COM 標準是計算機應用領域繼PC104 后最為成功的嵌入式模塊標準,得到廣泛的應用。在PC104 標準中,總線接口僅有ISA 總線和電源信號,其它的鍵盤、鼠標、顯示器等接口都要從模塊上引出電纜。COM 標準的最大特點是所有對外接口都匯集到與載板相連的接插件中,因此,基于COM 模塊設計的載板可以沒有任何電纜。除此之外,COM 標準中包含了PCI總線,豐富了I/O 接口設計。
隨著PCI總線向PCI-Express 總線的發展,COM 標準中的PCI總線也更改為PCI-Express 總線,從而形成了新的COM-E 標準。COM-E 標準發布于2005年夏天,由PICMG 研發和維護,它定義了新的模塊化電腦的物理尺寸、接口連接及散熱接口。COM-E 標準中包含了當今計算機界廣泛使用的外設接口,包括USB、SATA、PATA、Ethernet、VGA、LVDS、DVI、HDMI、SDVO、PCI和PCI-Express等,還定義了三種模塊尺寸:緊湊型、基本型和擴展型。后來,PICMG 在COM.0 Rev 2.0 版本中推出了第四種類型:迷你型,這就是Nano 模塊。
Nano 模塊的物理尺寸為84mm×55mm,與一張名片大小相當。它的背面有一個表貼的220 芯連接器,分為A、B 兩排,這220 芯中囊括了Nano 模塊所有對外接口信號。Nano 模塊通常的框圖如下(以使用Intel 靈動系列CPU 的Nano 模塊為例)。

圖1 Nano 模塊框圖
Nano 模塊需要的電源有三種,分別是主電源、Standby 電源和CMOS 電源。這些電源都從模塊對外的接插件引入,其中主電源輸入占用了21 個電源輸入端和27 個回線端,可以給Nano 模塊提供高達120W 的電源容量。大部分的Nano 模塊不需要Standby 電源供電,但有些型號的Nano 模塊要求系統工作前,Standby 電源必須加電。為確保Nano 模塊以及后續的模塊能正常工作,最后統一給Nano 模塊加一個+5V 的電源。Nano 模塊主電源的輸入范圍比較寬,通常為+3 ~+20V,為減少電源供電種類,可以選擇和Standby 電源電壓相同的+5V。CMOS 電源可以用鈕扣電池供電。
給Nano 模塊供電最好用印制板線路而不是電源層,因為電源層的波動對Nano 模塊上使用的LVDS、PCI-Express 等低電壓、高速率的總線干擾較大,使其正常工作受影響。一根印制板銅線通過電流能力的大小與其溫度上升值有關,通常用電流流經導線時,在一定時間內使其溫度升高不超過10℃或20℃的電流值作為銅線通過的最大電流。導線寬度與電流的關系如下表所示[4]。
現在常用的印制板銅層厚度為1oz,也就是厚度為35μm 左右。Nano 模塊功耗為10W(+5V,2A)左右,考慮到軍事裝備降額設計的要求,我們選用200mil 寬度的印制板銅線給Nano 模塊供電。
Nano 模塊對外連接器上還有電源開始按鈕信號輸入端,該信號接地就可以啟動Nano 模塊加電工作。由于我們研制的設備安裝在組合框架里,要求組合加電后Nano 模塊就開始工作,無需進行外部控制,因此把信號通過電阻上拉到VCC 上。
對于X86 系統的調試和應用來說,鍵盤、鼠標接口是必不可少的。雖然Nano 模塊由于物理尺寸的限制,本身并不提供鍵盤、鼠標接口,但我們還是可以通過LPC 總線擴展的方法連接鍵盤、鼠標。LPC 總線是X86 系統去除ISA 總線后用于擴展低速外設的專用總線,它的特點是總線引腳數少,僅用4根信號就可以實現外設的擴展。選用擴展芯片時要注意Nano 模塊的BIOS 系統是否支持,對于BIOS系統支持的芯片,BIOS 會對應用軟件模擬原有鍵盤、鼠標接口的寄存器操作,原來編寫的應用軟件不用做任何修改就可以正常使用鍵盤、鼠標。我們選用的擴展芯片時Winbond 公司生產的W83697HF,該芯片可以連接LPC 總線,提供并口、串口、鍵盤、鼠標的支持。

表1 導線寬度與電流關系
Nano 模塊對外連接器上設置了LVDS 視頻顯示接口,它基于LVDS 串行差分高速總線技術,采用一對時鐘信號和多對數據信號,適合在一個獨立機箱內直接與液晶顯示屏連接。LVDS 視頻顯示接口的缺點是信號線較多,LVDS 信號本身也容易受到干擾,如果要把視頻信號送到機箱外部,還是要轉成其它標準的視頻接口為好。考慮到多數的加固顯示器還是采用VGA 接口,所以有必要設計LVDS 接口到VGA 接口的轉換電路。
轉換電路的設計方法是先把LVDS 串行信號進行串行到并行的變化,得到R、G、B 各個顏色分量的數據,然后把并行的數據進行DA 轉換成模擬量的輸出,可以采用的芯片是 SN75LVDS86A 和ADV7127。SN75LVDS86A 具有三路數據轉換通道,數據吞吐率可達178.5Mbytes/s,可以完成LVDS 串行信號進行串行到并行的變化,適用于SVGA、XGA和SXGA 標準的視頻接口數據傳輸。ADV7127 具有三路高速DA 變換器,變換率高達330Mbps。這兩款芯片串聯配合使用,完成從LVDS 到VGA 標準的轉換。
Nano 模塊對外的總線有兩種,一種是LPC,另一種是PCI-Express。LPC 總線的擴展需要BIOS系統支持,一般用于CPU 系統部件的擴展,不用于用戶IO 設備的擴展。所以如果Nano 模塊需要IO設備的擴展,需要用PCI-Express 來實現。
使用Nano 模塊的PCI-Express 接口有兩種方式,一種是使用專用總線橋接芯片,例如PLX 公司的PEX8311[5],另一種是采用帶PCI-Express 硬核的FPGA 芯片來實現。前一種方式PEX8311 與以前的PCI橋接芯片類似,提供CPU 內存空間到外部空間的映射轉換,軟件驅動方式與PCI橋接芯片也是兼容的。唯一不同的是PEX8311 與CPU 連接方式是串行的,信號線數量少。這種設計方式下,用戶需要用FPGA 芯片設計一個時序狀態機,實現用戶IO 系統與PEX8311 芯片的連接。后一種方式用IP核的方式把橋接芯片的功能合并到FPGA 中,在一片FPGA 中同時實現了總線橋接和時序狀態機,這樣就減少了芯片數量,設計更為緊湊。我們選擇后一種方式實現PCI-Express 接口的擴展,采用的FPGA 為Xilinx 公司的Spartan6 系列FPGA。
Xilinx 公司的PCI-Express 硬核是基于GTP(吉比特收發器)收發器組件的[6]。每個GTP 收發器組件由發送單元和接收單元組成,可以實現吉比特數據的發送和接收,原理框圖如下。

圖2 GTP 原理框圖
GTP 收發器作為本系統的核心,在整個系統中實現最關鍵的數據轉換功能,提升了系統的穩定性和數據傳輸的速率。GTP 是集成在Spartan-6 系列FPGA 中的低功耗收發器,具有高度可配置性,與FPGA 上的可編程邏輯資源是緊密結合的。Spartan-6 FPGA GTP 收發器的每一個GTP 收發器均包括獨立的發送器和接收器,發送器和接收器均由物理編碼子層Physical Coding Sublayer(PCS)和物理媒介適配層Physical Media Attachment(PMA)兩個子層組成,其中PCS 子層負責8B/10B 編解碼和CRC校驗,并集成了負責通道綁定和時鐘修正的彈性緩沖8B/10B 編碼可以避免數據流中出現連0 連1 的情況,便于時鐘的恢復。彈性緩沖可以解決恢復時鐘與本地時鐘不一致的問題并進行數據速率的匹配,使得通道綁定成為可能。PMA 子層中集成了SERDES 發送和接收緩沖時鐘發生器及時鐘恢復電路,SERDES 是一個串/并轉換器負責FPGA 中本地的32 位并行數據,也可以是16 位或8 位與GTP 收發器接口的串行數據之間的轉換,采用串行數據收發可以在高頻條件下很好地避免數據間的串擾。時鐘發生器和時鐘恢復電路用于將時鐘與數據綁定發送以及將時鐘從接收到的數據流中恢復出來,從而避免了在高速傳輸條件下時鐘與數據分開傳輸所帶來的時鐘抖動等問題。
PCIExpress 硬核由下至上分為物理層、數據鏈路層和事務層。物理層采用片上的高速吉比特收發器GTP 實現高速串行數據的傳輸,同時要實現數據包的合并和拆分。鏈路訓練和初始化8B/10B 編解碼操作數據鏈路層位于物理層和事務層之間,主要實現鏈路管理和數據完整性校驗等功能。事務層位于最頂層,接收用戶邏輯產生的TLP(transaction layer packets)經過調度傳到合適的VC(virtual channel)中,同時它也負責向用戶邏輯發送接收到的TLP 數據包。事務層是PCI-Express 總線層次結構的最高層,該層次將接收PCI-E 設備核心層的數據請求,并將其轉化為PCI-E 總線事務。PCI-E總線使用的這些總線事務在TLP 頭中定義,而用戶邏輯主要與事務層和配置模塊進行交互,一方面讀取配置模塊的控制和狀態參數,用于設置PXIExpress 設備的工作狀態,另一方面將DMA 讀和寫操作轉化為向事務層發送存儲器讀、寫請求TLP 和接收事務層的存儲器讀完成TLP。PCI-Express 硬核原理框圖如圖3所示。設計時序狀態機的主要任務就是根據PCI-Express硬核接口設計與之相適應的控制邏輯。按照系統要求,時序狀態機一般包括如下幾個部分:接收模塊、發送模塊、中斷申請、DMA 控制模塊和數據存儲區等。時序狀態機框圖如下圖所示。

圖3 PCI-E 硬核原理框圖

圖4 時序狀態機框圖
我們研制的系統控制器是地面測控車的重要組成部分,它完成彈道測量數據預處理、系統時序產生、分機工作模式/參數下達、工作狀態上報等功能,要求計算能力強、數據吞吐率高。系統控制器以Nano 模塊為核心元件,它的供電、鍵盤/鼠標、顯示等接口采用前面所述的方法進行設計,用其自帶的PCI-Express 總線擴展I/O 接口。為了提高PCI-Express 總線效率,減少數據收發對Nano 模塊的影響,我們采用IDT 公司的雙口RAM 器件IDT70V06作為數據交換的接口器件。IDT70V06 共有16KB的RAM,可以分成兩個8KB 的區域,分別用于Nano模塊發送和接收處理。系統控制器接收到彈道測量數據后,先存放在雙口RAM 的接收區域,然后利用IDT70V06 的中斷信號線通知Nano 模塊,Nano 模塊接收到中斷信號后,進入中斷服務程序,在中斷服務程序中啟動PCI-Express 的DMA 傳輸方式,一次性把數據從雙口RAM 都讀到內存中;Nano 模塊對這些數據進行預處理,再打包通過以太網絡接口發送給數據處理單元進行彈道濾波和外推。
系統時序的產生由FPGA 來完成。每個脈沖相關處理周期內安排的工作內容都是變化的,需要Nano 模塊根據上一個脈沖相關處理周期測量、控制的結果進行設置。Nano 模塊在每個相關脈沖處理周期的末尾,對下一個脈沖相關處理周期內的每一個脈沖重復周期應該完成的工作進行編排,啟動PCI-Express 的DMA 傳輸方式,一次性把工作安排內容都寫到雙口RAM 中,并觸發中斷,通知FPGA讀取。FPGA 讀取到工作安排數據后,在下一個脈沖相關處理周期到來時,逐個生成需要的系統時序信號。
Nano 模塊具有體積小、功耗低的特點,PCI-Express 總線吞吐率高,且自帶4GB 的電子盤,很適合在嵌入式設備中使用。低溫試驗表明,Nano 模塊在-40℃依然可以正常工作。在我們歷次試驗中,Nano 模塊都未出過故障,是一款質量可靠、性能優良的CPU 模塊,很適合用于嵌入式計算機板的開發。
[1]雷剛,汪健等.基于PC104 和PCL6025B 的數控切割機控制系統設計[J],制造業自動化,2014,36(3):148-151.
[2]徐宏,方方等.基于ETX 載板測控平臺的研制[J],核電子學與探測技術,2013,33(9):1139-1143.
[3]李孟華,欒前進等.基于ETX 模塊的機載數據處理模塊的設計[J],航空計算技術,2011,41(6):116-118.
[4]高峰鴿,宜健.PCB 電源布線設計[J],無線通信技術,2011,11(4):116-118.
[5]申得玉,張善從.PEX8311 芯片在圖像模擬源中的應用[J],計算機技術與發展,2013,23(10):143-150.
[6]Xilinx.UG386 Spartan-6 FPGA GTP Transceivers User Guide[N].2010.