馬冬冬,劉宗福,張 掖,張光榮
(中國(guó)人民解放軍92785部隊(duì),河北 秦皇島 066200)
用F P G A實(shí)現(xiàn)以太網(wǎng)信號(hào)處理與互連
馬冬冬,劉宗福,張 掖,張光榮
(中國(guó)人民解放軍92785部隊(duì),河北 秦皇島 066200)
采用可編程邏輯器件和以太網(wǎng)控制器相連接實(shí)現(xiàn)網(wǎng)絡(luò)接口模塊的設(shè)計(jì)。通過(guò)FPGA實(shí)現(xiàn)對(duì)以太網(wǎng)控制器的信號(hào)控制和網(wǎng)絡(luò)數(shù)據(jù)收發(fā)、緩存等。重點(diǎn)介紹了FPGA對(duì)以太網(wǎng)總線的處理和數(shù)據(jù)緩沖區(qū)的設(shè)計(jì),并給出了以太網(wǎng)總線的處理方法,異步數(shù)據(jù)傳輸?shù)脑砗蛯?shí)現(xiàn)方法。結(jié)果在EP1C6中予以實(shí)現(xiàn),獲得了良好的實(shí)驗(yàn)效果。
以太網(wǎng);網(wǎng)絡(luò)接口;FPGA
網(wǎng)絡(luò)設(shè)備的基本功能是實(shí)現(xiàn)網(wǎng)絡(luò)通信業(yè)務(wù)流的控制和轉(zhuǎn)發(fā),處于網(wǎng)絡(luò)邊緣的設(shè)備需要將來(lái)自不同物理鏈路的各種業(yè)務(wù)流復(fù)用到統(tǒng)一的傳輸鏈路上。隨著傳輸線速的高速增長(zhǎng)和網(wǎng)絡(luò)應(yīng)用需求的靈活多變,F(xiàn)PGA技術(shù)的進(jìn)步為此提供了堅(jiān)實(shí)的基礎(chǔ)。FPGA和以太網(wǎng)控制器組成的系統(tǒng)架構(gòu),同時(shí)具有通用處理器的靈活性和ASIC的高速處理的能力。FPGA完成了大部分硬件功能,從功能需求和可持續(xù)開(kāi)發(fā)的角度出發(fā),采用 Altera的Cyclone系列FPGA芯片EP1C6,提供了豐富的邏輯門(mén)和存儲(chǔ)單元。將以太網(wǎng)驅(qū)動(dòng)、信號(hào)處理、FIFO等模塊全部集成進(jìn)去,從而降低了硬件實(shí)現(xiàn)難度,節(jié)約了系統(tǒng)成本。本文設(shè)計(jì)了高效的時(shí)序邏輯電路,采用Quartus II軟件對(duì)電路進(jìn)行了仿真試驗(yàn),并予以實(shí)現(xiàn)。以太網(wǎng)控制器完全遵循IEEE802.3標(biāo)準(zhǔn)。
以太網(wǎng)控制器采用isa總線,它是一種可以很容易低于其他同步、異步總線相接的一種簡(jiǎn)單異步總線。具有獨(dú)立的地址、數(shù)據(jù)和控制總線來(lái)進(jìn)行讀和寫(xiě)。/SBHE、/IOW、/IOR等控制信號(hào)線實(shí)現(xiàn)對(duì)以太網(wǎng)控制器的工作方式控制和讀寫(xiě)操作。雙向數(shù)據(jù)線用于在以太網(wǎng)控制器和FPGA間傳遞數(shù)據(jù);地址總線用于解析訪問(wèn)以太網(wǎng)控制器的I/O和存儲(chǔ)器空間。FPGA通過(guò)控制信號(hào)配合地址總線和數(shù)據(jù)總線訪問(wèn)內(nèi)部寄存器。地址總線是只寫(xiě)的,而數(shù)據(jù)總線是可讀寫(xiě)的,此時(shí),在QUARTUS中采用inout的形式不僅繁瑣而且容易出錯(cuò)。如何正確的對(duì)數(shù)據(jù)總線進(jìn)行處理,而不會(huì)產(chǎn)生讀寫(xiě)沖突,本文提供了一種簡(jiǎn)單高效的總線讀寫(xiě)方法,并通過(guò)以太網(wǎng)驅(qū)動(dòng)實(shí)現(xiàn)對(duì)以太網(wǎng)控制器的16位I/O操作,[1]對(duì)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行實(shí)時(shí)獲取與傳輸。圖 1為整體實(shí)現(xiàn)原理圖。圖1中采用一個(gè)雙向總線處理邏輯lpm_bustri0實(shí)現(xiàn)了以太網(wǎng)控制器SD[15..0]數(shù)據(jù)總線的讀寫(xiě)。rwDir為雙向制動(dòng)開(kāi)關(guān),作為數(shù)據(jù)總線讀寫(xiě)的通道,將 rwDir自身和它經(jīng)過(guò)非門(mén)后的信號(hào)線分別連接到邏輯門(mén)的兩個(gè)控制端子。當(dāng)rwDir為1時(shí),SD[15..0]為輸入,實(shí)現(xiàn)了以太網(wǎng)模塊的數(shù)據(jù)讀操作;當(dāng) rwDir為0時(shí),SD[15..0]為輸出,實(shí)現(xiàn)了以太網(wǎng)模塊的數(shù)據(jù)寫(xiě)操作。
TCP/IP協(xié)議棧的主要工作就是數(shù)據(jù)的打包和解包,這些工作都是在系統(tǒng)的內(nèi)存中進(jìn)行的。當(dāng)數(shù)據(jù)在層與層之間傳遞時(shí),數(shù)據(jù)緩沖區(qū)的分配、拷貝與釋放需要頻繁的進(jìn)行。緩沖區(qū)的設(shè)計(jì)是硬件模式,設(shè)計(jì)起來(lái)相對(duì)于軟件較為簡(jiǎn)單,需要設(shè)置好相應(yīng)的時(shí)鐘和控制信號(hào)。數(shù)據(jù)緩沖區(qū)的操作與協(xié)議棧結(jié)構(gòu)無(wú)關(guān),僅與緩沖區(qū)本身的結(jié)構(gòu)有關(guān),因此好的緩沖區(qū)結(jié)構(gòu)設(shè)計(jì)對(duì)于TCP/IP協(xié)議棧的性能至關(guān)重要。
如何設(shè)計(jì)異步時(shí)鐘之間的接口電路。[2]異步FIFO(First In First Out)是解決這個(gè)問(wèn)題的一種簡(jiǎn)便、快捷的方案。FIFO的存儲(chǔ)介質(zhì)為一塊雙端口RAM,可以同時(shí)進(jìn)行讀寫(xiě)操作。它是一種先進(jìn)先出的電路,使用在需要產(chǎn)生實(shí)時(shí)數(shù)據(jù)接口的部分,用來(lái)存儲(chǔ)、緩沖在兩個(gè)異步時(shí)鐘之間的數(shù)據(jù)傳輸。異步 FIFO單元接口關(guān)系如圖1中l(wèi)pm_fifo_dc0所示。
該FIFO支持的最大位寬是256bits,存儲(chǔ)器的深度最高可達(dá)131 072words。位寬和深度可以根據(jù)用戶的需要自己設(shè)置。在本設(shè)計(jì)中根據(jù)數(shù)據(jù)總線的位寬選為 16bits,深度選擇的是1 024words,因?yàn)榫W(wǎng)絡(luò)數(shù)據(jù)幀最大長(zhǎng)度為1 518字節(jié)。data[15..0]為輸入數(shù)據(jù)。rdreg、w rreg分別為讀使能信號(hào)和寫(xiě)使能信號(hào),只有在它們有效時(shí)能夠進(jìn)行讀寫(xiě)操作,兩者皆為高電平有效。rdclk,w rclk為讀寫(xiě)時(shí)鐘,它們控制讀寫(xiě)操作,對(duì)異步FIFO來(lái)說(shuō),讀寫(xiě)時(shí)鐘不要求相位匹配和同步。在調(diào)用該單元的時(shí)候,它的某些管腳是可選可不選的,因需要而定。[3]

圖1 以太網(wǎng)控制器實(shí)現(xiàn)原理圖

圖2 讀取FIFO狀態(tài)機(jī)
用FIFO進(jìn)行數(shù)據(jù)讀寫(xiě)時(shí)的情況如圖2所示,進(jìn)行數(shù)據(jù)通信時(shí)讀寫(xiě)速率不同,在發(fā)送端寫(xiě)速率大于讀速率,讀寫(xiě)用不同時(shí)鐘。為了及時(shí)發(fā)現(xiàn)并采取有效措施改善代碼調(diào)試中出現(xiàn)的問(wèn)題,引入Signal Tap II Logic Analyzer邏輯分析工具來(lái)實(shí)時(shí)跟蹤當(dāng)前各個(gè)狀態(tài)變量的情況。經(jīng)過(guò)反復(fù)實(shí)驗(yàn),我們得到正確的實(shí)時(shí)捕獲數(shù)據(jù)。
對(duì)于寫(xiě)速率大于讀速率的情況,用狀態(tài)機(jī)描述了 FIFO讀取過(guò)程,見(jiàn)圖2。
本文通過(guò)FPGA實(shí)現(xiàn)了以太網(wǎng)數(shù)據(jù)的控制和轉(zhuǎn)發(fā),給出了以太網(wǎng)總線的處理方法,異步數(shù)據(jù)傳輸?shù)脑砗蛯?shí)現(xiàn)方法,用Verilog-HAL語(yǔ)言進(jìn)行了數(shù)字化描述。描述結(jié)果在EP1C6中予以實(shí)現(xiàn),獲得了良好的實(shí)驗(yàn)效果。
1 陳 鵬、張愛(ài)民等.基于以太網(wǎng)控制器CS8900A 實(shí)現(xiàn)嵌入式系統(tǒng)的網(wǎng)絡(luò)互連[J].計(jì)算機(jī)應(yīng)用,2002(12):4~6
2 Altera Corporation. Single And Dual Clock FIFO Mega function, 2007.5
3 陳明義.高速大容量FIFO的設(shè)計(jì)[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