《電子技術應用》
您所在的位置:首頁 > 嵌入式技术 > 业界动态 > 基于PCI总线的通用网络协议实验平台

基于PCI总线的通用网络协议实验平台

2008-08-22
作者:刘振兵, 曹志刚, 翟立君

  摘 要: 介紹了一種利用以太網專用芯片在Linux操作系統下構建基于PCI總線的通用網絡協議" title="網絡協議">網絡協議實驗平臺" title="實驗平臺">實驗平臺。通過修改該平臺的軟件部分,可以在實驗平臺上運行私有網絡協議,測試協議性能,從而避免了針對每一種私有網絡協議搭建專門的實驗平臺,節約了成本,縮短了開發時間。
  關鍵詞: PCI設備 Linux 通用網絡實驗設備


  在網絡技術快速發展的今天,根據用戶特殊的需求,有時需要研發特殊的私有網絡協議,以使網絡的性能得到優化。研究新的網絡協議,必須進行仿真以驗證性能,但是網絡結構復雜,性能指標多樣,并且不同的協議需要的具體測試環境不同,因此很難用純軟件的方式(如NS2、OPNET)給出網絡協議運行性能的有效描述。另一方面,如果針對每一種網絡協議搭建專門的測試平臺,則需要大量的人力、經費和時間。而采用軟硬件相結合的方法搭建一種通用網絡協議實驗平臺,既能很好地測試出整個設計的性能,又能大幅度節約開發成本,縮短開發時間,是一種切實可行的方法。
  為此,本文提出一種通用網絡協議實驗平臺的軟硬件設計方案,并詳細介紹該平臺的軟硬件設計方法。
1 系統設計的思路
  該網絡實驗平臺設計的目的是:針對不同的私有網絡協議,開發者可以根據協議標準有針對性地修改網絡層" title="網絡層">網絡層和傳輸層的程序代碼,然后通過本系統測試其協議的性能。所以,該系統應該是一個與協議無關且可程控的數據傳輸通道" title="傳輸通道">傳輸通道。數據包經過該系統傳輸后,更多的工作由傳輸層、網絡層和上層應用程序完成。該系統的整體框架結構如圖1所示。


  為了保證實驗平臺的通用性及可操作性,采用PC機和與PCI總線接口的網絡設備卡(以下簡稱PCI接口卡)組建該平臺。
  近年來,Linux操作系統獲得了突飛猛進的發展,它強大的功能、良好的界面、高效率以及全開放的特性使其具有很強的吸引力。基于以上考慮,在PC機中采用Linux操作系統。按Linux操作系統的設計標準,私有網絡協議軟件需要包含傳輸層代碼、網絡層代碼以及與設備相關的驅動程序,并運行在系統“核心態”中。在本實驗平臺中,不需要用戶關心驅動程序的設計,但允許將網絡層和傳輸層代碼運行在Linux“用戶態”中。
  PCI接口卡是基于PCI總線的,它通過合理選擇接口芯片屏蔽PCI總線協議的多余功能,并使用FPGA芯片把上層傳輸過來的數據包進行相應的處理(詳見第2節),然后傳遞到物理層設備。
2 實驗平臺的硬件設計
2.1 PCI接口卡結構

  PCI接口卡由PCI總線接口芯片、數據處理模塊FPGA、數據緩存模塊RAM和有線傳輸驅動模塊LVDS(Low Voltage Differential Signaling Driver)等四部分組成,模塊間的數據傳輸如圖2所示。


2.2 芯片的選擇
  Winbond 公司以太網控制芯片 W89C840AF支持高達100Mbps的雙向數據傳輸,該芯片不但具有良好的PCI總線接口設計,而且還有一整套的網絡數據傳輸機制,技術成熟。所以在此選用W89C840AF,并借用該芯片的網絡數據傳輸機制,通過對芯片合理配置,實現一條從驅動程序到物理層設備的透明數據傳輸通道,來滿足設計要求。
  FPGA芯片只要能夠提供足夠多的I/O口和內部硬件資源即可。RAM是為了滿足不同網絡協議以及算法對存儲器的需要而設置的,對于不同的私有網絡協議,根據實際需要選用適當容量的RAM即可,沒有很苛刻的要求。本系統中FPGA芯片選用ACEX1K50TC144,RAM芯片選用CY7C006AC_PLCC,主要考慮的是芯片的速率高、使用簡單并且價格低廉。
  有線傳輸信號驅動模塊選用LVDS芯片對(ds90c401,ds90c402),該芯片對的優點是速率高(155Mbps串行數據傳輸)、傳輸距離遠、靈敏度高、功耗小。
2.3 PCI接口卡的功能
  PCI總線接口芯片(W89C840AF)把從PCI總線上傳輸過來的數據封裝成“以太幀”的格式[1],傳遞給FPGA(RAM可以對傳輸的數據進行緩沖),FPGA去掉前8byte的“以太幀頭”從而獲得數據包。然后根據不同網絡協議的數據包格式,在FPGA中靈活地設計相應的邏輯功能。如作者目前在研的衛星ATM網絡實驗系統,定義了一種私有的ATM協議,數據處理單元將完成以下任務:識別信元頭,按優先級對信元進行排隊、存儲、打包并轉發等。
  FPGA要完成以上功能,其內部模塊需包括以下幾個模塊:“數據接口”、“控制接口”、“命令執行單元”、“實驗網物理層訪問控制單元”和“信道模擬單元”,如圖3所示。


  FPGA把打包后的串行數據傳向LVDS,信號經過LVDS驅動后傳到接收方。
  在接收方,數據的處理與此相反,不再贅述。
2.4 W89C840AF與FPGA之間的接口設計
  在PCI接口卡電路板中,芯片之間的接口設計" title="的接口設計">的接口設計有三部分:FPGA與W89C840AF之間的接口;FPGA與RAM之間的接口;FPGA與LVDS之間的接口。后面兩個接口比較簡單,所以下面主要介紹FPGA與W89C840AF之間的接口設計。
  W89C840AF與FPGA之間的數據接口如圖4所示。MTXCLK和MRXCLK分別是發送數據和接收數據的參考時鐘,必須設置為25MHz。MTXEN和MRXDV是數據幀傳輸的指示信號,MTXD[3:0]和MRXD[3:0]為4bit寬的數據傳輸接口。


  W89C840AF芯片與FPGA之間除了傳輸數據外,還需要交換控制信息。由于W89C840AF芯片I/O接口有限,可以借用W89C840AF芯片的EECK、EEDI、EEDO三條控制線與FPGA交換控制信息。這里構建一個類似I2C串行總線協議的控制總線,其結構和工作時序如圖5所示。


3 實驗平臺的軟件設計
  為了實現從處于“用戶態”的應用程序到處于“核心態”的驅動程序間的雙向數據傳輸通道,按照Linux操作系統的網絡相關代碼的劃分規則,實驗網絡結構中用戶層以下的代碼需要嵌入到Linux操作系統的核心代碼樹中,經過對內核的重新編譯,運行在Linux操作系統的“核心態”,這樣做比較復雜。鑒于以上原因,在本設計中采用了以下處理方法:考慮到“用戶態”內部所有軟件模塊的通信比較簡單,通過調用UDP/IP協議的socket,在下層利用UDP/IP數據包拆解/封裝程序,構造出一個如圖6所示的數據傳輸通道。在這里,把 “透明通道”定義為“過渡層”。
  使用UDP/IP協議會涉及到Linux操作系統處理IP協議的相關內容,特別需要注意以下三個方面:(1)去掉系統中所有其它網絡硬件設備,關閉所有Linux操作系統的網絡服務,關閉Linux操作系統防火墻;(2)設置本設備的IP地址為192.168.0.1(實驗專用IP地址),綁定實驗網絡設備為192.168.0.X子網網關,更改“/etc/network”文件設置系統為“可以轉發IP包”;(3)調用一個IP Socket發送數據,在特定端口上監聽數據包的到達。


3.1 “過渡層”的設計
  對于上層傳遞過來的數據,“過渡層”要完成的任務是:去掉數據包前面的以太網幀頭、IP數據包頭、UDP數據包頭,從而還原出原始數據包,然后傳遞給驅動部分。反之,下層傳遞過來的數據包經過相反的數據處理后向上層傳遞。
3.2 驅動程序的設計
  由于W89C840AF是以太網控制芯片,因此可以把PCI接口卡看作網絡設備。對于網絡設備,Linux操作系統中有一套標準的驅動程序設計方法[2],所以在這里僅介紹驅動程序設計中的幾個值得注意的事項。主要有:(1)PCI設備的探測和注冊函數;(2)W89C840AF芯片的配置;(3)網絡設備基本功能函數組。
  PCI設備探測和注冊函數可以建立網絡設備對象,同時注冊網絡設備基本功能函數組,并參考W89C840AF芯片數據傳輸部分的說明賦予設備執行“DMA”能力。
  關于W89C840AF芯片的配置,主要是C18/CNCR 寄存器的配置。除了打開“傳輸允許”、“接收允許”、“全雙工模式”和“100Mbps傳輸速率模式”等選項外,還要打開“Accept Error Packet”、“Accept Runt Packet”、“Accept Broadcast Packet”、“Accept Multicast Packet”和“Accept All Physical Packet”等選項,從而屏蔽所有與以太網協議相關的功能。
  網絡設備基本功能函數組的核心是“發送”、“接收”和“中斷響應”這三個基本函數。“發送函數”將發送的數據存入W89C840AF芯片的內存空間,然后寫C04/CTSD寄存器,請求芯片發送數據。W89C840AF芯片將接收到的數據包傳遞到系統內存后就會觸發中斷,中斷處理函數響應中斷并調用接收函數,將數據包和相應的參數向系統的上層傳遞。
參考文獻
1 Andrew S.Tanenbaum. COMPUTER NETWORKS(4).北京:清華大學出版社,2004
2 Alessandro Rubini,Jonathan Corbet. Linux設備驅動程序(2). 北京:中國電力出版社,2002
3 Glenn Herrin,Linux IP Networking,2000.http://kernelnewbies.org/4 范 磊.Linux內核源代碼.北京:人民郵電出版社, 2002

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 久久精品第九区免费观看 | 久久亚洲精品欧美| 韩国视频理论视频久久| 国产极品精品在线观看| 欧美在线观看日本一区| 人人妻人人澡人人爽精品欧美一区| 国产精品在线看| 日韩a∨精品日韩在线观看| 国产精品免费成人| 久久天天躁夜夜躁狠狠躁2022 | 国产日韩欧美成人| 精品网站在线看| 在线观看国产一区| 日韩中文字幕免费视频| 久99久视频| 国产日本欧美在线| 国产精品视频不卡| 不卡日韩av| 俺也去精品视频在线观看| 国产一区二区丝袜| 久久九九国产精品怡红院| 欧美精品在线网站| 亚洲欧美精品在线观看| 91精品久久久久| 在线视频不卡一区二区三区| 国产精品久久亚洲7777| 高清不卡日本v二区在线| 欧美日韩福利视频| 久久免费视频在线观看| 久久久久久久少妇| 国产日韩av在线播放| 日韩一级在线免费观看| 日本一区视频在线播放| 国产精品视频久久| 久久久久久久久国产| 欧美成在线观看| 美女av一区二区三区| 激情综合网俺也去| 狠狠干 狠狠操| 视频直播国产精品| 国产日韩在线看|