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