I2C總線(xiàn)接口設(shè)計(jì)管理論文

時(shí)間:2022-06-26 04:36:00

導(dǎo)語(yǔ):I2C總線(xiàn)接口設(shè)計(jì)管理論文一文來(lái)源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢(xún)客服老師,歡迎參考。

I2C總線(xiàn)接口設(shè)計(jì)管理論文

摘要:介紹了一種使用CPLD完成DSP芯片i2c總線(xiàn)接口的設(shè)計(jì)和實(shí)現(xiàn)方案,重點(diǎn)敘述了I2C核的設(shè)計(jì)思想。

關(guān)鍵詞:PWMSG3524控制器

帶有I2C總線(xiàn)接口的器件可以十分方便地將一個(gè)或多個(gè)單片機(jī)及外圍器件組成單片機(jī)系統(tǒng)。盡管這種總線(xiàn)結(jié)構(gòu)沒(méi)有并行總線(xiàn)那樣大的吞吐能力,但由于連接線(xiàn)和連接引腳少,因此其構(gòu)成的系統(tǒng)價(jià)格低、器件間總線(xiàn)連接簡(jiǎn)單、結(jié)構(gòu)緊湊,而且在總線(xiàn)上增加器件不影響系統(tǒng)的正常工作,系統(tǒng)修改和可擴(kuò)展性好。即使有不同時(shí)鐘速度的器件連接到總線(xiàn)上,也能很方便地確定總線(xiàn)的時(shí)鐘。

如今,為了提高系統(tǒng)的數(shù)據(jù)處理精度和處理速度,在家用電器、通訊設(shè)備及各類(lèi)電子產(chǎn)品中已廣泛應(yīng)用DSP芯片。但大多數(shù)的尚未提供I2C總線(xiàn)接口,本文將介紹一種基于CPLD的已實(shí)現(xiàn)的高速DSP的I2C總線(xiàn)接口方案。

圖1I2C總線(xiàn)接口電路結(jié)構(gòu)

1I2C通信協(xié)議

I2C總線(xiàn)是一種用于IC器件之間的二線(xiàn)制總線(xiàn)。它通過(guò)SDA(串行數(shù)據(jù)線(xiàn))及SCL(串行同步時(shí)鐘線(xiàn))兩根線(xiàn)在連到總線(xiàn)上的器件之間傳送信息,通過(guò)軟件尋址實(shí)現(xiàn)片選,減少了器件片選線(xiàn)的連接。CPU不僅能通過(guò)指令將某個(gè)功能單元電路掛靠或摘離總線(xiàn),還可對(duì)該單元的工作狀況進(jìn)行檢測(cè),從而實(shí)現(xiàn)對(duì)硬件系統(tǒng)的擴(kuò)展與控制。I2C總線(xiàn)接口電路結(jié)構(gòu)如圖1所示,I2C總線(xiàn)時(shí)序圖如圖2所示。

I2C總線(xiàn)根據(jù)器件的功能通過(guò)軟件程序使其可工作于發(fā)送(主)或接收(從)方式??偩€(xiàn)上主和從(即發(fā)送和接收)的關(guān)系不是一成不變的,而是取決于數(shù)據(jù)傳送的方向。SDA和SCL均為雙向I/O線(xiàn),通過(guò)上拉電阻接正電源。當(dāng)總線(xiàn)空閑時(shí),兩根線(xiàn)都是高電平。連接總線(xiàn)的器件的輸出級(jí)必須是集電極或漏極開(kāi)路的,以具有線(xiàn)“與”功能。I2C總線(xiàn)的數(shù)據(jù)傳送速率在標(biāo)準(zhǔn)工作方式下為100kbit/s,在快速方式下,最高傳送速率可達(dá)400kbit/s。

在數(shù)據(jù)傳送過(guò)程中,必須確認(rèn)數(shù)據(jù)傳送的開(kāi)始和結(jié)束信號(hào)(也稱(chēng)啟動(dòng)和停止信號(hào))。當(dāng)時(shí)鐘線(xiàn)SCL為高電平時(shí),數(shù)據(jù)線(xiàn)SDA由高電平跳變?yōu)榈碗娖絼t定義為“開(kāi)始”信號(hào);當(dāng)SCL為高電平時(shí),SDA由低電平跳變?yōu)楦唠娖絼t定義為“結(jié)束”信號(hào)。開(kāi)始和結(jié)束信號(hào)都由主器件產(chǎn)生。在開(kāi)始信號(hào)以后,總線(xiàn)即被認(rèn)為處于忙狀態(tài);在結(jié)束信號(hào)以后的一段時(shí)間內(nèi),總線(xiàn)被認(rèn)為是空閑狀態(tài)。

在I2C總線(xiàn)開(kāi)始信號(hào)后,依次送出器件地址和數(shù)據(jù),I2C總線(xiàn)上每次傳送的數(shù)據(jù)字節(jié)數(shù)不限,但每一個(gè)字節(jié)必須為8位,而且每個(gè)傳送的字節(jié)后面必須跟一個(gè)認(rèn)可位(第9位),也叫應(yīng)答位(ACK)。從器件的響應(yīng)信號(hào)結(jié)束后,SDA線(xiàn)返回高電平,進(jìn)入下一個(gè)傳送周期。

2設(shè)計(jì)方案

本文以DSP芯片ADSP21992與時(shí)鐘芯片PCF8583的控制接口為例,說(shuō)明基于CPLD的I2C總線(xiàn)接口設(shè)計(jì)方案。

ADSP21992是2003年最新推出的160MIPS、帶CAN通信接口的適合于高精度工業(yè)控制和信號(hào)處理的高性能DSP芯片。它帶有48K片內(nèi)RAM、SPORT通信接口、SPI通信接口、8通道14位A/D轉(zhuǎn)換器以及PWM等。

PCF8583是一款帶有256字節(jié)靜態(tài)CMOSRAM的時(shí)鐘/日歷芯片。地址和數(shù)據(jù)嚴(yán)格按照雙向雙線(xiàn)制I2C總線(xiàn)協(xié)議傳輸。內(nèi)置地址寄存器在每次讀/寫(xiě)后自動(dòng)遞增。

2.1系統(tǒng)結(jié)構(gòu)設(shè)計(jì)

系統(tǒng)的基本功能是通過(guò)CPLD的I2C總線(xiàn)接口完成ADSP21992(主控芯片)與PCF8583的數(shù)據(jù)交換。系統(tǒng)框圖如圖3所示。

系統(tǒng)主要由兩個(gè)部分組成:一是DSP與CPLD的接口;另一是I2C核。為了能在DSP指定的時(shí)刻讀/寫(xiě)PCF8583的數(shù)據(jù),使用DSP的讀寫(xiě)信號(hào)、同步時(shí)鐘和最高位地址控制數(shù)據(jù)的傳輸。最高位地址作為控制信號(hào)是因?yàn)镈SP的I/O口比較少,必須優(yōu)先供應(yīng)給其它外設(shè),因此用它來(lái)產(chǎn)生DSP提供給I2C核的片選信號(hào)。而DSP的地址總線(xiàn)位數(shù)較多,最高位一般使用不到,這樣正好可以充分利用資源。

2.2I2C核

I2C核原理示意圖如圖4所示。

整個(gè)I2C核由控制模塊和I/O模塊構(gòu)成。其中,控制模塊包括控制信號(hào)發(fā)生部分和時(shí)鐘開(kāi)關(guān),I/O模塊包括數(shù)據(jù)緩存和同步時(shí)鐘緩存。

當(dāng)DSP的最高地址位出現(xiàn)一個(gè)有效信號(hào)時(shí),便會(huì)使I2C核內(nèi)的觸發(fā)器產(chǎn)生一個(gè)全局使能信號(hào)EN?熏它將會(huì)啟動(dòng)時(shí)鐘、計(jì)數(shù)器和其它控制信號(hào),但數(shù)據(jù)不會(huì)出現(xiàn)交換。如果此時(shí)DSP的讀/寫(xiě)同步產(chǎn)生,則會(huì)啟動(dòng)相應(yīng)的讀/寫(xiě)進(jìn)程,進(jìn)行數(shù)據(jù)傳輸。

I2C核的關(guān)鍵技術(shù)是:

①用計(jì)數(shù)器和全局使能信號(hào)EN配合觸發(fā)進(jìn)程。

由于I2C核的片選信號(hào)EN是由觸發(fā)產(chǎn)生的,不能象電平信號(hào)一樣由DSP的I/O控制,因此只能通過(guò)精確的計(jì)數(shù)器定時(shí)和讀/寫(xiě)使能信號(hào)共同判別控制。

讀/寫(xiě)使能信號(hào)WR_EN/RD_EN也象EN那樣由觸發(fā)產(chǎn)生,因此也要用同樣的方法判別。

②同步時(shí)鐘的產(chǎn)生。

從圖2中可以看到,數(shù)據(jù)在同步時(shí)鐘的高電平脈沖時(shí)必須保持穩(wěn)定,如果此時(shí)發(fā)生變化將會(huì)被視為一個(gè)控制信號(hào),而通信也會(huì)被中斷。因此,同步時(shí)鐘的高電平脈沖一定要在有效數(shù)據(jù)的中間出現(xiàn)。而所需的控制信號(hào)必須在同步時(shí)鐘正脈沖的時(shí)候出現(xiàn)。

③對(duì)數(shù)據(jù)總線(xiàn)進(jìn)行三態(tài)設(shè)置。

因?yàn)镾DA和DSP_DATA都是雙向數(shù)據(jù)線(xiàn),在寫(xiě)SDA和DSP_DATA的進(jìn)程中必須設(shè)置高阻態(tài),否則會(huì)出現(xiàn)數(shù)據(jù)線(xiàn)狀態(tài)“不確定”。

圖5I2C核工作時(shí)序圖

2.3DSP與CPLD的接口模塊

根據(jù)DSP的時(shí)序,DSP與CPLD之間必須根據(jù)雙方(ADSP21992和PCF8583)的時(shí)序制定一個(gè)握手協(xié)議。當(dāng)讀程序時(shí),由于I2C總線(xiàn)協(xié)議只能支持最高400kbit/s的傳輸速率,而DSP的同步時(shí)鐘可達(dá)幾十兆赫。因此,DSP必須等到I2C核把PCF8583的數(shù)據(jù)讀到CPLD后才能獲得正確的數(shù)據(jù)(這里可以通過(guò)設(shè)立一個(gè)忙標(biāo)志來(lái)實(shí)現(xiàn))。而當(dāng)寫(xiě)程序時(shí),為了節(jié)約CPLD的資源(數(shù)據(jù)緩存特別占用資源),可以設(shè)置DSP定時(shí)輸出數(shù)據(jù)給I2C核,讓I2C核的一次只送一個(gè)數(shù)據(jù)。

2.4硬件設(shè)計(jì)

此I2C核可外掛多個(gè)帶有I2C總線(xiàn)接口的芯片,可以通過(guò)發(fā)送不同的器件地址來(lái)選擇。SDA和SCL線(xiàn)必須接上拉電阻。此外,同步時(shí)鐘不能太高,否則會(huì)影響數(shù)據(jù)傳輸?shù)姆€(wěn)定性。

2.5時(shí)序

(1)I2C核時(shí)序

以寫(xiě)為例,I2C核時(shí)序如圖5所示。

(2)PCF8583時(shí)序

PCF8583的數(shù)據(jù)是8bit一個(gè)存儲(chǔ)單元,共256個(gè)字節(jié),所以只需要8位地址,而且器件本身有兩種尋址方式:一種是從指定地址開(kāi)始遞增尋址,另一種是從首地址開(kāi)始遞增尋址。兩種尋址方式的時(shí)序是不一樣的,如圖6所示。

圖6PCF8583時(shí)序圖

3實(shí)現(xiàn)方法

本系統(tǒng)是選用ALTERA公司CPLD7000S系列EPM7128S芯片,并基于MAXPLUSII開(kāi)發(fā)的。I2C核采用VHDL語(yǔ)言編寫(xiě),使用SYNPLIFY編譯、綜合,用AHDL繪成圖表,用MAXPLUSII仿真和布局。DSP采用VISUALDSP++2.0編寫(xiě)。最后分別通過(guò)JTAG口下載到芯片并聯(lián)機(jī)調(diào)試成功。

隨著DSP芯片和I2C通信方式的廣泛應(yīng)用,它們之間的接口問(wèn)題必須得到解決。本文提出的解決方案具有非常好的可移植性和產(chǎn)品開(kāi)發(fā)能力。本系統(tǒng)既可以作為一個(gè)單獨(dú)的系統(tǒng)運(yùn)行,又可以作為一個(gè)通信模塊植入一個(gè)大系統(tǒng)中,而其中的I2C核又是一個(gè)可移植IP核。利用CPLD的邏輯可編程性,還可以在其剩下的資源中再開(kāi)發(fā)所需的邏輯器件,既能降低硬件成本又能大大減小系統(tǒng)主板的面積,使電路的設(shè)計(jì)更具靈活性。