朱 棟 馮成濤
(常州大學(xué) 微電子與控制工程學(xué)院, 常州 213159)
電子設(shè)計(jì)自動(dòng)化(EDA)技術(shù)及其課程設(shè)計(jì)通常為電子類(lèi)專(zhuān)業(yè)本科學(xué)生的必修專(zhuān)業(yè)課程,該課程旨在讓學(xué)生掌握基本的硬件描述語(yǔ)言(HDL)的編程和FPGA應(yīng)用技術(shù)。相比于C語(yǔ)言類(lèi)的高級(jí)語(yǔ)言編程,對(duì)于學(xué)生來(lái)說(shuō)HDL編程入門(mén)較為困難,要求學(xué)生有邏輯門(mén)電路的編程思維和波形時(shí)序的概念。
FPGA在通信領(lǐng)域應(yīng)用廣泛,引入通信類(lèi)的應(yīng)用案例,有利于激發(fā)學(xué)生的學(xué)習(xí)興趣,使學(xué)生快速掌握FPGA的開(kāi)發(fā)方式,并使學(xué)生加深對(duì)“數(shù)字信號(hào)處理”和“通信原理”等其他課程中重要知識(shí)點(diǎn)的理解。包秀榮[1]提出將EDA技術(shù)應(yīng)用在“數(shù)字電路”課程設(shè)計(jì)中,引導(dǎo)學(xué)生利用EDA工具設(shè)計(jì)數(shù)字電路系統(tǒng)。倪德克等[2]將ModelSim仿真工具應(yīng)用于數(shù)字電路設(shè)計(jì)中。覃永新等[3]將QDPSK調(diào)制系統(tǒng)的設(shè)計(jì)作為實(shí)例引入“EDA技術(shù)”的教學(xué)中,使學(xué)生在掌握EDA技術(shù)的同時(shí)加深對(duì)通信系統(tǒng)工作原理的理解。朱棟等[4]將以FPGA為核心處理器的數(shù)字式超聲波發(fā)生器作為案例,改革電子技術(shù)課程設(shè)計(jì)的案例化教學(xué)方式。吳迪等[5]將問(wèn)題驅(qū)動(dòng)教學(xué)法引入“EDA技術(shù)”實(shí)驗(yàn),以綜合設(shè)計(jì)作為核心問(wèn)題反向設(shè)計(jì)基礎(chǔ)實(shí)驗(yàn)。丁家峰[6]基于DE2-115口袋實(shí)驗(yàn)室構(gòu)建了全新的培養(yǎng)模式,驗(yàn)證了新培養(yǎng)模式的有效性。本文中設(shè)計(jì)的基于無(wú)線光通信的網(wǎng)絡(luò)數(shù)據(jù)透?jìng)鲗?shí)驗(yàn)涵蓋了網(wǎng)絡(luò)通信、光通信、數(shù)字通信等多種通信技術(shù),是一個(gè)多課程綜合化的應(yīng)用案例。
基于無(wú)線光通信鏈路的網(wǎng)絡(luò)數(shù)據(jù)實(shí)時(shí)透?jìng)鲗?shí)驗(yàn)系統(tǒng)主要由上位計(jì)算機(jī)、FPGA處理板、LED收發(fā)模塊、光鏈路等單元組成,實(shí)驗(yàn)系統(tǒng)框圖如圖1所示。其中,FPGA是實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)實(shí)時(shí)透?jìng)鞯暮诵奶幚砥?實(shí)驗(yàn)的主要內(nèi)容是在FPGA上實(shí)現(xiàn)相關(guān)功能。FPGA可選用Altera公司的Cyclone IV系列的EP4CE6E22C8低成本器件。FPGA接收來(lái)自PHY芯片MII接口的4-bit并行網(wǎng)絡(luò)數(shù)據(jù),該數(shù)據(jù)為上位計(jì)算機(jī)通過(guò)以太網(wǎng)口發(fā)送的包含底層協(xié)議包頭的16進(jìn)制數(shù)據(jù),FPGA首先將4-bit并行數(shù)據(jù)轉(zhuǎn)成1-bit串行數(shù)據(jù)。其次,串行數(shù)據(jù)作為調(diào)制碼元加以適當(dāng)?shù)臄?shù)字調(diào)制驅(qū)動(dòng)LED發(fā)射模塊,實(shí)現(xiàn)光信號(hào)的發(fā)射。光信號(hào)經(jīng)過(guò)無(wú)線光鏈路傳播至LED接收模塊,LED接收端將光信號(hào)轉(zhuǎn)變成電信號(hào)并進(jìn)行放大、濾波、電平比較等處理,整形成TTL電平數(shù)字信號(hào)并送至對(duì)端FPGA。對(duì)端FPGA再對(duì)數(shù)字信號(hào)進(jìn)行調(diào)解、串轉(zhuǎn)并等處理后還原成MII接口的4-bit并行網(wǎng)絡(luò)數(shù)據(jù)并發(fā)送至PHY芯片,最終送至對(duì)端上位計(jì)算機(jī),從而實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)包的透?jìng)?。?duì)端上位計(jì)算機(jī)以同樣方式發(fā)送網(wǎng)絡(luò)數(shù)據(jù)至本端上位計(jì)算機(jī),以實(shí)現(xiàn)全雙工的網(wǎng)絡(luò)數(shù)據(jù)透?jìng)鲗?shí)驗(yàn)。
圖1 實(shí)驗(yàn)系統(tǒng)組成框圖
上位計(jì)算機(jī)通過(guò)以太網(wǎng)口與FPGA處理板進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)交互,上位機(jī)使用網(wǎng)絡(luò)調(diào)試助手等工具軟件實(shí)現(xiàn)UDP數(shù)據(jù)包的收發(fā)。普通的以太網(wǎng)口有10 M、100 M、1000 M三種連接速度,千兆PHY芯片可實(shí)現(xiàn)10 M/100 M/1000 M自適應(yīng)連接。PHY芯片是模數(shù)混合芯片,當(dāng)網(wǎng)絡(luò)連接為10 M/100 M時(shí),PHY芯片的模擬端通過(guò)兩對(duì)差分線TPTX+/ 和TPRX+/ 與網(wǎng)口連接,PHY芯片數(shù)字端(即MII接口)與FPGA的普通IO連接。MII接口包括一組用于接收數(shù)據(jù)的端口(RXCLK、RXD[3:0]、RXDV)和一組用于發(fā)送數(shù)據(jù)的端口(TXCLK、TXD[3:0]、TXEN),以及一組用于配置PHY芯片內(nèi)部寄存器的雙線同步串行總線(MDC和MDIO)。RXCLK和TXCLK分別是數(shù)據(jù)RXD和TXD的同步時(shí)鐘,RXDV是接收數(shù)據(jù)有效的標(biāo)志信號(hào),TXEN是發(fā)送數(shù)據(jù)有效信號(hào),兩者都必須在發(fā)送/接收數(shù)據(jù)期間的第一個(gè)時(shí)鐘前沿之前置為高電平,如圖2所示。
(a)PHY芯片數(shù)據(jù)接收時(shí)序圖
(b)PHY芯片數(shù)據(jù)發(fā)送時(shí)序圖圖2 PHY芯片數(shù)據(jù)收發(fā)時(shí)序圖
本實(shí)驗(yàn)使用10 M/100 M/1000 M自適應(yīng)連接且具有RGMII標(biāo)準(zhǔn)接口的PHY芯片,如REALTEK公司的RTL8211F。當(dāng)網(wǎng)絡(luò)連接為10 M時(shí),網(wǎng)絡(luò)數(shù)據(jù)無(wú)需進(jìn)行緩存,而直接將當(dāng)前的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行調(diào)制和發(fā)射,發(fā)射數(shù)據(jù)的數(shù)據(jù)率也為10 M,與網(wǎng)絡(luò)連接速率保持一致,從而實(shí)現(xiàn)基于數(shù)字邏輯電路的實(shí)時(shí)數(shù)據(jù)透?jìng)?。?dāng)網(wǎng)絡(luò)連接為100 M/1000 M時(shí),數(shù)據(jù)速率較高,此時(shí)要實(shí)現(xiàn)數(shù)據(jù)透?jìng)鞅仨毷褂庙憫?yīng)速度更高的激光收發(fā)模塊以替換LED收發(fā)模塊。而考慮到激光對(duì)人眼的危害,保證實(shí)驗(yàn)的安全性,此實(shí)驗(yàn)的光鏈路使用LED收發(fā)模塊,網(wǎng)絡(luò)連接設(shè)定為10 M速率。
針對(duì)光通信鏈路,調(diào)制解調(diào)方式有開(kāi)關(guān)鍵控(OOK)、脈沖位置調(diào)制(PPM)、數(shù)字脈沖間隔調(diào)制(DPIM)等開(kāi)/關(guān)類(lèi)方式可選,其中DPIM方式的數(shù)據(jù)幀時(shí)長(zhǎng)與原始數(shù)據(jù)幀時(shí)長(zhǎng)不同,需先對(duì)一整包網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行完整緩存后再調(diào)制發(fā)送,無(wú)法實(shí)現(xiàn)嚴(yán)格意義上的實(shí)時(shí)數(shù)據(jù)透?jìng)?。DPIM的實(shí)現(xiàn)難度也更大,推薦學(xué)生主要使用OOK和PPM兩種調(diào)制方式。LED發(fā)射和接收采用紅外850 nm或940 nm波段的二極管作為傳感器,實(shí)驗(yàn)時(shí)應(yīng)盡量減小周?chē)h(huán)境可見(jiàn)光干擾。
FPGA是實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)實(shí)時(shí)透?jìng)鞯暮诵奶幚砥?FPGA收發(fā)網(wǎng)絡(luò)數(shù)據(jù)并控制光鏈路發(fā)射/接收光信號(hào)的處理過(guò)程如圖3所示。FPGA接收來(lái)自PHY芯片RGMII接口的4位并行數(shù)據(jù)時(shí),先對(duì)并行數(shù)據(jù)進(jìn)行并轉(zhuǎn)串處理,串行碼可實(shí)現(xiàn)對(duì)光模塊發(fā)射的控制。以10 M網(wǎng)絡(luò)連接為例,10 M的串行網(wǎng)絡(luò)數(shù)據(jù)利用LED光鏈路的通斷實(shí)現(xiàn)信號(hào)的傳輸。
圖3 FPGA處理PHY數(shù)據(jù)的邏輯框圖
對(duì)RXD數(shù)據(jù)進(jìn)行并轉(zhuǎn)串時(shí)需要10 MHz時(shí)鐘,而10 MHz必須與2.5 MHz的并行數(shù)據(jù)時(shí)鐘相參,因此,RXD數(shù)據(jù)進(jìn)入FPGA后首先要進(jìn)行數(shù)據(jù)時(shí)鐘轉(zhuǎn)換,將來(lái)自PHY的數(shù)據(jù)時(shí)鐘RXCLK轉(zhuǎn)換成FPGA內(nèi)部的2.5 MHz。時(shí)鐘轉(zhuǎn)換的方法是使用FPGA片上雙端口RAM,RAM寫(xiě)入時(shí)鐘使用RXCLK,而讀出時(shí)鐘使用FPGA內(nèi)部的2.5 MHz時(shí)鐘。
時(shí)鐘轉(zhuǎn)換、并轉(zhuǎn)串、數(shù)字調(diào)制所需的不同頻率時(shí)鐘,均統(tǒng)一由時(shí)鐘模塊FPGA片上PLL產(chǎn)生,以此保持各時(shí)鐘之間嚴(yán)格相參。數(shù)字信號(hào)處理中經(jīng)常會(huì)遇到多時(shí)鐘域的問(wèn)題,不同頻率的時(shí)鐘由同一時(shí)鐘源輸出才不會(huì)引起多時(shí)鐘域信號(hào)處理過(guò)程中的競(jìng)爭(zhēng)與冒險(xiǎn)。片上PLL的輸入?yún)⒖紩r(shí)鐘則一般由FPGA處理板上的50 MHz晶振提供,而不能采用2.5 MHz的TXCLK,因?yàn)橛糜赑LL內(nèi)部的鑒相時(shí)鐘至少為10 MHz頻率的時(shí)鐘。
數(shù)字調(diào)制部分需考慮用于同步的幀頭波形、幀結(jié)束(空閑)波形、數(shù)據(jù)段調(diào)制方式等三個(gè)階段。由于網(wǎng)絡(luò)數(shù)據(jù)具有空閑期間,而LED發(fā)射單元通常需在空閑期間也需發(fā)射脈沖以維持其穩(wěn)定狀態(tài)。針對(duì)LED收發(fā)模塊,可考慮的調(diào)制方式為OOK、PPM等開(kāi)關(guān)鍵控類(lèi)方式。OOK調(diào)制方式相對(duì)實(shí)現(xiàn)簡(jiǎn)單,直接將0/1串行數(shù)據(jù)作為碼元即可,但OOK調(diào)制的幀頭波形可能會(huì)與數(shù)據(jù)波形完全相同,從而引起幀頭的誤檢。針對(duì)網(wǎng)絡(luò)數(shù)據(jù)而言,此問(wèn)題可忽略,因?yàn)镻HY層的UDP數(shù)據(jù)包均以連續(xù)6個(gè)0x50作為起始標(biāo)志。但在信號(hào)信噪比較低時(shí),解調(diào)時(shí)仍然有可能將OOK的數(shù)據(jù)段判斷為幀頭波形。而PPM調(diào)制則不會(huì)出現(xiàn)這樣的問(wèn)題,但實(shí)現(xiàn)PPM調(diào)制有一定難度。PPM調(diào)制是在一個(gè)碼元周期內(nèi),前低后高代表碼元為0,前高后低代表碼元為1。因此,本實(shí)驗(yàn)在數(shù)字調(diào)制部分的難度分為高低兩檔:OOK為低難度,PPM為高難度。若采用PPM調(diào)制方式,幀頭設(shè)計(jì)為一長(zhǎng)脈沖(如350 ns)用于解調(diào)時(shí)數(shù)據(jù)位同步,幀結(jié)束或空閑期間波形為一短脈沖(如脈寬50 ns),即可實(shí)現(xiàn)幀頭波形、數(shù)據(jù)段波形、幀結(jié)束波形無(wú)任何沖突。假定空閑期間短脈沖的重復(fù)周期為400 ns,發(fā)射波形三個(gè)階段信號(hào)脈沖占空比對(duì)比如下:①幀頭波形占空比為87.5%;②PPM數(shù)據(jù)段占空比恒定為50%;③幀結(jié)束波形占空比為12.5%。這樣設(shè)計(jì)波形,可使三種波形兩兩之間特征差別最大,幀頭誤檢率最低。
在Quartus II 13開(kāi)發(fā)環(huán)境中創(chuàng)建工程并完成編譯,Cyclone IV器件的片上資源使用情況如下:①邏輯單元(LEs)使用1429個(gè);②寄存器(registers)使用1092個(gè);③引腳(pins)使用18個(gè);④鎖相環(huán)(PLL)使用1個(gè);⑤為調(diào)試方便,在SignalTap調(diào)試工具中添加了多個(gè)關(guān)鍵信號(hào),使得片上存儲(chǔ)器使用量為221,440 b。在采樣時(shí)鐘80 MHz情況下,幾個(gè)關(guān)鍵信號(hào)的SignalTap采集波形如圖4所示。其中,發(fā)射波形(ppm_out)采用PPM調(diào)制。
圖4 SignalTap工具中關(guān)鍵信號(hào)采集波形
由于本實(shí)驗(yàn)涉及信號(hào)的發(fā)射與接收,以及光鏈路的調(diào)試等工作,實(shí)驗(yàn)工作量較大,需學(xué)生組隊(duì)協(xié)作完成。實(shí)驗(yàn)室為每個(gè)學(xué)生團(tuán)隊(duì)提供2臺(tái)計(jì)算機(jī)、2塊Altera的Cyclone IV FPGA實(shí)驗(yàn)板(含下載器)、2套LED收發(fā)模塊(含放大器)、以及電源等輔助設(shè)備。計(jì)算機(jī)安裝Quartus開(kāi)發(fā)工具、ModelSim仿真工具、網(wǎng)絡(luò)調(diào)試助手等軟件。作為實(shí)驗(yàn)的必選項(xiàng),每個(gè)團(tuán)隊(duì)?wèi)?yīng)完成信號(hào)并串與串并轉(zhuǎn)換、信號(hào)的調(diào)制與發(fā)射、光信號(hào)的接收與解調(diào)、以及各模塊的ModelSim或Waveform Editor仿真、SignalTap在線調(diào)試等基礎(chǔ)工作。SignalTap在線調(diào)試時(shí)需對(duì)網(wǎng)絡(luò)數(shù)據(jù)包格式進(jìn)行解析,獲取UDP數(shù)據(jù)包中的幀頭標(biāo)志、目標(biāo)IP地址和MAC地址、源IP地址和MAC地址等。發(fā)揮部分為實(shí)現(xiàn)串行數(shù)據(jù)的PPM調(diào)制與解調(diào),作為加分項(xiàng)。實(shí)驗(yàn)演示時(shí)使用網(wǎng)絡(luò)調(diào)試助手循環(huán)發(fā)送UDP數(shù)據(jù)包,查看接收端是否完整接收到數(shù)據(jù)包并且檢查發(fā)/收數(shù)據(jù)包個(gè)數(shù)是否一致。每個(gè)團(tuán)隊(duì)由3~4名學(xué)生組成,每隊(duì)在規(guī)定時(shí)間內(nèi)完成并撰寫(xiě)實(shí)驗(yàn)報(bào)告,指導(dǎo)教師根據(jù)實(shí)驗(yàn)完成項(xiàng)、完成質(zhì)量、實(shí)驗(yàn)報(bào)告質(zhì)量給學(xué)生團(tuán)隊(duì)打分,發(fā)揮部分占總成績(jī)的15%~20%。
利用本實(shí)驗(yàn)建立達(dá)成度評(píng)價(jià)標(biāo)準(zhǔn),分為系統(tǒng)構(gòu)建能力、數(shù)字邏輯電路設(shè)計(jì)能力、軟件開(kāi)發(fā)能力、網(wǎng)絡(luò)分析能力、文檔報(bào)告制作能力等五大項(xiàng)目,每項(xiàng)各占總達(dá)成度的20%。每一大項(xiàng)又有很多分項(xiàng),如系統(tǒng)構(gòu)建能力大項(xiàng)包括系統(tǒng)完整性、系統(tǒng)可行性、調(diào)制原理、通信鏈路等4個(gè)子項(xiàng),每個(gè)子項(xiàng)各占5%;數(shù)字邏輯電路設(shè)計(jì)能力大項(xiàng)包括HDL編程、IP調(diào)用、時(shí)序約束、層次化設(shè)計(jì)等4個(gè)子項(xiàng),每個(gè)子項(xiàng)各占5%;軟件開(kāi)發(fā)能力大項(xiàng)包括Quartus應(yīng)用、SignalTap應(yīng)用、ModelSim應(yīng)用、其他工具等4個(gè)子項(xiàng),每個(gè)子項(xiàng)各占5%;網(wǎng)絡(luò)分析能力大項(xiàng)包括網(wǎng)絡(luò)模型的理解、UDP數(shù)據(jù)包幀結(jié)構(gòu)、MAC地址解析、CRC校驗(yàn)位解析等4個(gè)子項(xiàng),每個(gè)子項(xiàng)各占5%;文檔報(bào)告制作大項(xiàng)包括文檔的完整性、文檔的規(guī)范性、匯報(bào)、現(xiàn)場(chǎng)質(zhì)疑應(yīng)變等4個(gè)子項(xiàng),每個(gè)子項(xiàng)各占5%。最終,根據(jù)各個(gè)子項(xiàng)的得分,累計(jì)得出總達(dá)成度。另外,制作調(diào)查問(wèn)卷,從學(xué)生那里得到對(duì)于本課程新案例實(shí)施過(guò)程的反饋意見(jiàn),做到持續(xù)改進(jìn),使整個(gè)課程不斷優(yōu)化。
為提高電子類(lèi)本科學(xué)生的FPGA應(yīng)用能力,設(shè)計(jì)了一套基于無(wú)線光通信的網(wǎng)絡(luò)數(shù)據(jù)實(shí)時(shí)透?jìng)鲗?shí)驗(yàn)系統(tǒng)。學(xué)生可以利用該實(shí)驗(yàn)平臺(tái)對(duì)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行調(diào)制與解調(diào),以實(shí)現(xiàn)在光鏈路上的實(shí)時(shí)數(shù)據(jù)收發(fā)。該實(shí)驗(yàn)可以作為EDA技術(shù)課程的實(shí)驗(yàn)或者EDA課程設(shè)計(jì)的課題,可供3~4名學(xué)生協(xié)作完成,主要任務(wù)是通過(guò)編寫(xiě)HDL代碼或編輯原理圖實(shí)現(xiàn)基于FPGA的網(wǎng)絡(luò)數(shù)據(jù)透?jìng)?并完成實(shí)驗(yàn)報(bào)告。通過(guò)該實(shí)驗(yàn)的實(shí)踐,可加深學(xué)生對(duì)于數(shù)字通信、網(wǎng)絡(luò)通信等課程中相關(guān)知識(shí)點(diǎn)的理解,同時(shí)極大地提高學(xué)生的FPGA應(yīng)用能力。