新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > DSP與PCI網卡接口設計

        DSP與PCI網卡接口設計

        作者: 時間:2009-10-21 來源:網絡 收藏
         圖3中,通過9054來讀寫內存,地址空間由的基地址開始。PCI9054作為的從設備和RTL8139的主設備。當PCI寫時,接收寫信號,返回ready信號直到寫FIFO滿為止,并保持ready信號到寫FIFO可用。當PCI9054從RTL8139讀出數據時將保持ready信號,直到BALST信號(表示PCI總線上的最后傳輸)有效,讀周期被終止,沒有讀出的數據將被FIFO舍棄。

        本文引用地址:http://www.104case.com/article/152314.htm

          要使嵌入式系統要獨立運行,必須外接EPROM或Flash存儲器用于存放程序。與EPROM相比,Flash芯片功耗低,支持在工作電壓下的擦寫,可以方便地編寫自己的Flash芯片燒錄程序,通過在片方式完成對Flash芯片的寫操作。本采用的是SST公司生產的SST39VF400A,它是一款基于CMOS技術的高性能、多用途的Flash存儲芯片,其存儲容量達4Mb,功耗低,使用2.7~3.3V單電源供電。為了方便程序的調試,外接了1片64K×16b的SRAM,以用于存放發送數據和接收數據,以便于對比,及時地發現數據傳輸的正確性。邏輯控制部分主要用于主處理器對外設(如PCI橋芯片、網絡適配芯片、SRAM及Flash等)的讀寫控制及地址分配。

        3軟件

          軟件主要分為PCI網橋和網絡二部分。PCI網橋部分主要是對PCI9054進行初始化,即對它的PCI端配置寄存器和本地端配置寄存器進行正確的編程配置,以實現DSP與PCI的無縫連接。網絡部分的編程包括對RTL8139進行復位初始化,數據包的接收和發送。

          RTL8139已經實現了OSI中的物理層和數據鏈路層的功能,只需再加上高層協議即可。作為一個嵌入式系統,為了節省系統資源,需要盡量使用簡化的協議。因此IP地址和本機物理地址在初始化RTL8139時設定,采用本地管理的地址方式,上層協議進行了簡化,沒有封裝復雜的TCP協議。

          簡化的初始化程序如下:

          #define CMD_RST 0x10 //復位標志

          #define CMD_RE0x08 //接收使能

          #define CMD_TE0x04 //發送使能

          #define SUCCESS0xFF //初始化成功標志

          Reset_init_rtl8139()

          {

        CMD=0x10;//軟復位網卡

        while((read_cmd CMD_RST)==0) read_cmd=CMD;

                            //檢查網卡是否復位完成

        write_mac_ip();     //設定網卡的MAC地址和IP地址

        CMD=CMD_RE | CMD_TE;   //接收發送使能

        set_RxConfig(); //接收配置

        set_TxConfig(); //發送配置

        init_rx_addr(); //初始化接收緩沖區地址

        Rxmissed=0; //clear 0

        CMD=CMD_RE | CMD_TE;

        return SUCCESS;

          }

          程序中:CMD為RTL8139的Command寄存器,通過它來對芯片復位并檢查復位成功與否;write_mac_ip()是向IDR0~IDR5寫入MAC地址,設定IP地址;set_RxConfig()主要是對Receive Configuration Register進行設置。此外,網卡初始化程序設定只接收物理地址匹配的包,不接收組播和廣播。

          RTL8139接收緩沖區的大小可選,并設定為16KB。初始化過程中根據DSP的快慢還需要加一些延時,這一點非常重要。因為許多寄存器的設置都需要時間,若時間不夠,某些寄存器的值可能會設置不正確,從而導致初始化失敗,RTL8139的收發功能也會受到影響。

          RTL8139數據的收發用中斷方式完成。當主處理器要向網上發送數據時,先將1幀數據通過DMA通道送到控制器的發送緩沖區,然后發出傳送命令,RTL8139按照PCI總線主模式將數據從發送緩沖區轉移到內部發送FIFO中。當FIFO中數據包完整時,RTL8139即開始包發送。控制器在數據發送完成后通過中斷方式通知主處理器;接收數據時,網上來的數據包首先被放在接收FIFO中,同時RTL8139要進行組播地址過濾。當接收FIFO中數據包已達到接收配置寄存器的要求時,RTL8139請求PCI總線按照PCI主模式將數據傳到接收緩沖區,接收滿1幀后,同樣以中斷方式通知主處理器。數據的收發是通過 DMA通道來完成的。中斷子程序流程圖如圖4所示。

          數據包的封裝按照IEEE802.3協議、IP協議和UDP協議,其幀格式如圖5所示。

          封裝的過程依次在源數據前加上UDP頭、IP頭和LLC頭。LLC頭即通常所說的以太網包頭,但也可以根據自己的需要加上其他協議如TCP、ARP或HTTP。不過在嵌入式系統中,為了節省資源,應盡量減少協議的使用。在分組語音數據傳輸中,實時語音數據可以用UDP,而控制信號可以用TCP。

        4 結束語

          本文所提出的DSP與RTL8139的解決方案已在試驗中得到實現,并已用于IP分組語音數據的以太網傳輸,效果良好。隨著ISA總線的淘汰,PCI接口的網絡控制器必將在嵌入式領域中得到更廣泛的應用。


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 赣州市| 乐亭县| 恩平市| 会东县| 江孜县| 长治市| 乡城县| 博客| 会昌县| 金寨县| 黎川县| 西峡县| 龙陵县| 奉贤区| 通辽市| 临江市| 磐石市| 搜索| 玛沁县| 米脂县| 黄石市| 宝坻区| 通城县| 舟山市| 华池县| 浦北县| 衢州市| 资中县| 康平县| 平远县| 大厂| 巴林右旗| 彝良县| 托克逊县| 建宁县| 红原县| 石屏县| 织金县| 桃园县| 武夷山市| 武汉市|