網(wǎng)卡初步認(rèn)識(shí)
網(wǎng)絡(luò)適配器又稱網(wǎng)卡或網(wǎng)絡(luò)接口卡(NIC),英文名Network Interface Card.它是使計(jì)算機(jī)聯(lián)網(wǎng)的設(shè)備.平常所說的網(wǎng)卡就是將PC機(jī)和LAN連接的網(wǎng)絡(luò)適配器.網(wǎng)卡(NIC) 插在計(jì)算機(jī)主板插槽中,負(fù)責(zé)將用戶要傳遞的數(shù)據(jù)轉(zhuǎn)換為網(wǎng)絡(luò)上其它設(shè)備能夠識(shí)別的格式,通過網(wǎng)絡(luò)介質(zhì)傳輸.數(shù)據(jù)在計(jì)算機(jī)總線中傳輸是并行方式即數(shù)據(jù)是肩并肩傳輸?shù)?而在網(wǎng)絡(luò)的物理纜線中說數(shù)據(jù)以串行的比特流方式傳輸?shù)?網(wǎng)卡承擔(dān)串行數(shù)據(jù)和并行數(shù)據(jù)間的轉(zhuǎn)換.網(wǎng)卡在發(fā)送數(shù)據(jù)前要同接收網(wǎng)卡進(jìn)行對話以確定最大可發(fā)送數(shù)據(jù)的大小,發(fā)送的數(shù)據(jù)量的大小,兩次發(fā)送數(shù)據(jù)間的間隔,等待確認(rèn)的時(shí)間,每個(gè)網(wǎng)卡在溢出前所能承受的最大數(shù)據(jù)量,數(shù)據(jù)傳輸?shù)乃俣?
它的主要技術(shù)參數(shù)為帶寬,總線方式,電氣接口方式等.它的基本功能為:從并行到串行的數(shù)據(jù)轉(zhuǎn)換,包的裝配和拆裝,網(wǎng)絡(luò)存取控制,數(shù)據(jù)緩存和網(wǎng)絡(luò)信號(hào).
網(wǎng)卡的主要工作原理:發(fā)送數(shù)據(jù)時(shí), 計(jì)算機(jī)把要傳輸?shù)臄?shù)據(jù)并行寫到網(wǎng)卡的緩存,網(wǎng)卡對要傳輸?shù)臄?shù)據(jù)進(jìn)編碼(10M以太網(wǎng)使用曼切斯特碼,100M 以太網(wǎng)使用差分曼切斯特碼), 串行發(fā)到傳輸介質(zhì)上.接收數(shù)據(jù)時(shí), 則相反.
1. 網(wǎng)卡的基本構(gòu)造
以最常見的PCI 接口的網(wǎng)卡為例,一塊網(wǎng)卡主要由 PCB 線路板,主芯片,數(shù)據(jù)汞,金手指(總線插槽接口) ,BOOTROM,EEPROM,晶振,RJ45接口,指示燈,固定片等等,以及一些二極管,電阻電容等組成.網(wǎng)卡包括硬件和固件程序(只讀存儲(chǔ)器中的軟件例程),該固件程序?qū)崿F(xiàn)邏輯鏈路控制和媒體訪問控制的功能,還記錄唯一的硬件地址即mac地址,網(wǎng)卡上一般有緩存.網(wǎng)卡須分配中斷irq及基本i/o端口地址,同時(shí)還須設(shè)置基本內(nèi)存地址(base memory address)和收發(fā)器(transceiver)
網(wǎng)卡的控制芯片:網(wǎng)卡中最重要元件,是網(wǎng)卡的控制中心,有如電腦的cpu,控制著整個(gè)網(wǎng)卡的工作,負(fù)責(zé)數(shù)據(jù)的傳送和連接時(shí)的信號(hào)偵測.早期的10/100Mbps的雙速網(wǎng)卡會(huì)采用兩個(gè)控制芯片(單元)分別用來控制兩個(gè)不同速率環(huán)境下的運(yùn)算,而目前較先進(jìn)的產(chǎn)品通常只有一個(gè)芯片控制兩種速度.
常見的 10/100/1000M bps自適應(yīng)網(wǎng)卡芯片有 Intel 的8254* 系列,Broadcom 的BCM57**系列,Marvell的88E8001/88E8053/88E806*系列,Realtek的RTL8169S-32/64,RTL8110S-32/64(LOM),RTL8169SB,RTL8110SB(LOM) ,RTL8168(PCI Express) ,RTL8111(LOM,PCI Express) 系列,VIA 的VT612*系列等等.
晶體震蕩器:負(fù)責(zé)產(chǎn)生網(wǎng)卡所有芯片的運(yùn)算時(shí)鐘,其原理就象主板上的晶體震蕩器一樣,通常網(wǎng)卡是使用20或25hz的晶體震蕩器.千兆網(wǎng)卡使用62.5MHz或者125MHz晶振.
boot rom插槽:如無特殊要求網(wǎng)卡中的這個(gè)插槽處在空置狀態(tài).一般是和boot rom芯片搭配使用,其主要作用是引導(dǎo)電腦通過服務(wù)器引導(dǎo)進(jìn)入操作系統(tǒng).boot rom就是啟動(dòng)芯片,讓電腦可以在不具備硬盤,軟驅(qū)和光驅(qū)的情況下,直接通過服務(wù)器開機(jī),成為一個(gè)無硬盤無軟驅(qū)的工作站.沒有軟驅(qū)就無法將資料輸出,這樣也可以達(dá)到資料保密的功能.同時(shí),還可以節(jié)省下購買這些電腦部件的費(fèi)用.在使用boot rom時(shí)要注意自己使用何種網(wǎng)絡(luò)操作系統(tǒng),通常有boot rom for nt,boot rom for unix,boot rom for netware等,boot rom啟動(dòng)芯片要自行購買.
eeprom:從前的老式網(wǎng)卡都要靠設(shè)置跳線或是dip開關(guān)來設(shè)定irq,dma和i/o port等值,而現(xiàn)在的網(wǎng)卡則都使用軟件設(shè)定,幾乎看不見跳線的存在.各種網(wǎng)卡的狀態(tài)和網(wǎng)卡的信息等數(shù)據(jù)都存在這顆小小的eeprom里,通過它來自動(dòng)設(shè)置.里面記錄了網(wǎng)卡芯片的供應(yīng)商ID,子系 統(tǒng)供應(yīng)商ID,網(wǎng)卡的MAC地址,網(wǎng)卡的一些配置,如SMI總線上PHY的地址,BOOTROM的容量, 是否啟用BOOTROM引導(dǎo)系統(tǒng)等東西
數(shù)據(jù)汞:這是消費(fèi)級(jí)PCI 網(wǎng)卡上都具備的設(shè)備,數(shù)據(jù)汞也被叫做網(wǎng)絡(luò)變壓器或可稱為網(wǎng)絡(luò)隔離變壓器.它在一塊網(wǎng)卡上所起的作用主要有兩個(gè),一是傳輸數(shù)據(jù),它把 PHY 送出來的差分信號(hào)用差模耦合的線圈耦合濾波以增強(qiáng)信號(hào),并且通過電磁場的轉(zhuǎn)換耦合到不同電平的連接網(wǎng)線的另外一端;一是隔離網(wǎng)線連接的不同網(wǎng)絡(luò)設(shè)備間的不同電平,以防止不同電壓通過網(wǎng)線傳輸損壞設(shè)備.除此而外,數(shù)據(jù)汞還能對設(shè)備起到一定的防雷保護(hù)作用.
rj-45和bnc接頭: rj-45是采用雙絞線作為傳輸媒介的一種網(wǎng)卡接口,在100mbps網(wǎng)中最常應(yīng)用.bnc是采用細(xì)同軸電纜作為傳輸媒介.
信號(hào)指示燈:在網(wǎng)卡后方會(huì)有二到三個(gè)不等的信號(hào)燈,其作用是顯示目前網(wǎng)絡(luò)的連線狀態(tài),通常具有tx和rx兩個(gè)信息.tx代表正在送出資料,rx代表正在接收資料,若看到兩個(gè)燈同時(shí)亮則代表目前是處于全雙工的運(yùn)作狀態(tài),也可由此來辨別全雙工的網(wǎng)卡是否處于全雙工的網(wǎng)絡(luò)環(huán)境中.也有部分低速網(wǎng)卡只用一個(gè)燈來表示信號(hào),通過不同的燈光變換來表示網(wǎng)絡(luò)是否導(dǎo)通.
WOL:有些網(wǎng)卡會(huì)有WOL的功能, WOL網(wǎng)絡(luò)開機(jī)的功能(wake on line).它可由另外一臺(tái)電腦,使用軟件制作特殊格式的信息包發(fā)送至一臺(tái)裝有具wol功能網(wǎng)卡的電腦,而該網(wǎng)卡接收到這些特殊格式的信息包后,就會(huì)命令電腦打開電源,目前已有越來越多的網(wǎng)卡支持網(wǎng)絡(luò)開機(jī)的功能.
2. 網(wǎng)卡的分類
以傳輸速率可分為:
10Mbps網(wǎng)卡,100Mbps網(wǎng)卡,1000Mbps網(wǎng)卡,10GMbps網(wǎng)卡.目前常見的三種架構(gòu)有10baset,100basetx與base2,前兩者是以rj-45雙絞線為傳輸媒介,傳輸速率分別為10Mbps和100Mbps.而雙絞線又分為category 1至category 5五種規(guī)格,分別有不同的用途以及頻寬,category通常簡稱cat,只要使用cat5規(guī)格的雙絞線皆可用于10/100mbps的網(wǎng)卡上.而10base2架構(gòu)則是使用細(xì)同軸電纜作為傳輸媒介,傳輸速率只有10Mbps.這里提到的10Mbps或100Mbps是指網(wǎng)卡上的最大傳送速率,而并不等于網(wǎng)絡(luò)上實(shí)際的傳送速度,實(shí)際速度要考慮到傳送的距離,線路的品質(zhì),和網(wǎng)絡(luò)上是否擁擠等因素,這里所談的bps指的是每秒傳送的bit(1個(gè)byte=8個(gè)bit).而100Mbps則稱為高速以太網(wǎng)卡(fast ethernet),多為PCI/PCI-E接口.當(dāng)前市面上的pci網(wǎng)卡多具有10/100/1000Mbps自動(dòng)切換的功能,會(huì)根據(jù)所在的網(wǎng)絡(luò)連線環(huán)境來自動(dòng)調(diào)節(jié)網(wǎng)絡(luò)速度.1000 Mbps以太網(wǎng)卡多用于交換機(jī)或交換機(jī)與服務(wù)器之間的高速鏈路或backbone.
以接口類型可分為:
ISA接口網(wǎng)卡,PCI/ PCI-X/ PCI-E接口網(wǎng)卡,USB接口網(wǎng)卡和筆記本電腦專用的PCMCIA接口.現(xiàn)在的ISA接口的網(wǎng)卡均采用16bit的總線寬度,其特性是采用programmed i/o的模式傳送資料,傳送數(shù)據(jù)時(shí)必須通過cpu在i/o上開出一個(gè)小窗口,作為網(wǎng)卡與pc之間的溝通管道,需要占用較高的cpu使用率,在傳送大量數(shù)據(jù)時(shí)效率較差. PCI接口的網(wǎng)卡則采用32bit的總線頻寬,采用bus master的數(shù)據(jù)傳送方式,傳送數(shù)據(jù)是由網(wǎng)卡上的控制芯片來控制,不必通過i/o端口和cpu,可大幅降低cpu的占用率,目前產(chǎn)品多為10/100Mbps雙速自動(dòng)偵測切換網(wǎng)卡.
以傳輸方式可分為:
半雙工網(wǎng)卡,全雙工網(wǎng)卡.半雙工網(wǎng)卡無法同一時(shí)間內(nèi)完成接收與傳送數(shù)據(jù)的動(dòng)作,如10base2使用細(xì)同軸電纜的網(wǎng)絡(luò)架構(gòu)就是半雙工網(wǎng)絡(luò),同一時(shí)間內(nèi)只能進(jìn)行傳送或接收數(shù)據(jù)的工作,效率較低.要使用全雙工的網(wǎng)絡(luò)就必須要使用雙絞線作為傳輸線才能達(dá)到,并且也要搭配使用全雙工的集線器,要使用10base或100basetx的網(wǎng)絡(luò)架構(gòu),網(wǎng)卡當(dāng)然也要是全雙工的產(chǎn)品.
以傳輸介質(zhì)可分為:
rj-45雙絞線的網(wǎng)卡與bnc的同軸電纜兩種,有的網(wǎng)卡同時(shí)具有兩種接頭,可適用于兩種網(wǎng)絡(luò)線,但無法兩個(gè)接頭同時(shí)使用.另外還有光纖接口的網(wǎng)卡,通常帶寬在1000 Mbps.
其它網(wǎng)卡:
從網(wǎng)絡(luò)傳輸?shù)奈锢砻浇樯线€有無線網(wǎng)卡,利用2.4GHz的無線電波來傳輸數(shù)據(jù).目前ieee有兩種規(guī)范802.11和802.11b,最高傳輸速率分別為2Mbps和11Mbps,接口有PCI,USB和PCMCIA幾種.
Mac與Phy組成原理的簡單分析
1.general
下圖是網(wǎng)口結(jié)構(gòu)簡圖.網(wǎng)口由CPU、MAC和PHY三部分組成.DMA控制器通常屬于CPU的一部分,用虛線放在這里是為了表示DMA控制器可能會(huì)參與到網(wǎng)口數(shù)據(jù)傳輸中.
對于上述的三部分,并不一定都是獨(dú)立的芯片,根據(jù)組合形式,可分為下列幾種類型:
CPU集成MAC與PHY;
CPU集成MAC,PHY采用獨(dú)立芯片;
CPU不集成MAC與PHY,MAC與PHY采用集成芯片;
本例中選用方案二做進(jìn)一步說明,因?yàn)镃PU總線接口很常見,通常都會(huì)做成可以像訪問內(nèi)存一樣去訪問,沒必要拿出來說,而Mac與PHY之間的MII接口則需要多做些說明.
下圖是采用方案二的網(wǎng)口結(jié)構(gòu)圖.虛框表示CPU,MAC集成在CPU中.PHY芯片通過MII接口與CPU上的Mac連接.
在軟件上對網(wǎng)口的操作通常分為下面幾步:
為數(shù)據(jù)收發(fā)分配內(nèi)存;
初始化MAC寄存器;
初始化PHY寄存器(通過MIIM);
啟動(dòng)收發(fā);
2.MII
MII接口是MAC與PHY連接的標(biāo)準(zhǔn)接口.因?yàn)楦鲝S家采用了同樣的接口,用戶可以根據(jù)所需的性能、價(jià)格,采用不同型號(hào),甚至不同公司的phy芯片.
需要發(fā)送的數(shù)據(jù)通過MII接口中的收發(fā)兩組總線實(shí)現(xiàn).而對PHY芯片寄存器的配置信息,則通過MII總的一組串口總線實(shí)現(xiàn),即MIIM(MII Management).
下表列出了MII總線中主要的一些引腳
PIN Name | Direction | Description |
TXD[0:3] | Mac to Phy | Transmit Data |
TXEN | Mac to Phy | Transmit Enable |
TXCLK | Mac to Phy | Transmit Clock |
RXD[0:3] | Phy to Mac | Receive Data |
RXEN | Phy to Mac | Receive Enable |
RXCLK | Phy to Mac | Receive Clock |
MDC | Mac to Phy | Management Data Clock |
MDIO | Bidirection | Management Data I/O |
MIIM只有兩個(gè)線, 時(shí)鐘信號(hào)MDC與數(shù)據(jù)線MDIO.讀寫命令均由Mac發(fā)起, PHY不能通過MIIM主動(dòng)向Mac發(fā)送信息.由于MIIM只能有Mac發(fā)起, 我們可以操作的也就只有MAC上的寄存器.
3.DMA
收發(fā)數(shù)據(jù)總是間費(fèi)時(shí)費(fèi)力的事,尤其對于網(wǎng)絡(luò)設(shè)備來說更是如此.CPU做這些事情顯然不合適.既然是數(shù)據(jù)搬移, 最簡單的辦法當(dāng)然是讓DMA來做.畢竟專業(yè)的才是最好的.
這樣CPU要做的事情就簡單了.只需要告訴DMA起始地址與長度, 剩下的事情就會(huì)自動(dòng)完成.
通常在MAC中會(huì)有一組寄存器專門用戶記錄數(shù)據(jù)地址, tbase與rbase, cpu按MAC要的格式把數(shù)據(jù)放好后, 啟動(dòng)MAC的數(shù)據(jù)發(fā)送就可以了.啟動(dòng)過程常會(huì)用到寄存器tstate.
4.MAC
CPU上有兩組寄存器用與MAC.一組用戶數(shù)據(jù)的收發(fā),對應(yīng)上面的DMA;一組用戶MIIM,用戶對PHY進(jìn)行配置.兩組寄存器由于都在CPU上,配置方式與其他CPU上寄存器一樣,直接讀寫即可.數(shù)據(jù)的轉(zhuǎn)發(fā)通過DMA完成.
5.PHY
該芯片是一個(gè)10M/100M Ethernet網(wǎng)口芯片
PHY芯片有一組寄存器用戶保存配置,并更新狀態(tài).CPU不能直接訪問這組寄存器,只能通過MAC上的MIIM寄存器組實(shí)現(xiàn)間接訪問.同時(shí)PHY芯片負(fù)責(zé)完成MII總線的數(shù)據(jù)與Media Interface上數(shù)據(jù)的轉(zhuǎn)發(fā).該轉(zhuǎn)發(fā)根據(jù)寄存器配置自動(dòng)完成,不需要外接干預(yù).
以太網(wǎng)芯片MAC和PHY的關(guān)系
問:如何實(shí)現(xiàn)單片以太網(wǎng)微控制器?
答:訣竅是將微控制器、以太網(wǎng)媒體接入控制器(MAC)和物理接口收發(fā)器(PHY)整合進(jìn)同一芯片,這樣能去掉許多外接元器件.這種方案可使MAC和PHY實(shí)現(xiàn)很好的匹配,同時(shí)還可減小引腳數(shù)、縮小芯片面積.單片以太網(wǎng)微控制器還降低了功耗,特別是在采用掉電模式的情況下.
問:以太網(wǎng)MAC是什么?
答:MAC即Media Access Control,即媒體訪問控制子層協(xié)議.該協(xié)議位于OSI七層協(xié)議中數(shù)據(jù)鏈路層的下半部分,主要負(fù)責(zé)控制與連接物理層的物理介質(zhì).在發(fā)送數(shù)據(jù)的時(shí)候,MAC協(xié)議可以事先判斷是否可以發(fā)送數(shù)據(jù),如果可以發(fā)送將給數(shù)據(jù)加上一些控制信息,最終將數(shù)據(jù)以及控制信息以規(guī)定的格式發(fā)送到物理層;在接收數(shù)據(jù)的時(shí)候,MAC協(xié)議首先判斷輸入的信息并是否發(fā)生傳輸錯(cuò)誤,如果沒有錯(cuò)誤,則去掉控制信息發(fā)送至LLC層.該層協(xié)議是以太網(wǎng)MAC由IEEE-802.3以太網(wǎng)標(biāo)準(zhǔn)定義.最新的MAC同時(shí)支持10Mbps和100Mbps兩種速率.
以太網(wǎng)數(shù)據(jù)鏈路層其實(shí)包含MAC(介質(zhì)訪問控制)子層和LLC(邏輯鏈路控制)子層.一塊以太網(wǎng)卡MAC芯片的作用不但要實(shí)現(xiàn)MAC子層和LLC子層的功能,還要提供符合規(guī)范的PCI界面以實(shí)現(xiàn)和主機(jī)的數(shù)據(jù)交換.
MAC從PCI總線收到IP數(shù)據(jù)包(或者其他網(wǎng)絡(luò)層協(xié)議的數(shù)據(jù)包)后,將之拆分并重新打包成最大1518Byte,最小64Byte的幀.這個(gè)幀里面包括了目標(biāo)MAC地址、自己的源MAC地址和數(shù)據(jù)包里面的協(xié)議類型(比如IP數(shù)據(jù)包的類型用80表示).最后還有一個(gè)DWORD(4Byte)的CRC碼.
可是目標(biāo)的MAC地址是哪里來的呢?這牽扯到一個(gè)ARP協(xié)議(介乎于網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層的一個(gè)協(xié)議).第一次傳送某個(gè)目的IP地址的數(shù)據(jù)的時(shí)候,先會(huì)發(fā)出一個(gè)ARP包,其MAC的目標(biāo)地址是廣播地址,里面說到:”誰是xxx.xxx.xxx.xxx這個(gè)IP地址的主人?”因?yàn)槭菑V播包,所有這個(gè)局域網(wǎng)的主機(jī)都收到了這個(gè)ARP請求.收到請求的主機(jī)將這個(gè)IP地址和自己的相比較,如果不相同就不予理會(huì),如果相同就發(fā)出ARP響應(yīng)包.這個(gè)IP地址的主機(jī)收到這個(gè)ARP請求包后回復(fù)的ARP響應(yīng)里說到:”我是這個(gè)IP地址的主人”.這個(gè)包里面就包括了他的MAC地址.以后的給這個(gè)IP地址的幀的目標(biāo)MAC地址就被確定了.(其它的協(xié)議如IPX/SPX也有相應(yīng)的協(xié)議完成這些操作.)
IP地址和MAC地址之間的關(guān)聯(lián)關(guān)系保存在主機(jī)系統(tǒng)里面,叫做ARP表,由驅(qū)動(dòng)程序和操作系統(tǒng)完成.在Microsoft的系統(tǒng)里面可以用arp-a的命令查看ARP表.收到數(shù)據(jù)幀的時(shí)候也是一樣,做完CRC以后,如果沒有CRC效驗(yàn)錯(cuò)誤,就把幀頭去掉,把數(shù)據(jù)包拿出來通過標(biāo)準(zhǔn)的借口傳遞給驅(qū)動(dòng)和上層的協(xié)議客棧,最終正確的達(dá)到我們的應(yīng)用程序.
還有一些控制幀,例如流控幀也需要MAC直接識(shí)別并執(zhí)行相應(yīng)的行為.
以太網(wǎng)MAC芯片的一端接計(jì)算機(jī)PCI總線,另外一端就接到PHY芯片上,它們之間是通過MII接口鏈接的.
問:什么是MII?
答:MII即媒體獨(dú)立接口,它是IEEE-802.3定義的以太網(wǎng)行業(yè)標(biāo)準(zhǔn)."媒體獨(dú)立"表明在不對MAC硬件重新設(shè)計(jì)或替換的情況下,任何類型的PHY設(shè)備都可以正常工作.它包括一個(gè)數(shù)據(jù)接口,以及一個(gè)MAC和PHY之間的管理接口.
數(shù)據(jù)接口包括分別用于發(fā)送器和接收器的兩條獨(dú)立信道.每條信道都有自己的數(shù)據(jù),時(shí)鐘和控制信號(hào).MII數(shù)據(jù)接口總共需要16個(gè)信號(hào),包括TX_ER,TXD<3:0>,TX_EN,TX_CLK, COL,RXD<3:0>,RX_EX,RX_CLK,CRS,RX_DV等.MII以4位半字節(jié)方式傳送數(shù)據(jù)雙向傳輸,時(shí)鐘速率25MHz.其工作速率可達(dá)100Mb/s;
MII管理接口是個(gè)雙信號(hào)接口,一個(gè)是時(shí)鐘信號(hào),另一個(gè)是數(shù)據(jù)信號(hào).通過管理接口,上層能監(jiān)視和控制PHY.其管理是使用SMI(Serial Management Interface)總線通過讀寫PHY的寄存器來完成的.PHY里面的部分寄存器是IEEE定義的,這樣PHY把自己的目前的狀態(tài)反映到寄存器里面,MAC通過SMI總線不斷的讀取PHY的狀態(tài)寄存器以得知目前PHY的狀態(tài),例如連接速度,雙工的能力等.當(dāng)然也可以通過SMI設(shè)置PHY的寄存器達(dá)到控制的目的,例如流控的打開關(guān)閉,自協(xié)商模式還是強(qiáng)制模式等.不論是物理連接的MII總線和SMI總線還是PHY的狀態(tài)寄存器和控制寄存器都是有IEEE的規(guī)范的,因此不同公司的MAC和PHY一樣可以協(xié)調(diào)工作.當(dāng)然為了配合不同公司的PHY的自己特有的一些功能,驅(qū)動(dòng)需要做相應(yīng)的修改.
MII支持10Mbps和100Mbps的操作,一個(gè)接口由14根線組成,它的支持還是比較靈活的,但是有一個(gè)缺點(diǎn)是因?yàn)樗粋€(gè)端口用的信號(hào)線太多,如果一個(gè)8端口的交換機(jī)要用到112根線,16端口就要用到224根線,到32端口的話就要用到448根線,一般按照這個(gè)接口做交換機(jī),是不太現(xiàn)實(shí)的,所以現(xiàn)代的交換機(jī)的制作都會(huì)用到其它的一些從MII簡化出來的標(biāo)準(zhǔn),比如RMII,SMII,GMII等.
RMII是簡化的MII接口,在數(shù)據(jù)的收發(fā)上它比MII接口少了一倍的信號(hào)線,所以它一般要求是50MHz的總線時(shí)鐘.RMII一般用在多端口的交換機(jī),它不是每個(gè)端口安排收,發(fā)兩個(gè)時(shí)鐘,而是所有的數(shù)據(jù)端口公用一個(gè)時(shí)鐘用于所有端口的收發(fā),這里就節(jié)省了不少的端口數(shù)目.RMII的一個(gè)端口要求7個(gè)數(shù)據(jù)線,比MII少了一倍,所以交換機(jī)能夠接入多一倍數(shù)據(jù)的端口.和MII一樣,RMII支持10Mbps和100Mbps的總線接口速度.
SMII是由思科提出的一種媒體接口,它有比RMII更少的信號(hào)線數(shù)目,S表示串行的意思.因?yàn)樗挥靡桓盘?hào)線傳送發(fā)送數(shù)據(jù),一根信號(hào)線傳輸接受數(shù)據(jù),所以為了滿足100Mbps的總線接口速度的需求,它的時(shí)鐘頻率就達(dá)到了125MHz,為什么用125MHz,是因?yàn)閿?shù)據(jù)線里面會(huì)傳送一些控制信息.SMII一個(gè)端口僅用4根信號(hào)線完成100Mbps的傳輸,比起RMII差不多又少了一倍的信號(hào)線.SMII在工業(yè)界的支持力度是很高的.同理,所有端口的數(shù)據(jù)收發(fā)都公用同一個(gè)外部的125MHz時(shí)鐘.
GMII是千兆網(wǎng)的MII接口,這個(gè)也有相應(yīng)的RGMII接口,表示簡化了的GMII接口.
MII總線
在IEEE802.3中規(guī)定的MII總線是一種用于將不同類型的PHY與相同網(wǎng)絡(luò)控制器(MAC)相連接的通用總線.網(wǎng)絡(luò)控制器可以用同樣的硬件接口與任何PHY .
GMII(Gigabit MII)
GMII采用8位接口數(shù)據(jù),工作時(shí)鐘125MHz,因此傳輸速率可達(dá)1000Mbps.同時(shí)兼容MII所規(guī)定的10/100 Mbps工作方式.
GMII接口數(shù)據(jù)結(jié)構(gòu)符合IEEE以太網(wǎng)標(biāo)準(zhǔn).該接口定義見IEEE 802.3-2000.
發(fā)送器:
GTXCLK——吉比特TX..信號(hào)的時(shí)鐘信號(hào)(125MHz)
TXCLK——10/100Mbps信號(hào)時(shí)鐘
TXD[7..0]——被發(fā)送數(shù)據(jù)
TXEN——發(fā)送器使能信號(hào)
TXER——發(fā)送器錯(cuò)誤(用于破壞一個(gè)數(shù)據(jù)包)
注:在千兆速率下,向PHY提供GTXCLK信號(hào),TXD,TXEN,TXER信號(hào)與此時(shí)鐘信號(hào)同步.否則,在10/100Mbps速率下,PHY提供TXCLK時(shí)鐘信號(hào),其它信號(hào)與此信號(hào)同步.其工作頻率為25MHz(100M網(wǎng)絡(luò))或2.5MHz(10M網(wǎng)絡(luò)).
接收器:
RXCLK——接收時(shí)鐘信號(hào)(從收到的數(shù)據(jù)中提取,因此與GTXCLK無關(guān)聯(lián))
RXD[7..0]——接收數(shù)據(jù)
RXDV——接收數(shù)據(jù)有效指示
RXER——接收數(shù)據(jù)出錯(cuò)指示
COL——沖突檢測(僅用于半雙工狀態(tài))
管理配置
MDC——配置接口時(shí)鐘
MDIO——配置接口I/O
管理配置接口控制PHY的特性.該接口有32個(gè)寄存器地址,每個(gè)地址16位.其中前16個(gè)已經(jīng)在"IEEE 802.3,2000-22.2.4 Management Functions"中規(guī)定了用途,其余的則由各器件自己指定.
RMII(Reduced Media Independant Interface)
簡化媒體獨(dú)立接口
是標(biāo)準(zhǔn)的以太網(wǎng)接口之一,比MII有更少的I/O傳輸.
RMII口是用兩根線來傳輸數(shù)據(jù)的,MII口是用4根線來傳輸數(shù)據(jù)的,GMII是用8根線來傳輸數(shù)據(jù)的.MII/RMII只是一種接口,對于10Mbps線速,MII的時(shí)鐘速率是2.5MHz就可以了,RMII則需要5MHz;對于100Mbps線速,MII需要的時(shí)鐘速率是25MHz,RMII則是50MHz.
MII/RMII用于傳輸以太網(wǎng)包,在MII/RMII接口是4/2bit的,在以太網(wǎng)的PHY里需要做串并轉(zhuǎn)換,編解碼等才能在雙絞線和光纖上進(jìn)行傳 輸,其幀格式遵循IEEE 802.3(10M)/IEEE 802.3u(100M)/IEEE 802.1q(VLAN).以太網(wǎng)幀的格式為:前導(dǎo)符+開始位+目的mac地址+源mac地址+類型/長度+數(shù)據(jù)+padding(optional)+32bitCRC
如果有vlan,則要在類型/長度后面加上2個(gè)字節(jié)的vlan tag,其中12bit來表示vlan id,另外4bit表示數(shù)據(jù)的優(yōu)先級(jí)!
問:以太網(wǎng)PHY是什么?
答:PHY是物理接口收發(fā)器,它實(shí)現(xiàn)物理層.IEEE-802.3標(biāo)準(zhǔn)定義了以太網(wǎng)PHY.包括MII/GMII(介質(zhì)獨(dú)立接口)子層,PCS(物理編碼子層),PMA(物理介質(zhì)附加)子層,PMD(物理介質(zhì)相關(guān))子層,MDI子層.它符合IEEE-802.3k中用于10BaseT(第14條)和100BaseTX(第24條和第25條)的規(guī)范.
PHY在發(fā)送數(shù)據(jù)的時(shí)候,收到MAC過來的數(shù)據(jù)(對PHY來說,沒有幀的概念,對它來說,都是數(shù)據(jù)而不管什么地址,數(shù)據(jù)還是CRC.對于100BaseTX因?yàn)槭褂?B/5B編碼,每4bit就增加1bit的檢錯(cuò)碼),然后把并行數(shù)據(jù)轉(zhuǎn)化為串行流數(shù)據(jù),再按照物理層的編碼規(guī)則把數(shù)據(jù)編碼,再變?yōu)?a href="http://www.delux-kingway.cn/analog/" target="_blank">模擬信號(hào)把數(shù)據(jù)送出去.收數(shù)據(jù)時(shí)的流程反之.PHY還有個(gè)重要的功能就是實(shí)現(xiàn)CSMA/CD的部分功能.它可以檢測到網(wǎng)絡(luò)上是否有數(shù)據(jù)在傳送,如果有數(shù)據(jù)在傳送中就等待,一旦檢測到網(wǎng)絡(luò)空閑,再等待一個(gè)隨機(jī)時(shí)間后將送數(shù)據(jù)出去.如果兩個(gè)碰巧同時(shí)送出了數(shù)據(jù),那樣必將造成沖突,這時(shí)候,沖突檢測機(jī)構(gòu)可以檢測到?jīng)_突,然后各等待一個(gè)隨機(jī)的時(shí)間重新發(fā)送數(shù)據(jù).這個(gè)隨機(jī)時(shí)間很有講究的,并不是一個(gè)常數(shù),在不同的時(shí)刻計(jì)算出來的隨機(jī)時(shí)間都是不同的,而且有多重算法來應(yīng)付出現(xiàn)概率很低的同兩臺(tái)主機(jī)之間的第二次沖突.
許多網(wǎng)友在接入Internt寬帶時(shí),喜歡使用”搶線”強(qiáng)的網(wǎng)卡,就是因?yàn)椴煌腜HY碰撞后計(jì)算隨機(jī)時(shí)間的方法設(shè)計(jì)上不同,使得有些網(wǎng)卡比較”占便宜”.不過,搶線只對廣播域的網(wǎng)絡(luò)而言的,對于交換網(wǎng)絡(luò)和ADSL這樣點(diǎn)到點(diǎn)連接到局端設(shè)備的接入方式?jīng)]什么意義.而且”搶線”也只是相對而言的,不會(huì)有質(zhì)的變化.
現(xiàn)在交換機(jī)的普及使得交換網(wǎng)絡(luò)的普及,使得沖突域網(wǎng)絡(luò)少了很多,極大地提高了網(wǎng)絡(luò)的帶寬.但是如果用HUB,或者共享帶寬接入Internet的時(shí)候還是屬于沖突域網(wǎng)絡(luò),有沖突碰撞的.交換機(jī)和HUB最大的區(qū)別就是:一個(gè)是構(gòu)建點(diǎn)到點(diǎn)網(wǎng)絡(luò)的局域網(wǎng)交換設(shè)備,一個(gè)是構(gòu)建沖突域網(wǎng)絡(luò)的局域網(wǎng)互連設(shè)備.
除此之外PHY還提供了和對端設(shè)備連接的重要功能并通過LED燈顯示出自己目前的連接的狀態(tài)和工作狀態(tài)讓我們知道.當(dāng)我們給網(wǎng)卡接入網(wǎng)線的時(shí)候,PHY不斷發(fā)出的脈沖信號(hào)檢測到對端有設(shè)備,它們通過標(biāo)準(zhǔn)的”語言”交流,互相協(xié)商并卻定連接速度、雙工模式、是否采用流控等.通常情況下,協(xié)商的結(jié)果是兩個(gè)設(shè)備中能同時(shí)支持的最大速度和最好的雙工模式.這個(gè)技術(shù)被稱為AutoNegotiation或者NWAY,它們是一個(gè)意思–自動(dòng)協(xié)商.
具體傳輸過程為,發(fā)送數(shù)據(jù)時(shí),網(wǎng)卡首先偵聽介質(zhì)上是否有載波(載波由電壓指示),如果有,則認(rèn)為其他站點(diǎn)正在傳送信息,繼續(xù)偵聽介質(zhì).一旦通信介質(zhì)在一定時(shí)間段內(nèi)(稱為幀間縫隙IFG=9.6微秒)是安靜的,即沒有被其他站點(diǎn)占用,則開始進(jìn)行幀數(shù)據(jù)發(fā)送,同時(shí)繼續(xù)偵聽通信介質(zhì),以檢測沖突.在發(fā)送數(shù)據(jù)期間,如果檢測到?jīng)_突,則立即停止該次發(fā)送,并向介質(zhì)發(fā)送一個(gè)“阻塞”信號(hào),告知其他站點(diǎn)已經(jīng)發(fā)生沖突,從而丟棄那些可能一直在接收的受到損壞的幀數(shù)據(jù),并等待一段隨機(jī)時(shí)間(CSMA/CD確定等待時(shí)間的算法是二進(jìn)制指數(shù)退避算法).在等待一段隨機(jī)時(shí)間后,再進(jìn)行新的發(fā)送.如果重傳多次后(大于16次)仍發(fā)生沖突,就放棄發(fā)送.接收時(shí),網(wǎng)卡瀏覽介質(zhì)上傳輸?shù)拿總€(gè)幀,如果其長度小于64字節(jié),則認(rèn)為是沖突碎片.如果接收到的幀不是沖突碎片且目的地址是本地地址,則對幀進(jìn)行完整性校驗(yàn),如果幀長度大于1518字節(jié)(稱為超長幀,可能由錯(cuò)誤的LAN驅(qū)動(dòng)程序或干擾造成)或未能通過CRC校驗(yàn),則認(rèn)為該幀發(fā)生了畸變.通過校驗(yàn)的幀被認(rèn)為是有效的,網(wǎng)卡將它接收下來進(jìn)行本地處理.
問:造成以太網(wǎng)MAC和PHY單片整合難度高的原因是什么?
答:PHY整合了大量模擬硬件,而MAC是典型的全數(shù)字器件.芯片面積及模擬/數(shù)字混合架構(gòu)是為什么先將MAC集成進(jìn)微控制器而將PHY留在片外的原因.更靈活、密度更高的芯片技術(shù)已經(jīng)可以實(shí)現(xiàn)MAC和PHY的單芯片整合.
問: 網(wǎng)卡上除RJ-45接口外,還需要其它元件嗎?
答:PHY和MAC是網(wǎng)卡的主要組成部分,網(wǎng)卡一般用RJ-45插口,10M網(wǎng)卡的RJ-45插口也只用了1,2,3,6四根針,而100M或1000M網(wǎng)卡的則是八根針都是全的.除此以外,還需要其它元件,因?yàn)殡m然PHY提供絕大多數(shù)模擬支持,但在一個(gè)典型實(shí)現(xiàn)中,仍需外接6,7只分立元件及一個(gè)局域網(wǎng)絕緣模塊.絕緣模塊一般采用一個(gè)1:1的變壓器.這些部件的主要功能是為了保護(hù)PHY免遭由于電氣失誤而引起的損壞.
另外,一顆CMOS制程的芯片工作的時(shí)候產(chǎn)生的信號(hào)電平總是大于0V的(這取決于芯片的制程和設(shè)計(jì)需求),但是這樣的信號(hào)送到100米甚至更長的地方會(huì)有很大的直流分量的損失.而且如果外部網(wǎng)線直接和芯片相連的話,電磁感應(yīng)(打雷)和靜電,很容易造成芯片的損壞.再就是設(shè)備接地方法不同,電網(wǎng)環(huán)境不同會(huì)導(dǎo)致雙方的0V電平不一致,這樣信號(hào)從A傳到B,由于A設(shè)備的0V電平和B點(diǎn)的0V電平不一樣,這樣會(huì)導(dǎo)致很大的電流從電勢高的設(shè)備流向電勢低的設(shè)備.
為了解決以上問題Transformer(隔離變壓器)這個(gè)器件就應(yīng)運(yùn)而生.它把PHY送出來的差分信號(hào)用差模耦合的線圈耦合濾波以增強(qiáng)信號(hào),并且通過電磁場的轉(zhuǎn)換耦合到連接網(wǎng)線的另外一端.這樣不但使網(wǎng)線和PHY之間沒有物理上的連接而換傳遞了信號(hào),隔斷了信號(hào)中的直流分量,還可以在不同0V電平的設(shè)備中傳送數(shù)據(jù).
隔離變壓器本身就是設(shè)計(jì)為耐2KV~3KV的電壓的.也起到了防雷感應(yīng)(我個(gè)人認(rèn)為這里用防雷擊不合適)保護(hù)的作用.有些朋友的網(wǎng)絡(luò)設(shè)備在雷雨天氣時(shí)容易被燒壞,大都是PCB設(shè)計(jì)不合理造成的,而且大都燒毀了設(shè)備的接口,很少有芯片被燒毀的,就是隔離變壓器起到了保護(hù)作用.
隔離變壓器本身是個(gè)被動(dòng)元件,只是把PHY的信號(hào)耦合了到網(wǎng)線上,并沒有起到功率放大的作用.那么一張網(wǎng)卡信號(hào)的傳輸?shù)淖铋L距離是誰決定的呢?
一張網(wǎng)卡的傳輸最大距離和與對端設(shè)備連接的兼容性主要是PHY決定的.但是可以將信號(hào)送的超過100米的PHY其輸出的功率也比較大,更容易產(chǎn)生EMI的問題.這時(shí)候就需要合適的Transformer與之配合.作PHY的老大公司Marvell的PHY,常常可以傳送180~200米的距離,遠(yuǎn)遠(yuǎn)超過IEEE的100米的標(biāo)準(zhǔn).
RJ-45的接頭實(shí)現(xiàn)了網(wǎng)卡和網(wǎng)線的連接.它里面有8個(gè)銅片可以和網(wǎng)線中的4對雙絞(8根)線對應(yīng)連接.其中100M的網(wǎng)絡(luò)中1,2是傳送數(shù)據(jù)的,3,6是接收數(shù)據(jù)的.1,2之間是一對差分信號(hào),也就是說它們的波形一樣,但是相位相差180度,同一時(shí)刻的電壓幅度互為正負(fù).這樣的信號(hào)可以傳遞的更遠(yuǎn),抗干擾能力強(qiáng).同樣的,3,6也一樣是差分信號(hào).
網(wǎng)線中的8根線,每兩根扭在一起成為一對.我們制作網(wǎng)線的時(shí)候,一定要注意要讓1,2在其中的一對,3,6在一對.否則長距離情況下使用這根網(wǎng)線的時(shí)候會(huì)導(dǎo)致無法連接或連接很不穩(wěn)定.
現(xiàn)在新的PHY支持AUTO MDI-X功能(也需要Transformer支持).它可以實(shí)現(xiàn)RJ-45接口的1,2上的傳送信號(hào)線和3,6上的接收信號(hào)線的功能自動(dòng)互相交換.有的PHY甚至支持一對線中的正信號(hào)和負(fù)信號(hào)的功能自動(dòng)交換.這樣我們就不必為了到底連接某個(gè)設(shè)備需要使用直通網(wǎng)線還是交叉網(wǎng)線而費(fèi)心了.這項(xiàng)技術(shù)已經(jīng)被廣泛的應(yīng)用在交換機(jī)和SOHO路由器上.
在1000Basd-T網(wǎng)絡(luò)中,其中最普遍的一種傳輸方式是使用網(wǎng)線中所有的4對雙絞線,其中增加了4,5和7,8來共同傳送接收數(shù)據(jù).由于1000Based-T網(wǎng)絡(luò)的規(guī)范包含了AUTOMDI-X功能,因此不能嚴(yán)格確定它們的傳出或接收的關(guān)系,要看雙方的具體的協(xié)商結(jié)果.
一片網(wǎng)卡主要功能的實(shí)現(xiàn)就基本上是上面這些器件了.
其他的,還有一顆EEPROM芯片,通常是一顆93C46.里面記錄了網(wǎng)卡芯片的供應(yīng)商ID,子系統(tǒng)供應(yīng)商ID,網(wǎng)卡的MAC地址,網(wǎng)卡的一些配置,如SMI總線上PHY的地址,BOOTROM的容量,是否啟用BOOTROM引導(dǎo)系統(tǒng)等東西.
很多網(wǎng)卡上還有BOOTROM這個(gè)東西.它是用于無盤工作站引導(dǎo)操作系統(tǒng)的.既然無盤,一些引導(dǎo)用必需用到的程序和協(xié)議棧就放到里面了,例如RPL,PXE等.實(shí)際上它就是一個(gè)標(biāo)準(zhǔn)的PCI ROM.所以才會(huì)有一些硬盤寫保護(hù)卡可以通過燒寫網(wǎng)卡的BootRom來實(shí)現(xiàn).其實(shí)PCI設(shè)備的ROM是可以放到主板BIOS里面的.啟動(dòng)電腦的時(shí)候一樣可以檢測到這個(gè)ROM并且正確識(shí)別它是什么設(shè)備的.AGP在配置上和PCI很多地方一樣,所以很多顯卡的BIOS也可以放到主板BIOS里面.這就是為什么板載的網(wǎng)卡我們從來沒有看到過BOOTROM的原因.
最后就是電源部分了.大多數(shù)網(wǎng)卡現(xiàn)在都使用3.3V或更低的電壓.有的是雙電壓的.因此需要電源轉(zhuǎn)換電路.
而且網(wǎng)卡為了實(shí)現(xiàn)Wake on line功能,必須保證全部的PHY和MAC的極少一部分始終處于有電的狀態(tài),這需要把主板上的5V Standby電壓轉(zhuǎn)換為PHY工作電壓的電路.在主機(jī)開機(jī)后,PHY的工作電壓應(yīng)該被從5V轉(zhuǎn)出來的電壓替代以節(jié)省5V Standby的消耗.(許多劣質(zhì)網(wǎng)卡沒有這么做).
有Wake on line功能的網(wǎng)卡一般還有一個(gè)WOL的接口.那是因?yàn)镻CI2.1以前沒有PCI設(shè)備喚醒主機(jī)的功能,所以需要著一根線通過主板上的WOL的接口連到南橋里面以實(shí)現(xiàn)WOL的功能.新的主板合網(wǎng)卡一般支持PCI2.2/2.3,擴(kuò)展了PME#信號(hào)功能,不需要那個(gè)接口而通過PCI總線就可以實(shí)現(xiàn)喚醒功能.
我們現(xiàn)在來看兩個(gè)圖
MAC和PHY分開的以太網(wǎng)卡
MAC和PHY集成在一顆芯片的以太網(wǎng)卡
上圖中各部件為:
①RJ-45接口
②Transformer(隔離變壓器)
③PHY芯片
④MAC芯片
⑤EEPROM
⑥BOOTROM插槽
⑦WOL接頭
⑧晶振
⑨電壓轉(zhuǎn)換芯片
網(wǎng)卡的功能主要有兩個(gè):一是將電腦的數(shù)據(jù)封裝為幀,并通過網(wǎng)線(對無線網(wǎng)絡(luò)來說就是電磁波)將數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)上去;二是接收網(wǎng)絡(luò)上其它設(shè)備傳過來的幀,并將幀重新組合成數(shù)據(jù),發(fā)送到所在的電腦中.網(wǎng)卡能接收所有在網(wǎng)絡(luò)上傳輸?shù)男盘?hào),但正常情況下只接受發(fā)送到該電腦的幀和廣播幀,將其余的幀丟棄.然后,傳送到系統(tǒng)CPU做進(jìn)一步處理.當(dāng)電腦發(fā)送數(shù)據(jù)時(shí),網(wǎng)卡等待合適的時(shí)間將分組插入到數(shù)據(jù)流中.接收系統(tǒng)通知電腦消息是否完整地到達(dá),如果出現(xiàn)問題,將要求對方重新發(fā)送.
問:10BaseT和100BaseTX PHY實(shí)現(xiàn)方式不同的原因何在?
答:兩種實(shí)現(xiàn)的分組描述本質(zhì)上是一樣的,但兩者的信令機(jī)制完全不同.其目的是阻止一種硬件實(shí)現(xiàn)容易地處理兩種速度.10BaseT采用曼徹斯特編碼,100BaseTX采用4B/5B編碼.
問:什么是曼徹斯特編碼?
答:曼徹斯特編碼又稱曼徹斯特相位編碼,它通過相位變化來實(shí)現(xiàn)每個(gè)位(圖2).通常,用一個(gè)時(shí)鐘周期中部的上升沿表示“1”,下降沿表示“0”.周期末端的相位變化可忽略不計(jì),但有時(shí)又可能需要將這種相位變化計(jì)算在內(nèi),這取決于前一位的值.
問:什么是4B/5B編碼?
答:4B/5B編碼是一種塊編碼方式.它將一個(gè)4位的塊編碼成一個(gè)5位的塊.這就使5位塊內(nèi)永遠(yuǎn)至少包含2個(gè)“1”轉(zhuǎn)換,所以在一個(gè)5位塊內(nèi)總能進(jìn)行時(shí)鐘同步.該方法需要25%的額外開銷.
問:網(wǎng)卡的MAC和PHY間的關(guān)系?
答:網(wǎng)卡工作在osi的最后兩層,物理層和數(shù)據(jù)鏈路層,物理層定義了數(shù)據(jù)傳送與接收所需要的電與光信號(hào)、線路狀態(tài)、時(shí)鐘基準(zhǔn)、數(shù)據(jù)編碼和電路等,并向數(shù)據(jù)鏈路層設(shè)備提供標(biāo)準(zhǔn)接口.物理層的芯片稱之為PHY.數(shù)據(jù)鏈路層則提供尋址機(jī)構(gòu)、數(shù)據(jù)幀的構(gòu)建、數(shù)據(jù)差錯(cuò)檢查、傳送控制、向網(wǎng)絡(luò)層提供標(biāo)準(zhǔn)的數(shù)據(jù)接口等功能.以太網(wǎng)卡中數(shù)據(jù)鏈路層的芯片稱之為MAC控制器.很多網(wǎng)卡的這兩個(gè)部分是做到一起的.他們之間的關(guān)系是pci總線接mac總線,mac接phy,phy接網(wǎng)線(當(dāng)然也不是直接接上的,還有一個(gè)變壓裝置).
PHY和MAC之間是如何傳送數(shù)據(jù)和相互溝通的.通過IEEE定義的標(biāo)準(zhǔn)的MII/GigaMII(Media Independed Interfade,介質(zhì)獨(dú)立界面)界面連接MAC和PHY.這個(gè)界面是IEEE定義的.MII界面?zhèn)鬟f了網(wǎng)絡(luò)的所有數(shù)據(jù)和數(shù)據(jù)的控制.ETHERNET的接口實(shí)質(zhì)是MAC通過MII總線控制PHY的過程.
問:網(wǎng)線上傳輸?shù)氖悄M信號(hào)還是數(shù)字信號(hào)?
答:是模擬信號(hào).因?yàn)樗鼈鞒龊徒邮帐遣捎玫哪M的技術(shù).雖然它傳送的信息是數(shù)字的(并不是傳送的信息是數(shù)字的信號(hào)就可以叫做數(shù)字信號(hào)).
簡單的例子:我們知道電話是模擬信號(hào),但是當(dāng)我們撥號(hào)上網(wǎng)的時(shí)候,電話線里傳送的是數(shù)字信息,但信號(hào)本身依舊是模擬的.然而ADSL同樣是通過電話線傳送的,卻是數(shù)字信號(hào).這取決于它傳出和接受采用的技術(shù).
問:若操作系統(tǒng)沒有加載網(wǎng)卡驅(qū)動(dòng),網(wǎng)卡雖然在系統(tǒng)設(shè)備樹上,但網(wǎng)卡接口創(chuàng)建不了,那網(wǎng)卡實(shí)際能不能接收到數(shù)據(jù)?
答:這里面有很多細(xì)節(jié), 我根據(jù)Intel網(wǎng)卡的Spec大概寫了寫, 想盡量寫的通俗一些,所以沒有刻意用Spec里的術(shù)語,另外本文雖然講的是MAC/PHY,但光口卡的(SERDES)也是類似的.
PCI設(shè)備做reset以后進(jìn)入D0uninitialized(非初始化的D0狀態(tài), 參考PCI電源管理規(guī)范),此時(shí)網(wǎng)卡的MAC和DMA都不工作,PHY是工作在一個(gè)特殊的低電源狀態(tài)的;
操作系統(tǒng)創(chuàng)建設(shè)備樹時(shí),初始化這個(gè)設(shè)備,PCI命令寄存器的 Memory Access Enable or the I/O Access Enable bit會(huì)被enable, 這就是D0active.此時(shí)PHY/MAC就使能了;
PHY被使能應(yīng)該就可以接收物理鏈路上的數(shù)據(jù)了,否則不能收到FLP/NLP, PHY就不能建立物理連接.但這類包一般是流量間歇發(fā)送的;
驅(qū)動(dòng)程序一般要通過寄存器來控制PHY, 比如自動(dòng)協(xié)商speed/duplex, 查詢物理鏈路的狀態(tài)Link up/down;
MAC被使能后, 如果沒有驅(qū)動(dòng)設(shè)置控制寄存器的一個(gè)位(CTRL.SLU)的話, MAC和PHY是不能通訊的, 就是說MAC不知道PHY的link已經(jīng)ready, 所以收不到任何數(shù)據(jù)的.這位設(shè)置以后, PHY完成自協(xié)商, 網(wǎng)卡才會(huì)有個(gè)Link change的中斷,知道物理連接已經(jīng)Link UP了;
即使Link已經(jīng)UP, MAC還需要enable接收器的一個(gè)位(RCTL.RXEN),包才可以被接收進(jìn)來,如果網(wǎng)卡被reset,這位是0,意味著所有的包都會(huì)被直接drop掉,不會(huì)存入網(wǎng)卡的 FIFO.老網(wǎng)卡在驅(qū)動(dòng)退出前利用這位關(guān)掉接收.Intel的最新千兆網(wǎng)卡發(fā)送接收隊(duì)列的動(dòng)態(tài)配置就是依靠這個(gè)位的,重新配置的過程一定要關(guān)掉流量;
無論驅(qū)動(dòng)加載與否, 發(fā)生reset后,網(wǎng)卡EEPOM里的mac地址會(huì)寫入網(wǎng)卡的MAC地址過濾寄存器, 驅(qū)動(dòng)可以去修改這個(gè)寄存器,現(xiàn)代網(wǎng)卡通常支持很多MAC地址,也就是說,MAC地址是可以被軟件設(shè)置的.例如,Intel的千兆網(wǎng)卡就支持16個(gè)單播 MAC地址,但只有1個(gè)是存在EEPROM里的,其它是軟件聲稱和設(shè)置的;
但如果驅(qū)動(dòng)沒有加載,網(wǎng)卡已經(jīng)在設(shè)備樹上,操作系統(tǒng)完成了步驟1-2的初始化,此時(shí)網(wǎng)卡的PHY應(yīng)該是工作的,但因?yàn)闆]有人設(shè)置控制位(CTRL.SLU)來讓MAC和PHY建立聯(lián)系,所以MAC是不收包的.這個(gè)控制位在reset時(shí)會(huì)再設(shè)置成0;
PHY可以被軟件設(shè)置加電和斷電, 斷電狀態(tài)除了接收管理命令以外,不會(huì)接收數(shù)據(jù).另外,PHY還能工作在Smart Power Down模式下,link down就進(jìn)入省電狀態(tài);
有些多口網(wǎng)卡,多個(gè)網(wǎng)口共享一個(gè)PHY, 所以BIOS里設(shè)置disbale了某個(gè)網(wǎng)口, 也未必會(huì)把PHY的電源關(guān)掉,反過來,也要小心地關(guān)掉PHY的電源;
-
以太網(wǎng)
+關(guān)注
關(guān)注
40文章
5465瀏覽量
172844 -
寄存器
+關(guān)注
關(guān)注
31文章
5372瀏覽量
121308 -
發(fā)送器
+關(guān)注
關(guān)注
1文章
259瀏覽量
26906
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
汽車以太網(wǎng)會(huì)面臨哪些物理挑戰(zhàn)?
一文詳解車載以太網(wǎng)
![一文<b class='flag-5'>詳解</b>車載<b class='flag-5'>以太網(wǎng)</b>](https://file1.elecfans.com/web2/M00/8F/A3/wKgaomTQsqaAEeuOAAS_U_PRkK4009.jpg)
![](https://file1.elecfans.com/web2/M00/87/CE/wKgZomRmmJKAMY4CAAE0p4TnPcM006.png)
汽車以太網(wǎng)標(biāo)準(zhǔn)有什么意義?
車載以太網(wǎng)在未來汽車的應(yīng)用
汽車以太網(wǎng)將面臨哪些挑戰(zhàn)
以太網(wǎng)簡介
汽車以太網(wǎng)與工業(yè)以太網(wǎng)物理層對比
![<b class='flag-5'>汽車</b><b class='flag-5'>以太網(wǎng)</b>與工業(yè)<b class='flag-5'>以太網(wǎng)</b>物理層對比](https://file.elecfans.com/web1/M00/8B/4D/o4YBAFyUmIuAMGlDAAANcEFEvJQ652.jpg)
評(píng)論