基于Spartan-6的多路網(wǎng)絡(luò )數據采集卡設計與實(shí)現
引言
本文引用地址:http://dyxdggzs.com/article/127893.htm隨著(zhù)互聯(lián)網(wǎng)的迅猛發(fā)展,網(wǎng)絡(luò )監控的需求日益迫切。為了實(shí)現對網(wǎng)絡(luò )實(shí)時(shí)監控,有必要及時(shí)全面地收集、分析網(wǎng)絡(luò )的數據,準確獲取網(wǎng)絡(luò )信息,對網(wǎng)絡(luò )的信息進(jìn)行監控,及時(shí)發(fā)現可能會(huì )出現的問(wèn)題。然而隨著(zhù)網(wǎng)絡(luò )帶寬的增加和規模的擴大,大規模網(wǎng)絡(luò )數據采集面臨著(zhù)數據規模龐大和數據到達速度過(guò)快的挑戰。為了克服上述困難,通常采用硬件實(shí)現完成數據采集功能。
隨著(zhù)FPGA的發(fā)展,其內部資料日益豐富,速度和性能大大提高,特別是內部嵌入了大量IP核,使得FPGA上進(jìn)行高速網(wǎng)絡(luò )數據采集成為可能。本文涉及的多路網(wǎng)絡(luò )采集卡系統采用Xilinx的Spartan 6系列中XC6SLX45T FPGA,獲取8路10/100M RJ45端口送來(lái)的網(wǎng)絡(luò )數據包,并將數據包發(fā)送到PC機進(jìn)行分析和監控,最終根據分析結果來(lái)判斷網(wǎng)絡(luò )中的異常情況。
系統概述
系統框圖
圖1所示為系統的原理框圖。8路10/100M網(wǎng)絡(luò )數據通過(guò)RJ45接口送入到PHY芯片,PHY芯片完成轉換之后,通過(guò)MII接口送到FPGA。FPGA中集成了8路MAC核,將網(wǎng)絡(luò )數據輸出到隊列管理;隊列管理對每路MAC的數據包進(jìn)行管理,并輸出到PCIe的DMA模塊;DMA模塊將數據包發(fā)送到PCIe硬核,直接寫(xiě)入到PC機的內存,以便PC機進(jìn)行分析。

隊列管理
由于網(wǎng)絡(luò )數據的包大小不同,在一個(gè)包沒(méi)有讀完之前有可能第二個(gè)包到來(lái),因此有必要對網(wǎng)絡(luò )的數據包進(jìn)行隊列管理,避免數據包丟失的情況。
本系統中的隊列管理采用雙口RAM和FIFO聯(lián)合構成,其中雙口RAM用來(lái)存儲數據包,FIFO用來(lái)存儲數據包的起始地址和結束地址。當FIFO有數據時(shí)說(shuō)明RAM中有數據包,如果此時(shí)并沒(méi)有數據包在向DMA中寫(xiě)數據,那么就可以讀出當前數據包寫(xiě)入到DMA模塊;如果此時(shí)正在向DMA模塊寫(xiě)數據,則等待寫(xiě)完后再讀下一個(gè)包。
由于網(wǎng)絡(luò )數據和PCIe DMA模塊的時(shí)鐘處于兩個(gè)時(shí)鐘域,所以采用雙口RAM和FIFO也可以起到數據同步的作用。
評論