1.引言
SPI-4.2(System Packet Interface)是 OIF(Optical Internetworking Forum)定義的局部高速總線標(biāo)準(zhǔn),,用于 PHY層芯片到鏈路層芯片的 10Gbps信號傳輸。主要應(yīng)用有 OC-192 ATM,、Packet over SONET/SDH(POS),、10Gbps以太網(wǎng)等。
SPI4.2接口分為數(shù)據(jù)通道和狀態(tài)通道,。數(shù)據(jù)通道最多分成 256個邏輯通道,,16bit位寬,,采用 LVDS信號電平,按照 cell格式傳送數(shù)據(jù),,cell的長度為 16字節(jié)的整數(shù)倍,,可隨意配置,根據(jù)網(wǎng)上流量的分析,,一般配置成 128字節(jié),。每個 cell都是以控制字開始的,控制字一共16bit,,包含邏輯端口號,、報文起始標(biāo)志位、報文結(jié)束標(biāo)志位,、控制字交驗等信息,。狀態(tài)通道傳輸對端反饋的邏輯通道接收 FIFO的狀態(tài),2bit位寬,,LVTTL或者 LVDS信號電平,,一般采用 LVTTL信號電平。狀態(tài)通道的數(shù)據(jù)結(jié)構(gòu)為 Calendar[0:n],,n最大為256,,長度一般與邏輯通道數(shù)對應(yīng),Calendar[n]表示邏輯通道 n的接收FIFO狀態(tài),。數(shù)據(jù)通道根據(jù)狀態(tài)通道提供的信息控制數(shù)據(jù)的發(fā)送過程,。狀態(tài)通道有四種狀態(tài)信息,如表 1所示:
在實際的系統(tǒng)設(shè)計中,,商用芯片不一定能夠滿足需要,,因此需要使用 FPGA(Field Programmable Gate Array)。本設(shè)計采用 Altera的 Stratix II系列 FPGA和 RMI公司的多核處理器 XLR732,,Intel公司的網(wǎng)絡(luò)處理器 2805實現(xiàn) SPI4.2接口,。
2.2805簡介 2805是 Intel推出的高端 NP(Network Prosser),能夠處理 10Gbps線速轉(zhuǎn)發(fā)的以太網(wǎng),、POS,、ATM等數(shù)據(jù)流量,能夠?qū)崿F(xiàn)分類,、NAT,、ACL、多播,、流量管理等功能。 2805內(nèi)部集成一個32-bit,、RISC內(nèi)核,、高性能的 XScale處理器,,用于系統(tǒng)的配置管理和路由表項的維護(hù),最高工作主頻750MHz,;16個可編程的,、有 8K代碼空間的微引擎,每個微引擎含有多個硬件線程,,用來處理通信系統(tǒng)中的數(shù)據(jù)轉(zhuǎn)發(fā),,最高工作主頻 1.5GHz。外部集成了 PCI接口,,可以工作在 64bit/66MHz模式,;SPI4.2接口,工作頻率為 311MHz~500MHz,;3個LA-1接口,,工作頻率為250MHz;4個 RDRAM接口,,工作頻率為 800MHz~1200MHz,。
3.FPGA和 2805之間的 SPI4.2接口電路設(shè)計
圖 1描述了 FPGA和 2805之間的 SPI4.2接口的硬件連接框圖,信號定義以 2805為參考點,。其中 TX_DATA[15:0] ,、TX_CTL、TX_CLK和 RX_DATA[15:0] ,、RX_CTL,、RX_CLK是 LVDS信號電平,工作在 350MHz,;TX_SDATA[1:0] ,、TX_SCLK和 RX_SDATA[15:0] 、 RX_SCLK是 LVTTL信號電平,,工作在 87.5MHz,,四分之一于數(shù)據(jù)通道時鐘頻率。
具體信號定義如下所示:
TX_DATA[15:0]:發(fā)送數(shù)據(jù),, 16bit位寬,, burst方式傳輸數(shù)據(jù), DDR工作模式(時鐘上升沿和下降沿都采樣),;
TX_CTL:傳輸控制信號,,高電平表示 TX_DATA[15:0]傳輸?shù)氖强刂菩畔ⅲ碗娖奖硎?TX_DATA[15:0]傳輸?shù)氖菙?shù)據(jù),;
TX_CLK:發(fā)送時鐘,,隨路,是發(fā)送數(shù)據(jù)的參考時鐘。
接受方向的信號定義與發(fā)送方向的信號定義完全相同,,但是方向相反,。
4.FPGA的 SPI4.2接口模塊設(shè)計
Stratix II器件具有 152個接收器和 156個發(fā)送器通道,支持源同步信號進(jìn)行高達(dá) 1 Gbps的數(shù)據(jù)傳送,。它的內(nèi)部含有 DPA電路,,能夠不斷地將輸入數(shù)據(jù)和采樣時鐘對齊,消除了時鐘至通道和通道至通道偏移要求,。它還集成了豐富的存儲器資源,、先進(jìn)的鎖相環(huán)( PLL)技術(shù)和雙數(shù)據(jù)率( DDR)I/O等特性,結(jié)合先進(jìn)的差分 I/O能力,,使其滿足 SPI4.2規(guī)范的物理信號定義,。
圖 2為 FPGA的接收通道邏輯框圖,上半部分是數(shù)據(jù)通道,,下半部分是狀態(tài)通道,。由于 SPI4.2接口的數(shù)據(jù)傳輸是 DDR模式的,rdclk經(jīng)過 FPGA內(nèi)部的 PLL模塊做倍頻處理,,然后送給 Rx_data_phy模塊,,該模塊根據(jù)時鐘采樣 rdat [15:0]上的數(shù)據(jù)。Rx_data_proc模塊將接收的數(shù)據(jù)按照 cell頭中的邏輯端口號,,分別放入不同的 Rx_fifo中,。一個 Rx_fifo對應(yīng)一個邏輯通道,每個 Rx_fifo都會生成一個狀態(tài)信號,,標(biāo)示其“空”狀態(tài)或者“滿”狀態(tài),, Rx_stat_calc模塊根據(jù)各個 Rx_fifo的狀態(tài)信號生成 Calendar信息,由狀態(tài)通路發(fā)送出去,,用來流控 2805的發(fā)送過程,。Calendar也可以由軟件設(shè)置,通過 Rx_stat_proc_ref下發(fā)給 Rx_stat_calc,。
發(fā)送模塊與接收模塊不同,,如圖 3所示,發(fā)送模塊的 Tx_fifo只有一個,,即所有的邏輯通道公用一個發(fā)送緩存區(qū),。這主要是由于 FPGA內(nèi)部的布線資源和 RAM資源有限,同時這種發(fā)送端共享 FIFO,、接收端分通道 FIFO模式不影響使用,,能夠?qū)崿F(xiàn)分端口的反壓。
發(fā)送端通過 Tx_stat_phy模塊接收 Calender信息,,經(jīng)過 Tx_stat_proc模塊和Tx_stat_proc_sync模塊處理,,送給 Tx_sched調(diào)度模塊,,Tx_sched解析出各個邏輯通道的反壓情況,然后將各個通道的數(shù)據(jù)發(fā)送到 Tx_fifo中,,然后經(jīng)過 Tx_data_proc模塊和Tx_data_phy模塊發(fā)送出去,。
5.結(jié)果 本設(shè)計在 ALTEra的 Stratix II系列FPGA,EPM2S90上得到驗證,,與 Intel的 2805配合共同完成某通信設(shè)備的高速轉(zhuǎn)發(fā)單板的設(shè)計。
6.結(jié)束語
本文介紹了 SPI4.2接口在可編程邏輯器件 FPGA上的實現(xiàn)方法,,并通過實際電路驗證FPGA與 IPX2805之間通過 SPI4.2接口互通的功能,。由于商業(yè)芯片的限制,有時只有 FPGA才能滿足系統(tǒng)設(shè)計的要求,。相對于開發(fā)ASIC,,使用 FPGA使整個設(shè)計電路簡單、靈活,、成本低,、方便調(diào)試和修改, 大大縮短開發(fā)周期。