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