国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      基于以太網(wǎng)控制器的網(wǎng)絡(luò)端口擴(kuò)展方法與流程

      文檔序號(hào):11138470閱讀:524來(lái)源:國(guó)知局
      基于以太網(wǎng)控制器的網(wǎng)絡(luò)端口擴(kuò)展方法與制造工藝

      本發(fā)明涉及一種基于以太網(wǎng)控制器的網(wǎng)絡(luò)端口擴(kuò)展方法,屬于以太網(wǎng)通信技術(shù)領(lǐng)域。



      背景技術(shù):

      由于Ethernet應(yīng)用的廣泛性和技術(shù)的先進(jìn)性,在工業(yè)應(yīng)用中也具有傳統(tǒng)現(xiàn)場(chǎng)總線所無(wú)法比擬的優(yōu)越性,正在逐步取代傳統(tǒng)的現(xiàn)場(chǎng)總線技術(shù),使其成為當(dāng)今工業(yè)控制首選網(wǎng)絡(luò)。隨著應(yīng)用復(fù)雜性增加,對(duì)智能電子設(shè)備網(wǎng)絡(luò)端口的數(shù)量也在增加,且往往需要各端口在鏈路層完全獨(dú)立。然而就目前主流嵌入式MCU來(lái)說(shuō),片上的MAC控制器不超過(guò)3個(gè),其具有3個(gè)或3個(gè)以上獨(dú)立網(wǎng)口的處理器非常少。此外,嵌入式MCU都會(huì)為集成的MAC控制器提供專門DMA服務(wù),以改善網(wǎng)絡(luò)吞吐率,且各廠商都會(huì)提供相應(yīng)的網(wǎng)絡(luò)驅(qū)動(dòng)程序。因此,網(wǎng)絡(luò)擴(kuò)展成為嵌入式應(yīng)用的必然趨勢(shì),而基于MCU原有網(wǎng)絡(luò)端口擴(kuò)展網(wǎng)口,無(wú)論就硬件環(huán)境還是軟件環(huán)境都具有明顯的優(yōu)勢(shì)。

      目前,網(wǎng)絡(luò)端口擴(kuò)展主要有以下兩種方法:

      (1)基于系統(tǒng)總線擴(kuò)展獨(dú)立的網(wǎng)絡(luò)控制器,系統(tǒng)設(shè)計(jì)者需根據(jù)不同的網(wǎng)絡(luò)控制器的要求修改網(wǎng)絡(luò)驅(qū)動(dòng)程序?qū)崿F(xiàn)網(wǎng)絡(luò)擴(kuò)展;

      (2)基于網(wǎng)絡(luò)交換芯片的網(wǎng)絡(luò)端口擴(kuò)展,通常將交換芯片的一個(gè)端口接入處理器系統(tǒng)的網(wǎng)絡(luò)接口,然后由交換芯片實(shí)現(xiàn)物理端口擴(kuò)展。

      上述兩種方案在一定程度上實(shí)現(xiàn)的網(wǎng)絡(luò)端口擴(kuò)展,但應(yīng)用場(chǎng)所不同,適用范圍窄,存在不同的缺陷,具體如下,(1)要求系統(tǒng)總線的數(shù)據(jù)吞吐性能好或者具備類似PCI或PCI-E高速端口,布線難度高,驅(qū)動(dòng)程序修改比較大;(2)雖然通過(guò)網(wǎng)絡(luò)端口擴(kuò)展網(wǎng)絡(luò)端口,但擴(kuò)展出來(lái)的端口在鏈路層不獨(dú)立,雖然對(duì)高層應(yīng)用透明,卻不滿足要求具備獨(dú)立MAC地址的應(yīng)用場(chǎng)所。



      技術(shù)實(shí)現(xiàn)要素:

      本發(fā)明所要解決的技術(shù)問(wèn)題是克服現(xiàn)有技術(shù)的缺陷,提供一種基于以太網(wǎng)控制器的網(wǎng)絡(luò)端口擴(kuò)展方法,利用FPGA實(shí)現(xiàn)經(jīng)MCU的原有網(wǎng)絡(luò)端口擴(kuò)展多個(gè)獨(dú)立端口,對(duì)原有的網(wǎng)絡(luò)驅(qū)動(dòng)程序僅需簡(jiǎn)單升級(jí),占用硬件資源開銷非常小,簡(jiǎn)單易實(shí)現(xiàn)。

      為解決上述技術(shù)問(wèn)題,本發(fā)明提供一種基于以太網(wǎng)控制器的網(wǎng)絡(luò)端口擴(kuò)展方法,包括硬件電路實(shí)現(xiàn)方法和驅(qū)動(dòng)軟件實(shí)現(xiàn)方法,其實(shí)現(xiàn)步驟如下:

      步驟1,構(gòu)建包括多路以太網(wǎng)物理層、網(wǎng)絡(luò)擴(kuò)展模塊的硬件電路,所述網(wǎng)絡(luò)擴(kuò)展模塊包括主端口接收邏輯、主端口發(fā)送邏輯、多路發(fā)送邏輯、單網(wǎng)口的接收邏輯、多路接收DMA等;

      步驟2,由所述主端口接收邏輯將來(lái)自主機(jī)MAC的網(wǎng)絡(luò)報(bào)文進(jìn)行延遲緩沖同時(shí)解析報(bào)文中源MAC地址,并選擇本地MAC地址和報(bào)文源MAC地址一致的擴(kuò)展網(wǎng)絡(luò)端口作為該數(shù)據(jù)報(bào)文的目標(biāo)發(fā)送端口;

      步驟3,由所述多路發(fā)送邏輯將延遲緩沖后的數(shù)據(jù)報(bào)文并行施加在各擴(kuò)展網(wǎng)絡(luò)端口,并根據(jù)步驟2選擇結(jié)果置位相應(yīng)擴(kuò)展網(wǎng)絡(luò)端口的發(fā)送使能信號(hào)TX_EN,實(shí)現(xiàn)報(bào)文從選中的端口發(fā)送;

      步驟4,由各擴(kuò)展網(wǎng)絡(luò)端口的接收邏輯接收并緩沖本端口的數(shù)據(jù)報(bào)文同時(shí)標(biāo)記端口序號(hào),然后請(qǐng)求多路接收DMA服務(wù);

      步驟5,多路接收DMA按輪轉(zhuǎn)調(diào)度策略依次查詢各擴(kuò)展網(wǎng)絡(luò)端口的接收邏輯,并將接收邏輯模塊接收到的報(bào)文連同其源端口序號(hào)一并傳送給主端口發(fā)送邏輯;

      步驟6,主端口發(fā)送邏輯將接收DMA的數(shù)據(jù)轉(zhuǎn)換成以太網(wǎng)物理層的數(shù)據(jù)格式,同時(shí)將報(bào)文的源端口序號(hào)插入在報(bào)文的最后一個(gè)字節(jié)后發(fā)送該報(bào)文到主機(jī);

      步驟7,在主機(jī)側(cè)系統(tǒng)軟件中虛擬多個(gè)獨(dú)立的邏輯網(wǎng)絡(luò)設(shè)備,并使這些邏輯網(wǎng)絡(luò)設(shè)備的本地MAC地址和擴(kuò)展網(wǎng)絡(luò)端口中配置的本地MAC地址一致,協(xié)議棧高層發(fā)往邏輯網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)報(bào)由發(fā)送驅(qū)動(dòng)程序映射到主機(jī)側(cè)用來(lái)網(wǎng)絡(luò)擴(kuò)展的MAC控制器;

      步驟8,將位于主機(jī)側(cè)的MAC控制器配置成混雜模式,重設(shè)MAC的最大接收幀長(zhǎng),使其比原有方式增加一個(gè)字節(jié),以容納報(bào)文中擴(kuò)展端口序號(hào);

      步驟9,主機(jī)側(cè)的網(wǎng)口接收驅(qū)動(dòng)程序按常規(guī)方法讀取來(lái)自端口的網(wǎng)絡(luò)數(shù)據(jù),并提取幀校驗(yàn)碼前的一個(gè)字節(jié)作為報(bào)文源端口序號(hào),并根據(jù)此序號(hào)將接收?qǐng)?bào)文提交到步驟7所述對(duì)應(yīng)邏輯網(wǎng)絡(luò)設(shè)備,完成邏輯網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)接收。

      本發(fā)明發(fā)送報(bào)文的目標(biāo)擴(kuò)展網(wǎng)絡(luò)端口選擇由網(wǎng)絡(luò)擴(kuò)展模塊中的多路發(fā)送邏輯完成,協(xié)議棧輸出報(bào)文與常規(guī)報(bào)文一致;而來(lái)自擴(kuò)展網(wǎng)絡(luò)端口的接收?qǐng)?bào)文則由網(wǎng)絡(luò)擴(kuò)展模塊進(jìn)行源端口標(biāo)記,通過(guò)驅(qū)動(dòng)軟件實(shí)現(xiàn)方法完成目標(biāo)邏輯網(wǎng)絡(luò)設(shè)備的選擇,最終完成邏輯網(wǎng)絡(luò)設(shè)備和對(duì)應(yīng)擴(kuò)展端口的綁定,整個(gè)實(shí)現(xiàn)對(duì)協(xié)議棧高層透明。

      當(dāng)使用支持單時(shí)鐘模式的以太網(wǎng)物理層接口器件時(shí),多路發(fā)送邏輯的數(shù)據(jù)輸出端可直接連接到以太網(wǎng)物理層接口器件;當(dāng)選用的以太網(wǎng)物理層器件不支持單時(shí)鐘模式時(shí),采用經(jīng)過(guò)雙時(shí)鐘FIFO連接多路發(fā)送邏輯和物以太網(wǎng)物理層接口器件,實(shí)現(xiàn)跨時(shí)鐘域轉(zhuǎn)換。

      主機(jī)報(bào)文發(fā)送采用源MAC地址路由策略,由擴(kuò)展模塊中的多路發(fā)送邏輯按步驟2選擇與主機(jī)報(bào)文源MAC地址一致的第一個(gè)擴(kuò)展網(wǎng)絡(luò)端口作為該報(bào)文的目標(biāo)轉(zhuǎn)發(fā)端口。

      主端口接收邏輯和多路發(fā)送邏輯并不緩沖全部報(bào)文,僅對(duì)接收?qǐng)?bào)文做適當(dāng)延遲,在解析出報(bào)文中源MAC并完成目標(biāo)端口選擇后即行啟動(dòng)轉(zhuǎn)發(fā),多路發(fā)送邏輯僅產(chǎn)生一組發(fā)送數(shù)據(jù)流,根據(jù)步驟2的目標(biāo)擴(kuò)展網(wǎng)絡(luò)端口選擇結(jié)果置位相應(yīng)的網(wǎng)絡(luò)發(fā)送使能信號(hào)TX_EN,以此實(shí)現(xiàn)數(shù)據(jù)選擇性發(fā)送并保證廣播發(fā)送延遲一致。

      各擴(kuò)展網(wǎng)絡(luò)端口的接收DMA將接收的數(shù)據(jù)報(bào)文標(biāo)記上各自源端口序號(hào),由主端口發(fā)送邏輯將源端口序號(hào)插入到報(bào)文數(shù)據(jù)段的最后一個(gè)字節(jié),而主機(jī)側(cè)MAC控制器則配置成混雜模式,接收所有報(bào)文,而接收驅(qū)動(dòng)程序根據(jù)數(shù)據(jù)報(bào)文的最后一字節(jié)確定報(bào)文的源擴(kuò)展端口序號(hào),并根據(jù)此序號(hào)將報(bào)文提交給相應(yīng)的邏輯設(shè)備。

      本發(fā)明步驟7中主機(jī)側(cè)系統(tǒng)軟件虛擬多個(gè)獨(dú)立的邏輯網(wǎng)絡(luò)設(shè)備的具體方法為,主機(jī)側(cè)軟件按擴(kuò)展網(wǎng)絡(luò)端口的數(shù)量創(chuàng)建同等數(shù)量的邏輯網(wǎng)絡(luò)設(shè)備,二者編號(hào)順序一致,同時(shí)以擴(kuò)展端口序號(hào)為索引建立查找表,以便通過(guò)擴(kuò)展網(wǎng)絡(luò)端口序號(hào)能夠找到對(duì)應(yīng)的邏輯網(wǎng)絡(luò)設(shè)備。

      本發(fā)明所達(dá)到的有益效果在于:

      本發(fā)明所述的經(jīng)以太網(wǎng)控制器擴(kuò)展網(wǎng)口的實(shí)現(xiàn)方法,通過(guò)一路以太網(wǎng)控制器擴(kuò)展出多個(gè)獨(dú)立的網(wǎng)絡(luò)控制器,各控制器具有獨(dú)立的MAC地址,和以往網(wǎng)絡(luò)交換芯片相比采用源地址路由選擇方法和直通延遲轉(zhuǎn)發(fā)模式。

      本發(fā)明具有簡(jiǎn)單易實(shí)現(xiàn),網(wǎng)絡(luò)驅(qū)動(dòng)程序改動(dòng)非常小,可方便模擬多個(gè)獨(dú)立網(wǎng)絡(luò)控制器,具有以下特點(diǎn),

      1) 系統(tǒng)對(duì)網(wǎng)絡(luò)協(xié)議透明,占用硬件資源開銷非常小,簡(jiǎn)單易實(shí)現(xiàn);

      3) 網(wǎng)絡(luò)發(fā)送采用多路同時(shí)驅(qū)動(dòng)和直通延遲轉(zhuǎn)發(fā)模式,廣播發(fā)送延遲??;

      4) 網(wǎng)絡(luò)轉(zhuǎn)發(fā)路徑選擇基于源地址模式;

      5) 擴(kuò)展端口數(shù)據(jù)接收和轉(zhuǎn)發(fā)包含源端口標(biāo)記;

      6) 各擴(kuò)展端口之間沒(méi)有數(shù)據(jù)通路,在鏈路層完全獨(dú)立;

      7) 各擴(kuò)展端口擁有獨(dú)立的MAC地址,具備獨(dú)立的MAC控制器的特征。

      因此,本發(fā)明提供的一種基于以太網(wǎng)控制器的網(wǎng)絡(luò)端口擴(kuò)展方法,利用FPGA實(shí)現(xiàn)經(jīng)MCU的原有網(wǎng)絡(luò)端口擴(kuò)展多個(gè)獨(dú)立端口,對(duì)原有的網(wǎng)絡(luò)驅(qū)動(dòng)程序僅需簡(jiǎn)單升級(jí),占用硬件資源開銷非常小,簡(jiǎn)單易實(shí)現(xiàn),具有良好的應(yīng)用前景。

      附圖說(shuō)明

      圖1是本發(fā)明實(shí)施例一的硬件框圖;

      圖2是本發(fā)明實(shí)施例二的硬件框圖;

      圖3是本發(fā)明實(shí)施例二雙時(shí)鐘FIFO連接網(wǎng)絡(luò)物理層的示意圖。

      圖4是本發(fā)明邏輯網(wǎng)口和擴(kuò)展網(wǎng)口端到端連接示意圖。

      具體實(shí)施方式

      下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步描述。以下實(shí)施例僅用于更加清楚地說(shuō)明本發(fā)明的技術(shù)方案,而不能以此來(lái)限制本發(fā)明的保護(hù)范圍。

      本發(fā)明基于以太網(wǎng)控制器的網(wǎng)絡(luò)端口擴(kuò)展方法,通過(guò)多路以太網(wǎng)物理層和網(wǎng)絡(luò)擴(kuò)展模塊等硬件電路構(gòu)成,所述網(wǎng)絡(luò)擴(kuò)展模塊從主機(jī)端口(源端口)接收數(shù)據(jù)報(bào)文,根據(jù)報(bào)文中的源MAC地址選擇轉(zhuǎn)發(fā)目標(biāo)端口,待轉(zhuǎn)發(fā)的報(bào)文并行施加到各個(gè)轉(zhuǎn)發(fā)邏輯,并根據(jù)前面的源MAC選擇結(jié)果確定使某個(gè)發(fā)送邏輯的發(fā)送使能信號(hào)TX_EN有效實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)發(fā)。而各個(gè)擴(kuò)展網(wǎng)口的接收邏輯在接受到數(shù)據(jù)報(bào)文之后請(qǐng)求接收DMA數(shù)據(jù)傳送服務(wù),接收DMA通過(guò)標(biāo)記接收?qǐng)?bào)文的來(lái)源端口序號(hào)并指示后面的主端口發(fā)送邏輯,向主機(jī)端口發(fā)送包含源端口序號(hào)的報(bào)文(源端口序號(hào)添加網(wǎng)絡(luò)序號(hào)到數(shù)據(jù)段的最后一個(gè)字節(jié),即幀校驗(yàn)碼的前一個(gè)字節(jié)),主機(jī)網(wǎng)絡(luò)接收驅(qū)動(dòng)程序通過(guò)提取報(bào)文中源端口序號(hào)實(shí)現(xiàn)物理端口和協(xié)議棧中邏輯設(shè)備的綁定。

      本發(fā)明的硬件實(shí)現(xiàn)方案因使用的網(wǎng)絡(luò)物理層收發(fā)器不同而略有不同,而主機(jī)側(cè)網(wǎng)絡(luò)驅(qū)動(dòng)程序相同,以下分硬件電路和網(wǎng)絡(luò)驅(qū)動(dòng)軟件分述具體實(shí)現(xiàn)方法。

      實(shí)施例一

      1.硬件電路

      如圖1所示的基于以太網(wǎng)控制器的網(wǎng)絡(luò)端口擴(kuò)展方法,其硬件實(shí)現(xiàn)主要包括以下步驟:

      步驟(1),構(gòu)建包括多路以太網(wǎng)物理層、網(wǎng)絡(luò)擴(kuò)展模塊等硬件電路,所述網(wǎng)絡(luò)擴(kuò)展模塊包括主端口接收邏輯、主端口發(fā)送邏輯、多路發(fā)送邏輯、單網(wǎng)口的接收邏輯、多路接收DMA等組成;

      步驟(2),由所述主端口接收邏輯將來(lái)自主機(jī)MAC的網(wǎng)絡(luò)報(bào)文進(jìn)行延遲緩沖同時(shí)解析報(bào)文中源MAC地址,并選擇本地MAC地址和報(bào)文源MAC地址一致的擴(kuò)展網(wǎng)絡(luò)端口作為該數(shù)據(jù)報(bào)文的目標(biāo)發(fā)送端口;

      步驟(3),由所述多路發(fā)送邏輯將延遲緩沖后的數(shù)據(jù)報(bào)文并行施加在各擴(kuò)展網(wǎng)絡(luò)端口,并根據(jù)步驟2選擇結(jié)果置位相應(yīng)擴(kuò)展網(wǎng)絡(luò)端口的發(fā)送使能信號(hào)TX_EN,實(shí)現(xiàn)報(bào)文從選中的端口發(fā)送;

      步驟(4),由各擴(kuò)展網(wǎng)絡(luò)端口的接收邏輯接收并緩沖本端口的數(shù)據(jù)報(bào)文同時(shí)標(biāo)記端口序號(hào),然后請(qǐng)求多路接收DMA服務(wù);

      步驟(5),多路接收DMA按輪轉(zhuǎn)調(diào)度策略依次查詢各接收端口,并將各端口接收到的報(bào)文及其源端口序號(hào)一并傳送給主端口發(fā)送邏輯;

      步驟(6),主端口發(fā)送邏輯將接收DMA的數(shù)據(jù)轉(zhuǎn)換成以太網(wǎng)鏈路層的數(shù)據(jù)格式,同時(shí)將報(bào)文的源端口序號(hào)插入在報(bào)文的最后一個(gè)字節(jié)(即幀校驗(yàn)碼前一字節(jié))隨后發(fā)送該報(bào)文到主機(jī);

      實(shí)施例中擴(kuò)展模塊對(duì)主機(jī)端口報(bào)文延遲緩沖和源MAC地址解析同步進(jìn)行,源MAC地址解析完成后選擇本地MAC地址和報(bào)文源MAC地址一致的第一個(gè)擴(kuò)展網(wǎng)絡(luò)端口作為該數(shù)據(jù)報(bào)文的目標(biāo)發(fā)送端口;

      發(fā)送報(bào)文被延遲8個(gè)網(wǎng)絡(luò)時(shí)鐘,延遲后的數(shù)據(jù)并行施加到各擴(kuò)展以太網(wǎng)物理層的發(fā)送端,而多路發(fā)送邏輯根據(jù)源MAC地址選擇的結(jié)果,將滿足條件的物理層發(fā)送使能信號(hào)TX_EN置有效,以此實(shí)現(xiàn)數(shù)據(jù)選擇性發(fā)送;

      主機(jī)端口MAC控制器應(yīng)該配置成混雜模式,即不執(zhí)行MAC層的地址過(guò)濾,而MAC層的目標(biāo)MAC地址過(guò)濾功能由各擴(kuò)展端口負(fù)責(zé),目標(biāo)MAC地址不滿足接收條件的報(bào)文會(huì)被各端口直接丟棄。

      各擴(kuò)展端口的接收邏輯模塊會(huì)將報(bào)文先行緩沖并計(jì)算幀校驗(yàn),接收邏輯對(duì)滿足接收條件的報(bào)文創(chuàng)建一個(gè)接收描述符,該描述符用來(lái)指示接收?qǐng)?bào)文所在緩沖區(qū)地址、報(bào)文長(zhǎng)度及報(bào)文端口序號(hào)等信息,隨后將產(chǎn)生DMA請(qǐng)求,請(qǐng)求多路接收DMA執(zhí)行數(shù)據(jù)服務(wù)。

      所述的多路接收DMA基于輪轉(zhuǎn)調(diào)度策略(Round-Robin Schedule),輪詢各擴(kuò)展端口的接收邏輯模塊的DMA請(qǐng)求信號(hào),輪詢過(guò)程中若對(duì)應(yīng)的網(wǎng)口沒(méi)有新的數(shù)據(jù),DMA將繼續(xù)查詢下一端口,對(duì)有數(shù)據(jù)請(qǐng)求端口,DMA先從該端口讀取數(shù)據(jù)描述符,并用該描述符配置DMA的數(shù)據(jù)傳輸,傳輸結(jié)束后繼續(xù)查詢下一端口。

      所述的多路接收DMA在執(zhí)行數(shù)據(jù)請(qǐng)求服務(wù)時(shí)先檢查主端口發(fā)送邏輯的發(fā)送數(shù)據(jù)隊(duì)列剩余空間以便執(zhí)行輸入流量控制,當(dāng)剩余空間足夠時(shí)才從擴(kuò)展端口的接收邏輯中復(fù)制數(shù)據(jù)分組到主端口發(fā)送邏輯,然后更新主發(fā)送邏輯模塊的發(fā)送描述符隊(duì)列,而主端口發(fā)送邏輯模塊的發(fā)送描述符同樣包括數(shù)據(jù)分組的緩沖區(qū)地址、分組長(zhǎng)度及數(shù)據(jù)源端口等信息。

      所述主端口發(fā)送邏輯模塊執(zhí)行接收分組到主機(jī)端口的轉(zhuǎn)發(fā),即執(zhí)行緩沖區(qū)數(shù)據(jù)到MII接口的碼流變換,同時(shí)完成在數(shù)據(jù)報(bào)文的幀校驗(yàn)前一字節(jié)插入源擴(kuò)展端口序號(hào)和幀校驗(yàn)計(jì)算功能。

      使用支持單時(shí)鐘模式的物理層(PHY)接口器件,多路發(fā)送邏輯模塊的數(shù)據(jù)輸出端可直接連接到物理層(PHY)接口器件。

      擴(kuò)展的各個(gè)物理端口之間不存在數(shù)據(jù)通路,完全獨(dú)立,當(dāng)擴(kuò)展網(wǎng)絡(luò)端口分別位于不同的物理網(wǎng)絡(luò)時(shí),位于一個(gè)網(wǎng)絡(luò)的端口不會(huì)對(duì)位于其他網(wǎng)絡(luò)的端口構(gòu)成任何影響,滿足不同網(wǎng)絡(luò)間完全隔離的安全要求。

      2.網(wǎng)絡(luò)驅(qū)動(dòng)軟件

      本發(fā)明主機(jī)側(cè)網(wǎng)絡(luò)驅(qū)動(dòng)程序需要構(gòu)建多個(gè)邏輯網(wǎng)絡(luò)設(shè)備,其數(shù)量和擴(kuò)展網(wǎng)絡(luò)端口一致,各邏輯網(wǎng)絡(luò)設(shè)備的本地MAC地址和擴(kuò)展網(wǎng)口的MAC地址一致,邏輯網(wǎng)口和擴(kuò)展網(wǎng)口端到端連接示意如圖4所示。驅(qū)動(dòng)程序按下述方法進(jìn)行修改:

      步驟(1),主機(jī)側(cè)軟件按擴(kuò)展的物理端口數(shù)量創(chuàng)建同等數(shù)量的邏輯網(wǎng)絡(luò)設(shè)備,二者編號(hào)順序一致,同時(shí)建立查找表,以便通過(guò)物理端口序號(hào)能夠找到對(duì)應(yīng)的邏輯設(shè)備,最后將位于主機(jī)側(cè)的MAC控制器配置成混雜模式(promiscuous mode,即接收所有的網(wǎng)絡(luò)分組),重設(shè)MAC的最大接收幀長(zhǎng),使其比原有方式增加一個(gè)字節(jié),以容納報(bào)文中擴(kuò)展端口序號(hào);

      步驟(2),配置邏輯網(wǎng)絡(luò)設(shè)備的本地Mac(Local Mac)地址,使之與對(duì)應(yīng)的擴(kuò)展網(wǎng)絡(luò)端口MAC地址一致;

      步驟(3),配置邏輯網(wǎng)絡(luò)設(shè)備的發(fā)送服務(wù)程序接口,使之綁定到用來(lái)擴(kuò)展端口的對(duì)應(yīng)MCU的網(wǎng)絡(luò)端口(參照?qǐng)D4),以便邏輯設(shè)備在接收到來(lái)自協(xié)議棧高層的網(wǎng)絡(luò)分組時(shí)能夠?qū)⑦@些分組映射到MCU的指定網(wǎng)絡(luò)端口;

      步驟(4),修改MCU側(cè)擴(kuò)展網(wǎng)絡(luò)端口所對(duì)應(yīng)的MAC控制器的接收驅(qū)動(dòng)程序,使該程序能夠從幀校驗(yàn)碼前一個(gè)字節(jié)中提取數(shù)據(jù)源端口序號(hào),該序號(hào)由網(wǎng)絡(luò)擴(kuò)展模塊標(biāo)記并與擴(kuò)展網(wǎng)絡(luò)端口一一對(duì)應(yīng);

      步驟(5),對(duì)應(yīng)MCU側(cè)接收驅(qū)動(dòng)程序,根據(jù)步驟4獲得的序號(hào)和步驟1創(chuàng)建的查找表,確定接收數(shù)據(jù)分組所對(duì)應(yīng)的邏輯設(shè)備,并提交報(bào)文分組到該邏輯設(shè)備;

      所述基于以太網(wǎng)控制器的網(wǎng)絡(luò)端口擴(kuò)展方法的發(fā)送報(bào)文分組的目標(biāo)物理端口選擇由擴(kuò)展模塊硬件完成,協(xié)議棧輸出報(bào)文與常規(guī)報(bào)文一致;而來(lái)自物理端口的接收分組則由擴(kuò)展模塊進(jìn)行源端口標(biāo)記,由軟件完成目標(biāo)邏輯設(shè)備選擇,最終完成邏輯設(shè)備和對(duì)應(yīng)擴(kuò)展網(wǎng)絡(luò)端口的綁定,整個(gè)實(shí)現(xiàn)對(duì)協(xié)議棧高層透明。

      實(shí)施例二

      1. 硬件電路

      如圖2所示,基于以太網(wǎng)控制器的網(wǎng)絡(luò)端口擴(kuò)展方法,實(shí)現(xiàn)案例二采用通用網(wǎng)絡(luò)物理層,采用雙時(shí)鐘模式,其硬件實(shí)現(xiàn)主要包括以下步驟:

      步驟(1),構(gòu)建包括多路以太網(wǎng)物理層、網(wǎng)絡(luò)擴(kuò)展模塊等硬件電路,所述網(wǎng)絡(luò)擴(kuò)展模塊包括主端口接收邏輯、主端口發(fā)送邏輯、多路發(fā)送邏輯、雙時(shí)鐘FIFO、單網(wǎng)口的接收邏輯、多路接收DMA等組成;

      步驟(2),由所述主端口接收邏輯將來(lái)自主機(jī)MAC控制器的網(wǎng)絡(luò)報(bào)文進(jìn)行延遲緩沖同時(shí)解析報(bào)文中源MAC地址,并選擇本地MAC地址和報(bào)文源MAC地址一致的擴(kuò)展網(wǎng)絡(luò)端口作為該數(shù)據(jù)報(bào)文的目標(biāo)發(fā)送端口;

      步驟(3),由所述多路發(fā)送邏輯將延遲緩沖后的數(shù)據(jù)報(bào)文并行施加在各擴(kuò)展網(wǎng)絡(luò)端口的雙時(shí)鐘FIFO的數(shù)據(jù)輸入端口,并根據(jù)步驟2選擇結(jié)果置位相應(yīng)的發(fā)送使能信號(hào)TX_EN,允許待發(fā)送報(bào)文進(jìn)入雙時(shí)鐘FIFO,經(jīng)延時(shí)后數(shù)據(jù)報(bào)文在FIFO的輸出時(shí)鐘的控制下施加到對(duì)應(yīng)的網(wǎng)絡(luò)物理層實(shí)現(xiàn)報(bào)文發(fā)送;

      步驟(4),由各擴(kuò)展網(wǎng)絡(luò)端口的接收邏輯接收并緩沖本端口的數(shù)據(jù)報(bào)文同時(shí)標(biāo)記端口序號(hào),然后請(qǐng)求多路接收DMA服務(wù);

      步驟(5),多路接收DMA按輪轉(zhuǎn)調(diào)度策略依次查詢各接收端口,并將各端口接收到的報(bào)文及其源端口序號(hào)一并傳送給主端口發(fā)送邏輯;

      步驟(6),主端口發(fā)送邏輯將接收DMA的數(shù)據(jù)轉(zhuǎn)換成以太網(wǎng)物理層的數(shù)據(jù)格式,同時(shí)將報(bào)文的源端口序號(hào)插入在報(bào)文的最后一個(gè)字節(jié)(即幀校驗(yàn)碼前一字節(jié))隨后發(fā)送該報(bào)文到主機(jī);

      實(shí)施例中擴(kuò)展模塊對(duì)主機(jī)端口報(bào)文延遲緩沖和源MAC地址解析同步進(jìn)行,源MAC地址解析完成后選擇本地MAC地址和報(bào)文源MAC地址一致的第一個(gè)擴(kuò)展網(wǎng)絡(luò)端口作為該數(shù)據(jù)報(bào)文的目標(biāo)發(fā)送端口;

      發(fā)送報(bào)文被延遲8個(gè)網(wǎng)絡(luò)時(shí)鐘,延遲后的數(shù)據(jù)并行施加到各擴(kuò)展以太網(wǎng)物理層的發(fā)送端,而多路發(fā)送邏輯根據(jù)源MAC地址選擇的結(jié)果,將滿足條件的物理層發(fā)送使能信號(hào)TX_EN置有效,以此實(shí)現(xiàn)數(shù)據(jù)選擇性發(fā)送;

      主機(jī)端口MAC控制器應(yīng)該配置成混雜模式,即不執(zhí)行MAC層的地址過(guò)濾,而MAC層的目標(biāo)MAC地址過(guò)濾功能由各擴(kuò)展端口負(fù)責(zé),目標(biāo)MAC地址不滿足接收條件的報(bào)文會(huì)被各端口直接丟棄。

      各擴(kuò)展端口的接收邏輯模塊會(huì)將報(bào)文先行緩沖并計(jì)算幀校驗(yàn),接收邏輯對(duì)滿足接收條件的報(bào)文創(chuàng)建一個(gè)接收描述符,該描述符用來(lái)指示接收?qǐng)?bào)文所在緩沖區(qū)地址、報(bào)文長(zhǎng)度及報(bào)文端口序號(hào)等信息,隨后將產(chǎn)生DMA請(qǐng)求,請(qǐng)求多路接收DMA執(zhí)行數(shù)據(jù)服務(wù)。

      所述的多路接收DMA基于輪轉(zhuǎn)調(diào)度策略(Round-Robin Schedule),輪詢各擴(kuò)展端口的接收邏輯模塊的DMA請(qǐng)求信號(hào),輪詢過(guò)程中若對(duì)應(yīng)的網(wǎng)口沒(méi)有新的數(shù)據(jù),DMA將繼續(xù)查詢下一端口,對(duì)有數(shù)據(jù)請(qǐng)求端口,DMA先從該端口讀取數(shù)據(jù)描述符,并用該描述符配置DMA的數(shù)據(jù)傳輸,傳輸結(jié)束后繼續(xù)查詢下一端口。

      所述的多路接收DMA在執(zhí)行數(shù)據(jù)請(qǐng)求服務(wù)時(shí)先檢查主端口發(fā)送邏輯的發(fā)送數(shù)據(jù)隊(duì)列剩余空間以便執(zhí)行輸入流量控制,當(dāng)剩余空間足夠時(shí)才從擴(kuò)展端口的接收邏輯中復(fù)制數(shù)據(jù)分組到主端口發(fā)送邏輯,然后更新主發(fā)送邏輯模塊的發(fā)送描述符隊(duì)列,而主端口發(fā)送邏輯模塊的發(fā)送描述符同樣包括數(shù)據(jù)分組的緩沖區(qū)地址、分組長(zhǎng)度及數(shù)據(jù)源端口等信息。

      所述主端口發(fā)送邏輯模塊執(zhí)行接收分組到主機(jī)端口的轉(zhuǎn)發(fā),即執(zhí)行緩沖區(qū)數(shù)據(jù)到MII接口的碼流變換,同時(shí)完成在數(shù)據(jù)報(bào)文的幀校驗(yàn)前一字節(jié)插入源擴(kuò)展端口序號(hào)和幀校驗(yàn)計(jì)算功能。

      所述雙時(shí)鐘FIFO連接在多路發(fā)送邏輯和PHY之間,多路發(fā)送邏輯的輸出即為FIFO的輸入,其中FIFO和PHY的局部連接如圖3所示,寫時(shí)鐘采用RXCLK,而寫數(shù)據(jù)分別為RXD和RXER,雙時(shí)鐘FIFO的讀時(shí)鐘采用TXCLK, 雙時(shí)鐘FIFO的數(shù)據(jù)輸出接對(duì)應(yīng)側(cè)PHY的數(shù)據(jù)輸入,使用FIFO的空信號(hào)(fifo_empty)反相之后來(lái)控制雙時(shí)鐘FIFO的讀請(qǐng)求和PHY的發(fā)送使能TXEN,這樣則FIFO中包含數(shù)據(jù)可以控制PHY編碼發(fā)送。

      2. 網(wǎng)絡(luò)驅(qū)動(dòng)軟件

      同實(shí)施例一中的“網(wǎng)絡(luò)驅(qū)動(dòng)軟件”實(shí)現(xiàn)方法。

      實(shí)施例一和實(shí)施例二的主要區(qū)別在于,前者采用支持單時(shí)鐘模式的網(wǎng)絡(luò)物理層,發(fā)送邏輯的數(shù)據(jù)可以直接連接到物理層,而后者使用雙時(shí)鐘的通用網(wǎng)絡(luò)物理層,端口發(fā)送邏輯和網(wǎng)絡(luò)物理層之間需要添加雙時(shí)鐘FIFO來(lái)實(shí)現(xiàn)發(fā)送數(shù)據(jù)的跨時(shí)鐘域轉(zhuǎn)換;

      實(shí)施例二的其他功能特征等同于硬件實(shí)現(xiàn)案例一,其擴(kuò)展的各個(gè)物理端口之間不存在數(shù)據(jù)通路,完全獨(dú)立,當(dāng)擴(kuò)展網(wǎng)絡(luò)端口分別位于不同的物理網(wǎng)絡(luò)時(shí),位于一個(gè)網(wǎng)絡(luò)的端口不會(huì)對(duì)位于其他網(wǎng)絡(luò)的端口構(gòu)成任何影響,滿足不同網(wǎng)絡(luò)間完全隔離的安全要求。

      以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明技術(shù)原理的前提下,還可以做出若干改進(jìn)和變形,這些改進(jìn)和變形也應(yīng)視為本發(fā)明的保護(hù)范圍。

      當(dāng)前第1頁(yè)1 2 3 
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1