www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 電源 > 數(shù)字電源
[導(dǎo)讀]從狀態(tài)機(jī)的角度,介紹一種I2C控制核的VHDL設(shè)計(jì)方法。

   摘要:從狀態(tài)機(jī)的角度,介紹一種I2C控制核的VHDL設(shè)計(jì)方法。將其嵌入到FPGA中,用于實(shí)現(xiàn)與TMS320C6000系列DSP的接口,并配合DSP的軟件完成對(duì)視頻采集與顯示處理系統(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軟件平臺(tái)中進(jìn)行EDA的綜合結(jié)果與時(shí)序仿真圖。

    關(guān)鍵詞:I2C總線 狀態(tài)機(jī)FPGA VHDL DSP 控制器核

引言

I2C總線是雙向、兩線、串行、多主控(multi-master)接口標(biāo)準(zhǔn),具有總線仲裁機(jī)制,非常適合在器件之間進(jìn)行近距離、非經(jīng)常性的數(shù)據(jù)通信。由于其使用兩線的硬件接口簡(jiǎn)單,I2C總線的應(yīng)用越來越廣泛。實(shí)現(xiàn)I2C總線通信協(xié)議主要有兩種方法:①利用MCU對(duì)兩根I/O口線進(jìn)行軟件編程,模擬I2C總線的SCL和SDA時(shí)序要求;②使用專用I2C總線控制核,但受其主機(jī)(host)接口方式和時(shí)鐘頻率的限制,在有些場(chǎng)合應(yīng)用并不方便。

圖1

    在我們開發(fā)的基于DSP的視頻采集與顯示處理系統(tǒng)中,為了滿足數(shù)字視頻信號(hào)傳輸帶寬及圖像處理算法速度的要求,選擇了TI公司的32位高速、高性能DSP TMS320C6711(簡(jiǎn)稱C6711)芯片(CPU時(shí)鐘150MHz,外圍存儲(chǔ)器接口EMIF時(shí)鐘100MHz)作為處理核心;外圍加上FPGA和數(shù)字視頻編碼器與解碼器,實(shí)現(xiàn)對(duì)標(biāo)準(zhǔn)復(fù)合視頻信號(hào)的采集、處理和視頻顯示任務(wù)。由于C6711沒有可以單獨(dú)控制的I/O口線,所以不能使用①的方法;由于外圍擴(kuò)展存儲(chǔ)器接口(EMIF)工作在100MHz,也不易實(shí)現(xiàn)②的方法,從系統(tǒng)小型化,充分利用FPGA的邏輯資源,提高硬件系統(tǒng)集成度的角度出發(fā),選定在FPGA內(nèi)自行設(shè)計(jì)I2C控制核的方法,實(shí)現(xiàn)DSP的高速異步存儲(chǔ)器接口到I2C總線接口的轉(zhuǎn)化。下面著重介紹如何使用VHDL進(jìn)行I2C總線控制核設(shè)計(jì)。

1 總體思想

SCL和SDA分別為I2C總線的時(shí)鐘線和數(shù)據(jù)線。目前,支持I2C總線通信協(xié)議的視頻編、解碼芯片大多只支持100Kb/s或400Kb/s的傳輸速度,并且支持兩種地址:①?gòu)脑O(shè)備地址(SCLAVE ADDRESS,8bit),分為讀地址和寫地址,高7位用于選中芯片, 第0位是讀/寫控制位(R/W),決定是對(duì)該芯片進(jìn)行讀或?qū)懖僮鳎虎趦?nèi)部寄存器單元地址(SUBADRRESS,8bit),用于決定對(duì)內(nèi)部的哪個(gè)寄存器單元進(jìn)行操作,通常還支持地址單元連續(xù)的多字節(jié)順序讀寫操作。I2C總線的讀、寫操作過程如下。

寫過程(S:開始,Sr:重開始,P:停止,-S:從設(shè)備,-M:主設(shè)備,W:寫位,R:讀位)

SLAVE ADDRESS(W) ACK-S SUBADDRESS ACK-S DATA(N BYTES) ACK-S P

讀過程

S SLAVE ADDRESS(W) ACK-S SUBADDRESS ACK-S
(Sr) SLAVE ADDRESS(R) ACK-S DATA(N BYTES) ACK-M P

I2C控制核的設(shè)計(jì)采用自頂而下的方法,分為三個(gè)模塊:I2C_top模塊、I2C_cmd模塊、I2C_core模塊??傮w結(jié)構(gòu)框圖如圖1所示。I2C_top模塊是頂層管理模塊,主要任務(wù)是接收DSP發(fā)來的控制信號(hào)、命令及數(shù)據(jù);發(fā)送由從設(shè)備讀出的數(shù)據(jù)和確認(rèn)位到DSP;實(shí)現(xiàn)I2C控制核與DSP的中斷通信機(jī)制;提供當(dāng)前I2C控制核的工作狀態(tài);把DSP發(fā)出的命令字信號(hào)送到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ò)展存儲(chǔ)器接口)的高速異步存儲(chǔ)器ASRAM(Asynchronous SRAM)接口,稱為主機(jī)接口。它向I2C控制核發(fā)出控制命令與數(shù)據(jù),钖0位地址總線、32位雙向三態(tài)數(shù)據(jù)總線、異步輸出使能信號(hào)aoe、異步寫使能awe、異步讀使能are、外部存儲(chǔ)器空間選通ce2、外部中斷申請(qǐng)eint。二是與視頻編/解碼器相連的I2C兩線接口SCL、SDA。I2C控制核稱為I2C總線的主設(shè)備(master),實(shí)現(xiàn)EMIF的ASRAM接口向I2C總線接口的轉(zhuǎn)化;I2C器件(視頻編碼器、視頻解碼器)被稱為I2CU叫線的從設(shè)備(slave)。

    ②如何通過軟件編程,方便地實(shí)現(xiàn)對(duì)控制核中各種命令的操作。為此,在控制核內(nèi)部共設(shè)備了6個(gè)8位寄存器,用于管理整個(gè)控制核的工作。這些寄存器的名稱、標(biāo)號(hào)、位數(shù)、地址、操作方式,以及寄存器內(nèi)部設(shè)備的控制位及功能的具體情況如表1所列。寄存器內(nèi)部設(shè)置的控制位及功能的具體情況如表1所列。寄存器的尋址使用EMIF接口地址總線的低三位eadd[4~2]和由高位地址譯碼得到的I2C控制核使能信號(hào)nce。當(dāng)DSP發(fā)出的讀、寫命令完成后,I2C_top會(huì)向DSP發(fā)中斷請(qǐng)求eint,讓DSP發(fā)出下一個(gè)命令到CR,從RXR中讀數(shù),或進(jìn)發(fā)送新數(shù)據(jù)到TXR。

表1 I2Ctop模塊內(nèi)部寄存器

寄存器 位  數(shù) 地  址 操 作

控制位及功能

控制寄存器CTR 8 000 只寫 I2C控制核使能位(core-en),(中斷使能位ien)
命令寄存器CR 8 001 只寫 啟動(dòng)(start-r)、讀(rd-r)、寫(wr-r)、停止(stop-r)、主設(shè)備確認(rèn)(ack-r)、中斷響應(yīng)位(i-ack-r)
狀態(tài)寄存器SR 8 010 只讀 從設(shè)備確認(rèn)位(rx-ack)、I2C-core模塊忙位(Core-busy)
發(fā)送寄存器TXR 8 011 只寫 寄存器發(fā)送到從設(shè)備的數(shù)據(jù)
接收寄存器RXR 8 100 只讀 寄存由從設(shè)備讀取的數(shù)據(jù)
時(shí)鐘尺度寄存器PRES 8 101 讀寫 寄存器時(shí)鐘尺度因子,對(duì)時(shí)鐘信號(hào)(eclk)實(shí)現(xiàn)指定倍數(shù)分頻,得到SCL和SDA的五個(gè)子狀態(tài)相互轉(zhuǎn)移的同步時(shí)鐘使能信號(hào)(eclk-en)

時(shí)鐘尺度寄存器(PRES)用于產(chǎn)生兩個(gè)時(shí)鐘頻率信號(hào):pres(7 downto 5),用于產(chǎn)生I2C控制核的工作頻率fcore;pres(5 downto 0),用于產(chǎn)生I2C總線的時(shí)鐘SCL頻率fi2c。其計(jì)算公式如下:

其中:pres1=1+pres(7 downto 5)

pres2=1+pres(4 dwonto 0)

由于eclk=100MHz,以pres(7 downto 5)=“100”=4,pres(4 downto 0)="10000"=16,則

fcore=100/[2×(1+4)]=10MHz

fi2c=10/[6×(1+16)]=0.098MHz=98kHz≤100kHz

可以看出,這樣設(shè)備時(shí)鐘尺度寄存器容易實(shí)現(xiàn)100MHz~100kHz的轉(zhuǎn)變。

③需要設(shè)置與DSP的相互通信的機(jī)制。由于C6711的CPU運(yùn)行速度為150MHz,而I2C的速度僅為100Kb/s,為了不影響DSP程序的高速運(yùn)行,采用中斷機(jī)制。當(dāng)DSP發(fā)出讀、寫命令后,繼續(xù)執(zhí)行自己的程序,而由I2C控制核完成命令后,I2C_top模塊負(fù)責(zé)向DSP發(fā)中斷請(qǐng)示eint。DSP在中斷服務(wù)程序中讀取SR,從RXR中讀數(shù),并發(fā)出新命令到CR,發(fā)送新數(shù)據(jù)到TXR。

2 狀態(tài)機(jī)描述

設(shè)計(jì)的核心工作是對(duì)I2C總線命令及時(shí)序的狀態(tài)劃分。在控制核內(nèi)共設(shè)置了兩個(gè)狀態(tài)機(jī),分別稱為命令狀態(tài)機(jī)和時(shí)序狀態(tài)機(jī)。其中,命令狀態(tài)機(jī)用于管理I2C總線上的命令狀態(tài),如表1所列,并實(shí)現(xiàn)I2C總線具體的讀、寫操作的命令狀態(tài)轉(zhuǎn)移過程;時(shí)序狀態(tài)機(jī)用于實(shí)現(xiàn)I2C總線上啟動(dòng)、停止、讀、寫、確認(rèn)等命令的具體時(shí)序關(guān)系。這樣就把控制核從邏輯上分為兩個(gè)狀態(tài)機(jī),共同完成最終的總線命令與時(shí)序。

2.1 命令狀態(tài)機(jī)

命令狀態(tài)機(jī)是I2C_cmd模塊的核心部分。該模塊的主要功能有兩個(gè):一是把I2C_top模塊發(fā)送的start、write、read、stop四個(gè)命令信號(hào)轉(zhuǎn)化命令碼,發(fā)送I2C_core模塊;二是實(shí)現(xiàn)DSP發(fā)出和從slave接收到數(shù)據(jù)的串并轉(zhuǎn)換。

從I2C總線的通信協(xié)議中可以看出I2C總線上的信號(hào)可以分為空閑(IDLE)、啟動(dòng)(START)、讀(READ)、寫(WRITE)、確認(rèn)(ACK)和停止(STOP)六種工作狀態(tài)。在IDLE時(shí),SCL和SDA都為高電平,從設(shè)備不斷檢測(cè)Start命令的出現(xiàn)。I2C控制核(即I2C總線的主設(shè)備)在接收到DSP發(fā)送來的Start命令后,主設(shè)備進(jìn)入START狀態(tài),并根據(jù)Read和Write命令,可以進(jìn)入READ或WRITE狀態(tài)。由于主機(jī)的讀、寫操作都是以字節(jié)進(jìn)行的,對(duì)應(yīng)8個(gè)周期的I2C總線讀/寫操作,故設(shè)置一個(gè)8字拍的計(jì)數(shù)器,使得READ或WRITE狀態(tài)能維持8個(gè)SCL周期。在完成字節(jié)讀或?qū)懖僮髦?,都將進(jìn)入ACK狀態(tài)。進(jìn)入ACK,標(biāo)志一個(gè)DSP的讀/寫命令已經(jīng)完成,因此發(fā)送中斷申請(qǐng)給DSP。在中斷服務(wù)程序中,DSP查詢狀態(tài)寄存器后,再發(fā)出下一個(gè)命令。這時(shí)I2C控制核,或者是轉(zhuǎn)移到IDLE,或者是轉(zhuǎn)移到STOP。命令狀態(tài)轉(zhuǎn)移關(guān)系如圖2所示。

2.2 時(shí)序狀態(tài)機(jī)

I2C_core模塊負(fù)責(zé)與視頻編碼器、解碼器的I2C接口,最終實(shí)現(xiàn)I2C總線信號(hào)SCL和SDA的啟動(dòng)、停止、讀、寫、確認(rèn)等具體操作的時(shí)序關(guān)系。其功能的實(shí)現(xiàn)主要由時(shí)序狀態(tài)來完成。根據(jù)I2C總線通信協(xié)議中SCL和SDA之間的時(shí)序關(guān)系,總線上包含兩種命令(Start/Restart,Stop)和兩種操作(Write,Read),時(shí)序關(guān)系如圖4所示。Start命令:在SCL為高電平時(shí),SDA上出現(xiàn)一個(gè)下降沿。Stop命令:在SCL為高電平時(shí),SDA上出現(xiàn)一個(gè)上升沿。Write操作:SDA只能在SCL為低電平時(shí)變化,在SCL為高電平時(shí)應(yīng)保持不變。Read操作:只能在SCL為高電平時(shí),對(duì)SDA進(jìn)行采樣。

圖4

    為了敘述上的方便,每個(gè)命令狀態(tài)在時(shí)序上劃分為5個(gè)子狀態(tài)(A,B,C、D、IDLE)。I2C總線時(shí)序狀態(tài)轉(zhuǎn)移關(guān)系如圖3所示,狀態(tài)劃分如圖4所示。在實(shí)際中為了更精確地控制時(shí)序,對(duì)命令時(shí)序進(jìn)行了更細(xì)的劃分。START和STOP分為7位子狀態(tài)(a~f,idle),WRITE和READ分為6個(gè)子狀態(tài)(a~e,idle)。這個(gè)“6”也就是為什么在公式(2)中分母上有一個(gè)“6”。

SCL在Start命令的A狀態(tài)時(shí),保持原有電平不變,而在B狀態(tài)時(shí)變?yōu)楦唠娖?,這樣就可以實(shí)現(xiàn)Restart命令。系統(tǒng)時(shí)鐘信號(hào)eclk由時(shí)鐘尺度因子分頻,得到狀態(tài)轉(zhuǎn)移的同步時(shí)鐘使能信號(hào)(eclk_en)。在eclk和eclk_en的控制下進(jìn)行狀態(tài)移轉(zhuǎn),最后都轉(zhuǎn)移到空閑狀態(tài)(IDLE),并保持最后一個(gè)狀態(tài)時(shí)的信號(hào)電平。圖4中標(biāo)注了每個(gè)命令的關(guān)鍵時(shí)刻。

3 中斷信號(hào)的處理機(jī)制

I2C控制核作為I2C總線的主設(shè)備,是在DSP的控制下工作的。它采用中斷機(jī)制與DSP通道。當(dāng)一個(gè)讀寫命令完成后,主設(shè)備會(huì)向DSP發(fā)出一個(gè)中斷申請(qǐng)信號(hào)eint(上升沿有效)。在DSP的中斷服務(wù)程序中,置位命令寄存器的中斷響應(yīng)確認(rèn)位(i_ack_r='1'),使主設(shè)備清除其發(fā)出的中斷申請(qǐng)信號(hào)(eint='0'),而i_ack_r信號(hào)將在置位命令結(jié)束后的下一個(gè)時(shí)鐘上升沿自動(dòng)清除。這樣,可以允許主設(shè)備發(fā)出下一個(gè)中斷申請(qǐng)。

圖5

    process(nReset,eclk)

begin

if(nReset='0')then

int<='0';i_ack_r<='0';

elsif(eclk'vent and eclk='1')then

if(nce='0'andnAwe='0')then

if(core_en='1'and eadd="001")then

--寫入命令寄存器

i_ack_r<=cr(7);--寫入'1'

end if;

else

i_ack_r<='0'; --自動(dòng)清除

end if;

int<=cmd_done_ack and ien;

end if;

Eint<=int and(not i_ack_r_;end process;命令碼

4 EDA綜合結(jié)果與結(jié)論

使用Xilinx ISE6.1對(duì)I2C核的VHDL描述進(jìn)行綜合(synthesize)和實(shí)現(xiàn)(implement),目標(biāo)器件采用Xilinx公司的高密度系統(tǒng)級(jí)FPGA-Virtex系列芯片v50cs144-6。設(shè)計(jì)的總體等效門數(shù)為1844門,系統(tǒng)時(shí)鐘的最大頻率為120.758MHz。圖5為使用ModelsimXE5.6a對(duì)在目標(biāo)器件上布局布線后的VHDL模塊進(jìn)行仿真(Simulate Post-Place & Route VHDL Module)的結(jié)果。其中,edat信號(hào)上“10010000”中的“1”依次是啟動(dòng)和寫命令;“01100001”中的“1”依次是停止、讀、中斷清除命令。從圖中可以看出,實(shí)現(xiàn)了從TMS320C6000 EMIF接口到I2C總線接口的轉(zhuǎn)換功能,并實(shí)現(xiàn)發(fā)中斷申請(qǐng)(eint=1)和清除中斷申請(qǐng)的功能,完成了I2C總線通信協(xié)議的啟動(dòng)、寫、確認(rèn),讀、確認(rèn)、停止操作的時(shí)序。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

北京2025年8月6日 /美通社/ -- 亞馬遜云科技宣布,Anthropic最新一代模型Claude Opus 4.1與Claude Sonnet 4,現(xiàn)已在Amazon Bedrock全面上線。這批新型雙模推理模型支...

關(guān)鍵字: 模型 PIC 亞馬遜 CK

北京 2025年7月16日 /美通社/ -- 中國(guó)企業(yè)出海正經(jīng)歷深刻轉(zhuǎn)型:不再只是把產(chǎn)品賣到海外,而是將研發(fā)、設(shè)計(jì)、生產(chǎn)、銷售、服務(wù)等全價(jià)值鏈帶到全球,實(shí)現(xiàn)真正的"全球本地化"。然而,在走向全球的過...

關(guān)鍵字: IBM 亞馬遜 BSP CK

亞馬遜云科技計(jì)算和機(jī)器學(xué)習(xí)服務(wù)副總裁 David Brown 北京 2025年7月10日 /美通社/ -- 設(shè)想這樣一個(gè)系統(tǒng),它可以探索解決復(fù)雜問題的多種方法,依托對(duì)海量數(shù)據(jù)的理解——從科學(xué)數(shù)據(jù)集到源代碼,再到商...

關(guān)鍵字: NVIDIA 亞馬遜 GPU CK

"智控奇機(jī)"贏得德國(guó)總理贊譽(yù) 上海2025年4月18日 /美通社/ -- 在漢諾威工業(yè)博覽會(huì)Festo展臺(tái)參觀期間,德國(guó)聯(lián)邦總理奧拉夫?朔爾茨向這家百年企業(yè)致以祝賀。適逢Festo成立100周年之際...

關(guān)鍵字: FESTO AN 自動(dòng)化技術(shù) CK

上海2025年4月10日 /美通社/ -- 倫敦證券交易所集團(tuán)(London Stock Exchange Group,以下簡(jiǎn)稱LSEG)今日在上海成功舉辦2025年中國(guó)市場(chǎng)展望論壇。該論壇已連續(xù)舉辦14屆,成...

關(guān)鍵字: SE COM BSP CK

北京2025年4月7日 /美通社/ -- 亞馬遜云科技日前宣布,Meta的新一代Llama 4模型現(xiàn)已在Amazon SageMaker JumpStart上正式可用,完全托管的無服務(wù)器版本也將很快在Amazon Bed...

關(guān)鍵字: 亞馬遜 AI模型 模型 CK

在電子設(shè)計(jì)開發(fā)中I2C大家已經(jīng)很熟悉了,每一種電子產(chǎn)品小到電子開關(guān),大到衛(wèi)星通信都會(huì)利用的I2C總線。據(jù)統(tǒng)計(jì)I2C在電子產(chǎn)品中占據(jù)了93%的份額,幾乎任何一種電路都要使用。

關(guān)鍵字: I2C總線

此次合作將借助前沿云計(jì)算與AI技術(shù),為全球數(shù)百萬學(xué)習(xí)者打造個(gè)性化教育體驗(yàn),并實(shí)現(xiàn)學(xué)習(xí)全過程的實(shí)時(shí)數(shù)據(jù)洞察 培生集團(tuán)將全面深化對(duì)亞馬遜云科技云基礎(chǔ)設(shè)施和AI能力的應(yīng)用,特別是Amazon Bedrock平臺(tái),以全...

關(guān)鍵字: 亞馬遜 AI CK 云計(jì)算

助力企業(yè)加速生成式AI應(yīng)用落地 北京2025年2月14日 /美通社/ -- 云管理服務(wù)提供商聚云科技獲得亞馬遜云科技生成式AI能力認(rèn)證,利用亞馬遜云科技全托管的生成式AI服務(wù)Amazon Bedrock等技術(shù),從應(yīng)用范...

關(guān)鍵字: 亞馬遜 生成式AI 模型 CK

上海2025年1月21日 /美通社/ -- 2025年1月17日,國(guó)際獨(dú)立第三方檢測(cè)、檢驗(yàn)和認(rèn)證機(jī)構(gòu)德國(guó)萊茵TÜV大中華區(qū)(簡(jiǎn)稱"TÜV萊茵&q...

關(guān)鍵字: 機(jī)器人 移動(dòng) CK CE
關(guān)閉