- 相關(guān)推薦
基于VHDL的I2C總線控制核設(shè)計(jì)
摘要:從狀態(tài)機(jī)的角度,介紹一種I2C控制核的VHDL設(shè)計(jì)方法。將其嵌入到FPGA中,用于實(shí)現(xiàn)與TMS320C6000系列DSP的接口,并配合DSP的軟件完成對視頻采集與顯示處理系統(tǒng)中數(shù)字視頻編、解碼器工作模式寄存器的配置及其狀態(tài)查詢。著重介紹I2C控制核的總體設(shè)計(jì)方案,詳細(xì)描述其內(nèi)部命令狀態(tài)機(jī)和時(shí)序狀態(tài)機(jī)的工作原理及相應(yīng)的VHDL代碼。此外,介紹I2C控制核與DSP相互通信中斷處理機(jī)制的VHDL實(shí)現(xiàn)方法。最后,給出在Xilinx公司的ISE6.1 ModelSimXE5.7c軟件平臺中進(jìn)行EDA的綜合結(jié)果與時(shí)序仿真圖。引言
I2C總線是雙向、兩線、串行、多主控(multi-master)接口標(biāo)準(zhǔn),具有總線仲裁機(jī)制,非常適合在器件之間進(jìn)行近距離、非經(jīng)常性的數(shù)據(jù)通信。由于其使用兩線的硬件接口簡單,I2C總線的應(yīng)用越來越廣泛。實(shí)現(xiàn)I2C總線通信協(xié)議主要有兩種方法:①利用MCU對兩根I/O口線進(jìn)行軟件編程,模擬I2C總線的SCL和SDA時(shí)序要求;②使用專用I2C總線控制核,但受其主機(jī)(host)接口方式和時(shí)鐘頻率的限制,在有些場合應(yīng)用并不方便。
圖1
在我們開發(fā)的基于DSP的視頻采集與顯示處理系統(tǒng)中,為了滿足數(shù)字視頻信號傳輸帶寬及圖像處理算法速度的要求,選擇了TI公司的32位高速、高性能DSP TMS320C6711(簡稱C6711)芯片(CPU時(shí)鐘150MHz,外圍存儲器接口EMIF時(shí)鐘100MHz)作為處理核心;外圍加上FPGA和數(shù)字視頻編碼器與解碼器,實(shí)現(xiàn)對標(biāo)準(zhǔn)復(fù)合視頻信號的采集、處理和視頻顯示任務(wù)。由于C6711沒有可以單獨(dú)控制的I/O口線,所以不能使用①的方法;由于外圍擴(kuò)展存儲器接口(EMIF)工作在100MHz,也不易實(shí)現(xiàn)②的方法,從系統(tǒng)小型化,充分利用FPGA的邏輯資源,提高硬件系統(tǒng)集成度的角度出發(fā),選定在FPGA內(nèi)自行設(shè)計(jì)I2C控制核的方法,實(shí)現(xiàn)DSP的高速異步存儲器接口到I2C總線接口的轉(zhuǎn)化。下面著重介紹如何使用VHDL進(jìn)行I2C總線控制核設(shè)計(jì)。
1 總體思想
SCL和SDA分別為I2C總線的時(shí)鐘線和數(shù)據(jù)線。目前,支持I2C總線通信協(xié)議的視頻編、解碼芯片大多只支持100Kb/s或400Kb/s的傳輸速度,并且支持兩種地址:①從設(shè)備地址(SCLAVE ADDRESS,8bit),分為讀地址和寫地址,高7位用于選中芯片, 第0位是讀/寫控制位(R/W),決定是對該芯片進(jìn)行讀或?qū)懖僮;②?nèi)部寄存器單元地址(SUBADRRESS,8bit),用于決定對內(nèi)部的哪個(gè)寄存器單元進(jìn)行操作,通常還支持地址單元連續(xù)的多字節(jié)順序讀寫操作。I2C總線的讀、寫操作過程如下。
寫過程(S:開始,Sr:重開始,P:停止,-S:從設(shè)備,-M:主設(shè)備,W:寫位,R:讀位)
SLAVE ADDRESS(W)ACK-SSUBADDRESSACK-SDATA(N BYTES)ACK-SP讀過程
SSLAVE ADDRESS(W)ACK-SSUBADDRESSACK-S(Sr)SLAVE ADDRESS(R)ACK-SDATA(N BYTES)ACK-MPI2C控制核的設(shè)計(jì)采用自頂而下的方法,分為三個(gè)模塊:I2C_top模塊、I2C_cmd模塊、I2C_core模塊。總體結(jié)構(gòu)框圖如圖1所示。I2C_top模塊是頂層管理模塊,主要任務(wù)是接收DSP發(fā)來的控制信號、命令及數(shù)據(jù);發(fā)送由從設(shè)備讀出的數(shù)據(jù)和確認(rèn)位到DSP;實(shí)現(xiàn)I2C控制核與DSP的中斷通信機(jī)制;提供當(dāng)前I2C控制核的工作狀態(tài);把DSP發(fā)出的命令字信號送到I2C_cmd模塊。
在設(shè)計(jì)I2C控制核時(shí),必須注意以下幾個(gè)方面:
①I2C控制核與主機(jī)(Host,即C6711 DSP)以及視頻編解碼器的硬件接口連接關(guān)系?紤]到I2C總線通信協(xié)議的時(shí)序關(guān)系及芯片讀/寫操作過程,I2C控制核應(yīng)該包括兩個(gè)外圍接口,如圖1所示。一是與C6711 EMIF(External Memory Interface,擴(kuò)展存儲器接口)的高速異步存儲器ASRAM(Asynchronous SRAM)接口,稱為主機(jī)接口。它向I2C控制核發(fā)出控制命令與數(shù)據(jù),钖0位地址總線、32位雙向三態(tài)數(shù)據(jù)總線、異步輸出使能信號aoe、異步寫使能awe、異步讀使能are、外部存儲器空間選通ce2、外部中斷申請eint。二是與視頻編/解碼器相連的I2C兩線接口SCL、SDA。I2C控制核稱為I2C總線的主設(shè)備(master),實(shí)現(xiàn)EMIF的ASRAM接口向I2C總線接口的轉(zhuǎn)化;I2C器件(視頻編碼器、視頻解碼器)被稱為I2CU叫線的從設(shè)備(slave)。
②如何通過軟件編程,方便地實(shí)現(xiàn)對控制核中各種命令的操作。為此,在控制核內(nèi)部共設(shè)備了6個(gè)8位寄存器,用于管理整個(gè)控制核的工作。這些寄存器的名稱、標(biāo)號、位數(shù)、地址、操作方式,以及寄存器內(nèi)部設(shè)備的控制位及功能的具體情況如表1所列。寄存器內(nèi)部設(shè)置的控制位及功能的具體情況如表1所列。寄存器的尋址使用EMIF接口地址總線的低三位eadd[4~2]和由高位地址譯碼得到的I2C控制核使能信號nce。當(dāng)DSP發(fā)出的讀、寫命令完成后,I2C_top會向DSP發(fā)中斷請求eint,讓DSP發(fā)出下一個(gè)命令到CR,從RXR中讀數(shù),或進(jìn)發(fā)送新數(shù)據(jù)到TXR。
表1 I2Ctop模塊內(nèi)部寄存器
控制位及功能
控制寄存器CTR8000只寫I2C控制核使能位(core-en),(中斷使能位ien)命令寄存器CR8001只寫啟動(dòng)(start-r)、讀(rd-r)、寫(wr-r)、停止(stop-r)、主設(shè)備確認(rèn)(ack-r)、中斷響應(yīng)位(i-ack-r)【基于VHDL的I2C總線控制核設(shè)計(jì)】相關(guān)文章:
基于Avalon總線的可配置LCD控制器IP核的設(shè)計(jì)03-07
基于CPLD的系統(tǒng)中I2C總線的設(shè)計(jì)03-18
基于VHDL的DDS的設(shè)計(jì)與分析03-07
基于CEBus總線的鐵路燈塔控制系統(tǒng)的設(shè)計(jì)03-18
基于GPIB總線技術(shù)的TD-SCDMA通信儀表控制系統(tǒng)設(shè)計(jì)03-07
基于PCI總線的CAN卡的設(shè)計(jì)與實(shí)現(xiàn)03-18
基于PXI總線的數(shù)據(jù)采集模塊的設(shè)計(jì)03-07