《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于FPGA和LAN91C111的嵌入式以太網(wǎng)接口設(shè)計
基于FPGA和LAN91C111的嵌入式以太網(wǎng)接口設(shè)計
電子元器件應(yīng)用
劉 巖,,王曉君 河北科技大學
摘要: 基于FPGA和LAN91C111的嵌入式以太網(wǎng)接口設(shè)計,摘要:介紹了SMSC公司生產(chǎn)的嵌入式以太網(wǎng)控制器LAN91C111的主要特點及工作原理,,并從系統(tǒng)方案、硬件設(shè)計,、軟件設(shè)計等方面,詳細介紹了基于ALTERA公司的NIOSII軟核處理器芯片LAN91C111芯片來實現(xiàn)以太網(wǎng)互聯(lián)通信的原理
Abstract:
Key words :

摘要:介紹了SMSC公司生產(chǎn)的嵌入式以太網(wǎng)控制器LAN91C111的主要特點及工作原理,,并從系統(tǒng)方案,、硬件設(shè)計、軟件設(shè)計等方面,詳細介紹了基于ALTERA公司的NIOS II軟核處理器芯片LAN91C111芯片來實現(xiàn)以太網(wǎng)互聯(lián)通信的原理和方法,。
關(guān)鍵詞:以太網(wǎng),;互聯(lián)網(wǎng)通信;LAN91C111,;NIOS

0 引言
    隨著CPU性能的大幅度提升,,嵌入式系統(tǒng)的設(shè)計已經(jīng)進入了更廣泛的領(lǐng)域。隨著FPGA的不斷發(fā)展和規(guī)模的進一步強大,,SOPC的應(yīng)用也越來越廣泛,。由于SOPC的可編程特性很受嵌入式系統(tǒng)開發(fā)人員的青睞,因此,,隨著信息產(chǎn)業(yè)和微電子技術(shù)的發(fā)展,,可編程嵌入式系統(tǒng)設(shè)計已經(jīng)成為信息產(chǎn)業(yè)最熱門的技術(shù)之一,F(xiàn)PGA正以各種電子產(chǎn)品的形式進入人們?nèi)粘I畹母鱾€角落,。
    以太網(wǎng)以其良好的通用性和帶寬性能成為新一代工業(yè)控制網(wǎng)絡(luò)的焦點,,目前,關(guān)于嵌入式以太網(wǎng)的設(shè)計方案大部分是基于單片機的,。由于單片機的速度慢,,而FPCA作為一種特殊的嵌入式微處理器系統(tǒng),則具有快速處理數(shù)據(jù)的能力,。因此,,在嵌入式網(wǎng)絡(luò)設(shè)備中引入FPGA技術(shù),可以使嵌入式以太網(wǎng)的速度更快,。為此,,本文介紹基于FPGA的嵌入式系統(tǒng)與LAN91C111型自適應(yīng)10Mb/100Mb嵌入式以太網(wǎng)的接口電路與實現(xiàn)方法。

1 硬件設(shè)計
1.1 FPGA的特點
    本系統(tǒng)的主控芯片采用ALTERA公司CycloneII系列的EP2C35F484,。FPGA內(nèi)部集成有鎖相環(huán),,可以把外部時鐘倍頻,其核心頻率可以到幾百兆,,同時具有豐富的IO資源,,可以方便連接外設(shè)。FPGA的并行執(zhí)行程序方式具有處理更復雜功能的能力,,而且內(nèi)部嵌有SOPC和DSP,。可編程SOPC是一種特殊的嵌入式系統(tǒng),,具有靈活的設(shè)計方式,,而且可裁剪、可擴充,,同時軟硬件在系統(tǒng)可編程功能,。
1.2 嵌入式以太網(wǎng)控制器LAN91C111
    以太網(wǎng)控制芯片所選用的SMSC公司LAN91C111芯片是專門用于嵌入式產(chǎn)品的10M/100M第三代快速以太網(wǎng)控制器,。該器件具有可編程、CRC校驗,、同步或異步工作方式,,且具有低功耗CMOS設(shè)計和小尺寸等特點,是設(shè)計嵌入式以太網(wǎng)網(wǎng)絡(luò)接口的良好選擇,。LAN91C111的原理框圖如圖1所示,。

a.JPG


    LAN91C111集成了CSMA/CD(帶碰撞的載波偵聽多路接入)協(xié)議的MAC(媒體層)和PHY(物理層)。其主要特點是支持IEEE802.3/802 U以太網(wǎng)標準,、自適應(yīng)10M/100M,,全雙工/半雙工收發(fā)方式、有8KB的片上FIFO存儲器,、支持8位或16位或32位總線方式,、支持先進的傳輸隊列管理、有串行EEPROM選擇性配置口,、并支持突發(fā)數(shù)據(jù)傳輸,、支持全雙工交換式以太網(wǎng)、增強式能量管理功能和低功耗的CMOS設(shè)計,。
    總線接口模塊是由數(shù)據(jù)總線,、地址總線、控制總線以8位,、16位,、或32位形式與外部數(shù)據(jù)進行交互。LAN91C111以太網(wǎng)控制器遵循IEEE頒布的802.3以太網(wǎng)傳輸協(xié)議,,內(nèi)部集成有8KB的RAM,,可通過內(nèi)部的內(nèi)存管理模塊、仲裁模塊和DMA共同管理數(shù)據(jù)包的發(fā)送與接收,。其仲裁器監(jiān)視以太網(wǎng)總線的數(shù)據(jù)交流,一旦發(fā)生阻塞,。仲裁器一方面通過總線接口單元與外部CPU聯(lián)系,;一方面控制內(nèi)存控制單元,實現(xiàn)總線的數(shù)據(jù)協(xié)調(diào),。LAN91C111內(nèi)部的RAM可以緩存數(shù)據(jù),,在全雙工工作模式下,數(shù)據(jù)傳輸速率可達到10M/100Mbps,。所有內(nèi)部寄存器的初始值均放在EEPROM中,,自舉時可完成自動初始化。在數(shù)據(jù)傳輸過程中,,若以10Mbps速率傳輸,,則可采用Manchester編碼,,并以兩層曼徹斯特代替三電平,且沒有擾頻器和解擾頻器,;若以100Mbps速率傳輸,,則先將發(fā)送到RAM中的數(shù)據(jù)包以包號的形式存放在FIFO的發(fā)送隊列中,然后按照規(guī)則逐個將數(shù)據(jù)包發(fā)送到PHY模塊進行4B-5B編碼,,發(fā)送數(shù)據(jù)端可將通過擾頻器整理后的4B-5B數(shù)據(jù)包變換成MLT-3后輸出,。而在接收時,則將數(shù)據(jù)包復制并發(fā)送到解擾頻器進行整理,,然后再發(fā)送到4B-5B解碼器進行解碼,。
1.3 硬件連接
    本設(shè)計在FPGA芯片EP2C35中嵌入了32位的NIOS II處理器。由于LAN91C111是專為嵌入式系統(tǒng)設(shè)計的,,因而其外圍電路相對比較簡單,。圖2所示是其硬件連接圖,圖中的地址線,、數(shù)據(jù)線,、控制線分別與FPGA相連。由于采用的是16位數(shù)據(jù)傳輸方式,,因此只用到數(shù)據(jù)總線的低16位,。控制線中的AEN為片選信號,,INTR0為外部中斷信號,,WR為讀寫信號,BE0-BE1為字節(jié)選擇端,。LAN91C111中的ADS,、LCLK、CYCLE,、W/R,、RDYR-TN信號應(yīng)均加一個1kΩ的上拉電阻。TG10o-S050N2是以太網(wǎng)的變壓濾波器,。TX+,、TX-、RX+,、RX-分別與LAN91C111的TPO+,、TPO-、TPI+,、YPI-相連,。TG100-S050N2的CMT端也應(yīng)接一個1kΩ的上拉電阻。RJ45的TD+,、TD-,、RD+,、RD-分別與TG100-S050N2的TD4+、TD-,、RD+,、RD-相連。在TG100-S050N2的TCT和RCT亦應(yīng)分別接一個75Ω的電阻和1nF的濾波電容,。這樣即可在控制線的作用下完成FPGA與LAN91C111之間的數(shù)據(jù)通信,。

b.JPG



2 軟件設(shè)計
    ALTERA公司提供的硬件抽象層(HAL)中封裝了系統(tǒng)中硬件的相關(guān)細節(jié)和驅(qū)動程序,用戶可在HAL的基礎(chǔ)上方便地開發(fā)存儲等應(yīng)用程序,。
NIOSⅡIDE環(huán)境中集成有μCOS II和LWIP,,其中LWIP必須在μCOS的支持下使用。μC/OSⅡ是一種免費公開源代碼,,結(jié)構(gòu)小巧,,而且具有可剝奪
實時內(nèi)核的操作系統(tǒng),它可移植,、可裁剪,,最多可管理64個任務(wù),其每個任務(wù)都擁有自己獨立的堆棧,,大部分源碼可使用ANSI C語言編寫,,整個軟件部分可在NIOS II IDE開發(fā)環(huán)境下完成。由于程序的內(nèi)容較多,,本文著重介紹LAN91C111的初始化,、發(fā)送數(shù)據(jù)、接收數(shù)據(jù)三個部分的軟件設(shè)計方法,。
2.1 初始化
    ALTERA提供有LWIP的NIOS II端口,,其源代碼包含在NIOS II開發(fā)工具包中。LWIP可為NIOS II處理器提供對以太網(wǎng)連接棧的快速,、開源
地訪問,。ALTERA的LWIP端口包括套接字API封裝,提供有標準的,、文檔說明齊全的套接字API,。LWIP協(xié)議棧的主要接口是標準的套接字接口。
除了套接字接口以外,,還可調(diào)用lwip_stack_init()函數(shù)和lwip_devices_init()函數(shù)來對堆棧和驅(qū)動程序初始化。通過HAL系統(tǒng)代碼可調(diào)用
init_done_func(),、get_mac_addr()和get_ip_addr()函數(shù)來設(shè)置MAC地址和IP地址,。為了初始化堆棧,在調(diào)用OSStart啟動μC/OS II調(diào)度程序之前應(yīng)調(diào)用函數(shù)lwip_stack_init(),,其原型為voidlwip_stack_init( int thread_prio,, void(*init_done_func)(void*),,void*arg)。堆棧初始化后,,還必須調(diào)用函數(shù)init_done_func(),,而該函數(shù)必須調(diào)用函數(shù)lwip_devices_init()。利用函數(shù)lwip_devices_init()可以對在system.h中定義的所有已安裝的以太網(wǎng)設(shè)備驅(qū)動程序進行注冊,,若返回一個非0值則表示注冊成功,。注冊成功后,TCP/IP棧即可使用,,之后便可在程序中創(chuàng)建任務(wù),。該函數(shù)的參數(shù)是接收線程的優(yōu)先級。LWIP系統(tǒng)碼在設(shè)備初始化過程中,,可通過lwip_devices_init()函數(shù)調(diào)用函數(shù)get_mac_addr()和get_ip_addr(),。用戶通過編寫這些函數(shù),可在系統(tǒng)中將MAC和IP地址存放在任意位置,,從而代替在設(shè)備驅(qū)動程序中固定位置的硬編碼,,并增加系統(tǒng)的靈活性。設(shè)計時,,可以將MAC地址存放在Flash存儲器中,,也可以將MAC地址存放在片上內(nèi)嵌的存儲器中。當所有的初始化都準備好后即可調(diào)用OSStart()以啟動RTOS進行任務(wù)調(diào)度,。這個過程需要設(shè)置以太網(wǎng)目的地址,、以太網(wǎng)源地址、協(xié)議類型,,然后再按照所設(shè)置的協(xié)議類型來設(shè)置數(shù)據(jù)包,。
2.2 數(shù)據(jù)的發(fā)送和接收
    數(shù)據(jù)的接收和發(fā)送可采用中斷方式。中斷服務(wù)程序通過檢查LAN91C111的中斷狀態(tài)寄存器來判斷是發(fā)送中斷請求還是接收中斷請求,。初始化完成后,,即可創(chuàng)建任務(wù),建立套接字,,綁定端口,,綁定完之后,再監(jiān)聽端口,。當LAN91C111接收到數(shù)據(jù)包時,,可由EPH模塊察看此數(shù)據(jù)包的目的地址,若為本網(wǎng)卡的MAC地址或廣播地址或多播地址,,則把此數(shù)據(jù)包傳送到LAN91C111的RAM中,,并向處理器發(fā)送中斷,由處理器進行數(shù)據(jù)處理,。由于采用的是TCP/IP協(xié)議,,接收數(shù)據(jù)應(yīng)調(diào)用read()函數(shù)來接收建立連接的套接字中的數(shù)據(jù),,并將其放入緩沖區(qū)。發(fā)送過程則是由FPGA將數(shù)據(jù)傳送到LAN91C111,,再由LAN91C111將接收到的數(shù)據(jù)封裝成數(shù)據(jù)包,,并檢測網(wǎng)絡(luò),當沒有數(shù)據(jù)傳輸時,,再將數(shù)據(jù)包傳輸?shù)骄W(wǎng)絡(luò)中,,并向處理器發(fā)送中斷信號,以表示數(shù)據(jù)傳送完畢,。發(fā)送數(shù)據(jù)時通過調(diào)用write()函數(shù)可將要發(fā)送的數(shù)據(jù)發(fā)送到指定連接的目的地址,。

3 結(jié)束語
    本文的整個設(shè)計使用了邏輯單元(LE)5314個,占用EP2C35F484芯片內(nèi)部資源的16%,,這充分體現(xiàn)了FPGA資源的豐富性,。在傳統(tǒng)設(shè)計中,通常選用單片機和低速網(wǎng)卡的設(shè)計方案,,這在實際應(yīng)用中,,網(wǎng)絡(luò)速度相對較慢,而本設(shè)計中選用高速的以太網(wǎng)控制芯片LAN91C111和高速的FPGA,,極大地提高了系統(tǒng)的網(wǎng)絡(luò)數(shù)據(jù)處理能力,,并可滿足網(wǎng)絡(luò)數(shù)據(jù)采集的需求。另外,,基于FPGA的NIOSⅡ方案,,還可根據(jù)實際需要添加不同IP,這也體現(xiàn)了SOPC的靈活性與可裁減性,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。