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