魏榕山,錢振煌
(福州大學(xué) 物理與信息工程學(xué)院,福建 福州350116)
?
基于I2C總線的數(shù)?;旌想娐吩O(shè)計(jì)與驗(yàn)證
魏榕山,錢振煌
(福州大學(xué) 物理與信息工程學(xué)院,福建 福州350116)
模擬集成電路一般難以自動(dòng)校準(zhǔn),并且IO管角較多,為使其更加高效智能,文中提出一種基于I2C總線的數(shù)?;旌想娐?。利用I2C從機(jī)接口,對(duì)模擬控制寄存器組進(jìn)行讀寫,完成對(duì)芯片功能的控制。并采用System Verilog、隨機(jī)測(cè)試和覆蓋率收集等驗(yàn)證技術(shù)搭建電路驗(yàn)證平臺(tái),對(duì)驗(yàn)證結(jié)果進(jìn)行自動(dòng)化分析,使代碼覆蓋率達(dá)到97%以上。結(jié)果表明,電路不僅達(dá)到預(yù)期功能,還減少了芯片管角,使電路更加智能可控。
I2C總線;FPGA驗(yàn)證;數(shù)?;旌?/p>
I2C總線(Inter Integrated Circuit)是飛利浦公司提出的一種雙向半雙工協(xié)議,它與其他的總線相比突出的優(yōu)勢(shì)就是接口數(shù)少,通訊效率高[1-5]?,F(xiàn)如今,I2C總線被廣泛使用,其中包括德州儀器、英特爾、美信等[6]。本文基于I2C總線協(xié)議設(shè)計(jì)了一種用于控制低壓差線性穩(wěn)壓器(Low Dropout Regulator,LDO)的從機(jī)接口電路,使模擬控制寄存器組可供片外進(jìn)行讀寫,同時(shí)也減少了IO管腳個(gè)數(shù)。
1.1 I2C從機(jī)數(shù)模混合電路結(jié)構(gòu)
如圖1所示,整體數(shù)?;旌想娐酚蓮臋C(jī)接口模塊和LDO模擬電路模塊構(gòu)成。
圖1 I2C從機(jī)數(shù)?;旌想娐方Y(jié)構(gòu)圖
I2C從機(jī)接口電路包含數(shù)據(jù)緩存接口、模擬電路控制寄存器組和控制電路。
在電路運(yùn)行時(shí),芯片通過I2C總線的SCL和SDA和外界進(jìn)行通信。當(dāng)從機(jī)接收到讀操作后,數(shù)據(jù)從寄存器組流向數(shù)據(jù)緩存接口,然后通過I2C總線傳輸給主機(jī)。相反,如果是寫操作,數(shù)據(jù)從總線傳輸?shù)綌?shù)據(jù)緩存模塊,然后傳送給模擬寄存器組??刂齐娐穭t用于產(chǎn)生各個(gè)狀態(tài)所需要的跳邊信號(hào),讓數(shù)據(jù)的發(fā)送接收能夠有序的進(jìn)行。通過以上方式,可以實(shí)現(xiàn)對(duì)模擬控制寄存器組的讀寫。
在模擬電路中,模擬寄存器組的每一位都相當(dāng)于一個(gè)開關(guān),它們分別與帶隙基準(zhǔn)、電荷泵輸出電壓、時(shí)鐘占空比電路和模擬信號(hào)關(guān)鍵測(cè)試節(jié)點(diǎn)相連接,從而在一定程度上實(shí)現(xiàn)了LDO的可控可調(diào)。
1.2 I2C總線的讀寫操作
I2C總線由SCL和SDA兩條串行總線構(gòu)成,分別為時(shí)鐘線和數(shù)據(jù)線。在總線上發(fā)起通信的為主機(jī)(Master),被尋址的器件為從機(jī)(Slave)[7-8]。本文所設(shè)計(jì)的數(shù)?;旌想娐芬矊iT用于從機(jī)接口。
圖2 總線電平傳輸過程
圖2為總線電平傳輸過程,在數(shù)據(jù)傳輸時(shí),主機(jī)先向從機(jī)發(fā)送需要尋址的從機(jī)地址和讀寫位(RW),當(dāng)RW為高時(shí)代表讀,為低時(shí)代表寫。從機(jī)接收到這8位數(shù)據(jù)后,與自身的器件地址進(jìn)行對(duì)比,如果一致,則表示配比成功,從機(jī)把SDA上的信號(hào)拉低,發(fā)送應(yīng)答信號(hào)。
接著,主機(jī)收到從機(jī)的應(yīng)答信號(hào)后,開始向從機(jī)發(fā)送數(shù)據(jù),每發(fā)送完8位數(shù)據(jù)(DATA),主機(jī)將等待從機(jī)的應(yīng)答(ACK)信號(hào),如果應(yīng)答信號(hào)為低,則繼續(xù)發(fā)送,直到發(fā)送完畢。
1.3 I2C從機(jī)接口的設(shè)計(jì)
設(shè)計(jì)主要基于Verilog HDL語(yǔ)言,并采用狀態(tài)機(jī)的方法實(shí)現(xiàn)[9]。根據(jù)I2C總線協(xié)議的內(nèi)容,分為空閑、從機(jī)地址應(yīng)答、寄存器地址、寄存器地址應(yīng)答、數(shù)據(jù)和數(shù)據(jù)應(yīng)答6個(gè)狀態(tài)。
圖3 I2C從機(jī)電路接口狀態(tài)圖
如圖3所示,在開始時(shí),電路處于空閑狀態(tài),并實(shí)時(shí)監(jiān)測(cè)總線上的信號(hào),當(dāng)檢測(cè)到接收的數(shù)據(jù)與自身地址一致時(shí),電路進(jìn)入從機(jī)地址應(yīng)答狀態(tài)。此時(shí),從機(jī)將SDA總線拉低,根據(jù)主機(jī)發(fā)送的讀寫位(RW)判斷電路的狀態(tài)跳轉(zhuǎn)。如果RW位為高,則電路進(jìn)入數(shù)據(jù)狀態(tài);如果RW為低則進(jìn)入寄存器地址狀態(tài)。
電路在寄存器地址狀態(tài)時(shí),會(huì)把收到的寄存器地址保存,并進(jìn)入寄存器地址應(yīng)答狀態(tài),給主機(jī)發(fā)送應(yīng)答信號(hào)。
在應(yīng)答信號(hào)完成后,電路跳轉(zhuǎn)為數(shù)據(jù)狀態(tài),此狀態(tài)需要根據(jù)RW的值,進(jìn)行主機(jī)與從機(jī)之間的數(shù)據(jù)傳輸。如果RW為1,則從機(jī)向主機(jī)發(fā)送數(shù)據(jù);如果RW為0,則主機(jī)向從機(jī)發(fā)送。發(fā)送完8位數(shù)據(jù)后,狀態(tài)機(jī)自動(dòng)跳轉(zhuǎn)為數(shù)據(jù)應(yīng)答階段。此狀態(tài)將SDA信號(hào)拉低,告知主機(jī)這8位數(shù)據(jù)傳輸完畢。同時(shí),狀態(tài)機(jī)根據(jù)STO信號(hào)進(jìn)行狀態(tài)跳轉(zhuǎn),如果STO為0,電路進(jìn)入數(shù)據(jù)狀態(tài),繼續(xù)發(fā)送或接受數(shù)據(jù)。如果STO=1則表示傳輸完畢,狀態(tài)機(jī)跳轉(zhuǎn)為空閑狀態(tài)。
此設(shè)計(jì)基于System Verilog語(yǔ)言在Synopsys公司的VCS軟件,搭建了對(duì)I2C從機(jī)接口電路的行為級(jí)仿真平臺(tái),驗(yàn)證其功能的正確性和完整性。
2.1 I2C從機(jī)驗(yàn)證平臺(tái)的搭建
如圖4所示,仿真環(huán)境主要包括發(fā)生器、檢驗(yàn)器、驅(qū)動(dòng)器和檢測(cè)器[10]。
圖4 I2C從機(jī)驗(yàn)證平臺(tái)結(jié)構(gòu)圖
在測(cè)試開始,發(fā)生器隨機(jī)產(chǎn)生讀、寫命令,然后通過不同的命令生成訪問I2C從機(jī)所需要的從機(jī)地址、模擬寄存器組地址和數(shù)據(jù),用郵箱的方式分別將其發(fā)送給驅(qū)動(dòng)器和檢驗(yàn)器。驅(qū)動(dòng)器收到發(fā)生器的數(shù)據(jù)后,對(duì)讀寫數(shù)據(jù)進(jìn)行解析,將數(shù)據(jù)串行發(fā)送給待測(cè)電路。監(jiān)測(cè)器主要負(fù)責(zé)監(jiān)測(cè)被測(cè)電路的輸出,并將接收到的信號(hào)傳給檢驗(yàn)器[11]。檢驗(yàn)器將收到的信號(hào)值與期望值進(jìn)行比對(duì),判斷結(jié)果的正確性,最后將結(jié)果打印出來。
2.2 驗(yàn)證結(jié)果分析
圖5 仿真時(shí)序波形圖
圖5為驗(yàn)證平臺(tái)的仿真時(shí)序波形圖,SCL和SDA為時(shí)鐘線和數(shù)據(jù)線,mem_do_out0、mem_do_ou1、mem_do_out2、mem_do_out3、mem_do_out4分別為5組模擬控制電路寄存器組,每一組中包含8位寄存器。由圖中可以看出,寄存器組隨著SCL和SDA的變化,數(shù)據(jù)也發(fā)生改變,實(shí)現(xiàn)了對(duì)數(shù)據(jù)的讀寫功能。
2.3 I2C從機(jī)驗(yàn)證覆蓋率收集
對(duì)于驗(yàn)證本身主要看的指標(biāo)有功能覆蓋率(Function Coverage)和代碼覆蓋率(Code Coverage)[12]。從圖6可以看出,功能覆蓋率已經(jīng)達(dá)到100%。
圖6 I2C從機(jī)接口電路功能覆蓋率圖
圖7 I2C從機(jī)接口電路代碼覆蓋率圖
衡量驗(yàn)證進(jìn)展最簡(jiǎn)單的方式就是使用代碼覆蓋率[13]。從圖7中可以看出,代碼覆蓋率達(dá)到了97.38%。需要注意的是,驗(yàn)證功能有可能不夠完善,驗(yàn)證本身可能存在一些漏洞沒有檢測(cè)出來,所以也不能完全排除功能沒有任何問題。
2.4 FPGA驗(yàn)證
本文采用兩塊FPGA板模擬I2C的主機(jī)和從機(jī),對(duì)設(shè)計(jì)進(jìn)行驗(yàn)證[14]。SignalTap II能夠捕獲和顯示可編程單芯片系統(tǒng)(SOPC)設(shè)計(jì)中的實(shí)時(shí)信號(hào)狀態(tài),這樣開發(fā)者可以以系統(tǒng)級(jí)的速度觀察硬件和軟件的交互作用[15]。電路通過Quartus II編譯燒寫入DE2-115 FPGA開發(fā)板,使用SignalTap II軟件捕捉電路的時(shí)序波形。圖8為I2C從機(jī)接口電路FPGA時(shí)序圖。
工作過程:首先,主機(jī)尋址從機(jī)地址0xA0h,然后發(fā)送需要訪問的模擬寄存器地址0x01h,接著寫入數(shù)據(jù)0xA5h,最后將此寄存器的值讀出為0xA5h,由此可知,結(jié)果正確。
圖8 I2C從機(jī)接口電路FPGA時(shí)序
本文基于I2C總線,設(shè)計(jì)了一款用于模擬電路的I2C從機(jī)接口電路。采用System Verilog、隨機(jī)測(cè)試和覆蓋率收集等驗(yàn)證技術(shù)搭建的電路驗(yàn)證平臺(tái)測(cè)試結(jié)果表明,代碼覆蓋率達(dá)到97%以上,電路不僅達(dá)到預(yù)期功能,還減少了芯片管角,使模擬電路變得更加智能的同時(shí),也增加了它的可控性和可測(cè)性。
[1] 黃樂天. 數(shù)?;旌霞呻娐吩O(shè)計(jì)課程研究[J]. 實(shí)驗(yàn)科學(xué)與技術(shù), 2012(S1):226-229.
[2] 郭玲. 數(shù)?;旌想娐吩O(shè)計(jì)方法的研究及其在智能傳感器設(shè)計(jì)中的應(yīng)用[D]. 廣州:華南理工大學(xué), 2005.
[3] 魯斌. 數(shù)?;旌霞呻娐吩O(shè)計(jì)技術(shù)研究[D]. 合肥:合肥工業(yè)大學(xué), 2006.
[4] 董珍珍. 數(shù)模混合型濾波器設(shè)計(jì)及其仿真[D]. 西安:西安理工大學(xué), 2009.
[5] 路永坤. 用Verilog HDL實(shí)現(xiàn)I2C總線功能[J]. 電子技術(shù)應(yīng)用, 2004,30(4):67-69.
[6] 張鋮瑤. 用于數(shù)字輸出傳感器的I2C/SPI總線設(shè)計(jì)[D]. 哈爾濱:哈爾濱工業(yè)大學(xué), 2012.
[7] 牟浩. I2C總線控制器的設(shè)計(jì)[J]. 科協(xié)論壇, 2010(10):56-56.
[8] 林健磊,殷瑞祥. I2C總線串行數(shù)據(jù)接口的Verilog實(shí)現(xiàn)[J]. 微計(jì)算機(jī)信息,2007, 23(23):43-44.
[9] 王金明,楊吉斌. 數(shù)字系統(tǒng)設(shè)計(jì)與Verilog HDL[M]. 北京:電子工業(yè)出版社,2002.
[10] 楊鑫,徐偉俊,陳先勇,等. SystemVerilog中的隨機(jī)化激勵(lì)[J]. 中國(guó)集成電路,2007, 16(10):37-41.
[11] Keaveney M, Mcmahon A, O’Keeffe N, et al. The development of advanced verification environments using System Verilog[J]. Journal of Environmental Management, 2008, 87(3):325-330.
[12] 羅登富,趙建明. 基于覆蓋率的集成電路驗(yàn)證[J]. 現(xiàn)代電子技術(shù),2009, 32(14):115-119.
[13] 克里斯·斯皮爾.System Verilog 驗(yàn)證[M]. 北京:科學(xué)出版社,2009.
[14] 吳繼華,王誠(chéng).Altera FPGA/ CPLD 設(shè)計(jì):高級(jí)篇[M]. 北京:人民郵電出版社,2005.
[15] 郭佳佳,胡曉菁,王永良.使用SignalTapⅡ邏輯分析儀調(diào)試FPGA[J].今日電子,2005(5):45-47.
Design and Verification of Mixed-signal Circuits Based on the I2C Protocol
WEI Rongshan, QIAN Zhenhuang
(School of Physics and Information Engineering, Fuzhou University, Fuzhou 350116, China)
Generally, it’s difficult to calibrate analog integrated circuits and reduce their IO pins. In order to make the analog integrated circuit become more intelligent and efficient, a mixed-signal circuit based on I2C protocol was proposed, which made a set of registers be read and written. An I2C interface circuit verification environment was built by System Verilog, random testing and collecting coverage to automatically analyze the result, which made the code coverage rate reach more than 97% .The results showed that the circuit not only achieved the desired functionality, but also reduced the chip pins and made it more intelligent and controllable.
I2C protocol; FPGA verification; mixed Signal
10.16180/j.cnki.issn1007-7820.2016.12.003
2016- 03- 03
國(guó)家自然科學(xué)基金資助項(xiàng)目(61404030)
魏榕山(1980-),男,博士,副教授。研究方向:微納電子器件,集成電路設(shè)計(jì)。錢振煌(1989-),男,碩士研究生。研究方向:集成電路設(shè)計(jì)。
TN432
A
1007-7820(2016)12-009-03