【摘要】在以51單片機為核的小型電路設計中,沒有足夠的I/O端口與內(nèi)部時鐘中斷實現(xiàn)I2C總線功能。本文運用VHDL語言對FPGA進行必要的編程,在不影響51單片機地址分配的同時能夠?qū)?位并行數(shù)據(jù)轉(zhuǎn)化為符合I2C總線協(xié)議的串行數(shù)據(jù),實現(xiàn)I2C主機控制器功能。同時,應用MaxPlus軟件對設計進行時序仿真,分析設計可行性與存在的不足,該設計能夠滿足預定目標,拓展FPGA應用。
【關鍵詞】I2C總線;FPGA設計;MaxPlus仿真
Abstract:In a small circuit nuclear design based on 51 SCM,no I/O port enoughand internal clock interrupt to realize I2C bus function.In this paper,the use of VHDL language programming necessary for FPGA without affecting the 51 SCM also addresses are assigned to 8 bit paralleldata into serial data with I2C bus protocol,iIplementation of I2C host controller function.
Key words:I2C Bus;FPGA design;MaxPlus emluator
1.引言
I2C總線是一種常見的數(shù)據(jù)總線格式,在電路設計中經(jīng)常使用,其優(yōu)點是接口結構簡單,數(shù)據(jù)傳輸快,實現(xiàn)簡單。但是,在以51單片機為核的小型電路設計中,沒有專門的I2C總線控制端口,因此迫切需要找到一種能夠?qū)崿F(xiàn)I2C總線主機控制器的設計方案。本文在51單片機數(shù)據(jù)總線與地址總線的復用的基礎上,對FPGA進行適當編程,實現(xiàn)I2C主機控制器功能。該方案取代了使用專門的I2C總線轉(zhuǎn)換芯片的方法,節(jié)約了成本,同時能夠滿足地址總線的有效分配,拓展了FPGA的應用范圍。通過運用MaxPlus軟件對FPGA器件進行時序仿真后,分析了確認原該電路邏輯正確,實現(xiàn)的可行性。進而驗證了該方法是可行的。
2.I2C總線協(xié)議簡介與VHDL語言簡介
I2C總線以SDA由高到低電平作為起始條件,依次發(fā)送從機地址(7位地址或10位地址),與8位串行數(shù)據(jù)信息,以SDA由低到高電平作為結束條件。7位地址主機數(shù)據(jù)傳輸格式如圖1所示[1]。
圖1 I2C總線主機數(shù)據(jù)傳輸圖
VHDL語言是進行大型FPGA工程設計時最常用的硬件編程語言。VHDL采用IEEE的標準,語法簡單,通俗易懂。[2]
3.實現(xiàn)原理與時序分析
3.1 I2C總線主機控制器實現(xiàn)原理分析
在51單片機地址總線與讀/寫信號的共同控制下,接通FPGA內(nèi)部片選信號,對8位并行數(shù)據(jù)進行鎖存,選通I2C功能模塊。I2C功能模塊將并行數(shù)據(jù)轉(zhuǎn)換為符合I2C總線協(xié)議的串行數(shù)據(jù),并將忙/閑信號反饋給上級。三個模塊均用VHDL硬件語言編寫[3],F(xiàn)PGA內(nèi)部電路原理如圖2所示。
圖2 FPGA內(nèi)部原理圖
3.2 I2C總線主機控制器時序分析
使用FPGA實現(xiàn)I2C總線數(shù)據(jù)傳輸功能,主要考慮數(shù)據(jù)傳輸時序是否符合I2C總線協(xié)議與每個功能模塊內(nèi)部延時,分析電路設計的可行性。應用MaxPlus對I2C總線主機控制器核心模塊進行分析,其時序如圖3所示。
圖3 I2C核心模塊時序分析圖
該功能模塊實現(xiàn)了I2C總線開始、數(shù)據(jù)傳輸、結束功能,F(xiàn)PGA上電約20ns后才能工作正常,經(jīng)試驗,CLK的最小周期約為30ns,即I2C總線最大傳輸速率約為1.67×104bit/s,只能適應低速模式;內(nèi)部延時約為4.5ns。數(shù)據(jù)鎖存與狀態(tài)分析模塊內(nèi)部時序如圖4所示,該模塊內(nèi)部有6ns延時。
圖4 數(shù)據(jù)鎖存與狀態(tài)分析模塊時序圖
將三個模塊按功能順序依次連接好,進行系統(tǒng)聯(lián)調(diào),發(fā)現(xiàn)占用硬件資源過多,無法正常編譯。將第一部分功能與第二部分功能合并,即可實現(xiàn)I2C總線主機控制器功能。
4.結論
使用FPGA在51單片機數(shù)據(jù)總線、地址總線和讀/寫信號控制下實現(xiàn)I2C總線主機控制器功能是可行的。但是,其數(shù)據(jù)傳輸速率比較慢,占用硬件資源比較大,只能實現(xiàn)簡單的地址總線分配功能。同時,在設計時,沒有考慮多設備共用時總線仲裁問題與從機應答機制。
參考文獻
[1]VERSION2.1,THE I2C-BUS SPECIFICSTION[S].
[2]祁曉磊,蔡學良,孫德瑋.用VerilogDHL進行FPGA設計的原則與方法[J].電子測試,2008.
[3]楊曉慧,楊旭.FPGA系統(tǒng)設計與實例[M].北京:人民郵電出版社,2010.
作者簡介:劉蘊韜(1989—),男,湖北襄樊人,助理工程師,研究方向:自動化。