馬冬冬,劉宗福,張 掖,張光榮
(中國人民解放軍92785部隊,河北 秦皇島 066200)
用F P G A實現(xiàn)以太網(wǎng)信號處理與互連
馬冬冬,劉宗福,張 掖,張光榮
(中國人民解放軍92785部隊,河北 秦皇島 066200)
采用可編程邏輯器件和以太網(wǎng)控制器相連接實現(xiàn)網(wǎng)絡(luò)接口模塊的設(shè)計。通過FPGA實現(xiàn)對以太網(wǎng)控制器的信號控制和網(wǎng)絡(luò)數(shù)據(jù)收發(fā)、緩存等。重點介紹了FPGA對以太網(wǎng)總線的處理和數(shù)據(jù)緩沖區(qū)的設(shè)計,并給出了以太網(wǎng)總線的處理方法,異步數(shù)據(jù)傳輸?shù)脑砗蛯崿F(xiàn)方法。結(jié)果在EP1C6中予以實現(xiàn),獲得了良好的實驗效果。
以太網(wǎng);網(wǎng)絡(luò)接口;FPGA
網(wǎng)絡(luò)設(shè)備的基本功能是實現(xiàn)網(wǎng)絡(luò)通信業(yè)務(wù)流的控制和轉(zhuǎn)發(fā),處于網(wǎng)絡(luò)邊緣的設(shè)備需要將來自不同物理鏈路的各種業(yè)務(wù)流復(fù)用到統(tǒng)一的傳輸鏈路上。隨著傳輸線速的高速增長和網(wǎng)絡(luò)應(yīng)用需求的靈活多變,F(xiàn)PGA技術(shù)的進步為此提供了堅實的基礎(chǔ)。FPGA和以太網(wǎng)控制器組成的系統(tǒng)架構(gòu),同時具有通用處理器的靈活性和ASIC的高速處理的能力。FPGA完成了大部分硬件功能,從功能需求和可持續(xù)開發(fā)的角度出發(fā),采用 Altera的Cyclone系列FPGA芯片EP1C6,提供了豐富的邏輯門和存儲單元。將以太網(wǎng)驅(qū)動、信號處理、FIFO等模塊全部集成進去,從而降低了硬件實現(xiàn)難度,節(jié)約了系統(tǒng)成本。本文設(shè)計了高效的時序邏輯電路,采用Quartus II軟件對電路進行了仿真試驗,并予以實現(xiàn)。以太網(wǎng)控制器完全遵循IEEE802.3標(biāo)準(zhǔn)。
以太網(wǎng)控制器采用isa總線,它是一種可以很容易低于其他同步、異步總線相接的一種簡單異步總線。具有獨立的地址、數(shù)據(jù)和控制總線來進行讀和寫。/SBHE、/IOW、/IOR等控制信號線實現(xiàn)對以太網(wǎng)控制器的工作方式控制和讀寫操作。雙向數(shù)據(jù)線用于在以太網(wǎng)控制器和FPGA間傳遞數(shù)據(jù);地址總線用于解析訪問以太網(wǎng)控制器的I/O和存儲器空間。FPGA通過控制信號配合地址總線和數(shù)據(jù)總線訪問內(nèi)部寄存器。地址總線是只寫的,而數(shù)據(jù)總線是可讀寫的,此時,在QUARTUS中采用inout的形式不僅繁瑣而且容易出錯。如何正確的對數(shù)據(jù)總線進行處理,而不會產(chǎn)生讀寫沖突,本文提供了一種簡單高效的總線讀寫方法,并通過以太網(wǎng)驅(qū)動實現(xiàn)對以太網(wǎng)控制器的16位I/O操作,[1]對網(wǎng)絡(luò)數(shù)據(jù)進行實時獲取與傳輸。圖 1為整體實現(xiàn)原理圖。圖1中采用一個雙向總線處理邏輯lpm_bustri0實現(xiàn)了以太網(wǎng)控制器SD[15..0]數(shù)據(jù)總線的讀寫。rwDir為雙向制動開關(guān),作為數(shù)據(jù)總線讀寫的通道,將 rwDir自身和它經(jīng)過非門后的信號線分別連接到邏輯門的兩個控制端子。當(dāng)rwDir為1時,SD[15..0]為輸入,實現(xiàn)了以太網(wǎng)模塊的數(shù)據(jù)讀操作;當(dāng) rwDir為0時,SD[15..0]為輸出,實現(xiàn)了以太網(wǎng)模塊的數(shù)據(jù)寫操作。
TCP/IP協(xié)議棧的主要工作就是數(shù)據(jù)的打包和解包,這些工作都是在系統(tǒng)的內(nèi)存中進行的。當(dāng)數(shù)據(jù)在層與層之間傳遞時,數(shù)據(jù)緩沖區(qū)的分配、拷貝與釋放需要頻繁的進行。緩沖區(qū)的設(shè)計是硬件模式,設(shè)計起來相對于軟件較為簡單,需要設(shè)置好相應(yīng)的時鐘和控制信號。數(shù)據(jù)緩沖區(qū)的操作與協(xié)議棧結(jié)構(gòu)無關(guān),僅與緩沖區(qū)本身的結(jié)構(gòu)有關(guān),因此好的緩沖區(qū)結(jié)構(gòu)設(shè)計對于TCP/IP協(xié)議棧的性能至關(guān)重要。
如何設(shè)計異步時鐘之間的接口電路。[2]異步FIFO(First In First Out)是解決這個問題的一種簡便、快捷的方案。FIFO的存儲介質(zhì)為一塊雙端口RAM,可以同時進行讀寫操作。它是一種先進先出的電路,使用在需要產(chǎn)生實時數(shù)據(jù)接口的部分,用來存儲、緩沖在兩個異步時鐘之間的數(shù)據(jù)傳輸。異步 FIFO單元接口關(guān)系如圖1中l(wèi)pm_fifo_dc0所示。
該FIFO支持的最大位寬是256bits,存儲器的深度最高可達131 072words。位寬和深度可以根據(jù)用戶的需要自己設(shè)置。在本設(shè)計中根據(jù)數(shù)據(jù)總線的位寬選為 16bits,深度選擇的是1 024words,因為網(wǎng)絡(luò)數(shù)據(jù)幀最大長度為1 518字節(jié)。data[15..0]為輸入數(shù)據(jù)。rdreg、w rreg分別為讀使能信號和寫使能信號,只有在它們有效時能夠進行讀寫操作,兩者皆為高電平有效。rdclk,w rclk為讀寫時鐘,它們控制讀寫操作,對異步FIFO來說,讀寫時鐘不要求相位匹配和同步。在調(diào)用該單元的時候,它的某些管腳是可選可不選的,因需要而定。[3]
圖1 以太網(wǎng)控制器實現(xiàn)原理圖
圖2 讀取FIFO狀態(tài)機
用FIFO進行數(shù)據(jù)讀寫時的情況如圖2所示,進行數(shù)據(jù)通信時讀寫速率不同,在發(fā)送端寫速率大于讀速率,讀寫用不同時鐘。為了及時發(fā)現(xiàn)并采取有效措施改善代碼調(diào)試中出現(xiàn)的問題,引入Signal Tap II Logic Analyzer邏輯分析工具來實時跟蹤當(dāng)前各個狀態(tài)變量的情況。經(jīng)過反復(fù)實驗,我們得到正確的實時捕獲數(shù)據(jù)。
對于寫速率大于讀速率的情況,用狀態(tài)機描述了 FIFO讀取過程,見圖2。
本文通過FPGA實現(xiàn)了以太網(wǎng)數(shù)據(jù)的控制和轉(zhuǎn)發(fā),給出了以太網(wǎng)總線的處理方法,異步數(shù)據(jù)傳輸?shù)脑砗蛯崿F(xiàn)方法,用Verilog-HAL語言進行了數(shù)字化描述。描述結(jié)果在EP1C6中予以實現(xiàn),獲得了良好的實驗效果。
1 陳 鵬、張愛民等.基于以太網(wǎng)控制器CS8900A 實現(xiàn)嵌入式系統(tǒng)的網(wǎng)絡(luò)互連[J].計算機應(yīng)用,2002(12):4~6
2 Altera Corporation. Single And Dual Clock FIFO Mega function, 2007.5
3 陳明義.高速大容量FIFO的設(shè)計[J].電子科技,2008(6)
Using FPGA to Achieve Signal Processing and Interconnection of Ethernet
Ma Dongdong, Liu Zongfu, Zhang Ye, Zhang Guangrong
Through combining the programmable logic device and Ethernet controllers, the network interface module’s design can be achieved. FPGA is used to complete signal control of Ethernet controller, network data transceiver and caching. This article highlights on FPGA’s processing to Ethernet bus and the design of the data buffer, and gives the approach to Ethernet bus, the principle of asynchronous data transfer and implementing methods. Results are to be achieved in EP1C6, and obtained good experimental results.
Ethernet; network interface; FPGA
TN911.7
A
1000-8136(2010)33-0153-02