新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 基于嵌入式Linux和FPGA的千兆網數據傳輸的實現

        基于嵌入式Linux和FPGA的千兆網數據傳輸的實現

        作者: 時間:2013-03-29 來源:網絡 收藏

        3.3 內存端口的設置

        MPMC (Multi-Port Memory Controller)是DDR2內存控制器的IP核,它最多可以接八個數據端口,這樣的好處是多個設備都可以通過各自的端口共享內存,本論文使用了四個端口:port0和port1都通過plb總線連接在PowerPC上,分別用于傳輸指令和數據,port2端口采用的是NPI(Native Port Interface)接口,用于接收A/D模塊傳輸過來的用戶數據,port3采用SDMA (Soft Direct Memory Access)接口,通過locallink總線和IP核相連。在對MPMC配置時要根據內存的型號、大小等實際參數來設置。

        3.4 用戶自定義數據接口IP核

        開發工具雖然提供了一些常用的IP核,但是對于一些特定要求的邏輯,需要用戶自己開發。由于從A/D采集板傳送過來的數據速度很大,所以本論文在MPMC 的port2上采用NPI接口把A/D模塊傳過來的數據直接送入DDR2中。需要用硬件描述語言編寫基于NPI接口的邏輯,并且還要編寫基于PLB總線的IP核來實現對數據傳輸的控制,例如數據傳輸開始與停止、握手方式、數據包的大小等等。

        3.5 千兆三態以太網硬核的配置

        三態以太網TEMAC (Tri-Mode Ethernet Media Access Controller)是嵌在內部的硬核。本論文通過LocalLink總線使其連在內存控制器MPMC上,采用SDMA方式,使得數據直接從內存到網絡接口而不必經過PowerPC的搬運, 這樣在很大程度上減輕了CPU的負擔,提高了數據傳輸速度。

        4 板級支持包的生成

        4.1板級支持包工具的選擇和設置

        先在http://git.xilinx.com/網站上下載device-tree.git,它是板級支持包(BSP)生成工具。解壓后放在EDK安裝目錄下的EDKswlibbsp,之后點擊Software-->

        Software Platform Settings就可以發現并選擇它了,如圖5所示。

        圖5 板級支持包工具的選擇

        在device-tree下要把 bootargs的設置成console=ttyUL0,而不是默認的console =ttyS0,否則超級終端將沒有輸出。這是因為我們在調試時需要RS232串口作為超級終端,用的是XPS UART Lite核,但板級支持包默認的卻是UART16500核。

        4.2 dts(device tree)文件的生成

        xilinx.dts文件是板級支持包工具device tree生成的,它記錄了硬件信息。正是這個文件的存在操作系統才能知道本系統有哪些硬件及其屬性。在EDK菜單中選擇Software-->generate Libraries and BSP就會生成xilinx.dts文件。

        5的移植

        5.1安裝用于PowerPC的交叉編譯鏈并設置環境變量

        先下載并安裝德國DENX公司提供的開發環境編譯套件ELDK4.1,用source 命令設置路徑和交叉編譯環境變量,再用export ARCH=powerpc命令使其支持PowerPC架構。

        5.2 準備內核及根文件系統

        這不是一般的內核,而是專門針對Xilinx 的linux-2.6-xlnx.git。可以到git.xilinx.com網站下載最新版本的Linux內核。在http://xilinx.wikidot.com/網上下載根文件系統鏡像壓縮文件ramdisk.image.gz,把ramdisk.image.gz拷貝到內核文件夾的arch/powerpc/boot文件夾中。

        5.3準備 device tree文件

        需要把把EDK工程中板級支持包工具生成的xilinx.dts復制到Linux內核文件夾arch/powerpc/boot/dts中,這樣linux才能根據這個文件給硬件設備添加相應的驅動。

        5.4內核的裁剪與定制

        用命令make 40x/ virtex4_defconfig載入ML405開發板的內核配置,再用make menuconfig打開內核定制圖形界面進行裁剪和定制,使滿足自己的特定需求,需要選上TCP/IP協議。如果需要調試就要把串口驅動 xilinx uartlite serial port support選上。這樣才能使用RS2323作為超級終端。保存配置后用make zImage命令就可以生成內核鏡像文件了。

        6 測試結果與分析

        在EDK中選把硬件文件燒錄到中, 把Linux鏡像文件下載到內存中運行,這樣一個系統就能運行起來了。編寫一個基于socket的網絡通信程序,把FPGA作為客戶端,把PC機作為服務器端,從FPGA不斷的向PC發送基于TCP協議的數據包,來測試每次發送的數據包大小和傳輸速度之間的關系。當發送的數據包大小為30000Byte時,用tcp/ip協議傳輸的速率是70Mb/s,用udp協議傳輸的速率是135Mb/s。

        在一定范圍內,每次發送的數據包越大,則網絡傳輸速率就越大。傳輸的速度即與powerpc、內存、內部總線的頻率及位寬有關系,也與操作系統及應用程序有關系。

        7結束語

        本文詳細的介紹了基于Linux和FPGA的數據傳輸的實現方法,測試結果表明傳輸速度能滿足設計指標。由于FPGA和linux都具有很大的靈活性,會給將來系統的升級和變更帶來很大方便。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 千阳县| 洛南县| 富阳市| 大悟县| 上杭县| 弥渡县| 信丰县| 益阳市| 石嘴山市| 汝城县| 上林县| 扶风县| 澄江县| 南丹县| 广宁县| 茶陵县| 钟山县| 新乡县| 苍南县| 昌吉市| 尼勒克县| 改则县| 株洲县| 牙克石市| 河东区| 平江县| 土默特左旗| 温州市| 涟源市| 阿拉善盟| 合山市| 和平区| 临泉县| 剑阁县| 石楼县| 天台县| 抚州市| 惠州市| 射洪县| 岑溪市| 砚山县|