高金輝, 汪再興, 鄭麗君, 劉曉忠
(蘭州交通大學(xué) 電子與信息工程學(xué)院, 蘭州 730070)
光通信技術(shù)因具有穩(wěn)定性強(qiáng)與速度快等特點(diǎn)被廣泛應(yīng)用于各領(lǐng)域之中,且以太網(wǎng)也將光傳輸作為重要發(fā)展方向之一[1-2].100 Mbit/s光以太網(wǎng)作為我國(guó)覆蓋最廣的線路之一,研究其PHY層(physical layer,物理層)的設(shè)計(jì)規(guī)則及實(shí)現(xiàn)方式,能為進(jìn)一步升級(jí)以太網(wǎng)傳輸速度提供技術(shù)保障[3].而對(duì)物理層的深入研究,了解其傳輸數(shù)據(jù)的速度、位寬與頻率等條件,可為接口處協(xié)議設(shè)計(jì)提供便利,進(jìn)一步提高傳輸效率,以此獲得更優(yōu)的用戶(hù)體驗(yàn)[4-6].以太網(wǎng)標(biāo)準(zhǔn)IEEE802.3規(guī)范由IEEE組織制定,其不僅為設(shè)計(jì)生產(chǎn)PHY芯片提供了規(guī)范,還便于研究者利用統(tǒng)一的標(biāo)準(zhǔn)進(jìn)行產(chǎn)品開(kāi)發(fā)[7].
100BASE-FX(100 Mbit/s光纖基帶以太網(wǎng))從20世紀(jì)90年代開(kāi)始被廣泛應(yīng)用,近年來(lái)我國(guó)也大量展開(kāi)100 Mbit/s光以太網(wǎng)的研究.任靖曄[8]提出了一種基于FPGA芯片的100 Mbit/s、1 000 Mbit/s以太網(wǎng)自適應(yīng)技術(shù).2021年,馮梓軒等[9]研究了乘用車(chē)千兆以太網(wǎng)物理層技術(shù).PHY層作為以太網(wǎng)面向用戶(hù)的第一層,對(duì)其進(jìn)行研究是探究以太網(wǎng)傳輸規(guī)則及開(kāi)發(fā)終端設(shè)備的首要任務(wù).
100BASE-FX以太網(wǎng)的PHY層可支持全雙工以太網(wǎng)MAC(media access control,控制器)層,且提供并行4B/5B編碼、NRZI(no return zero-inverse,不歸零反相)編碼、數(shù)據(jù)的糾錯(cuò)及等待功能.上一代10BASE-TX(10 Mbit/s光纖基帶以太網(wǎng))的PHY層使用了曼徹斯特編碼模塊,無(wú)并行編碼模塊,數(shù)據(jù)串行輸出.100BASE-FX相較于上一代10BASE-TX串行的編碼方式提供了更高的傳輸效率,在同一時(shí)鐘頻率下,并行編碼可提供數(shù)倍于串行編碼的數(shù)據(jù)傳輸速度.
本文主要聚焦于PHY層的PCS、PMA子層,完成收發(fā)器的設(shè)計(jì)仿真.本設(shè)計(jì)自上而下設(shè)計(jì)PHY的頂層功能,設(shè)計(jì)PCS、PMA兩個(gè)子層的功能模塊.實(shí)現(xiàn)方式則是由下至上,實(shí)現(xiàn)4B/5B和NRZI編碼與解碼、串并轉(zhuǎn)換與并串轉(zhuǎn)換等底層模塊后,通過(guò)時(shí)鐘匹配與握手協(xié)議將各模塊相連接,實(shí)現(xiàn)PCS、PMA兩個(gè)子層的功能,完成整體設(shè)計(jì).
PHY層位于OSI(open system interconnection,開(kāi)放系統(tǒng)互連模型)七層協(xié)議中數(shù)據(jù)鏈路層的第一層,其負(fù)責(zé)聯(lián)通MAC層與終端,保證二者間的數(shù)據(jù)轉(zhuǎn)換可正常進(jìn)行,且規(guī)范物理介質(zhì)參數(shù)并支持100 Mbit/s的數(shù)據(jù)率[10].PHY層結(jié)構(gòu)示意圖如圖1所示.PCS子層與PMA子層共同實(shí)現(xiàn)數(shù)據(jù)的收發(fā),其中PCS子層在接收鏈路中將4B/5B解碼后的數(shù)據(jù)送向MAC層,且在發(fā)送鏈路中將MAC層接收的數(shù)據(jù)進(jìn)行4B/5B編碼;而在鏈路監(jiān)聽(tīng)功能中,其負(fù)責(zé)產(chǎn)生載波狀態(tài)信號(hào)并將該信號(hào)送向MAC層[11].PMA層則在接收鏈路中將從終端接收的數(shù)據(jù)進(jìn)行NRZI解碼;在發(fā)送鏈路中,將數(shù)據(jù)完成NRZI編碼后再送向MAC層[12].
圖1 PHY層結(jié)構(gòu)示意圖
PCS子層負(fù)責(zé)PHY層與MAC層的數(shù)據(jù)交換及鏈路的監(jiān)控,主要提供4B/5B編碼功能[13].服務(wù)接口為100 Mbit/s MII(medium independent interface,獨(dú)立介質(zhì)接口),所以要求PCS子層的傳輸上限至少為100 Mbit/s.
4B/5B編碼方式由IEEE 802.3協(xié)議定義,具有效率高、易實(shí)現(xiàn)等優(yōu)點(diǎn).在連續(xù)傳送時(shí),傳輸過(guò)程中任何一對(duì)5 bit代碼連續(xù)的0最多僅有3個(gè),較好地解決了數(shù)據(jù)中出現(xiàn)連續(xù)0的問(wèn)題,并有助于降低傳輸錯(cuò)誤率,方便從數(shù)據(jù)中恢復(fù)時(shí)鐘.
PMA子層負(fù)責(zé)與PCS層、PMA層進(jìn)行數(shù)據(jù)交流和生成使能信號(hào),提供NRZI編碼功能.由于PCS層輸出速度與接收不同,所以需在PMA層重新匹配時(shí)鐘.例如,PCS層使用25 MHz時(shí)鐘,則PMA層的時(shí)鐘頻率需達(dá)到125 MHz.NRZI的編碼規(guī)則為當(dāng)前信號(hào)跳變?yōu)?,輸出為1[14].此種方法將信號(hào)與時(shí)鐘相結(jié)合,解決了數(shù)據(jù)中因連續(xù)出現(xiàn)1而導(dǎo)致的容易出錯(cuò)及時(shí)鐘無(wú)法恢復(fù)的問(wèn)題.此外NRZI編碼方式還節(jié)約了帶寬,提高了傳輸效率.
PHY頂層設(shè)計(jì)如圖2所示.其中,PCS子層受link_status(鏈路狀態(tài)信號(hào))控制,負(fù)責(zé)對(duì)txd(PCS發(fā)送數(shù)據(jù))進(jìn)行4B/5B編碼和并串轉(zhuǎn)換,或?qū)x_code_bit(串行接收數(shù)據(jù))進(jìn)行串并轉(zhuǎn)換后4B/5B解碼.PMA子層負(fù)責(zé)提供使能信號(hào)以及NRZI編解碼功能.
圖2 PHY頂層模塊設(shè)計(jì)
PHY頂層通過(guò)聯(lián)通所有的子層模塊從而完成整體設(shè)計(jì),但需考慮兩點(diǎn):
1) 各模塊的信號(hào)聯(lián)通.將各模塊相對(duì)應(yīng)的輸入輸出信號(hào)連接,以保證邏輯正確,實(shí)現(xiàn)發(fā)送、接收鏈路及鏈路反饋等功能.例如,PMA子層LINK MONITOR(鏈路監(jiān)控模塊)所產(chǎn)生的鏈路狀態(tài)控制信號(hào)需分別提供給PCS子層的TRANSMIT(發(fā)送模塊)與RECEIVE(接收模塊),進(jìn)而控制接收與發(fā)送鏈路的工作進(jìn)程.
2) 提供時(shí)鐘.考慮到不同模塊的時(shí)鐘匹配,根據(jù)不同模塊的需求,提供對(duì)應(yīng)的時(shí)鐘頻率.例如,TRANSMIT與RECEIVE模塊所需的時(shí)鐘頻率為25 MHz,方能達(dá)到要求的傳輸速率.而TRANSMIT BITS(串行發(fā)送模塊)與RECEIVE BITS(串行接收模塊)模塊為了與其匹配,則需要提供頻率為125 MHz的時(shí)鐘.
PCS子層模塊結(jié)構(gòu)如圖3所示,共設(shè)計(jì)了5個(gè)模塊,分別是:TRANSMIT、TRANSMIT BITS、RECEIVE、RECEIVE BITS和CARRIER SENSE(載波監(jiān)聽(tīng)模塊).
圖3 PCS層模塊圖
其中,CARRIER SENSE負(fù)責(zé)產(chǎn)生CRS(載波狀態(tài)信號(hào))并送向MAC層.此外,當(dāng)該模塊在檢測(cè)到發(fā)送鏈路與接收鏈路均處于工作狀態(tài)或任意一個(gè)在工作狀態(tài)時(shí),會(huì)判斷CRS有效并向MAC層發(fā)送;而當(dāng)兩鏈路均未工作時(shí),則將CRS信號(hào)視為無(wú)效.
RECEIVE負(fù)責(zé)將來(lái)自于RECEIVE BITS模塊的rx_bit(并行接收數(shù)據(jù))解碼成rxd(PCS接收數(shù)據(jù)),并生成用于鏈路監(jiān)控的標(biāo)志信號(hào),收發(fā)速度可達(dá)100 Mbit/s.該模塊在檢測(cè)到link_status信號(hào)有效后開(kāi)始工作,當(dāng)識(shí)別出數(shù)據(jù)流中的SSD(start stream data,啟動(dòng)流數(shù)據(jù)),則開(kāi)始4B/5B解碼工作.之后可能存在4種工作狀態(tài):若在SSD后為DATA(有效碼型),則正常解碼,并將解碼后的4位寬數(shù)據(jù)送向MAC層;若檢測(cè)到ESD(end stream data,終止流數(shù)據(jù)),則解碼結(jié)束,輸出IDLE(空閑碼型)占位并回到空閑狀態(tài);若連續(xù)檢測(cè)到5個(gè)高電平,即空閑碼型,則解碼過(guò)早結(jié)束,此時(shí)將rx_er(接收錯(cuò)誤信號(hào))設(shè)置為有效,結(jié)束解碼并回到空閑狀態(tài);而若解碼行為開(kāi)始后所讀取的數(shù)據(jù)并非上述任意一種信號(hào),則數(shù)據(jù)錯(cuò)誤,將rx_er設(shè)置為有效,之后回到數(shù)據(jù)檢測(cè),并識(shí)別下一組數(shù)據(jù).
RECEIVE BITS負(fù)責(zé)將來(lái)自于PMA層的串行rx_code_bit轉(zhuǎn)換為并行的rx_bit.為了與RECEIVE模塊接收速度匹配,RECEIVE BITS模塊數(shù)據(jù)接收頻率5倍于發(fā)送頻率.RECEIVE BITS模塊在檢測(cè)到rx_code_bit信號(hào)中的SSD指令后,開(kāi)始工作,將SSD指令后的有效數(shù)據(jù)進(jìn)行串并轉(zhuǎn)換.當(dāng)識(shí)別出rx_code_bit信號(hào)中的ESD指令時(shí),發(fā)送指令,轉(zhuǎn)為檢查SSD狀態(tài).
TRANSMIT負(fù)責(zé)將來(lái)自于MAC層的txd進(jìn)行4B/5B編碼,生成標(biāo)志信號(hào),并控制col(鏈路沖突信號(hào))的產(chǎn)生,收發(fā)速度可達(dá)100 Mbit/s.空閑時(shí)會(huì)持續(xù)發(fā)送IDLE數(shù)據(jù),當(dāng)tx_en(發(fā)送使能信號(hào))有效后,開(kāi)始4B/5B編碼工作.之后可能有3種工作狀態(tài):若接收SSD的同時(shí),tx_er(發(fā)送錯(cuò)誤信號(hào))有效,則進(jìn)入錯(cuò)誤翻譯路徑,正常發(fā)送兩個(gè)SSD信號(hào)后發(fā)送HALT(數(shù)據(jù)錯(cuò)誤碼型),等待tx_er無(wú)效,此時(shí)col信號(hào)取決于接收鏈路;若tx_er無(wú)效且接收到有效數(shù)據(jù),則正常編碼,此時(shí)col信號(hào)同樣取決于接收鏈路;若檢測(cè)到ESD指令,則解碼結(jié)束,輸出兩個(gè)ESD指令后,回到空閑模塊等待,此時(shí)col信號(hào)無(wú)效.
TRANSMIT BITS負(fù)責(zé)將已經(jīng)4B/5B轉(zhuǎn)碼后的并行tx_bit(并行發(fā)送數(shù)據(jù))轉(zhuǎn)換為串行tx_code_bit(串行發(fā)送數(shù)據(jù)).為了與接收速度相匹配,數(shù)據(jù)發(fā)送頻率5倍于接收頻率.該模塊對(duì)每一個(gè)完整的tx_bit進(jìn)行并串轉(zhuǎn)換,包括SSD、DATA、ESD、IDLE和HALT.
PCS子層設(shè)計(jì)滿(mǎn)足了100BASE-FX以太網(wǎng)的物理層要求.為了實(shí)現(xiàn)時(shí)鐘恢復(fù)功能,采用了4B/5B編碼方式,此種方式具有16個(gè)有效數(shù)據(jù)組,可保證數(shù)據(jù)中擁有足夠多的跳變,從而便于從串行數(shù)據(jù)中恢復(fù)時(shí)鐘.同時(shí),4B/5B編碼方式可在同樣的25 MHz時(shí)鐘頻率下及100 Mbit/s的100BASE-FX上獲得125 Mbit/s的帶寬,滿(mǎn)足了MAC層100 Mbit/s的傳輸速度.
PMA子層負(fù)責(zé)將PCS子層數(shù)據(jù)進(jìn)行編碼發(fā)送、將終端數(shù)據(jù)解碼傳回以及對(duì)鏈路狀態(tài)進(jìn)行控制.PMA子層模塊結(jié)構(gòu)共設(shè)計(jì)了3個(gè)模塊,分別是:LINK MONITOR、TX(NRZI編碼模塊)和RX(NRZI解碼模塊),如圖1所示.
TX負(fù)責(zé)將并串轉(zhuǎn)換后的tx_code_bit進(jìn)行NRZI編碼,以便被PMD層識(shí)別.該模塊對(duì)每一個(gè)接收到的數(shù)據(jù)均會(huì)進(jìn)行NRZI編碼.
RX負(fù)責(zé)將從物理終端接收的tx_nrzi_bit進(jìn)行NRZI解碼,再送向PCS子層.RX模塊對(duì)每一個(gè)接收到的數(shù)據(jù)進(jìn)行NRZI解碼,但并不負(fù)責(zé)檢測(cè)數(shù)據(jù)是否為有效數(shù)據(jù).
LINK MONITOR負(fù)責(zé)對(duì)鏈路控制信號(hào)進(jìn)行監(jiān)視,以生成正確的控制信號(hào),并用來(lái)控制PCS子層的TRANSMIT與RECEIVE模塊正常工作.當(dāng)signal_status(數(shù)據(jù)狀態(tài)信號(hào))有效時(shí),啟動(dòng)計(jì)時(shí)器.若在計(jì)時(shí)器周期內(nèi)該信號(hào)均是有效的,則等待link_control(鏈路控制信號(hào))狀態(tài),若為有效,則再將link_status信號(hào)送出.
本文的物理層設(shè)計(jì)仿真環(huán)境:Intel Core i5-7200U處理器,Microsoft Windows10 Profession操作系統(tǒng),并使用ModelSim SE 10.5(64 bit)進(jìn)行測(cè)試.
頂層模塊仿真結(jié)果如圖4所示.10BASE-TX的物理層將終端信號(hào)NRZI解碼后送出,數(shù)據(jù)輸出效率十分依賴(lài)時(shí)鐘,而100BASE-FX在PCS子層采用了4B/5B編碼,使輸出信號(hào)并行輸出,較大程度上提高傳輸效率.
圖4 頂層模塊部分信號(hào)仿真圖
10BASE-TX僅對(duì)輸出信號(hào)做了NRZI解碼,輸出速率相當(dāng)于PCS子層的rx_code_bit,在圖4中對(duì)應(yīng)的時(shí)鐘為clk2,頻率為125 MHz;100BASE-FX的輸出為rx_d,對(duì)應(yīng)的時(shí)鐘為clk10,頻率為25 MHz.如圖4紅框內(nèi)所示,rx_code_bit在5個(gè)時(shí)鐘周期內(nèi)共發(fā)送5位數(shù)據(jù),實(shí)現(xiàn)了125 Mbit/s的傳輸速度,而rx_d在1個(gè)周期內(nèi)輸出4位寬數(shù)據(jù),且信息量相當(dāng)于4位rx_code_bit,收發(fā)器在25 MHz時(shí)鐘下實(shí)現(xiàn)了100 Mbit/s的收發(fā).
PCS主要完成發(fā)送鏈路的4B/5B解碼與并串轉(zhuǎn)換工作,接收鏈路的串并轉(zhuǎn)換、4B/5B編碼及載波監(jiān)控整體仿真如圖5所示.
圖5 PCS層仿真圖
發(fā)送鏈路中,TRANSMIT與TRANSMIT BIT兩模塊工作正常,獲得有效數(shù)據(jù)后,均在下一時(shí)鐘上升沿開(kāi)始翻譯,且碼型正確.對(duì)于無(wú)法識(shí)別的數(shù)據(jù)不會(huì)中斷該發(fā)送過(guò)程,而是輸出翻譯錯(cuò)誤數(shù)據(jù)來(lái)占位,以確保用戶(hù)可識(shí)別出錯(cuò)誤數(shù)據(jù)組,便于在對(duì)應(yīng)位置檢查,同時(shí)也保證其他數(shù)據(jù)的傳輸不受影響.所設(shè)計(jì)的發(fā)送鏈路在保證傳輸?shù)耐瑫r(shí)對(duì)錯(cuò)誤幀位置發(fā)出提示,魯棒性較強(qiáng).
接收鏈路中RECEIVE BIT與RECEIVE兩模塊工作正常,RECEIVE BIT模塊中輸出信號(hào)與輸入信號(hào)對(duì)應(yīng)數(shù)據(jù)延時(shí)較大,因rx_bit[9∶0]為10位寬信號(hào),所以讀取后輸出信號(hào)延遲11個(gè)時(shí)鐘周期;RECEIVE模塊則在接收到數(shù)據(jù)后的下一個(gè)時(shí)鐘沿輸出對(duì)應(yīng)數(shù)據(jù).當(dāng)接收鏈路檢測(cè)出接收數(shù)據(jù)中存在無(wú)效信號(hào)時(shí),將rx_er設(shè)置為有效,并跳過(guò)解碼該數(shù)據(jù).這樣可有效標(biāo)記出數(shù)據(jù)錯(cuò)誤位置,同時(shí)不影響其他數(shù)據(jù)傳輸.在接下來(lái)的層級(jí)處理數(shù)據(jù)時(shí),可根據(jù)rx_er的位置來(lái)判斷數(shù)據(jù)是否有效,提高了系統(tǒng)的檢錯(cuò)能力.
CARRIER SENSE模塊在receiving、transmitting信號(hào)同時(shí)無(wú)效時(shí),CRS信號(hào)無(wú)效,否則有效.當(dāng)transmitting信號(hào)為高電平而receiving信號(hào)為低電平時(shí),CRS信號(hào)仍有效.而二者均為低電平時(shí),CRS信號(hào)有效,載波監(jiān)控功能正確.本模塊向上層提供鏈路工作情況,并指示上層控制信號(hào)的產(chǎn)生,例如在鏈路空閑時(shí)提示可進(jìn)行數(shù)據(jù)傳送等.
PMA子層進(jìn)行鏈路控制、NRZI編碼及解碼工作的仿真結(jié)果如圖6所示.LINK MONITOR模塊負(fù)責(zé)生成鏈路工作信號(hào),通過(guò)監(jiān)控終端工作狀態(tài),決定PCS子層的發(fā)送、接收進(jìn)程是否能夠進(jìn)行.
圖6 PMA子層仿真圖
TX模塊負(fù)責(zé)將tx_code_bit翻譯為NRZI碼型的tx_nrzi_bit信號(hào).NRZI編碼方式為電平翻轉(zhuǎn)代表邏輯0,電平不變則代表邏輯1.圖6中,tx_code_bit信號(hào)100011被翻譯成01101數(shù)據(jù)流,邏輯正確,NRZI編碼功能實(shí)現(xiàn).
RX負(fù)責(zé)將接收到的NRZI碼型的rx_nrzi_bit數(shù)據(jù)翻譯為rx_code_bit信號(hào).圖6中,100001數(shù)據(jù)流被翻譯成rx_code_bit信號(hào)101011,邏輯正確,NRZI解碼功能成功實(shí)現(xiàn).
本文介紹了100BASE-FX的PHY層結(jié)構(gòu),著重陳述了PCS子層與PMA子層的信號(hào)傳遞方式,且利用4B/5B編碼、NRZI編碼和串并轉(zhuǎn)換等技術(shù)代替了10BASE-TX物理層中的曼徹斯特編碼,完成了對(duì)100BASE-FX的PHY層結(jié)構(gòu)及功能的設(shè)計(jì),大幅提升了傳輸效率.在ModelSim軟件上進(jìn)行了驗(yàn)證,獲得了正確的仿真結(jié)果.在25 MHz時(shí)鐘下,實(shí)現(xiàn)了最高100 Mbit/s的數(shù)據(jù)交換速度,滿(mǎn)足IEEE802.3規(guī)范.本文所設(shè)計(jì)的PHY層結(jié)構(gòu)在實(shí)現(xiàn)了更快傳輸速度的同時(shí),還可適配市場(chǎng)上所有滿(mǎn)足IEEE802.3規(guī)范的PHY芯片.