I2C總線控制及基于FPGA的實(shí)現(xiàn)(共9頁)_第1頁
I2C總線控制及基于FPGA的實(shí)現(xiàn)(共9頁)_第2頁
I2C總線控制及基于FPGA的實(shí)現(xiàn)(共9頁)_第3頁
I2C總線控制及基于FPGA的實(shí)現(xiàn)(共9頁)_第4頁
I2C總線控制及基于FPGA的實(shí)現(xiàn)(共9頁)_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、I2C總線控制及基于FPGA的實(shí)現(xiàn) 摘 要根據(jù)串行擴(kuò)展的特點(diǎn),詳細(xì)描述了12C總線的結(jié)構(gòu)、原理和工作過程,通過舉例介紹了通過FPGA設(shè)計(jì)實(shí)現(xiàn)12C總線的基本思想,并給出了xlinx ise 61環(huán)境下仿真程序部分代碼和ModelSim軟件下的仿真時(shí)序圖。 關(guān)鍵詞12C總線;VHDL;FPGA 引言:在開發(fā)FPGA中,利用EDA工具設(shè)計(jì)芯片實(shí)現(xiàn)系統(tǒng)功能已經(jīng)成為支撐電子設(shè)計(jì)的通用平臺,并逐步向支持系統(tǒng)級的設(shè)計(jì)方向發(fā)展,各分立元件的連接和接口擴(kuò)展就顯得十分重要。擴(kuò)展的方法有兩種:一種是并行總線,另一種是串行總線。由于串行總線連線少,結(jié)構(gòu)簡單,往往不用專用的母板和插座而直接用導(dǎo)線連接各個(gè)設(shè)備即可。因此

2、,采用串行總線大大簡化了系統(tǒng)硬件設(shè)計(jì)。尤其是12C串行總線,它是具備多主機(jī)系統(tǒng)所需的包括裁決和高低速設(shè)備同步等功能的高性能串行總線,以其接口簡單、使用靈活等突出優(yōu)點(diǎn)在數(shù)字系統(tǒng)中獲得了廣泛的應(yīng)用。 1、幾種串行總線 雖然現(xiàn)代的微控制器和FPGA提供了大量的120插腳,并且SMD技術(shù)(表面安裝器件)也在一塊幾英寸大小的PCB上提供了盡可能多的插腳,但這并沒有影響串行總線連在電路板分立元件連接方面的應(yīng)用。除傳統(tǒng)的總線如12C和SPI(串行外圍接口)之外,還有在溫度計(jì)和智能按鍵等的靈敏傳感器方面廣泛應(yīng)用的Dallas 1Wire單總線等。 SPI通過快速ADC、DAC、E2PROM設(shè)備連接微控制器,分

3、離的輸入輸出插腳保證了數(shù)據(jù)高速率。由于協(xié)議中并沒有內(nèi)嵌式地址,因此總線上各個(gè)設(shè)備必須支持片選信號,每個(gè)從設(shè)備有一個(gè)被選輸入,主設(shè)備必須具有與其從屬設(shè)備數(shù)量一樣多的被選輸出,或者必須有一個(gè)外部解碼器。SPI允許簡單地連接移位寄存器之類的非智能外圍設(shè)備,連鎖式的移位寄存器可以實(shí)現(xiàn)大容量輸入輸出擴(kuò)展器。 Dallas單總線上的連接則必須具備高智能水平。在這個(gè)協(xié)議中,單總線通常要求外接一個(gè)47k左右的上拉電阻,用持續(xù)1到15s的低電平來傳送1,用持續(xù)60s到1201s的低電平來傳輸0。指令和數(shù)據(jù)通過這種方式傳輸?shù)綇脑O(shè)備??刂破鳛榱送桨l(fā)送一個(gè)“1”,從設(shè)備將其中一部分轉(zhuǎn)換為“O”,數(shù)據(jù)通過這種方式從設(shè)

4、備傳輸至控制器。 Philips公司早在1980年開發(fā)了I2C標(biāo)準(zhǔn),I2C總線是關(guān)注速度和復(fù)雜程度之間的很好的折衷,當(dāng)時(shí)只定義了100kHZt和400kHZ兩個(gè)傳輸速率,但并沒有規(guī)定單個(gè)比特的長度,所以在一個(gè)沒有諸如中斷限制的微控制器的系統(tǒng)中用軟件驅(qū)動I2C設(shè)備很容易實(shí)現(xiàn)。 I2C總線只使用兩根I20,就可以對一系列的I2C器件進(jìn)行控制,節(jié)省了I/O口,受到越來越多工程師的青睞。由于電接口的集電極開路特性,從設(shè)備可以在任意時(shí)刻連接或斷開而不會影響總線上的其它設(shè)備。I2C總線還包括了一個(gè)利用線與連接的仲裁機(jī)制,這就意味著真正的多主體總線可以實(shí)現(xiàn),在特定時(shí)間內(nèi)只有一個(gè)主控端能夠取得總線控制權(quán)。實(shí)際

5、上,如果兩個(gè)甚至更多的主體試圖在總線上傳遞信息(第一個(gè)產(chǎn)生“1”的同時(shí),其他主體產(chǎn)生“0”),它們將會失去主控權(quán)。同時(shí),如果有一臺從設(shè)備是低速設(shè)備,它將抑制時(shí)鐘線路延緩總線上所有事務(wù)。 基于以上原因,12C總線是一個(gè)控制FPGA器件的很好選擇,可以在FPGA上通過自定義邏輯來實(shí)現(xiàn)從接口。 2、I2C總線詳解 I2C是英文“Inter Integrated Circuit”的縮寫,中文意思是“集成電路之間”。I2C總線就是集成電路之間傳送時(shí)鐘脈沖與數(shù)據(jù)的公用線路。采用I2C總線控制就是將微處理器的SCL(串行時(shí)鐘)、SDA(串行數(shù)據(jù))總線與其它集成電路或存儲器連接起來,通過總線來交換信息,實(shí)行控

6、制。I2C總線最主要的優(yōu)點(diǎn)是其簡單性和有效 性。由于接口直接在組件之上,因此I2C總線占用的空間非常小,從而減少了電路板的空間和芯片管腳的數(shù)量,進(jìn)而降低了互聯(lián)成本。 I2C總線的男一個(gè)優(yōu)點(diǎn)是,它支持多主控(multimastering),其中任何能夠進(jìn)行發(fā)送和接收的設(shè)備都可以成為主控設(shè)備(在任何時(shí)間點(diǎn)上只能有一個(gè)主控設(shè)備)。一個(gè)主控設(shè)備能夠控制信號的傳輸和時(shí)鐘頻率。有大量的微處理器外圍設(shè)備可以附加到上面,通過120擴(kuò)展器(如PCF8574)來起動顯示控制器和E2PROM,通過一個(gè)12C器件關(guān)聯(lián)的存儲器總量沒有限制,可以從幾個(gè)字節(jié)到256kb甚至更多。 每個(gè)I2C器件都擁有一個(gè)唯一的7-bit

7、I2C地址,讓主控端知道通信傳輸?shù)膶ο笫钦l,通常7-bit中四個(gè)較重要的位(MSBtheMost Significant Bit)為固定的,并依器件本身性質(zhì)的分類區(qū)分,如1010即代表串行E2PROM。而其他三個(gè)較不重要的位(LSB),即A2、A1與A0則可以通過硬件電子引腳設(shè)定,并取得高達(dá)8個(gè)不同的12C地址組合,因此在同一個(gè)12C總線上可以有8個(gè)相同形式的器件運(yùn)作。這些引腳固定在Vcc高電平代表邏輯1,固定在接地低電壓則代表邏輯O,7 bit的選址方式可以實(shí)現(xiàn)總線上128個(gè)器件的組合,但由于部份地址設(shè)定保留給特殊指令應(yīng)用,因此實(shí)際上最高器件數(shù)大約為I20個(gè)。對連接到同一總線上的從設(shè)備數(shù)量的

8、限制是:總線的電容總和必須低于400 pF,大約20到30個(gè)器件或10m的傳輸長度,以符合上升與下降時(shí)間的要求。同時(shí)并聯(lián)有雙向12C總線緩沖器用來隔離總線上不同接線的電容,以實(shí)現(xiàn)更大(2000pF)與更長(2000 m)的總線結(jié)構(gòu)。 許多微控制器(如Cypress CY7C68013和Microchip PICl8Cxxxfamily)在芯片上包含了一個(gè)12C總線主外設(shè),如果沒有硬件接口,它可以控制一對I/O插腳用軟件來實(shí)現(xiàn)。而且許多編譯器提供了驅(qū)動程序來控制I2C設(shè)備,無論設(shè)備有沒有硬件接口。 圖1例示了在CCS c編譯器如何對PIC(外圍接口控制)微處理器上的I2C外圍設(shè)備的聲明。I2C庫

9、包含了實(shí)現(xiàn)I2C總線的函數(shù),#USE I2C保存I2C_START,I2C_STOP,I2CREAD,12C_WRITE和I2C POLL函數(shù)的結(jié)果直到下一個(gè)I2C進(jìn)程到來。軟件作用在NORFORCE_sW特定時(shí)產(chǎn)生。 I2C總線支持三種傳輸速度。早期設(shè)備的初始速率很低,支持100KHZ的低速模式和400KHZ的快速模式,目前已經(jīng)擴(kuò)展了34MHZ的高速模式,而且被更多的新設(shè)備所支持。其它選項(xiàng)用來規(guī)定I2C接口是否為主(從)接口,規(guī)定了采用硬件接口還是軟件仿真以及插腳是否被時(shí)鐘和數(shù)據(jù)所用。 3、12G總線連接 12C總線中的兩根線通常稱為SDA(串行數(shù)據(jù))和SCL (串行時(shí)鐘),它們分別用來傳輸

10、數(shù)據(jù)和時(shí)鐘信號。連接到這兩線的設(shè)備必須禁止ESD(Electro-Static discharge靜電放電)保護(hù)二極管嵌位輸入線信號到其本身的電源電壓。這使I2C總線能被不同電源電壓的設(shè)備共享。SDA和SCL上拉電阻必須連接到5V10。每個(gè)設(shè)備都要包含片內(nèi)濾波器以消除尖峰信號并改進(jìn)總線整體健壯性。如圖2所示。 I2C總線允許多主體配置,一個(gè)主體要釋放總線必須完全停止操縱SCL線。如果一個(gè)系統(tǒng)只有一個(gè)主設(shè)備且從設(shè)備是不要求時(shí)鐘擴(kuò)展的高速設(shè)備,則SCL上的上拉電阻可以取消且主設(shè)備可以用低電平和高電平驅(qū)動SCL線路。 二線協(xié)議是基于起、止?fàn)顟B(tài)識別的。起始信號就是在SCL線為高時(shí)SDA線從高到低;停止

11、信號則是在SCL線為高時(shí)SDA線從低到高;應(yīng)答信號是在SCL為高時(shí)SDA為低;非應(yīng)答信號相反,是在SCL為高時(shí)SDA為高。傳輸數(shù)據(jù)“0”和數(shù)據(jù)“1”與發(fā)送應(yīng)答位和非應(yīng)答位時(shí)序圖是相同的(圖3)。在其它所有時(shí)刻,只要SCLD在數(shù)據(jù)轉(zhuǎn)移階段是高電平,SDA就必須保持穩(wěn)定。SDA起動時(shí)間(SCL上升)的定義基于總線標(biāo)準(zhǔn)速率:在100kHZ總線上為200ns,在400kHZ總線上為100ns。 在一個(gè)起止?fàn)顟B(tài)之間的數(shù)據(jù)字節(jié)數(shù)沒有限制,唯一的要求是每個(gè)數(shù)據(jù)字節(jié)必須是得到確認(rèn)的,確認(rèn)狀態(tài)是在SDA上每一個(gè)8位字節(jié)后面的第9位用低電平表示,在一個(gè)寫周期中,從設(shè)備在數(shù)據(jù)字節(jié)中提供確認(rèn)信息;在一個(gè)讀周期中,主設(shè)

12、備提供除最后一個(gè)數(shù)據(jù)字節(jié)外的所有確認(rèn)信息。丟失認(rèn)證信息會導(dǎo)致事務(wù)終止。圖3畫出了I2C總線上幾個(gè)基本信號的時(shí)序,包括起始信號、停止信號、應(yīng)答信號、非應(yīng)答信號以及傳輸數(shù)據(jù)“0”和數(shù)據(jù)1”的時(shí)序。圖3還表不了一個(gè)完整的數(shù)據(jù)傳送過程,一個(gè)在I2C總線發(fā)送起始信號后,發(fā)送從設(shè)備的7位尋址地址和1位表示這次操作性質(zhì)的讀寫標(biāo)識位,在有應(yīng)答信號后開始傳送數(shù)據(jù),直到發(fā)送停止信號。數(shù)據(jù)是以字節(jié)為單位的。發(fā)送節(jié)點(diǎn)每發(fā)送1個(gè)字節(jié)就要檢測SDA線上有沒有收到應(yīng)答信號,有則繼續(xù)發(fā)送,否則將停止發(fā)送數(shù)據(jù)。 4、開發(fā)工具 技術(shù)進(jìn)步和高性能PC機(jī)的廣泛使用使工程人員和電子愛好者也能設(shè)計(jì)自定義芯片,而不僅僅只有大公司才能做到。

13、幾乎所有FPGA廠商已經(jīng)開發(fā)了自己的綜合設(shè)計(jì)軟件包。有的已經(jīng)在網(wǎng)絡(luò)上發(fā)布了免費(fèi)使用的軟件包。Xilinx的免費(fèi)WebPACK支持方案設(shè)計(jì)(圖表、VHDL和Verilog)并用功能強(qiáng)大的Mentor Graphics ModelSim進(jìn)行邏輯仿真。后面的設(shè)計(jì)很容易用虛擬示波器、邏輯狀態(tài)分析軟件和虛擬測試點(diǎn)等虛擬工具驗(yàn)證。 Xilinx軟件包允許將設(shè)計(jì)移置到它的不同芯片系列。包括Virtex,Spartan-II,Spartan-3,CoolRunner和XC9500 CPLDs。很容易就微處理器外圍設(shè)備移置到大的FPGA設(shè)備或普通的CPLD設(shè)備上。Spar-tan-II系列以較低的價(jià)位提供了足夠

14、的邏輯門數(shù),IO資源允許直接連接到12C總線。方案也可以移置到新的partan-3系列,不過由于這個(gè)系列不能禁止ESD保護(hù),IO配置必須重新定義。 Spartan-II具備禁止IO緩沖器內(nèi)上拉電阻和ESD保護(hù)二極管的能力。這使芯片因插腳能承受外部電阻上拉到5V電壓而可以在多電壓系統(tǒng)中使用。而Spartan一3系列的ESD保護(hù)二極管不能被禁止。這在單一電壓系統(tǒng)中沒有影響,但在多電壓系統(tǒng)中,必須用一對MOSFET(金屬氧化物半導(dǎo)體場效應(yīng)晶體管)晶體管分離電壓。圖4采用兩個(gè)N通道MOSFET將12C分離到5V和33V兩個(gè)范圍。 5FPGA設(shè)計(jì)應(yīng)用 舉一個(gè)簡單的例子,本例(圖5)中Revision為一個(gè)8位只讀寄存器,只有l(wèi)位輸出。12C總線模塊植入PGA,只需用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論