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