梁澤雨,潘 晴,鐘小蕓
LIANG Ze-yu, PANG Qing, ZHONG Xiao-yun
(廣東工業(yè)大學 信息工程學院,廣州 541004)
IIC總線是由Philips公司開發(fā)的一種用于芯片間通訊的串行傳輸總線,它由串行時鐘SCL和數(shù)據(jù)線SDA實現(xiàn)全雙工數(shù)據(jù)傳送[1]。因為它具有接線少、傳輸數(shù)據(jù)快速準確、允許多主機控制、具有仲裁和時鐘同步等特點,被越來越多的廠家和開發(fā)人員使用[2]。對于每一款有IIC接口的芯片,其芯片手冊標明其對時序的要求,芯片沒有達到其所要求的值,則為不合格的芯片。
市場上有很多IIC接口的芯片。隨著芯片集成度的提高和功能的不斷增強,IIC接口芯片的驗證越來越復雜。據(jù)統(tǒng)計調查,芯片的驗證的工作量占據(jù)芯片設計周期的70%以上[3]。因此提高芯片驗證的準確度與效率意義重大。由于中國芯片產業(yè)起步比較晚,目前市場上并沒有專門測試IIC接口的工具。傳統(tǒng)芯片的IIC接口驗證,通過人手和人眼在示波器觀察和測量SDA、SCL兩路信號,這類測試存在測試流程復雜、工作量大、測試項單一的缺點。并且,市場上的示波器精度不一,當示波器精度不高時測試誤差很大,達不到測試的目的。本文提出的是一種基于FPGA平臺的IIC測試系統(tǒng),該系統(tǒng)率先通過設計了碼型發(fā)送器與碼型接收器,構造了一個強大的IIC測試系統(tǒng),該系統(tǒng)的測試項達二十多項,測試項全面且工作量大大減少。整個測試流程在PC機通過使用TCL腳本控制系統(tǒng)工作,實現(xiàn)測試全自動化。該系統(tǒng)測試準確可靠并且完全擺脫對示波器精度的依懶,不僅能夠實現(xiàn)IIC波形的重現(xiàn),并且能在示波器精度不高時仍能得到精確的測試結果。
碼型為本文定義的一種數(shù)據(jù)幀結構,由32位二進制數(shù)組成,高兩位分別是SCL和SDA,中間三位為保留位,低27位為時間計數(shù)值,即為SCL和SDA電平狀態(tài)的持續(xù)時間,如圖1所示。SCL中三拍確定SDA的一位,如圖2所示,SCL線的1、2、3拍確定SDA的一位低電平,4、5、6拍確立SDA的一位高電平。依此類推,通過相應地改變SCL三個拍的值,即可實現(xiàn)數(shù)據(jù)建立時間,數(shù)據(jù)保持時間,SCL高低電平等測試項的改變。如圖3為數(shù)據(jù)為60ns的數(shù)據(jù)保持時間的碼型波形。碼型的提出,只需用FPGA構造一個碼型發(fā)送器與碼型接收器即可實現(xiàn)對IIC測試硬件模塊的設計,大大降低了FPGA生成模塊的復雜度,本文只需構造不同的碼型即可達到相應的IIC測試項測試的目的。本文的測試項由IIC的協(xié)議規(guī)范提出,測試項全面,幾乎覆蓋了IIC的所有性能測試,采用遍歷的方法對IIC的標準時序容忍度、各種異常進行測試。
圖1 為碼型數(shù)據(jù)幀結構
圖2 SCL和SDA的碼型關系圖
圖3 60ns數(shù)據(jù)保持時間的碼型圖
Master模式即待測芯片工作在主模式,F(xiàn)PGA作為碼型采集器,采集IIC總線上數(shù)據(jù)和從器件響應器,產生應答信號;Slave模式即待測芯片工作在從模式,F(xiàn)PGA工作在主模式時,一方面FPGA作為碼型發(fā)送器,將碼型發(fā)送給待測芯片;另一方面FPGA作為碼型采集器,采集IIC總線的數(shù)據(jù)。
系統(tǒng)采用FPGA平臺作為數(shù)據(jù)處理的核心,F(xiàn)PGA具有強大的時序處理能力,目前己經(jīng)廣泛應用于工程設計中,如CCD采集系統(tǒng)[4]、半導體激光電流電壓測試系統(tǒng)[5]等。該系統(tǒng)的各個模塊均在FPGA上采用Verilog代碼綜合而成,主架構為由LOCALBUS_TO_IBUS模塊和時鐘分頻模塊構成,該模塊主要負責與PC機進行數(shù)據(jù)交換以及為其掛接的各個模塊提供時鐘分頻,系統(tǒng)具有可擴展性,各類的總線模塊都可掛接在此模塊中。系統(tǒng)采用200M的時鐘頻率,采樣精度為5ns。系統(tǒng)根據(jù)IIC碼型發(fā)送器模塊和IIC碼型接收器模塊采集IIC總線上的數(shù)據(jù)和往IIC總線發(fā)送碼數(shù)據(jù)達到對IIC總線的測試。如圖4所示為系統(tǒng)的模塊圖。
圖4 系統(tǒng)的模塊圖
IIC碼型發(fā)送器主要實現(xiàn)對各種碼型的發(fā)送從而達到控制IIC總線的目的。碼型數(shù)據(jù)存在txt文檔中,TCL腳本將txt文檔轉為.bin文件通過TFTP下到碼型發(fā)送器的FIFO中去。FIFO是一種先進先出的電路,常用于存儲和緩存在兩個時鐘之間的數(shù)據(jù)傳輸[6]。FIFO能克服由時鐘之間的時鐘周期不同步造成的數(shù)據(jù)丟失問題,能有效地控制亞穩(wěn)態(tài)的發(fā)生。將FIFO中的碼型數(shù)據(jù)幀結構隨時鐘脈沖提取出來,高兩位賦給SCL,SDA,低27位賦給27位的計數(shù)器。高兩位控制SCL和SDA的狀態(tài),27位的計數(shù)器控制SCL和SDA線持續(xù)的時間,通過統(tǒng)一的200M時鐘控制各個小模塊工作,從而達到將碼型發(fā)送到IIC總線中去,如圖5所示為碼型發(fā)送器模塊結構框圖。
圖5 碼型發(fā)送器模塊結構圖
IIC碼型接收模塊主要實現(xiàn)IIC時序的檢測與采集的目的。它采用上升或下降沿檢測的方法,每當遇到上升沿或下降沿就會產生觸發(fā)信號將SCL和SDA的狀態(tài)以及持續(xù)的時間保存下來,將其構造成碼型數(shù)據(jù)幀結構存到FIFO當中去,通過TCL腳本將FIFO中的數(shù)據(jù)取回PC機分析處理。如圖6所示為碼型接收器模塊結構框圖。
圖6 碼型接收器模塊結構框圖
系統(tǒng)的測試流程采用TCL腳本控制實現(xiàn)全自動化。TCL是一種解釋執(zhí)行腳本語言,比c/c++有著更高抽象層次的語言,TCL的結構簡單,容易掌握,兼容Linux/Unix、Window操作系統(tǒng)。通過編寫腳本語言,即可方便控制下位機的操作。首先是在EXCEL表格中讀入要進行測試的速率,本系統(tǒng)支持IIC多種速率的測試。其次是轉入相應的測試速率,讀入相應的測度速率中要測試的項,并對系統(tǒng)進行初始配置,啟動測試。最后是將FPGA采到的碼型數(shù)據(jù)調用MFC軟件分析并得到最終的測試結果并寫回到EXCEL表格中,測試完成。TCL腳本的主要控制流程圖如圖7所示。
圖7 TCL腳本程序框架流程圖
測主即待測芯片工作在主模式,F(xiàn)PGA充當數(shù)據(jù)采集器,采集待測芯片與IIC從設備的通信數(shù)據(jù)。待測芯片向IIC從設備發(fā)送數(shù)據(jù),通過FPGA采集總線上的數(shù)據(jù)并進行分析,如下圖所示,待測芯片向IIC從器件發(fā)送0x0123數(shù)據(jù),其中IIC從器件設備地址為0xc,圖8為MFC軟件分析出來的波形,圖9為示波器實際采集到的波形,上面的一路信號表示SDA,下面一路信號表示SCL,可以看出MFC實際分析出來的波形與示波器實際采集到的波形幾乎一樣。圖10為MFC經(jīng)過軟件分析后的最終結果,其精度為5ns級。該項測試證明了IIC測試系統(tǒng)的可靠性、精度高的優(yōu)點,并且該系統(tǒng)不依賴示波器的精度,測試結果能寫回EXCEL表格當中,整個測試流程全自動化。不僅能夠實現(xiàn)對IIC波形的重現(xiàn),而且能夠得到精確的測試結果。
圖8 MFC軟件分析出的波形圖
圖9 示波器實際采到的值
圖10 測試的最終結果圖
測從即為待測芯片工作在從模式,F(xiàn)PGA工作在主模式,F(xiàn)PGA將各種碼型激勵發(fā)送給待測芯片。測從分為標準時序的測試和異常測試。
1)標準時序測試
標準時序的測試就是對IIC的起始條件建立時間、起始條件保持時間、數(shù)據(jù)建立時間等測試項的測試,通過遍歷方式來構造不同的測試項的時間容忍度,判斷待測芯片是否能正常讀寫數(shù)據(jù)。例如對數(shù)據(jù)建立時間容忍度的測試,IIC協(xié)議規(guī)范為數(shù)據(jù)保持時間不少于300ns。由此構造數(shù)據(jù)保持時間為:400ns,350ns,300ns,250ns,200ns,150ns,100ns,50ns的碼型,看待測芯片是否能產生應答,如圖11所示為MFC軟件的波形分析圖為50ns的數(shù)據(jù)保持時間碼型圖,黃色信號線為碼型發(fā)送器發(fā)出的數(shù)據(jù),綠色信號線為碼型接收器檢測到的信號,由圖可看出MFC檢測到的時間保持時間為65ns,誤差僅為15ns。在綠色信號線中,第9個時鐘上的數(shù)據(jù),產生了下拉,說明待測芯片能應答,表示待測芯片支持50ns的數(shù)據(jù)保持時間容忍度,該測試項的最終測試結果會在相應的EXCEL表格中寫上pass,如圖12所示。該項測試證明了IIC測試系統(tǒng)通過將不同的碼型發(fā)給待測芯片并判斷待測芯片是否能產生應答,從而得出測試結果。由實驗可看出,該IIC測試系統(tǒng)精度高誤差小,最高精度可達5ns。
圖11 測試的MFC軟件分析圖
圖12 測試最終結果圖
2)異常測試
異常測試就是通過構造各種異常,例如:讀功能ACK異常,寫功能ACK異常,非法幀格式異常等,通過構造異常碼型來判斷待測芯片是否能響應。如圖13所示為多停止條件的異常測試,黃色信號為發(fā)出去的碼型,綠色信號為檢測到的碼型,由圖中可得,經(jīng)過連續(xù)三個停止信號后開始進行地址數(shù)據(jù)的傳輸,所圖可得待測芯片遇多停止條件后,能正常讀寫數(shù)據(jù)。該測試項說明了本系統(tǒng)能對IIC所能出現(xiàn)的各種異常進行測試,只需改變各種碼型即可實現(xiàn)對IIC的各種異常測試,功能強大,測試項全面。
圖13 異常測試的MFC軟件分析圖
本文提出了一種基于FPGA的IIC接口的測試系統(tǒng),其設計思路新穎,避免了硬件電路的改變,所有測試的變化在于碼型。該系統(tǒng)通過實驗證明了系統(tǒng)可靠性與精度高,并且系統(tǒng)的整個測試實現(xiàn)全自動化,大大提高了測試效率。該系統(tǒng)徹底擺脫了對示波器精度的依賴,不僅能實現(xiàn)對IIC波形的重現(xiàn),而且能得出精確的測試結果。本系統(tǒng)雖然只針對IIC測試,但是其設計思路具可推廣性,該系統(tǒng)可擴展成多總線接口的測試系統(tǒng)。該系統(tǒng)的提出,將對整個芯片測試領域有很大的推動作用。
[1]陳光建,賈金玲,基于單片機I2C總線系統(tǒng)設計[J].儀器儀表學報,2006,27(6):2466-2472.
[2]季宏鋒,吳軍輝,徐立鴻,總線技術及應用實例[J].自動化與儀表,2002,04(21):21-23.
[3]夏雷,基于TCL語言的系統(tǒng)配置自動化測試腳本設計與實施[D].北京郵電大學,2007.
[4]劉爽,趙凱生,基于ARM和FPGA的嵌入式CCD采集系統(tǒng)[J].光電子激光.2007,18(11):1296-1298.
[5]楊明偉,許文海,顧慧萍,融入FPGA技術的半導體激光器功率-電流-電壓測試系統(tǒng)[J].光電子激光.2005,16(3):344-353
[6]劉祥遠,陳書明,一種高性能異步FIFO 結構[J].電子學報,2007,12(11).