專利名稱:通過I<sup>2</sup>C接口訪問現(xiàn)場可編程門陣列內(nèi)部存儲器的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種集成電路實現(xiàn)方法,特別涉及一種通過fc接口訪問現(xiàn)場可 編程門陣列內(nèi)部存儲器的方法。
背景技術(shù):
內(nèi)部集成電^各(Inter - Integrated Circuit, I2C )通信是一種利用兩才艮凄史據(jù)線 實現(xiàn)中高速數(shù)據(jù)通信的通信技術(shù),內(nèi)部集成電路通信的標(biāo)準(zhǔn)速率是100KBit/s, 在高速的情況下,可以達(dá)到400KBit/s。內(nèi)部集成電路通信的電路很簡單,就是 利用兩根數(shù)據(jù)線, 一根傳遞時鐘信號的線路,命名為時鐘信號線路(SCL), — 根傳遞數(shù)據(jù)的線路,命名為數(shù)據(jù)線路(SDA)。現(xiàn)場可編程門陣列器件(FPGA)是一種在系統(tǒng)可編程的器件,是一種實現(xiàn) 系統(tǒng)集成的主流器件?,F(xiàn)場可編程門陣列器件集成了存儲器模塊,低成本的實 現(xiàn)對存儲器模塊的訪問是系統(tǒng)集成的要求之一。而在現(xiàn)有技術(shù)中,當(dāng)微處理器 (micro- processing unit, MPU)與FPGA直接構(gòu)建系統(tǒng)時,常常需要額外的時 鐘信號來實現(xiàn)與FPGA的通信,由此導(dǎo)致系統(tǒng)實現(xiàn)的復(fù)雜度增加,進(jìn)而增加了 系統(tǒng)的成本,因此如何解決現(xiàn)有技術(shù)存在的缺點(diǎn)實已成為本領(lǐng)域技術(shù)人員亟待 解決的課題。發(fā)明內(nèi)容本發(fā)明的目的在于提供一種通過I2C接口訪問現(xiàn)場可編程門陣列內(nèi)部存儲 器的方法,以實現(xiàn)無需額外的時鐘的情況下,對現(xiàn)場可編程門陣列器件內(nèi)存儲 器的訪問。為了達(dá)到上述的目的,本發(fā)明提供的通過I2C接口訪問現(xiàn)場可編程門陣列內(nèi) 部存儲器的方法,包括步驟a)提供一至少包括空閑態(tài)、待命狀態(tài)、讀或?qū)憯?shù) 據(jù)狀態(tài)在內(nèi)的多個狀態(tài)的fC接口狀態(tài)機(jī),并提供一存儲器控制模塊,其中,所
述I2C接口狀態(tài)機(jī)的輸入端包括數(shù)據(jù)通信端及時鐘控制端,其輸出端包括狀態(tài)輸 出端及數(shù)據(jù)通信端,所述存儲器控制模塊的輸入端包括時鐘控制端、狀態(tài)輸入 端及數(shù)據(jù)通信端,其輸出端包括存儲器讀寫信號輸出端、數(shù)據(jù)通信端及地址輸出端;b)將所述I2C接口狀態(tài)機(jī)輸入端的時鐘控制端與數(shù)據(jù)通信端分別與I2C 總線的時鐘輸出端及數(shù)據(jù)通信端相連接,將其輸出端的狀態(tài)輸出端及數(shù)據(jù)通信 端分別與所述存儲器控制模塊輸入端的狀態(tài)輸入端及數(shù)據(jù)通信端相連接,并將 所述存儲器控制模塊輸入端的時鐘控制端與所述I2C總線的時鐘輸出端相連接, 將其輸出端的存儲器讀寫信號輸出端、數(shù)據(jù)通信端及地址輸出端分別與待訪問的現(xiàn)場可編程門陣列內(nèi)部存儲器的讀寫信號接收端、數(shù)據(jù)輸入/輸出端及地址接與所述fC總線的時鐘輸出端相連接;c)當(dāng)所述I2(3總線的時鐘輸出端輸出復(fù) 位信號時,所述I2C接口狀態(tài)機(jī)根據(jù)所述復(fù)位信號進(jìn)入空閑態(tài);d)當(dāng)所述產(chǎn)C 總線的時鐘輸出端輸出工作信號時,所述^C接口狀態(tài)機(jī)、所述存儲器控制模塊 及所述待訪問的現(xiàn)場可編程門陣列內(nèi)部存儲器都進(jìn)入待命狀態(tài);e)當(dāng)所述I2C 接口狀態(tài)機(jī)處于待命狀態(tài)時,根據(jù)所述^C總線傳輸至的數(shù)據(jù)有選擇性進(jìn)入對所口狀態(tài)機(jī)處于讀數(shù)據(jù)狀態(tài)、所述存儲器控制模塊及所述待訪問的現(xiàn)場可編程門陣列內(nèi)部存儲器都處入待命狀態(tài)時,所述fc接口狀態(tài)機(jī)輸出端的狀態(tài)輸出端將其當(dāng)前狀態(tài)輸出,所述存儲器控制模塊輸出端的存儲器讀寫信號輸出端根據(jù)接 收的狀態(tài)信號輸出相應(yīng)讀信號使所述待訪問的現(xiàn)場可編程門陣列內(nèi)部存儲器處 于讀許可狀態(tài),然后根據(jù)所述存儲器控制模塊輸入端的數(shù)據(jù)通信端讀取所述待 訪問的現(xiàn)場可編程門陣列內(nèi)部存儲器的數(shù)據(jù),所讀取的數(shù)據(jù)依次經(jīng)由所述存儲 器控制模塊輸出端的數(shù)據(jù)通信端、所述存儲器控制模塊輸入端的數(shù)據(jù)通信端、 所述I2C接口狀態(tài)機(jī)輸出端的數(shù)據(jù)輸出端及所述I2C接口狀態(tài)機(jī)輸入端的數(shù)據(jù)輸 入端傳輸至所述^C總線;以及g)當(dāng)所述12(3接口狀態(tài)機(jī)處于寫數(shù)據(jù)狀態(tài)、所控制模塊輸出端的存儲器讀寫信號輸出端根據(jù)接收的狀態(tài)信號輸出相應(yīng)寫信號 使所述待訪問的現(xiàn)場可編程門陣列內(nèi)部存儲器處于寫許可狀態(tài),并根據(jù)其輸入
儲器進(jìn)行寫操作。當(dāng)所述fC接口狀態(tài)機(jī)的待命狀態(tài)包括移位態(tài)、地址比對態(tài)及應(yīng)答態(tài)3個子 態(tài)時,且所述存儲器控制模塊包括一地址計數(shù)器時,在步驟d)中,所述fc接 口狀態(tài)機(jī)進(jìn)入待命狀態(tài)中的移位態(tài),步驟e)進(jìn)一步包括步驟(1)當(dāng)所述產(chǎn)C 接口狀態(tài)機(jī)處于移位態(tài)時,其接收到由所述I力總線傳送至的數(shù)據(jù)后進(jìn)入地址比 對態(tài),即將接收的數(shù)據(jù)與所述I2C接口狀態(tài)機(jī)預(yù)設(shè)被設(shè)定的地址進(jìn)行比對以確定 地址是否正確,同時所述存儲器控制模塊根據(jù)接收的狀態(tài)信號將所述地址計數(shù) 器清零;(2)當(dāng)?shù)刂氛_時所述^C接口狀態(tài)機(jī)向所述fC總線傳回一辟答符; (3 )所述I2C總線根據(jù)接收的應(yīng)答符做出相應(yīng)讀或?qū)懟貜?fù);(4)所述I2C接口 狀態(tài)機(jī)根據(jù)接收的相應(yīng)讀或?qū)懟貜?fù)選擇性進(jìn)入讀數(shù)據(jù)狀態(tài)或應(yīng)答態(tài);以及(5) 當(dāng)所述I2C接口狀態(tài)機(jī)處于應(yīng)答態(tài)時,使其輸入端的數(shù)據(jù)通信端處于接收數(shù)據(jù)的 狀態(tài),并當(dāng)接收到的數(shù)據(jù)并非是結(jié)束符或重啟符時,其進(jìn)入寫數(shù)據(jù)狀態(tài),當(dāng)接 收到的數(shù)據(jù)是結(jié)束符或重啟符時返回空閑態(tài)。當(dāng)所述讀數(shù)據(jù)狀態(tài)包括讀數(shù)據(jù)移位態(tài)、讀應(yīng)答態(tài)及讀數(shù)據(jù)重復(fù)態(tài)3個子態(tài) 時,在上述步驟(4)中,所述^C接口狀態(tài)機(jī)進(jìn)入讀數(shù)據(jù)狀態(tài)中的讀數(shù)據(jù)移位 態(tài),所述步驟f)進(jìn)一步包括步驟(1)當(dāng)所述fC接口狀態(tài)機(jī)處于讀數(shù)據(jù)移位 態(tài)時,所述存儲器控制模塊輸出端的存儲器讀寫信號輸出端根據(jù)接收的.狀態(tài)信 號輸出相應(yīng)讀信號,所述^C接口狀態(tài)機(jī)將已載入的所述存儲器控制模塊讀取的 所述待訪問的現(xiàn)場可編程門陣列內(nèi)部存儲器相應(yīng)地址的數(shù)據(jù)傳輸至所述I2C總 線,然后其轉(zhuǎn)入讀應(yīng)答態(tài)并將當(dāng)前狀態(tài)傳輸至所述存儲器控制模塊,所述存儲 器控制模塊根據(jù)接收的狀態(tài)信號使所述地址計數(shù)器加一,否則所述fc接口狀態(tài) 機(jī)仍處于讀數(shù)據(jù)移位態(tài);(2)當(dāng)所述fC接口狀態(tài)機(jī)處于讀應(yīng)答態(tài)時,所述存儲 器控制模塊根據(jù)所述地址計數(shù)器的計數(shù)讀取所述待訪問的現(xiàn)場可編程門陣列內(nèi) 部存儲器相應(yīng)地址的數(shù)據(jù),并將所讀取的數(shù)據(jù)傳輸至所述fC接口狀態(tài)機(jī),同時, 所述fC接口狀態(tài)機(jī)立即轉(zhuǎn)移到讀數(shù)據(jù)重復(fù)態(tài);以及(3)當(dāng)所述fC接口狀態(tài) 機(jī)處于讀數(shù)據(jù)重復(fù)態(tài)時,如果接收到重啟符或者結(jié)束符,其返回到空閑.態(tài);否 則轉(zhuǎn)移到讀數(shù)據(jù)移位態(tài)。當(dāng)所述寫數(shù)據(jù)狀態(tài)包括寫數(shù)據(jù)移位態(tài)、寫應(yīng)答態(tài)、寫數(shù)據(jù)重復(fù)態(tài)3個子態(tài)
時,在上述步驟(5)中,所述I"C接口狀態(tài)機(jī)選擇性進(jìn)入寫數(shù)據(jù)狀態(tài)中的寫數(shù) 據(jù)移位態(tài),所述步驟g)進(jìn)一步包括(1)當(dāng)所述fC接口狀態(tài)機(jī)處于寫數(shù)據(jù)移 位態(tài)時,其通過輸入端的數(shù)據(jù)接收端接收數(shù)據(jù),若接收到的預(yù)設(shè)數(shù)目的'數(shù)據(jù)后 其轉(zhuǎn)入寫應(yīng)答態(tài),否則繼續(xù)處于寫數(shù)據(jù)移位態(tài);(2)當(dāng)所述fC接口狀態(tài)機(jī)處 于寫應(yīng)答態(tài)時,其將當(dāng)前狀態(tài)輸出,所述存儲器控制模塊根據(jù)接收的狀態(tài)信號 其存儲器讀寫信號輸出端輸出寫信號,所述I2C接口狀態(tài)機(jī)繼續(xù)接收數(shù)據(jù)以使接 收的數(shù)據(jù)完整,同時將接收的數(shù)據(jù)全部傳輸至所述存儲器控制模塊后,其立即 轉(zhuǎn)移到寫數(shù)據(jù)重復(fù)態(tài),同時所述存儲器控制模塊根據(jù)地址計數(shù)器的計數(shù)將接收址計數(shù)器加一;以及(3)所述fC接口狀態(tài)機(jī)處于寫數(shù)據(jù)重復(fù)態(tài)時,如果接收 到到重啟符或者結(jié)束符,其返回到空閑態(tài);否則轉(zhuǎn)移到寫數(shù)據(jù)移位態(tài),開始新 一輪寫數(shù)據(jù)操作。 '過在現(xiàn)場可編程門陣列器件內(nèi)增加一個fC接口狀態(tài)機(jī),即可以在不需要額外的 時鐘的情況下,方便的訪問現(xiàn)場可編程門陣列器件內(nèi)的存儲器模塊。
本發(fā)明的通過I2C接口訪問現(xiàn)場可編程門陣列內(nèi)部存儲器的方法由以下的 實施例及附圖給出。圖1為本發(fā)明的通過fc接口訪問現(xiàn)場可編程門陣列內(nèi)部存儲器的方法形成的讀寫連接結(jié)構(gòu)示意圖;圖2為本發(fā)明的通過^C接口訪問現(xiàn)場可編程門陣列內(nèi)部存儲器的方法的狀 態(tài)轉(zhuǎn)換示意圖。
具體實施方式
以下將對本發(fā)明的通過I2C接口訪問現(xiàn)場可編程門陣列內(nèi)部存儲器的方法 作進(jìn)一步的詳細(xì)描述。本發(fā)明采用XC2V6000芯片作為載體,以通過^C接口來訪問XC2V6000 芯片內(nèi)部的存儲器模塊為實施例來進(jìn)行說明,其包括下列步驟
首先,提供一至少包括空閑態(tài)、待命狀態(tài)、讀或?qū)憯?shù)據(jù)狀態(tài)在內(nèi)的多個狀態(tài)的fc接口狀態(tài)機(jī),并提供一存儲器控制模塊,其中,所述fc接口狀態(tài)機(jī)的 輸入端包括數(shù)據(jù)通信端及時鐘控制端,其輸出端包括狀態(tài)賴r出端及數(shù)據(jù)通信端, 所述存儲器控制模塊的輸入端包括時鐘控制端、狀態(tài)輸入端及數(shù)據(jù)通信端,其 輸出端包括存儲器讀寫信號輸出端、數(shù)據(jù)通信端及地址輸出端。此外,.所述存 儲器控制模塊包括一地址計數(shù)器,所述i2c接口狀態(tài)機(jī)的待命狀態(tài)又包括移位態(tài)、地址比對態(tài)及應(yīng)答態(tài)3個子態(tài),所述讀數(shù)據(jù)狀態(tài)包括讀數(shù)據(jù)移位態(tài)、讀應(yīng) 答態(tài)及讀數(shù)據(jù)重復(fù)態(tài)3個子態(tài),所述寫數(shù)據(jù)狀態(tài)包括寫數(shù)據(jù)移位態(tài)、寫應(yīng)答態(tài)、 寫數(shù)據(jù)重復(fù)態(tài)3個子態(tài),由此,所述fC接口狀態(tài)機(jī)共具有IO個狀態(tài),詳細(xì)說 明如下(1) 空閑態(tài)所述fC接口狀態(tài)機(jī)復(fù)位即進(jìn)入該狀態(tài);接收到起始符時, 就進(jìn)入移位態(tài);(2) 移位態(tài)如果接收了7個數(shù)據(jù)的話,就轉(zhuǎn)入地址比對態(tài),否則留在本 狀態(tài); -(3 )地址比對態(tài)將收到的7個數(shù)據(jù)與本地設(shè)備(即待訪問的現(xiàn)場可編程 門陣列內(nèi)部存儲器)具有的地址比對,地址錯誤的話則返回空閑態(tài),并產(chǎn)生一 個非應(yīng)答符;地址正確的話則產(chǎn)生一個應(yīng)答符,并且如果新收到的數(shù)據(jù)為高則 轉(zhuǎn)往讀移位態(tài),并且裝載一個要發(fā)送的數(shù)據(jù);否則轉(zhuǎn)往應(yīng)答態(tài);(4) 應(yīng)答態(tài)如果探測到結(jié)束符或者重啟符,則返回空閑態(tài);否則進(jìn)入寫 數(shù)據(jù)移位態(tài);(5) 寫數(shù)據(jù)移位態(tài)如果接收了7個數(shù)據(jù)的話,就轉(zhuǎn)入寫應(yīng)答態(tài),否則留 在本狀態(tài);(6) 寫應(yīng)答態(tài)接收了最后一個數(shù)據(jù),同時產(chǎn)生一個應(yīng)答符;轉(zhuǎn)移到寫數(shù) 據(jù)重復(fù)態(tài);(7) 寫數(shù)據(jù)重復(fù)態(tài)若探測到重啟符或者結(jié)束符,都返回到空閑態(tài);否則 轉(zhuǎn)移到寫數(shù)據(jù)移位態(tài);(8) 讀數(shù)據(jù)移位態(tài)如果發(fā)送了8個數(shù)據(jù)的話,就轉(zhuǎn)入讀應(yīng)答態(tài),否則留 在本狀態(tài)^(9) 讀應(yīng)答態(tài)裝載一個要發(fā)送的數(shù)據(jù);(IO)讀數(shù)據(jù)重復(fù)態(tài)若探測到重啟符或者結(jié)束符,都返回到空閑態(tài);否 則轉(zhuǎn)移到讀數(shù)據(jù)移位態(tài)。接著,請參見圖1,將所述fc接口狀態(tài)機(jī)輸入端的時鐘控制端與數(shù)據(jù)通信端分別與fC總線的時鐘輸出端(SCL)及數(shù)據(jù)通信端(SDA)相連接,將其輸 出端的狀態(tài)輸出端及數(shù)據(jù)通信端分別與所述存儲器控制模塊輸入端的狀態(tài)輸入 端及數(shù)據(jù)通信端相連接,并將所述存儲器控制模塊輸入端的時鐘控制端與所述 I力總線的時鐘輸出端相連接,將其輸出端的存儲器讀寫信號輸出端、數(shù)據(jù)通信端、數(shù)據(jù)輸入/輸出端及地址接收端相連接,同時將所述待訪問的現(xiàn)場可編程門 陣列內(nèi)部存儲器的時鐘控制端與所述fC總線的時鐘輸出端相連接。接著,請參見圖2,當(dāng)所述fC總線的時鐘輸出端輸出復(fù)位信號時,所述^C 接口狀態(tài)機(jī)根據(jù)所述復(fù)位信號進(jìn)入空閑態(tài)。接著,當(dāng)所述I"C總線的時鐘輸出端輸出工作信號時,所述產(chǎn)C接口狀態(tài)機(jī)、 所述存儲器控制模塊及所述待訪問的現(xiàn)場可編程門陣列內(nèi)部存儲器都進(jìn)入待命狀態(tài),更為具體的說,所述fc接口狀態(tài)機(jī)進(jìn)入所述待命狀態(tài)中的移位態(tài)。接著,當(dāng)所述^C接口狀態(tài)機(jī)處于移位態(tài)時,其接收到由所述Pc總線傳送 至的數(shù)據(jù)(通常為7個)后進(jìn)入地址比對態(tài),即將接收的數(shù)據(jù)與所述fC接口狀 態(tài)機(jī)預(yù)設(shè)被設(shè)定的地址進(jìn)行比對以確定地址是否正確,同時所述存儲器控制模 塊根據(jù)接收的狀態(tài)信號將所述地址計數(shù)器清零,若所述I2C接口狀態(tài)機(jī)沒有接收 到7個數(shù)據(jù),則其仍留在移位態(tài)。接著,當(dāng)比對出接收的7個數(shù)據(jù)與所述I2C接口狀態(tài)機(jī)預(yù)先設(shè)定的地址一致 時,其向所述I"C總線傳回一應(yīng)答符;而當(dāng)比對出7個數(shù)據(jù)與所述產(chǎn)C接口狀態(tài) 機(jī)預(yù)先設(shè)定的地址不一致時,即設(shè)備地址錯誤,其返回空閑態(tài)。 接著,所述fC總線根據(jù)接收的應(yīng)答符做出相應(yīng)讀或?qū)懟貜?fù)。 接著,當(dāng)所述^C接口狀態(tài)機(jī)接收到的相應(yīng)讀回復(fù)(即高電平)時其進(jìn)入讀 數(shù)據(jù)狀態(tài)中的讀數(shù)據(jù)移位態(tài),否則進(jìn)入應(yīng)答態(tài)(即相應(yīng)回復(fù)為寫回復(fù)時進(jìn)入應(yīng) 答態(tài))。接著,當(dāng)所述fC接口狀態(tài)機(jī)處于應(yīng)答態(tài)時,使其輸入端的數(shù)據(jù)通信端處于 接收數(shù)據(jù)的狀態(tài),并當(dāng)接收到的數(shù)據(jù)并非是結(jié)束符或重啟符(即SCL CN時鐘
推動)時,其進(jìn)入寫數(shù)據(jù)狀態(tài)中的寫數(shù)據(jù)移位態(tài),當(dāng)接收到的數(shù)據(jù)是給束符或 重啟符時返回空閑態(tài)。隨后,當(dāng)所述PC接口狀態(tài)機(jī)處于寫數(shù)據(jù)移位態(tài)、所述存儲器控制模塊及所機(jī)通過輸入端的數(shù)據(jù)接收端接收數(shù)據(jù),若接收到的預(yù)設(shè)數(shù)目(即7個)的數(shù)據(jù) 后其轉(zhuǎn)入寫應(yīng)答態(tài),否則繼續(xù)處于寫數(shù)據(jù)移位態(tài)。然后,當(dāng)所述PC接口狀態(tài)機(jī)處于寫應(yīng)答態(tài)時,其將當(dāng)前狀態(tài)輸出,所述存 儲器控制模塊根據(jù)接收的狀態(tài)信號其存儲器讀寫信號輸出端輸出寫信號(通常 為1),所述fC接口狀態(tài)機(jī)繼續(xù)接收數(shù)據(jù)以使接收的數(shù)據(jù)完整(即接收了 8個 數(shù)據(jù)),同時將接收的數(shù)據(jù)全部傳輸至所述存儲器控制模塊后,其立即轉(zhuǎn)移到寫 數(shù)據(jù)重復(fù)態(tài),同時所述存儲器控制模塊根據(jù)地址計數(shù)器的計數(shù)(此時為0 )將接 收的數(shù)據(jù)寫入所述待訪問的現(xiàn)場可編程門陣列內(nèi)部存儲器相應(yīng)地址,然后所述 地址計數(shù)器加一。最后,當(dāng)所述fC接口狀態(tài)機(jī)處于寫數(shù)據(jù)重復(fù)態(tài)時,如果接收到重啟符或者 結(jié)束符,其返回到空閑態(tài);否則轉(zhuǎn)移到寫數(shù)據(jù)移位態(tài),開始新一輪寫數(shù)據(jù)操作。此外,當(dāng)所述fC接口狀態(tài)機(jī)處于讀數(shù)據(jù)移位態(tài)時,所述存儲器控制模塊輸 出端的存儲器讀寫信號輸出端根據(jù)接收的狀態(tài)信號輸出相應(yīng)讀信號(通常為0 ), 所述I2C接口狀態(tài)機(jī)將已載入的所述存儲器控制模塊讀取的所述待訪問的現(xiàn)場 可編程門陣列內(nèi)部存儲器相應(yīng)地址(即0)的數(shù)據(jù)(8個數(shù)據(jù))傳輸至所述I2C 總線,然后其轉(zhuǎn)入讀應(yīng)答態(tài)并將當(dāng)前狀態(tài)傳輸至所述存儲器控制模塊,所述存 儲器控制模塊根據(jù)接收的狀態(tài)信號使所述地址計數(shù)器加一,否則所述^C接口狀 態(tài)機(jī)仍處于讀數(shù)據(jù)移位態(tài)(即沒有傳輸8個數(shù)據(jù)時其處于讀數(shù)據(jù)移位態(tài))。需注 意的是,由于所述fC接口狀態(tài)機(jī)僅處于寫應(yīng)答態(tài)時,所述存儲器控制模塊輸出 端的存儲器讀寫信號輸出端才輸出寫信號,即執(zhí)行寫操作,否則其一直輸出讀 信號,所以所述存儲器控制模塊可在輸出讀信號時根據(jù)地址計數(shù)器的計數(shù)相應(yīng) 讀取所述待訪問的現(xiàn)場可編程門陣列內(nèi)部存儲器相應(yīng)地址的數(shù)據(jù),如果其讀取 出的數(shù)據(jù)不被發(fā)送,顯然讀取出的數(shù)據(jù)也是無意義的,不會影響所述^C接口狀 態(tài)機(jī)及存儲器控制模塊的功能。接著,當(dāng)所述^C接口狀態(tài)機(jī)處于讀應(yīng)答態(tài)時,所述存儲器控制模塊根據(jù)所
述;也址計數(shù)器的計欽喊冉又;vr還4r^ 的數(shù)據(jù),并將所讀取的數(shù)據(jù)傳輸至所述fc接口狀態(tài)機(jī),同時,所述fc接口狀 態(tài)機(jī)立即轉(zhuǎn)移到讀數(shù)據(jù)重復(fù)態(tài)。最后,當(dāng)所述fc接口狀態(tài)機(jī)處于讀數(shù)據(jù)重復(fù)態(tài)時,如果接收到重啟符或者結(jié)束符,其返回到空閑態(tài);否則轉(zhuǎn)移到讀數(shù)據(jù)移位態(tài)進(jìn)行新一輪數(shù)據(jù)的讀取。 需注意的是,地址計數(shù)器在fC接口狀態(tài)機(jī)為移位狀態(tài)時清零,在12(3接口狀態(tài)機(jī)為讀應(yīng)答態(tài),或者fc接口狀態(tài)機(jī)為寫應(yīng)答態(tài)且所述存儲器控制模塊將數(shù) 據(jù)寫入所述待訪問的現(xiàn)場可編程門陣列內(nèi)部存儲器后,其自動加l,直到地址為 所述待訪問的現(xiàn)場可編程門陣列內(nèi)部存儲器的最高值時停止,所以對所述待訪綜上所述,本發(fā)明的通過I2C接口訪問現(xiàn)場可編程門陣列器件內(nèi)存儲器的方 法,可以在不需要額外的時鐘的情況下,完成對FPGA內(nèi)存儲器的讀寫操作。
權(quán)利要求
1、一種通過I2C接口訪問現(xiàn)場可編程門陣列內(nèi)部存儲器的方法,其特征在于,包括步驟a)提供一至少包括空閑態(tài)、待命狀態(tài)、讀或?qū)憯?shù)據(jù)狀態(tài)在內(nèi)的多個狀態(tài)的I2C接口狀態(tài)機(jī),并提供一存儲器控制模塊,其中,所述I2C接口狀態(tài)機(jī)的輸入端包括數(shù)據(jù)通信端及時鐘控制端,其輸出端包括狀態(tài)輸出端及數(shù)據(jù)通信端,所述存儲器控制模塊的輸入端包括時鐘控制端、狀態(tài)輸入端及數(shù)據(jù)通信端,其輸出端包括存儲器讀寫信號輸出端、數(shù)據(jù)通信端及地址輸出端;b)將所述I2C接口狀態(tài)機(jī)輸入端的時鐘控制端與數(shù)據(jù)通信端分別與I2C總線的時鐘輸出端及數(shù)據(jù)通信端相連接,將其輸出端的狀態(tài)輸出端及數(shù)據(jù)通信端分別與所述存儲器控制模塊輸入端的狀態(tài)輸入端及數(shù)據(jù)通信端相連接,并將所述存儲器控制模塊輸入端的時鐘控制端與所述I2C總線的時鐘輸出端相連接,將其輸出端的存儲器讀寫信號輸出端、數(shù)據(jù)通信端及地址輸出端分別與待訪問的現(xiàn)場可編程門陣列內(nèi)部存儲器的讀寫信號接收端、數(shù)據(jù)輸入/輸出端及地址接收端相連接,同時將所述待訪問的現(xiàn)場可編程門陣列內(nèi)部存儲器的時鐘控制端與所述I2C總線的時鐘輸出端相連接;c)當(dāng)所述I2C總線的時鐘輸出端輸出復(fù)位信號時,所述I2C接口狀態(tài)機(jī)根據(jù)所述復(fù)位信號進(jìn)入空閑態(tài);d)當(dāng)所述I2C總線的時鐘輸出端輸出工作信號時,所述I2C接口狀態(tài)機(jī)、所述存儲器控制模塊及所述待訪問的現(xiàn)場可編程門陣列內(nèi)部存儲器都進(jìn)入待命狀態(tài);e)當(dāng)所述I2C接口狀態(tài)機(jī)處于待命狀態(tài)時,其根據(jù)所述I2C總線傳輸至的數(shù)據(jù)有選擇性進(jìn)入對所述待訪問的現(xiàn)場可編程門陣列內(nèi)部存儲器的讀或?qū)憯?shù)據(jù)狀態(tài);f)當(dāng)所述I2C接口狀態(tài)機(jī)處于讀數(shù)據(jù)狀態(tài)、所述存儲器控制模塊及所述待訪問的現(xiàn)場可編程門陣列內(nèi)部存儲器都處入待命狀態(tài)時,所述I2C接口狀態(tài)機(jī)輸出端的狀態(tài)輸出端將其當(dāng)前狀態(tài)輸出,所述存儲器控制模塊輸出端的存儲器讀寫信號輸出端根據(jù)接收的狀態(tài)信號輸出相應(yīng)讀信號使所述待訪問的現(xiàn)場可編程門陣列內(nèi)部存儲器處于讀許可狀態(tài),然后所述存儲器控制模塊輸出端的數(shù)據(jù)通信端讀取所述待訪問的現(xiàn)場可編程門陣列內(nèi)部存儲器的數(shù)據(jù),所讀取的數(shù)據(jù)依次經(jīng)由所述存儲器控制模塊輸出端的數(shù)據(jù)通信端、所述存儲器控制模塊輸入端的數(shù)據(jù)通信端、所述I2C接口狀態(tài)機(jī)輸出端的數(shù)據(jù)輸出端及所述I2C接口狀態(tài)機(jī)輸入端的數(shù)據(jù)輸入端傳輸至所述I2C總線;以及g)當(dāng)所述I2C接口狀態(tài)機(jī)處于寫數(shù)據(jù)狀態(tài)、所述存儲器控制模塊及所述待訪問的現(xiàn)場可編程門陣列內(nèi)部存儲器都處入待命狀態(tài)時,所述I2C接口狀態(tài)機(jī)輸出端的狀態(tài)輸出端將其當(dāng)前狀態(tài)輸出,所述存儲器控制模塊輸出端的存儲器讀寫信號輸出端根據(jù)接收的狀態(tài)信號輸出相應(yīng)寫信號使所述待訪問的現(xiàn)場可編程門陣列內(nèi)部存儲器處于寫許可狀態(tài),并根據(jù)其輸入端的數(shù)據(jù)通信端接收的要寫入的數(shù)據(jù)對所述待訪問的現(xiàn)場可編程門陣列內(nèi)部存儲器進(jìn)行寫操作。
2、 如權(quán)利要求1所述的通過fC接口訪問現(xiàn)場可編程門陣列內(nèi)部存儲器的 方法,其特征在于當(dāng)所述^C接口狀態(tài)機(jī)的待命狀態(tài)包括移位態(tài)、地址比對態(tài) 及應(yīng)答態(tài)3個子態(tài)時,且所述存儲器控制模塊包括一地址計數(shù)器時,在步驟d) 中,所述^C接口狀態(tài)機(jī)進(jìn)入待命狀態(tài)中的移位態(tài),步驟e)進(jìn)一步包括步驟(1 )當(dāng)所述I2C接口狀態(tài)機(jī)處于移位態(tài)時,其接收到由所述I2C總線傳送 至的數(shù)據(jù)后進(jìn)入地址比對態(tài),即將接收的數(shù)據(jù)與所述I2C接口狀態(tài)機(jī)預(yù)先被設(shè)定 的地址進(jìn)行比對以確定地址是否正確,同時所述存儲器控制模塊根據(jù)接收的狀 態(tài)信號將所述地址計數(shù)器清零;(2)當(dāng)?shù)刂氛_時所述I2C接口狀態(tài)機(jī)向所述I2C總線傳回一應(yīng)答符; (3 )所述I2C總線根據(jù)接收的應(yīng)答符做出相應(yīng)讀或?qū)懟貜?fù);(4) 所述I2C接口狀態(tài)機(jī)根據(jù)接收的相應(yīng)讀或?qū)懟貜?fù)選擇性進(jìn)入讀數(shù)據(jù)狀 態(tài)或應(yīng)答態(tài);以及(5) 當(dāng)所述fC接口狀態(tài)機(jī)處于應(yīng)答態(tài)時,使其輸X端的數(shù)據(jù)通信端處于 接收數(shù)據(jù)的狀態(tài),并當(dāng)接收到的數(shù)據(jù)并非是結(jié)束符或重啟符時,其進(jìn)入寫數(shù)據(jù) 狀態(tài),當(dāng)接收到的數(shù)據(jù)是結(jié)束符或重啟符時返回空閑態(tài)。
3、 如權(quán)利要求2所述的通過I2C接口訪問現(xiàn)場可編程門陣列內(nèi)部存儲器的 方法,其特征在于當(dāng)所述讀數(shù)據(jù)狀態(tài)包括讀數(shù)據(jù)移位態(tài)、讀應(yīng)答態(tài)及讀數(shù)據(jù) 重復(fù)態(tài)3個子態(tài)時,在所述步驟(4)中,所述fC接口狀態(tài)機(jī)進(jìn)入讀數(shù)據(jù)狀態(tài)中的讀數(shù)據(jù)移位態(tài),所述步驟f)進(jìn)一步包括步驟(1) 當(dāng)所述^C接口狀態(tài)機(jī)處于讀數(shù)據(jù)移位態(tài)時,所述存儲器控制模塊輸出端的存儲器讀寫信號輸出端根據(jù)接收的狀態(tài)信號輸出相應(yīng)讀信號,所述fc接口狀態(tài)機(jī)將已載入的所述存儲器控制模塊讀取的所述待訪問的現(xiàn)場可編程門陣 列內(nèi)部存儲器相應(yīng)地址的數(shù)據(jù)傳輸至所述I"C總線,然后其轉(zhuǎn)入讀應(yīng)答態(tài)并將當(dāng) 前狀態(tài)傳輸至所述存儲器控制模塊,所述存儲器控制模塊根據(jù)接收的狀態(tài)信號 使所述地址計數(shù)器加一,否則所述fC接口狀態(tài)機(jī)仍處于讀數(shù)據(jù)移位態(tài);(2) 當(dāng)所述^C接口狀態(tài)機(jī)處于讀應(yīng)答態(tài)時,所述存儲器控制^t塊根據(jù)所的數(shù)據(jù),并將所讀取的數(shù)據(jù)傳輸至所述fc接口狀態(tài)機(jī),同時,所述fc接口狀態(tài)機(jī)立即轉(zhuǎn)移到讀數(shù)據(jù)重復(fù)態(tài);以及(3) 當(dāng)所述fC接口狀態(tài)機(jī)處于讀數(shù)據(jù)重復(fù)態(tài)時,如果接收到重啟'符或者 結(jié)束符,其返回到空閑態(tài);否則轉(zhuǎn)移到讀^t據(jù)移位態(tài)。方法,其特征在于當(dāng)所述寫數(shù)據(jù)狀態(tài)包括寫數(shù)據(jù)移位態(tài)、寫應(yīng)答態(tài)、寫數(shù)據(jù) 重復(fù)態(tài)3個子態(tài)時,在所述步驟(5)中,所述fC接口狀態(tài)機(jī)選擇性進(jìn)入寫數(shù) 據(jù)狀態(tài)中的寫數(shù)據(jù)移位態(tài),所述步驟g)進(jìn)一步包括(1 )當(dāng)所述I2C接口狀態(tài)機(jī)處于寫數(shù)據(jù)移位態(tài)時,其通過輸入端的數(shù)據(jù)接 收端接收數(shù)據(jù),若接收到的預(yù)設(shè)數(shù)目的數(shù)據(jù)后其轉(zhuǎn)入寫應(yīng)答態(tài),否則繼續(xù)處于 寫數(shù)據(jù)移位態(tài);(2) 當(dāng)所述fC接口狀態(tài)機(jī)處于寫應(yīng)答態(tài)時,其將當(dāng)前狀態(tài)輸出,'所述存 儲器控制模塊根據(jù)接收的狀態(tài)信號其存儲器讀寫信號輸出端輸出寫信號,所述 I2C接口狀態(tài)機(jī)繼續(xù)接收數(shù)據(jù)以使接收的數(shù)據(jù)完整,同時將接收的數(shù)據(jù)全部傳輸 至所述存儲器控制模塊后,其立即轉(zhuǎn)移到寫數(shù)據(jù)重復(fù)態(tài),同時所述存儲器控制 模塊根據(jù)地址計數(shù)器的計數(shù)將接收的數(shù)據(jù)寫入所述待訪問的現(xiàn)場可編程門陣列 內(nèi)部存儲器相應(yīng)地址,然后所述地址計數(shù)器加一;以及.(3) 所述fC接口狀態(tài)機(jī)處于寫數(shù)據(jù)重復(fù)態(tài)時,如果接收到到重啟符或者 結(jié)束符,其返回到空閑態(tài);否則轉(zhuǎn)移到寫數(shù)據(jù)移位態(tài),開始新一輪寫數(shù)據(jù)操作。
全文摘要
本發(fā)明提供一種通過I<sup>2</sup>C接口訪問現(xiàn)場可編程門陣列內(nèi)部存儲器的方法,通過將一I<sup>2</sup>C接口狀態(tài)機(jī)輸入端的時鐘控制端與數(shù)據(jù)通信端分別與I<sup>2</sup>C總線的時鐘輸出端及數(shù)據(jù)通信端相連接,將其輸出端的狀態(tài)輸出端及數(shù)據(jù)通信端分別與一存儲器控制模塊輸入端的狀態(tài)輸入端及數(shù)據(jù)通信端相連接,并將存儲器控制模塊輸入端的時鐘控制端與I<sup>2</sup>C總線的時鐘輸出端相連接,將其輸出端的存儲器讀寫信號輸出端、數(shù)據(jù)通信端及地址輸出端分別與待訪問的FPGA內(nèi)部存儲器的讀寫信號接收端、數(shù)據(jù)輸入/輸出端及地址接收端相連接,同時將待訪問的FPGA內(nèi)部存儲器的時鐘控制端與I<sup>2</sup>C總線的時鐘輸出端相連接,通過I<sup>2</sup>C接口狀態(tài)機(jī)的狀態(tài)變換可實現(xiàn)對FPGA內(nèi)部存儲器的訪問。
文檔編號G06F13/40GK101158932SQ20071004549
公開日2008年4月9日 申請日期2007年8月31日 優(yōu)先權(quán)日2007年8月31日
發(fā)明者劉才勇 申請人:上海廣電(集團(tuán))有限公司中央研究院