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