王安憶,王 衡,王洪義,王 麟
(青島海信寬帶多媒體技術(shù)有限公司,山東 青島 266000)
光模塊是光纖通信系統(tǒng)的核心部件之一,可以用于實(shí)現(xiàn)光纖通信和無(wú)線光通信等多種通信方式,廣泛應(yīng)用于數(shù)據(jù)中心、云計(jì)算、移動(dòng)通信、軍事、醫(yī)療、航空航天等領(lǐng)域。通過(guò)將數(shù)據(jù)信號(hào)轉(zhuǎn)換為光信號(hào)傳輸,光模塊可以實(shí)現(xiàn)高速、長(zhǎng)距離、大容量、高質(zhì)量的數(shù)據(jù)傳輸,從而滿足人們對(duì)信息通信不斷增長(zhǎng)的需求[1]。
I2C 通信協(xié)議是一種串行通信協(xié)議,用于連接集成電路之間的通信,也稱為二線制串行總線[2]。在光模塊中,I2C 通信具有重要作用,主機(jī)通過(guò)它實(shí)現(xiàn)對(duì)光模塊的故障監(jiān)測(cè)和診斷,了解光模塊的工作狀態(tài)和異常情況,及時(shí)采取措施進(jìn)行維修或更換[3]。同時(shí)主機(jī)還可以通過(guò)I2C 通信控制光模塊的參數(shù)和設(shè)置,實(shí)現(xiàn)在線升級(jí)固件等[4]。I2C 支持多個(gè)光模塊的串行連接,可以方便地實(shí)現(xiàn)光模塊之間的串行連接和控制,簡(jiǎn)化系統(tǒng)的結(jié)構(gòu)和控制[5]。
XFP、SFP+光模塊一般采用SFF8472 協(xié)議[6];SFP28或QSFP28 光模塊一般采用8636 協(xié)議[7];QSFP、QSFP+、QSFP-DD 一般采用CMIS 協(xié)議[8];另外還有QSFP 協(xié)議、SFP-DD 協(xié)議、SFF8077 協(xié)議[9]等適用于不同類型的光模塊。這些協(xié)議中針對(duì)I2C 通信方式都做了明確的要求。不同協(xié)議規(guī)定模塊有不同的設(shè)備地址,比如:8472 協(xié)議有兩個(gè)設(shè)備地址A0、A2;而8636 協(xié)議有一個(gè)設(shè)備地址A0。另外,不同協(xié)議還規(guī)定了不同的頁(yè)選、密碼輸入?yún)^(qū)域、用戶可寫區(qū)等。
本文設(shè)計(jì)一套測(cè)試系統(tǒng),可兼容不同的協(xié)議,針對(duì)I2C 相關(guān)性能進(jìn)行測(cè)試。通過(guò)PC 上位機(jī)控制示波器和I2C 測(cè)試工裝實(shí)現(xiàn)自動(dòng)化測(cè)試。本文設(shè)計(jì)了一套I2C 指令字符編碼規(guī)則,通過(guò)解析指令將可執(zhí)行的高低信號(hào)序列下發(fā)給I2C 測(cè)試工裝,工裝通過(guò)PDMA 方式下發(fā)SCL和SDA 時(shí)序,同時(shí)上位機(jī)通過(guò)程控示波器抓取測(cè)試指令,反饋時(shí)序指標(biāo)、電壓幅度等。本文測(cè)試系統(tǒng)的時(shí)間精度控制可以達(dá)到納秒級(jí)別,功能上堪比以FPGA 芯片為核心的傳統(tǒng)測(cè)試系統(tǒng),并且開(kāi)發(fā)效率高、設(shè)備成本低、擴(kuò)展兼容性強(qiáng),適合高速發(fā)展的光模塊行業(yè)應(yīng)用。
光模塊的I2C 自動(dòng)化測(cè)試系統(tǒng)由上位機(jī)軟件、I2C 測(cè)試工裝和示波器組成。
上位機(jī)作用:
1)測(cè)試指令編碼、轉(zhuǎn)碼、發(fā)送;
2)示波器程控;
3)測(cè)試結(jié)果處理輸出。
測(cè)試工裝作用:
1)測(cè)試指令發(fā)送和反饋;
2)模塊常規(guī)讀寫指令發(fā)送和接收,涉及測(cè)試的預(yù)寫和后處理。
示波器作用:
1)顯示SCL/SDA 信號(hào)波形;
2)反饋時(shí)序指標(biāo)、電壓指標(biāo)等參數(shù)。
上位機(jī)采用C#編程,通過(guò)libusb 庫(kù)實(shí)現(xiàn)與測(cè)試工裝的USB 接口通信,通過(guò)Ivi.Visa 類庫(kù)實(shí)現(xiàn)與keysight 系列示波器進(jìn)行USB接口通信。系統(tǒng)整體結(jié)構(gòu)圖如圖1所示。
圖1 系統(tǒng)整體結(jié)構(gòu)圖
測(cè)試工裝核心采用新唐M482LGCAE 型號(hào)單片機(jī),它是最高頻率為192 MHz 的ARM Cortex-M4F 內(nèi)核,所以運(yùn)行DMA 模塊時(shí)的精度可以達(dá)到納秒級(jí)別。工裝具體可分為供電系統(tǒng)、通信系統(tǒng)、測(cè)試系統(tǒng)和固件四部分。
工裝板直接采用USB 接口的5 V 供電(VBUS),通過(guò)正向低壓降穩(wěn)壓器(AMS1117-3.3 芯片)獲得穩(wěn)定的3.3 V 電壓(VCC),為M482LGCAE 單片機(jī)供電及復(fù)位,并且將VCC 經(jīng)過(guò)分壓后接入MCU,進(jìn)行ADC 轉(zhuǎn)換,實(shí)現(xiàn)電壓監(jiān)控。測(cè)試工裝供電系統(tǒng)如圖2 所示。
圖2 測(cè)試工裝供電系統(tǒng)
PC 通過(guò)USB 接口與測(cè)試工裝相連。USB(通用串行總線)是一個(gè)外部總線標(biāo)準(zhǔn),用于規(guī)范計(jì)算機(jī)與外部設(shè)備的連接和通信,USB 接口支持設(shè)備的即插即用和熱插拔功能,有4 個(gè)pin 腳[10],分別為VCC、GND、Data+、Data-。
如圖3 所示,USB 接口的D+通過(guò)上拉電阻連接到VCC,數(shù)據(jù)通過(guò)串聯(lián)電阻直接連接MCU 的USB_D+和USB_D-引腳。M482LGCAE 單片機(jī)具有HSUSBD 模塊(High Speed USB 2.0 Device Controller),可以實(shí)現(xiàn)高速(480 Mb/s)數(shù)據(jù)傳輸。
圖3 測(cè)試工裝通信系統(tǒng)
新唐M482LGCAE 具有QSPI 控制器,支持兩位傳輸模式以執(zhí)行全雙工兩位數(shù)據(jù)傳輸,還支持四輸入/輸出傳輸模式[11],且控制器支持PDMA(Peripherial Direct Memory Access)功能以訪問(wèn)數(shù)據(jù)緩沖區(qū)。PDMA(外圍直接存儲(chǔ)器訪問(wèn))是一種高速數(shù)據(jù)傳輸技術(shù),允許外圍設(shè)備直接訪問(wèn)系統(tǒng)內(nèi)存,從而實(shí)現(xiàn)高效率的數(shù)據(jù)傳輸。傳統(tǒng)的DMA 技術(shù)要求CPU 控制器介入數(shù)據(jù)傳輸?shù)拿總€(gè)階段[12];而PDMA 則是完全由外圍設(shè)備控制傳輸?shù)倪^(guò)程,因此能夠避免CPU 的負(fù)載,提高數(shù)據(jù)傳輸?shù)男屎退俣萚13]。QSPI 時(shí)序說(shuō)明如圖4 所示。
圖4 QSPI 時(shí)序說(shuō)明
針對(duì)I2C 的雙線測(cè)試要求,設(shè)計(jì)將QSPI 作為主機(jī),它的單個(gè)模塊MISO 和MOSI 引腳通過(guò)反向器相連接,作為SCL 信號(hào),同理通過(guò)另一個(gè)模塊作為SDA 信號(hào),即可獲得一個(gè)雙線同步收發(fā)一體的測(cè)試時(shí)鐘信號(hào)。
由于對(duì)于單片機(jī)的MOSI 是推挽輸出,而對(duì)于I2C 信號(hào),要求開(kāi)漏輸出,總線支持多個(gè)從機(jī)[3,14],當(dāng)主機(jī)發(fā)送應(yīng)答信號(hào),對(duì)應(yīng)從機(jī)可以拉低反饋,故中間連接一個(gè)開(kāi)漏輸出的反向器(SN74LVC2G06)。單片機(jī)固件收到測(cè)試信號(hào)后先取反,再發(fā)送,通過(guò)漏極輸出反向器接收到測(cè)試數(shù)據(jù),實(shí)現(xiàn)了開(kāi)漏模式。由于開(kāi)漏模式必須接上拉電阻才能輸出高電平,設(shè)計(jì)通過(guò)MOS 管控制不同上拉電阻接入I2C 信號(hào),實(shí)現(xiàn)不同電阻值下信號(hào)質(zhì)量測(cè)試。
信號(hào)通過(guò)PDMA 方式發(fā)送,不需要軟件參與,QSPI的每一位對(duì)應(yīng)硬件測(cè)試指令的時(shí)間精度,所以最精確可以實(shí)現(xiàn)10 ns 的精度,同時(shí)上位機(jī)可以通過(guò)設(shè)置擴(kuò)大MOSI 發(fā)送每一個(gè)bit 的時(shí)間,實(shí)現(xiàn)精度控制。固件采用32 bit 發(fā)送模式,由于發(fā)送buf 長(zhǎng)度有限,單次發(fā)送數(shù)據(jù)量有限,可以通過(guò)修改分頻比實(shí)現(xiàn)數(shù)據(jù)量擴(kuò)充。測(cè)試工裝執(zhí)行系統(tǒng)如圖5 所示。
圖5 測(cè)試工裝執(zhí)行系統(tǒng)
解析I2C 通信信號(hào)邏輯,提取特征模型,將I2C 指令分解為11 個(gè)部分,如表1 所示。
表1 邏輯編碼
由此,所有測(cè)試指令均可通過(guò)以下分解信號(hào)編碼得到,這就是本系統(tǒng)的邏輯編碼原理。
以SFF8472 協(xié)議為例,讀設(shè)備地址A2 下的80 地址寄存器,指令可以編碼為:
寫設(shè)備地址A2 下的7F 地址寄存器可以編碼為:
通過(guò)邏輯編碼后,下一步需要將邏輯指令轉(zhuǎn)化為01 數(shù)據(jù)發(fā)送給測(cè)試工裝,這就涉及時(shí)域編碼,通過(guò)以下指標(biāo)控制I2C 信號(hào)時(shí)域波形。速率和步進(jìn)作為已知參數(shù)。步進(jìn)固定為10 ns 是由2.3 節(jié)單片機(jī)QSPI 模塊的bit精度決定。
針對(duì)一般的I2C 測(cè)試系統(tǒng),設(shè)置比例系數(shù)如下:
以Step 為單位,在時(shí)域按位編碼測(cè)試指令,SDA 為通道1,SCL 為通道2,將數(shù)據(jù)以64 bit 一幀的方式編碼。SDA為通道1,長(zhǎng)度為32 bit;SCL為通道2,長(zhǎng)度為32 bit,分別編碼,結(jié)構(gòu)如圖6 所示。
圖6 幀數(shù)據(jù)結(jié)構(gòu)
數(shù)字化后通過(guò)USB 發(fā)送給測(cè)試工裝,再讀取返回值,通過(guò)反向編碼獲取到應(yīng)答位、數(shù)據(jù)位值。由此完成時(shí)域編碼,如表2 所示。
上位機(jī)完成信號(hào)發(fā)送后,通過(guò)程控示波器實(shí)現(xiàn)信號(hào)的獲取和具體指標(biāo)的反饋。通過(guò)SCPI 指令集的Set 控制指令定位捕捉窗口,通過(guò)Query 查詢指令返回時(shí)序參數(shù)[15]。上位機(jī)通過(guò)指令解析獲取當(dāng)前測(cè)試指令總時(shí)長(zhǎng),再通過(guò)具體參數(shù)bit 位置定位到待測(cè)點(diǎn)。同時(shí)示波器的測(cè)量設(shè)置還可以測(cè)試信號(hào)過(guò)沖幅度、信號(hào)質(zhì)量等。
測(cè)試系統(tǒng)設(shè)置了6 個(gè)模塊,分別針對(duì)標(biāo)準(zhǔn)時(shí)序、亂序、九時(shí)鐘、特殊時(shí)序、重復(fù)時(shí)序、過(guò)沖進(jìn)行了系統(tǒng)全面測(cè)試。
由于測(cè)試涉及寄存器讀寫,故針對(duì)不同光模塊協(xié)議的用戶可寫區(qū),設(shè)置了不同的待測(cè)區(qū)域,例如:SFF8472協(xié)議的A2 設(shè)備地址00 頁(yè)、8636 協(xié)議的A0 設(shè)備地址02 頁(yè),CMIS 協(xié)議的A0 設(shè)備地址03 頁(yè)等。預(yù)寫數(shù)據(jù)后配置示波器trigger 采樣時(shí)間,發(fā)送測(cè)試指令,通過(guò)測(cè)試應(yīng)答位確認(rèn)從機(jī)反饋,通過(guò)數(shù)據(jù)回讀確認(rèn)是否誤改,通過(guò)示波器返回波形數(shù)據(jù)判斷時(shí)間指標(biāo)是否合格。
標(biāo)準(zhǔn)時(shí)序:測(cè)試I2C 協(xié)議下的讀寫邏輯和時(shí)序指標(biāo)。
亂序:測(cè)試主機(jī)時(shí)序混亂、欠缺情況下從機(jī)的反饋。
九時(shí)鐘:測(cè)試主機(jī)阻塞后,發(fā)送9 個(gè)時(shí)鐘信號(hào),從機(jī)是否能解鎖。
特殊時(shí)序:測(cè)試主機(jī)I2C 信號(hào)邊沿重合或者超極限情況下從機(jī)是否能正常反饋。
重復(fù)時(shí)序:長(zhǎng)時(shí)間壓力測(cè)試,主機(jī)持續(xù)發(fā)送讀寫指令,測(cè)試從機(jī)抗壓能力。
過(guò)沖測(cè)試:測(cè)試I2C 信號(hào)的電性能,測(cè)試主機(jī)下沖幅度、從機(jī)應(yīng)答信號(hào)電平等。
測(cè)試系統(tǒng)PC 軟件測(cè)試結(jié)果如圖7 所示。
圖7 測(cè)試系統(tǒng)軟件測(cè)試結(jié)果
表3展示了標(biāo)準(zhǔn)時(shí)序下的部分測(cè)試結(jié)果,系統(tǒng)可以在10 min內(nèi)完成6個(gè)模塊的測(cè)試,極大提高了產(chǎn)品測(cè)試效率。
表3 測(cè)試結(jié)果
本文提出一種基于光模塊I2C 的自動(dòng)化測(cè)試系統(tǒng),利用MCU 的DMA 和QSPI 模塊實(shí)現(xiàn)了按bit 發(fā)送測(cè)試指令;并根據(jù)I2C 時(shí)序設(shè)計(jì)了一套自由編碼方式,可以實(shí)現(xiàn)多種測(cè)試環(huán)境搭建。系統(tǒng)可以實(shí)現(xiàn)100 kHz~1 MHz 的I2C 特性測(cè)試,也可以兼容SFF8472、SFF8636、CMIS 等多種光模塊協(xié)議,測(cè)試時(shí)序精度可達(dá)到10 ns,可以涵蓋所有I2C 測(cè)試需求,在光模塊相關(guān)產(chǎn)業(yè)有著良好的應(yīng)用前景和價(jià)值。I2C 測(cè)試工裝與示波器等通過(guò)USB 連接,未來(lái)可以將系統(tǒng)集成化,進(jìn)一步提升測(cè)試系統(tǒng)完整性。