王安憶,王 衡,王洪義,王 麟
(青島海信寬帶多媒體技術有限公司,山東 青島 266000)
光模塊是光纖通信系統的核心部件之一,可以用于實現光纖通信和無線光通信等多種通信方式,廣泛應用于數據中心、云計算、移動通信、軍事、醫療、航空航天等領域。通過將數據信號轉換為光信號傳輸,光模塊可以實現高速、長距離、大容量、高質量的數據傳輸,從而滿足人們對信息通信不斷增長的需求[1]。
I2C 通信協議是一種串行通信協議,用于連接集成電路之間的通信,也稱為二線制串行總線[2]。在光模塊中,I2C 通信具有重要作用,主機通過它實現對光模塊的故障監測和診斷,了解光模塊的工作狀態和異常情況,及時采取措施進行維修或更換[3]。同時主機還可以通過I2C 通信控制光模塊的參數和設置,實現在線升級固件等[4]。I2C 支持多個光模塊的串行連接,可以方便地實現光模塊之間的串行連接和控制,簡化系統的結構和控制[5]。
XFP、SFP+光模塊一般采用SFF8472 協議[6];SFP28或QSFP28 光模塊一般采用8636 協議[7];QSFP、QSFP+、QSFP-DD 一般采用CMIS 協議[8];另外還有QSFP 協議、SFP-DD 協議、SFF8077 協議[9]等適用于不同類型的光模塊。這些協議中針對I2C 通信方式都做了明確的要求。不同協議規定模塊有不同的設備地址,比如:8472 協議有兩個設備地址A0、A2;而8636 協議有一個設備地址A0。另外,不同協議還規定了不同的頁選、密碼輸入區域、用戶可寫區等。
本文設計一套測試系統,可兼容不同的協議,針對I2C 相關性能進行測試。通過PC 上位機控制示波器和I2C 測試工裝實現自動化測試。本文設計了一套I2C 指令字符編碼規則,通過解析指令將可執行的高低信號序列下發給I2C 測試工裝,工裝通過PDMA 方式下發SCL和SDA 時序,同時上位機通過程控示波器抓取測試指令,反饋時序指標、電壓幅度等。本文測試系統的時間精度控制可以達到納秒級別,功能上堪比以FPGA 芯片為核心的傳統測試系統,并且開發效率高、設備成本低、擴展兼容性強,適合高速發展的光模塊行業應用。
光模塊的I2C 自動化測試系統由上位機軟件、I2C 測試工裝和示波器組成。
上位機作用:
1)測試指令編碼、轉碼、發送;
2)示波器程控;
3)測試結果處理輸出。
測試工裝作用:
1)測試指令發送和反饋;
2)模塊常規讀寫指令發送和接收,涉及測試的預寫和后處理。
示波器作用:
1)顯示SCL/SDA 信號波形;
2)反饋時序指標、電壓指標等參數。
上位機采用C#編程,通過libusb 庫實現與測試工裝的USB 接口通信,通過Ivi.Visa 類庫實現與keysight 系列示波器進行USB接口通信。系統整體結構圖如圖1所示。

圖1 系統整體結構圖
測試工裝核心采用新唐M482LGCAE 型號單片機,它是最高頻率為192 MHz 的ARM Cortex-M4F 內核,所以運行DMA 模塊時的精度可以達到納秒級別。工裝具體可分為供電系統、通信系統、測試系統和固件四部分。
工裝板直接采用USB 接口的5 V 供電(VBUS),通過正向低壓降穩壓器(AMS1117-3.3 芯片)獲得穩定的3.3 V 電壓(VCC),為M482LGCAE 單片機供電及復位,并且將VCC 經過分壓后接入MCU,進行ADC 轉換,實現電壓監控。測試工裝供電系統如圖2 所示。

圖2 測試工裝供電系統
PC 通過USB 接口與測試工裝相連。USB(通用串行總線)是一個外部總線標準,用于規范計算機與外部設備的連接和通信,USB 接口支持設備的即插即用和熱插拔功能,有4 個pin 腳[10],分別為VCC、GND、Data+、Data-。
如圖3 所示,USB 接口的D+通過上拉電阻連接到VCC,數據通過串聯電阻直接連接MCU 的USB_D+和USB_D-引腳。M482LGCAE 單片機具有HSUSBD 模塊(High Speed USB 2.0 Device Controller),可以實現高速(480 Mb/s)數據傳輸。

圖3 測試工裝通信系統
新唐M482LGCAE 具有QSPI 控制器,支持兩位傳輸模式以執行全雙工兩位數據傳輸,還支持四輸入/輸出傳輸模式[11],且控制器支持PDMA(Peripherial Direct Memory Access)功能以訪問數據緩沖區。PDMA(外圍直接存儲器訪問)是一種高速數據傳輸技術,允許外圍設備直接訪問系統內存,從而實現高效率的數據傳輸。傳統的DMA 技術要求CPU 控制器介入數據傳輸的每個階段[12];而PDMA 則是完全由外圍設備控制傳輸的過程,因此能夠避免CPU 的負載,提高數據傳輸的效率和速度[13]。QSPI 時序說明如圖4 所示。

圖4 QSPI 時序說明
針對I2C 的雙線測試要求,設計將QSPI 作為主機,它的單個模塊MISO 和MOSI 引腳通過反向器相連接,作為SCL 信號,同理通過另一個模塊作為SDA 信號,即可獲得一個雙線同步收發一體的測試時鐘信號。
由于對于單片機的MOSI 是推挽輸出,而對于I2C 信號,要求開漏輸出,總線支持多個從機[3,14],當主機發送應答信號,對應從機可以拉低反饋,故中間連接一個開漏輸出的反向器(SN74LVC2G06)。單片機固件收到測試信號后先取反,再發送,通過漏極輸出反向器接收到測試數據,實現了開漏模式。由于開漏模式必須接上拉電阻才能輸出高電平,設計通過MOS 管控制不同上拉電阻接入I2C 信號,實現不同電阻值下信號質量測試。
信號通過PDMA 方式發送,不需要軟件參與,QSPI的每一位對應硬件測試指令的時間精度,所以最精確可以實現10 ns 的精度,同時上位機可以通過設置擴大MOSI 發送每一個bit 的時間,實現精度控制。固件采用32 bit 發送模式,由于發送buf 長度有限,單次發送數據量有限,可以通過修改分頻比實現數據量擴充。測試工裝執行系統如圖5 所示。

圖5 測試工裝執行系統
解析I2C 通信信號邏輯,提取特征模型,將I2C 指令分解為11 個部分,如表1 所示。

表1 邏輯編碼
由此,所有測試指令均可通過以下分解信號編碼得到,這就是本系統的邏輯編碼原理。
以SFF8472 協議為例,讀設備地址A2 下的80 地址寄存器,指令可以編碼為:
寫設備地址A2 下的7F 地址寄存器可以編碼為:
通過邏輯編碼后,下一步需要將邏輯指令轉化為01 數據發送給測試工裝,這就涉及時域編碼,通過以下指標控制I2C 信號時域波形。速率和步進作為已知參數。步進固定為10 ns 是由2.3 節單片機QSPI 模塊的bit精度決定。
針對一般的I2C 測試系統,設置比例系數如下:
以Step 為單位,在時域按位編碼測試指令,SDA 為通道1,SCL 為通道2,將數據以64 bit 一幀的方式編碼。SDA為通道1,長度為32 bit;SCL為通道2,長度為32 bit,分別編碼,結構如圖6 所示。

圖6 幀數據結構
數字化后通過USB 發送給測試工裝,再讀取返回值,通過反向編碼獲取到應答位、數據位值。由此完成時域編碼,如表2 所示。
上位機完成信號發送后,通過程控示波器實現信號的獲取和具體指標的反饋。通過SCPI 指令集的Set 控制指令定位捕捉窗口,通過Query 查詢指令返回時序參數[15]。上位機通過指令解析獲取當前測試指令總時長,再通過具體參數bit 位置定位到待測點。同時示波器的測量設置還可以測試信號過沖幅度、信號質量等。
測試系統設置了6 個模塊,分別針對標準時序、亂序、九時鐘、特殊時序、重復時序、過沖進行了系統全面測試。
由于測試涉及寄存器讀寫,故針對不同光模塊協議的用戶可寫區,設置了不同的待測區域,例如:SFF8472協議的A2 設備地址00 頁、8636 協議的A0 設備地址02 頁,CMIS 協議的A0 設備地址03 頁等。預寫數據后配置示波器trigger 采樣時間,發送測試指令,通過測試應答位確認從機反饋,通過數據回讀確認是否誤改,通過示波器返回波形數據判斷時間指標是否合格。
標準時序:測試I2C 協議下的讀寫邏輯和時序指標。
亂序:測試主機時序混亂、欠缺情況下從機的反饋。
九時鐘:測試主機阻塞后,發送9 個時鐘信號,從機是否能解鎖。
特殊時序:測試主機I2C 信號邊沿重合或者超極限情況下從機是否能正常反饋。
重復時序:長時間壓力測試,主機持續發送讀寫指令,測試從機抗壓能力。
過沖測試:測試I2C 信號的電性能,測試主機下沖幅度、從機應答信號電平等。
測試系統PC 軟件測試結果如圖7 所示。

圖7 測試系統軟件測試結果
表3展示了標準時序下的部分測試結果,系統可以在10 min內完成6個模塊的測試,極大提高了產品測試效率。

表3 測試結果
本文提出一種基于光模塊I2C 的自動化測試系統,利用MCU 的DMA 和QSPI 模塊實現了按bit 發送測試指令;并根據I2C 時序設計了一套自由編碼方式,可以實現多種測試環境搭建。系統可以實現100 kHz~1 MHz 的I2C 特性測試,也可以兼容SFF8472、SFF8636、CMIS 等多種光模塊協議,測試時序精度可達到10 ns,可以涵蓋所有I2C 測試需求,在光模塊相關產業有著良好的應用前景和價值。I2C 測試工裝與示波器等通過USB 連接,未來可以將系統集成化,進一步提升測試系統完整性。