專利名稱:集成電路芯片中串行外設(shè)從器件接口結(jié)構(gòu)及數(shù)據(jù)讀寫(xiě)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及集成電路領(lǐng)域,特別涉及數(shù)字邏輯集成電路芯片中的串行數(shù)據(jù)傳輸 技術(shù)領(lǐng)域,具體是指一種集成電路芯片中串行外設(shè)從器件接口結(jié)構(gòu)及數(shù)據(jù)讀寫(xiě)方法。
背景技術(shù):
在數(shù)字集成電路領(lǐng)域,串行數(shù)據(jù)傳輸是一種應(yīng)用及其廣泛的數(shù)據(jù)傳輸方式,其 工作原理是將一條信息的各位按順序逐個(gè)傳輸。
常用的串行數(shù)據(jù)接口有UART、I2C、USB、SPI等等。下面對(duì)各種串口進(jìn)行簡(jiǎn) 單介紹
UART (Universal Asynchronous Receiver/Transmitter,通用異步收發(fā)器)是一種技術(shù)成熟的異步數(shù)據(jù)收發(fā)接口,其主要信號(hào)有發(fā)送信號(hào)UART_TX和接收信號(hào)UART_RX。 最快傳輸速率一般在115Kbps 230Kbps之間。
I2C (Inter-Integrated Circuit,內(nèi)部集成電路)是飛利浦公司在1980年提出的一種兩線式串行總線,用于連接微控制器及外圍設(shè)備。I2C總線是由數(shù)據(jù)線SDA和時(shí)鐘SCI 構(gòu)成的串行總線,可發(fā)送和接收數(shù)據(jù)。在CPU和被控制IC之間、IC與IC之間進(jìn)行雙 向傳送,最高傳輸速率為3.4Mbps。
USB (Universal Serial Bus,通用串行總線)最初是英特爾與微軟公司提出的一個(gè) 連接外部裝置的串行傳輸總線,主要用途是連接各種外圍設(shè)備及進(jìn)行大數(shù)據(jù)量傳輸。目 前USB支持3種傳輸速率低速1.5Mps,全速12Mbps,高速480Mbps。而USB與其 他串行接口不同之處在于USB接口的四根管腳除電源和接地外,另外兩根D+、D-信號(hào) 是兩個(gè)同源LVDS (Low-voltage differential signaling,)低電壓差分信號(hào)。由于低電壓差 分信號(hào)可以有效抑制噪聲信號(hào)干擾,同時(shí)信號(hào)管腳較少只有四根,所以USB是目前業(yè)界 應(yīng)用最廣泛、傳輸速率最快的串行傳輸接口。
SPI (Serial Peripheral Interface,串行外設(shè)接口)是 Motorola 公司首先在其 MC68HCXX系列處理器上定義的。SPI接口可在CPU和外圍低速器件之間進(jìn)行同步串行 數(shù)據(jù)傳輸。數(shù)據(jù)傳輸速度比其他串行接口,例如UART或者I2C總線來(lái)說(shuō)要快,可以達(dá) 到IOMbps左右。
SPI接口包括以下四種信號(hào)
· SCLK——時(shí)鐘信號(hào),由主器件產(chǎn)生;
· MOSI——主器件數(shù)據(jù)輸出從器件數(shù)據(jù)輸入信號(hào);
· MISO——主器件數(shù)據(jù)輸入從器件數(shù)據(jù)輸出信號(hào);
· SS——從器件選擇信號(hào),低電平有效,由主器件控制。
SPI接口以主從方式工作。這種工作模式通常有一個(gè)主器件和一個(gè)或多個(gè)從器 件,只需相應(yīng)增加SS從器件選擇信號(hào)即可。具體請(qǐng)參閱圖1所示。
隨著科學(xué)技術(shù)的發(fā)展,對(duì)串行數(shù)據(jù)接口速率的要高也越來(lái)越高。每秒幾兆比特 的數(shù)據(jù)傳輸速率已經(jīng)遠(yuǎn)遠(yuǎn)滿足不了實(shí)際需求。例如3G無(wú)線通信領(lǐng)域,現(xiàn)有WCDMA網(wǎng)絡(luò)的下行速率最高在14.4Mps,這就意味著串行數(shù)據(jù)接口的傳輸速率至少要達(dá)到甚至遠(yuǎn)遠(yuǎn) 超過(guò) 14.4Mps。
很顯然,UART和I2C由于接口結(jié)構(gòu)和傳輸協(xié)議的局限性,性能達(dá)不到上述需 求。而USB雖然應(yīng)付上述速率的數(shù)據(jù)傳輸綽綽有余,但USB接口相比其他串行接口存 在著明顯的劣勢(shì)USB協(xié)議較為復(fù)雜,導(dǎo)致USB接口芯片和PC側(cè)同步的驅(qū)動(dòng)軟件開(kāi)發(fā) 周期較長(zhǎng),實(shí)現(xiàn)難度遠(yuǎn)比其他串口大的多。同時(shí)USB接口采用的LVDS信號(hào)需要額外的 模擬電路模塊,所以采用USB方案勢(shì)必會(huì)增加芯片的成本。
而SPI接口,結(jié)構(gòu)清晰,協(xié)議簡(jiǎn)單,應(yīng)用廣泛,傳輸速率也不慢。比起UART 和I2C在傳輸速率方面有優(yōu)勢(shì),與USB相比硬件實(shí)現(xiàn)和軟件操作都較為簡(jiǎn)單。唯一不足 的一點(diǎn)業(yè)界現(xiàn)有的SPI接口,尤其是SPI Slave,實(shí)際最快數(shù)據(jù)傳輸速率在IOMbps左 右,雖然比起UART和I2C等串口已經(jīng)快了許多,但還是滿足不了某些高速數(shù)據(jù)傳輸?shù)男?求(譬如3G無(wú)線通信領(lǐng)域)。發(fā)明內(nèi)容
本發(fā)明的目的是克服了上述現(xiàn)有技術(shù)中的缺點(diǎn),提供一種能夠?qū)崿F(xiàn)數(shù)據(jù)高速傳 輸、結(jié)構(gòu)簡(jiǎn)單實(shí)用、使用快捷方便、工作性能穩(wěn)定可靠、適用范圍較為廣泛的集成電路 芯片中串行外設(shè)從器件接口結(jié)構(gòu)及數(shù)據(jù)讀寫(xiě)方法。
為了實(shí)現(xiàn)上述的目的,本發(fā)明的集成電路芯片中串行外設(shè)從器件接口結(jié)構(gòu)及數(shù) 據(jù)讀寫(xiě)方法如下
該集成電路芯片中串行外設(shè)從器件接口結(jié)構(gòu),其主要特點(diǎn)是,所述的接口結(jié)構(gòu) 包括
寄存器模塊,進(jìn)行數(shù)據(jù)傳輸控制;
存儲(chǔ)模塊,存儲(chǔ)外部串行外設(shè)主器件發(fā)送來(lái)的數(shù)據(jù)和需要發(fā)送給外部串行外設(shè) 主器件的數(shù)據(jù);
狀態(tài)機(jī)邏輯控制模塊,分別與所述的寄存器模塊、存儲(chǔ)模塊相連接,控制串行 外設(shè)從器件的狀態(tài)機(jī)邏輯跳轉(zhuǎn);
所述的串行外設(shè)從器件接口結(jié)構(gòu)通過(guò)芯片內(nèi)部總線與芯片的中央處理器相連 接,且該串行外設(shè)從器件接口結(jié)構(gòu)還通過(guò)數(shù)據(jù)傳輸線與外部串行外設(shè)主器件相連接。
該集成電路芯片中串行外設(shè)從器件接口結(jié)構(gòu)中的寄存器模塊包括
控制寄存器,控制串行外設(shè)從器件的傳輸功能信息;
狀態(tài)寄存器,顯示串行外設(shè)從器件的內(nèi)部狀態(tài)信息;
起始地址寄存器,控制DMA (Direct Memory Access,直接內(nèi)存訪問(wèn))操作所搬運(yùn)數(shù)據(jù)的起始地址;
目的地址寄存器,控制DMA操作所搬運(yùn)數(shù)據(jù)的目的地址;
長(zhǎng)度寄存器,控制DMA操作所搬運(yùn)數(shù)據(jù)的長(zhǎng)度;
所述的控制寄存器、狀態(tài)寄存器、起始地址寄存器、目的地址寄存器和長(zhǎng)度寄 存器均與所述的狀態(tài)機(jī)邏輯控制模塊相連接。
該集成電路芯片中串行外設(shè)從器件接口結(jié)構(gòu)中的存儲(chǔ)模塊為RAM存儲(chǔ)器。
該集成電路芯片中串行外設(shè)從器件接口結(jié)構(gòu)中的接口結(jié)構(gòu)還包括發(fā)送邏輯控制模塊,該發(fā)送邏輯控制模塊與所述的狀態(tài)機(jī)邏輯控制模塊相連接,對(duì)數(shù)據(jù)發(fā)送時(shí)序進(jìn)行 控制,將數(shù)據(jù)轉(zhuǎn)化成串行格式。該集成電路芯片中串行外設(shè)從器件接口結(jié)構(gòu)中的發(fā)送邏輯控制模塊中包括時(shí)鐘 組合邏輯單元和D觸發(fā)器單元,所述的時(shí)鐘組合邏輯單元的輸出端與所述的D觸發(fā)器的 時(shí)鐘輸入端相連接。該集成電路芯片中串行外設(shè)從器件接口結(jié)構(gòu)中的接口結(jié)構(gòu)還包括接收邏輯控制 模塊,該接收邏輯控制模塊與所述的狀態(tài)機(jī)邏輯控制模塊相連接,對(duì)數(shù)據(jù)接收時(shí)序進(jìn)行 控制,將串行數(shù)據(jù)依次接收并排列組合后存入所述的存儲(chǔ)模塊中。該集成電路芯片中串行外設(shè)從器件接口結(jié)構(gòu)中的接收邏輯控制模塊包括依次級(jí) 聯(lián)的三個(gè)D觸發(fā)器。該利用上述的接口結(jié)構(gòu)實(shí)現(xiàn)集成電路芯片中串行外設(shè)接口數(shù)據(jù)高速讀寫(xiě)的方 法,其主要特點(diǎn)是,所述的方法包括串行外設(shè)主器件讀取數(shù)據(jù)處理和串行外設(shè)主器件寫(xiě) 入數(shù)據(jù)處理,所述的串行外設(shè)主器件讀取數(shù)據(jù)處理,包括以下步驟(11)所述的外部串行外設(shè)主器件對(duì)起始地址寄存器進(jìn)行寫(xiě)操作,設(shè)置芯片內(nèi)部 讀取的源數(shù)據(jù)地址;(12)所述的外部串行外設(shè)主器件對(duì)目的地址寄存器進(jìn)行寫(xiě)操作,將DMA操作的 目的地址設(shè)置為所述的串行外設(shè)從器件接口結(jié)構(gòu)中的存儲(chǔ)模塊的起始地址;(13)所述的外部串行外設(shè)主器件對(duì)長(zhǎng)度寄存器進(jìn)行寫(xiě)操作,設(shè)置DMA操作所搬 運(yùn)的數(shù)據(jù)長(zhǎng)度;(14)所述的外部串行外設(shè)主器件對(duì)控制寄存器進(jìn)行寫(xiě)操作,觸發(fā)DMA操作,將 芯片內(nèi)部的數(shù)據(jù)搬運(yùn)到所述的存儲(chǔ)模塊中;(15)所述的外部串行外設(shè)主器件對(duì)狀態(tài)寄存器進(jìn)行讀操作,查詢DMA操作是否 完成;(16)所述的外部串行外設(shè)主器件從所述的串行外設(shè)從器件接口結(jié)構(gòu)讀取存儲(chǔ)于 存儲(chǔ)模塊中的數(shù)據(jù);所述的串行外設(shè)主器件寫(xiě)入數(shù)據(jù)處理,包括以下步驟(21)所述的外部串行外設(shè)主器件向所述的串行外設(shè)從器件接口結(jié)構(gòu)發(fā)送數(shù)據(jù), 所述的串行外設(shè)從器件接口結(jié)構(gòu)將接收到的數(shù)據(jù)存入所述的存儲(chǔ)模塊中;(22)所述的外部串行外設(shè)主器件對(duì)起始地址寄存器進(jìn)行寫(xiě)操作,將DMA操作的 源數(shù)據(jù)地址設(shè)置為存儲(chǔ)模塊的起始地址;(23)所述的外部串行外設(shè)主器件對(duì)目的地址寄存器進(jìn)行,設(shè)置DMA操作將數(shù)據(jù) 搬運(yùn)到芯片內(nèi)部的目的地址;(24)所述的外部串行外設(shè)主器件對(duì)長(zhǎng)度寄存器進(jìn)行寫(xiě)操作,設(shè)置DMA操作所搬 運(yùn)的數(shù)據(jù)長(zhǎng)度;(25)所述的外部串行外設(shè)主器件對(duì)控制寄存器進(jìn)行寫(xiě)操作,觸發(fā)DMA操作,將 所述的存儲(chǔ)模塊中的數(shù)據(jù)搬運(yùn)到芯片內(nèi)部;(26)所述的外部串行外設(shè)主器件對(duì)狀態(tài)寄存器進(jìn)行讀操作,查詢DMA操作是否 完成。該實(shí)現(xiàn)集成電路芯片中串行外設(shè)接口數(shù)據(jù)高速讀寫(xiě)的方法中的外部串行外設(shè)主器件對(duì)起始地址寄存器進(jìn)行寫(xiě)操作、對(duì)目的地址寄存器進(jìn)行寫(xiě)操作、對(duì)長(zhǎng)度寄存器進(jìn)行 寫(xiě)操作、對(duì)控制寄存器進(jìn)行寫(xiě)操作均為外部串行外設(shè)主器件對(duì)寄存器進(jìn)行寫(xiě)操作,包括 以下步驟(31)所述的外部串行外設(shè)主器件將串行外設(shè)接口的片選信號(hào)線的信號(hào)電平設(shè)置 為低,并在時(shí)鐘線上產(chǎn)生時(shí)鐘信號(hào);(32)所述的外部串行外設(shè)主器件通過(guò)主器件數(shù)據(jù)輸出從器件數(shù)據(jù)輸入線向串行 外設(shè)從器件接口結(jié)構(gòu)發(fā)送讀寄存器操作指令;(33)所述的外部串行外設(shè)主器件通過(guò)主器件數(shù)據(jù)輸出從器件數(shù)據(jù)輸入線向所述 的串行外設(shè)從器件接口結(jié)構(gòu)中的相應(yīng)寄存器發(fā)送數(shù)據(jù)信息;(34)數(shù)據(jù)信息發(fā)送完畢后,所述的外部串行外設(shè)主器件將片選信號(hào)線的信號(hào)電 平設(shè)置為高,并使得時(shí)鐘線上的時(shí)鐘信號(hào)停止。該實(shí)現(xiàn)集成電路芯片中串行外設(shè)接口數(shù)據(jù)高速讀寫(xiě)的方法中的對(duì)狀態(tài)寄存器進(jìn) 行讀操作,包括以下步驟(41)所述的外部串行外設(shè)主器件將串行外設(shè)接口的片選信號(hào)線的信號(hào)電平設(shè)置 為低,并在時(shí)鐘線上產(chǎn)生時(shí)鐘信號(hào);(42)所述的外部串行外設(shè)主器件通過(guò)主器件數(shù)據(jù)輸出從器件數(shù)據(jù)輸入線向串行 外設(shè)從器件接口結(jié)構(gòu)發(fā)送讀狀態(tài)寄存器操作指令;(43)所述的串行外設(shè)從器件接口結(jié)構(gòu)接收到該讀狀態(tài)寄存器操作指令,并通過(guò) 主器件數(shù)據(jù)輸入從器件數(shù)據(jù)輸出線向所述的外部串行外設(shè)主器件發(fā)送該狀態(tài)寄存器的數(shù) 據(jù)信息;(44)數(shù)據(jù)信息發(fā)送完畢后,所述的外部串行外設(shè)主器件將片選信號(hào)線的信號(hào)電 平設(shè)置為高,并使得時(shí)鐘線上的時(shí)鐘信號(hào)停止。該實(shí)現(xiàn)集成電路芯片中串行外設(shè)接口數(shù)據(jù)高速讀寫(xiě)的方法中的外部串行外設(shè)主 器件從串行外設(shè)從器件接口結(jié)構(gòu)讀取存儲(chǔ)于存儲(chǔ)模塊中的數(shù)據(jù),包括以下步驟(51)所述的外部串行外設(shè)主器件將片選信號(hào)線的信號(hào)電平設(shè)置為低,并在時(shí)鐘 線上產(chǎn)生時(shí)鐘信號(hào);(52)所述的外部串行外設(shè)主器件通過(guò)主器件數(shù)據(jù)輸出從器件數(shù)據(jù)輸入線向串行 外設(shè)從器件接口結(jié)構(gòu)發(fā)送數(shù)據(jù)讀取指令;(53)所述的串行外設(shè)從器件接口結(jié)構(gòu)接收到該數(shù)據(jù)讀取指令,并通過(guò)主器件數(shù) 據(jù)輸入從器件數(shù)據(jù)輸出線向所述的外部串行外設(shè)主器件發(fā)送存儲(chǔ)與存儲(chǔ)模塊中的數(shù)據(jù)信 息;(54)數(shù)據(jù)信息發(fā)送完畢后,所述的外部串行外設(shè)主器件將片選信號(hào)線的信號(hào)電 平設(shè)置為高,并使得時(shí)鐘線上的時(shí)鐘信號(hào)停止。該實(shí)現(xiàn)集成電路芯片中串行外設(shè)接口數(shù)據(jù)高速讀寫(xiě)的方法中的外部串行外設(shè)主 器件向串行外設(shè)從器件接口結(jié)構(gòu)發(fā)送數(shù)據(jù),包括以下步驟(61)所述的外部串行外設(shè)主器件將片選信號(hào)線的信號(hào)電平設(shè)置為低,并在時(shí)鐘 線上產(chǎn)生時(shí)鐘信號(hào);(62)所述的外部串行外設(shè)主器件通過(guò)主器件數(shù)據(jù)輸出從器件數(shù)據(jù)輸入線向串行 外設(shè)從器件接口結(jié)構(gòu)發(fā)送數(shù)據(jù)寫(xiě)入指令;
(63)所述的外部串行外設(shè)主器件通過(guò)主器件數(shù)據(jù)輸出從器件數(shù)據(jù)輸入線向所述 的串行外設(shè)從器件接口結(jié)構(gòu)發(fā)送數(shù)據(jù)信息;
(64)數(shù)據(jù)信息發(fā)送完畢后,所述的外部串行外設(shè)主器件將片選信號(hào)線的信號(hào)電 平設(shè)置為高,并使得時(shí)鐘線上的時(shí)鐘信號(hào)停止。
采用了該發(fā)明的集成電路芯片中串行外設(shè)從器件接口結(jié)構(gòu)及數(shù)據(jù)讀寫(xiě)方法,由 于其中采用了四種數(shù)據(jù)交互方式串行外設(shè)主器件讀寄存器、串行外設(shè)主器件寫(xiě)寄存 器、串行外設(shè)主器件讀數(shù)據(jù)、串行外設(shè)主器件寫(xiě)數(shù)據(jù),從而基于上述交互方式,外部串 行外設(shè)主器件可以方便快捷地與具有串行外設(shè)從器件6PI Slave)接口結(jié)構(gòu)的芯片進(jìn)行大 數(shù)據(jù)量通信,同時(shí)SPISlave接口結(jié)構(gòu)還對(duì)發(fā)送和接收邏輯部分對(duì)時(shí)序進(jìn)行了特殊處理, 從而保證了 SPI Slave接口的數(shù)據(jù)傳輸速率遠(yuǎn)遠(yuǎn)高于普通SPI接口,根據(jù)實(shí)際測(cè)試經(jīng)驗(yàn), 本發(fā)明的SPI Slave接口傳輸速率可以穩(wěn)定達(dá)到20Mbps,而且該SPI Slave接口結(jié)構(gòu)簡(jiǎn)單, 操作方式方便快捷,開(kāi)發(fā)成本低廉,工作性能穩(wěn)定可靠,適用范圍較為廣泛,拓寬了現(xiàn) 有集成電路領(lǐng)域高速串行數(shù)據(jù)傳輸接口的選擇方案,在串行高速數(shù)據(jù)傳輸應(yīng)用領(lǐng)域有著 廣闊的應(yīng)用前景。
圖1為現(xiàn)有技術(shù)中的SPI接口信號(hào)及連接示意圖。
圖2為本發(fā)明的集成電路芯片中串行外設(shè)從器件接口結(jié)構(gòu)整體示意圖。
圖3為本發(fā)明的集成電路芯片中串行外設(shè)從器件接口結(jié)構(gòu)中的發(fā)送邏輯控制模 塊結(jié)構(gòu)示意圖。
圖4為本發(fā)明的集成電路芯片中串行外設(shè)從器件接口結(jié)構(gòu)中的接收邏輯控制模 塊結(jié)構(gòu)示意圖。
圖5為本發(fā)明的實(shí)現(xiàn)集成電路芯片中串行外設(shè)接口數(shù)據(jù)高速讀寫(xiě)的方法中外部 串行外設(shè)主器件讀寄存器時(shí)序示意圖。
圖6為本發(fā)明的實(shí)現(xiàn)集成電路芯片中串行外設(shè)接口數(shù)據(jù)高速讀寫(xiě)的方法中外部 串行外設(shè)主器件寫(xiě)寄存器時(shí)序示意圖。
圖7為本發(fā)明的實(shí)現(xiàn)集成電路芯片中串行外設(shè)接口數(shù)據(jù)高速讀寫(xiě)的方法中外部 串行外設(shè)主器件讀數(shù)據(jù)時(shí)序示意圖。
圖8為本發(fā)明的實(shí)現(xiàn)集成電路芯片中串行外設(shè)接口數(shù)據(jù)高速讀寫(xiě)的方法中外部 串行外設(shè)主器件寫(xiě)數(shù)據(jù)時(shí)序示意圖。
圖9為本發(fā)明的實(shí)現(xiàn)集成電路芯片中串行外設(shè)接口數(shù)據(jù)高速讀寫(xiě)的方法中外部 串行外設(shè)主器件讀芯片內(nèi)部數(shù)據(jù)的整體流程圖。
圖10為本發(fā)明的實(shí)現(xiàn)集成電路芯片中串行外設(shè)接口數(shù)據(jù)高速讀寫(xiě)的方法中外部 串行外設(shè)主器件往芯片內(nèi)部寫(xiě)數(shù)據(jù)的整體流程圖。
具體實(shí)施方式
為了能夠更清楚地理解本發(fā)明的技術(shù)內(nèi)容,特舉以下實(shí)施例詳細(xì)說(shuō)明。
請(qǐng)參閱圖2至圖4所示,該集成電路芯片中串行外設(shè)從器件接口結(jié)構(gòu),其中所述 的接口結(jié)構(gòu)包括9
(1)寄存器模塊,進(jìn)行數(shù)據(jù)傳輸控制,該寄存器模塊包括
·控制寄存器,控制串行外設(shè)從器件的傳輸功能信息;
·狀態(tài)寄存器,顯示串行外設(shè)從器件的內(nèi)部狀態(tài)信息;
·起始地址寄存器,控制DMA操作所搬運(yùn)數(shù)據(jù)的起始地址;
·目的地址寄存器,控制DMA操作所搬運(yùn)數(shù)據(jù)的目的地址;
·長(zhǎng)度寄存器,控制DMA操作所搬運(yùn)數(shù)據(jù)的長(zhǎng)度;
(2)存儲(chǔ)模塊,存儲(chǔ)外部串行外設(shè)主器件發(fā)送來(lái)的數(shù)據(jù)和需要發(fā)送給外部串行外 設(shè)主器件的數(shù)據(jù);該存儲(chǔ)模塊可以為RAM存儲(chǔ)器,也可以為其它能夠適應(yīng)數(shù)據(jù)高速存取 的存儲(chǔ)功能模塊;
(3)狀態(tài)機(jī)邏輯控制模塊,分別與所述的寄存器模塊、存儲(chǔ)模塊相連接,控制串 行外設(shè)從器件的狀態(tài)機(jī)邏輯跳轉(zhuǎn);
(4)發(fā)送邏輯控制模塊,該發(fā)送邏輯控制模塊與所述的狀態(tài)機(jī)邏輯控制模塊相連 接,對(duì)數(shù)據(jù)發(fā)送時(shí)序進(jìn)行控制,將數(shù)據(jù)轉(zhuǎn)化成串行格式;該發(fā)送邏輯控制模塊中包括時(shí) 鐘組合邏輯單元和D觸發(fā)器單元,所述的時(shí)鐘組合邏輯單元的輸出端與所述的D觸發(fā)器 的時(shí)鐘輸入端相連接;
(5)接收邏輯控制模塊,該接收邏輯控制模塊與所述的狀態(tài)機(jī)邏輯控制模塊相連 接,對(duì)數(shù)據(jù)接收時(shí)序進(jìn)行控制,將串行數(shù)據(jù)依次接收并排列組合后存入所述的存儲(chǔ)模塊 中;該接收邏輯控制模塊包括依次級(jí)聯(lián)的三個(gè)D觸發(fā)器。
同時(shí),所述的串行外設(shè)從器件接口結(jié)構(gòu)通過(guò)芯片內(nèi)部總線與芯片的中央處理器 相連接,且該串行外設(shè)從器件接口結(jié)構(gòu)還通過(guò)數(shù)據(jù)傳輸線與外部串行外設(shè)主器件相連 接;所述的控制寄存器、狀態(tài)寄存器、起始地址寄存器、目的地址寄存器和長(zhǎng)度寄存器 均與所述的狀態(tài)機(jī)邏輯控制模塊相連接。
在實(shí)際使用當(dāng)中,該串行外設(shè)從器件6PI Slave)接口完全符合SPI ^lave接口時(shí) 序規(guī)范,支持CPOL (時(shí)鐘極性)和CPHA(時(shí)鐘相位)選擇。支持8位、16位、32位數(shù) 據(jù)位寬操作,可以適應(yīng)各種數(shù)據(jù)位寬主機(jī)。
該SPI Slave接口支持?jǐn)?shù)據(jù)burst操作,即外部主器件可其進(jìn)行連續(xù)的數(shù)據(jù)讀寫(xiě)操作。
該SPI Slave 接口 包含四根傳輸信號(hào)SCLK、SS、MOSK MISO。該 SPI Slave 接口同時(shí)支持SPI四線模式6CLK、SS、MOSK MISO)和三線模式6CLK、SS、 MISO)。其中該SPI Slave接口的SCLK、SS、MOSI為輸入信號(hào),MISO在四線模式時(shí)為輸出,三線模式時(shí)是雙向輸入輸出。
該SPI Slave接口內(nèi)部包含兩個(gè)中斷信號(hào)TRIG_ARM和 TRIG_DMA。SPI Slave 通過(guò)這兩根中斷信號(hào),產(chǎn)生中斷脈沖,觸發(fā)處理器(ARM (Advanced RISC Machine,高級(jí)精簡(jiǎn)指令集處理器)或DMA)進(jìn)行中斷操作。
該SPI Slave接口通過(guò)芯片內(nèi)部總線與處理器相連。本方案中與SPI Slave相關(guān) 聯(lián)的處理器是ARM與DMA。ARM可以對(duì)SPI Slave的寄存器進(jìn)行讀寫(xiě),控制SPI Slave 的主要功能,同時(shí)也可以訪問(wèn)SPI Slave的RAM空間,對(duì)該空間進(jìn)行數(shù)據(jù)讀寫(xiě)。DMA可 以訪問(wèn)相應(yīng)寄存器,同時(shí)對(duì)SPI Slave的RAM空間進(jìn)行快速讀寫(xiě)。
該SPI Slave接口內(nèi)部有4個(gè)控制寄存器,1個(gè)狀態(tài)寄存器
· SPI Slave 控制寄存器——SPI_SLAVE_CFG
· SPI Slave 狀態(tài)寄存器——SPI_SLAVE_STATUS
· DMA起始地址寄存器——DMA_SRC
.DMA目的地址寄存器——DMA_DST
· DMA 長(zhǎng)度寄存器-DMA_LENGTH
該SPI Slave接口內(nèi)部包含一塊RAM空間,用于存放發(fā)送或接收到的數(shù)據(jù);外部 主器件可對(duì)該RAM空間進(jìn)行讀寫(xiě),同時(shí)芯片內(nèi)部處理器(ARM或DMA)也可對(duì)該RAM空間進(jìn)行讀寫(xiě)。
該SPI Slave接口可以作為系統(tǒng)芯片與外部SPI Master進(jìn)行數(shù)據(jù)交互的接口橋 梁,從而外部串行外設(shè)主器件6PI Master)可通過(guò)SPI Slave讀寫(xiě)系統(tǒng)芯片內(nèi)部的任意數(shù)據(jù)。
請(qǐng)參閱圖2所示,本發(fā)明的SPI Slave接口結(jié)構(gòu)中包含
(1)寄存器模塊
· SPI_SLAVE_CFG寄存器控制SPI Slave各項(xiàng)傳輸功能,譬如傳輸波特率等。
· SPI_SLAVE_STATUS寄存器顯示SPI Slave的內(nèi)部狀態(tài),譬如狀態(tài)機(jī)等信息。
· DMA_SRC寄存器控制DMA將要搬運(yùn)數(shù)據(jù)的起始地址。
· DMA_DST寄存器控制DMA要把數(shù)據(jù)搬運(yùn)到的目的地址。
· DMA_LENGTH寄存器控制DMA將要搬運(yùn)的數(shù)據(jù)長(zhǎng)度。
(2)RAM空間用于存放從主器件接收到的數(shù)據(jù),或者存放將要發(fā)送給主器件 的數(shù)據(jù)。
C3)TX邏輯對(duì)發(fā)送時(shí)序進(jìn)行控制,將數(shù)據(jù)轉(zhuǎn)化成串行格式,并通過(guò)MISO管 腳依次發(fā)送。
(4)RX邏輯;對(duì)接收時(shí)序進(jìn)行控制,從MC^I管腳將串行數(shù)據(jù)依次接收,排列 組合后,存入RAM空間。
(5) FSM Controller狀態(tài)機(jī)控制邏輯控制SPI Slave的狀態(tài)機(jī)跳轉(zhuǎn)。
該SPI Slave接口外部包括四組信號(hào)線
· SYS_CLK和SYS_RESET 系統(tǒng)時(shí)鐘信號(hào)及系統(tǒng)復(fù)位信號(hào);
· TRIG_ARM 和 TRIG_DMA ARM 中斷信號(hào)及 DMA 中斷信號(hào);
· SPI接口信號(hào)SCLK,MOSI,MISO, SS。與外部的主器件相連;
·芯片內(nèi)部總線與芯片處理器進(jìn)行交互。與本發(fā)明的SPI ^lave接口相關(guān)聯(lián)的 處理器是ARM和DMA。
再請(qǐng)參閱圖5至圖10所示,該利用上述的接口結(jié)構(gòu)實(shí)現(xiàn)集成電路芯片中串行外 設(shè)接口數(shù)據(jù)高速讀寫(xiě)的方法,其中,所述的方法包括串行外設(shè)主器件讀取數(shù)據(jù)處理和串 行外設(shè)主器件寫(xiě)入數(shù)據(jù)處理,所述的串行外設(shè)主器件讀取數(shù)據(jù)處理,包括以下步驟
(11)所述的外部串行外設(shè)主器件對(duì)起始地址寄存器進(jìn)行寫(xiě)操作,設(shè)置芯片內(nèi)部 讀取的源數(shù)據(jù)地址;
(12)所述的外部串行外設(shè)主器件對(duì)目的地址寄存器進(jìn)行寫(xiě)操作,將DMA操作的 目的地址設(shè)置為所述的串行外設(shè)從器件接口結(jié)構(gòu)中的存儲(chǔ)模塊的起始地址;
(13)所述的外部串行外設(shè)主器件對(duì)長(zhǎng)度寄存器進(jìn)行寫(xiě)操作,設(shè)置DMA操作所搬運(yùn)的數(shù)據(jù)長(zhǎng)度;(14)所述的外部串行外設(shè)主器件對(duì)控制寄存器進(jìn)行寫(xiě)操作,觸發(fā)DMA操作,將 芯片內(nèi)部的數(shù)據(jù)搬運(yùn)到所述的存儲(chǔ)模塊中;(15)所述的外部串行外設(shè)主器件對(duì)狀態(tài)寄存器進(jìn)行讀操作,查詢DMA操作是否 完成;該對(duì)狀態(tài)寄存器進(jìn)行讀操作,包括以下步驟(a)所述的外部串行外設(shè)主器件將串行外設(shè)接口的片選信號(hào)線的信號(hào)電平設(shè)置為 低,并在時(shí)鐘線上產(chǎn)生時(shí)鐘信號(hào);(b)所述的外部串行外設(shè)主器件通過(guò)主器件數(shù)據(jù)輸出從器件數(shù)據(jù)輸入線向串行外 設(shè)從器件接口結(jié)構(gòu)發(fā)送讀狀態(tài)寄存器操作指令;(c)所述的串行外設(shè)從器件接口結(jié)構(gòu)接收到該讀狀態(tài)寄存器操作指令,并通過(guò)主 器件數(shù)據(jù)輸入從器件數(shù)據(jù)輸出線向所述的外部串行外設(shè)主器件發(fā)送該狀態(tài)寄存器的數(shù)據(jù) fn息;(d)數(shù)據(jù)信息發(fā)送完畢后,所述的外部串行外設(shè)主器件將片選信號(hào)線的信號(hào)電平 設(shè)置為高,并使得時(shí)鐘線上的時(shí)鐘信號(hào)停止;(16)所述的外部串行外設(shè)主器件從所述的串行外設(shè)從器件接口結(jié)構(gòu)讀取存儲(chǔ)于 存儲(chǔ)模塊中的數(shù)據(jù),包括以下步驟(a)所述的外部串行外設(shè)主器件將片選信號(hào)線的信號(hào)電平設(shè)置為低,并在時(shí)鐘線 上產(chǎn)生時(shí)鐘信號(hào);(b)所述的外部串行外設(shè)主器件通過(guò)主器件數(shù)據(jù)輸出從器件數(shù)據(jù)輸入線向串行外 設(shè)從器件接口結(jié)構(gòu)發(fā)送數(shù)據(jù)讀取指令;(c)所述的串行外設(shè)從器件接口結(jié)構(gòu)接收到該數(shù)據(jù)讀取指令,并通過(guò)主器件數(shù) 據(jù)輸入從器件數(shù)據(jù)輸出線向所述的外部串行外設(shè)主器件發(fā)送存儲(chǔ)與存儲(chǔ)模塊中的數(shù)據(jù)信 息;(d)數(shù)據(jù)信息發(fā)送完畢后,所述的外部串行外設(shè)主器件將片選信號(hào)線的信號(hào)電平 設(shè)置為高,并使得時(shí)鐘線上的時(shí)鐘信號(hào)停止;所述的串行外設(shè)主器件寫(xiě)入數(shù)據(jù)處理,包括以下步驟(21)所述的外部串行外設(shè)主器件向所述的串行外設(shè)從器件接口結(jié)構(gòu)發(fā)送數(shù)據(jù), 所述的串行外設(shè)從器件接口結(jié)構(gòu)將接收到的數(shù)據(jù)存入所述的存儲(chǔ)模塊中;該外部串行外 設(shè)主器件向串行外設(shè)從器件接口結(jié)構(gòu)發(fā)送數(shù)據(jù),包括以下步驟(a)所述的外部串行外設(shè)主器件將片選信號(hào)線的信號(hào)電平設(shè)置為低,并在時(shí)鐘線 上產(chǎn)生時(shí)鐘信號(hào);(b)所述的外部串行外設(shè)主器件通過(guò)主器件數(shù)據(jù)輸出從器件數(shù)據(jù)輸入線向串行外 設(shè)從器件接口結(jié)構(gòu)發(fā)送數(shù)據(jù)寫(xiě)入指令;(c)所述的外部串行外設(shè)主器件通過(guò)主器件數(shù)據(jù)輸出從器件數(shù)據(jù)輸入線向所述的 串行外設(shè)從器件接口結(jié)構(gòu)發(fā)送數(shù)據(jù)信息;(d)數(shù)據(jù)信息發(fā)送完畢后,所述的外部串行外設(shè)主器件將片選信號(hào)線的信號(hào)電平 設(shè)置為高,并使得時(shí)鐘線上的時(shí)鐘信號(hào)停止;(22)所述的外部串行外設(shè)主器件對(duì)起始地址寄存器進(jìn)行寫(xiě)操作,將DMA操作的 源數(shù)據(jù)地址設(shè)置為存儲(chǔ)模塊的起始地址;
12
(23)所述的外部串行外設(shè)主器件對(duì)目的地址寄存器進(jìn)行,設(shè)置DMA操作將數(shù)據(jù) 搬運(yùn)到芯片內(nèi)部的目的地址;(24)所述的外部串行外設(shè)主器件對(duì)長(zhǎng)度寄存器進(jìn)行寫(xiě)操作,設(shè)置DMA操作所搬 運(yùn)的數(shù)據(jù)長(zhǎng)度;(25)所述的外部串行外設(shè)主器件對(duì)控制寄存器進(jìn)行寫(xiě)操作,觸發(fā)DMA操作,將 所述的存儲(chǔ)模塊中的數(shù)據(jù)搬運(yùn)到芯片內(nèi)部;(26)所述的外部串行外設(shè)主器件對(duì)狀態(tài)寄存器進(jìn)行讀操作,查詢DMA操作是否 完成,該對(duì)狀態(tài)寄存器進(jìn)行讀操作的具體實(shí)現(xiàn)步驟與前述相同。在以上各步驟中,所述的外部串行外設(shè)主器件對(duì)起始地址寄存器進(jìn)行寫(xiě)操作、 對(duì)目的地址寄存器進(jìn)行寫(xiě)操作、對(duì)長(zhǎng)度寄存器進(jìn)行寫(xiě)操作、對(duì)控制寄存器進(jìn)行寫(xiě)操作均 為外部串行外設(shè)主器件對(duì)寄存器進(jìn)行寫(xiě)操作,包括以下步驟(a)所述的外部串行外設(shè)主器件將串行外設(shè)接口的片選信號(hào)線的信號(hào)電平設(shè)置為 低,并在時(shí)鐘線上產(chǎn)生時(shí)鐘信號(hào);(b)所述的外部串行外設(shè)主器件通過(guò)主器件數(shù)據(jù)輸出從器件數(shù)據(jù)輸入線向串行外 設(shè)從器件接口結(jié)構(gòu)發(fā)送讀寄存器操作指令;(c)所述的外部串行外設(shè)主器件通過(guò)主器件數(shù)據(jù)輸出從器件數(shù)據(jù)輸入線向所述的 串行外設(shè)從器件接口結(jié)構(gòu)中的相應(yīng)寄存器發(fā)送數(shù)據(jù)信息;(d)數(shù)據(jù)信息發(fā)送完畢后,所述的外部串行外設(shè)主器件將片選信號(hào)線的信號(hào)電平 設(shè)置為高,并使得時(shí)鐘線上的時(shí)鐘信號(hào)停止。在實(shí)際使用當(dāng)中,與現(xiàn)有技術(shù)中的SPI Slave接口只有簡(jiǎn)單的接收和發(fā)送時(shí)序不 同,本發(fā)明的方法中自定義了四種數(shù)據(jù)交互方式主器件讀寄存器、主器件寫(xiě)寄存器、 主器件讀數(shù)據(jù)、主器件寫(xiě)數(shù)據(jù)。下面對(duì)這四種數(shù)據(jù)交互方式進(jìn)行詳細(xì)說(shuō)明(1)主器件讀寄存器具體時(shí)序請(qǐng)參閱圖5所示。主器件將片選信號(hào)SS拉低,同時(shí)在SCLK上產(chǎn)生時(shí) 鐘信號(hào),讀寄存器操作開(kāi)始。首先主器件通過(guò)MOSI向SPI Slave發(fā)送32bit command。 bit31 28為指令類型;bit27 bit24為SPI Slave內(nèi)部的寄存器ID ; bit23 bitO為無(wú)用 數(shù)據(jù)。當(dāng)bit31 28 = 1010時(shí),說(shuō)明是讀寄存器操作。SPI Slave接收完command后,
通過(guò)MISO向主器件發(fā)送相應(yīng)寄存器的32bit數(shù)據(jù)。SPI Slave發(fā)送完畢后,主器件將SS 拉高,SCLK時(shí)鐘停止,讀寄存器操作結(jié)束。(2)主器件寫(xiě)寄存器具體時(shí)序請(qǐng)參閱圖6所示。主器件將片選信號(hào)SS拉低,同時(shí)在SCLK上產(chǎn)生時(shí) 鐘信號(hào),寫(xiě)寄存器操作開(kāi)始。首先主器件通過(guò)MOSI向SPI Slave發(fā)送32bit command。 bit31 28為指令類型;bit27 bit24為SPI Slave內(nèi)部的寄存器ID。bit23 bitO為無(wú)用 數(shù)據(jù)。當(dāng)bit31 28 = 1011時(shí),說(shuō)明是寫(xiě)寄存器操作。主器件發(fā)送完寫(xiě)寄存器command 后,繼續(xù)發(fā)送32bit寄存器數(shù)據(jù),發(fā)送完畢后,主器件將SS拉高,SCLK時(shí)鐘停止,讀寄 存器操作結(jié)束。(3)主器件讀數(shù)據(jù)具體時(shí)序如圖7所示。主器件將片選信號(hào)SS拉低,同時(shí)在SCLK上產(chǎn)生時(shí)鐘信 號(hào),讀數(shù)據(jù)操作開(kāi)始。首先主器件通過(guò)MOSI向SPI Slave發(fā)送32bit command。bit31 觀為指令類型;bit27 bito為無(wú)用數(shù)據(jù)。當(dāng)bit31 ^ = 1100時(shí),說(shuō)明是讀數(shù)據(jù)操作。 SPI Slave接收完command后,通過(guò)MISO持續(xù)將RAM空間內(nèi)的數(shù)據(jù)返回給主器件,直到SS拉高,SCLK時(shí)鐘信停止,一次讀數(shù)據(jù)操作停止。
(4)主器件寫(xiě)數(shù)據(jù)
具體時(shí)序如圖8所示。主器件將片選信號(hào)SS拉低,同時(shí)在SCLK上產(chǎn)生時(shí)鐘信 號(hào),寫(xiě)數(shù)據(jù)操作開(kāi)始。首先主器件通過(guò)MOSI向SPI Slave發(fā)送32bit command。bit31 觀為指令類型;bit27 bitO為無(wú)用數(shù)據(jù)。當(dāng)bit31 ^ = 1101時(shí),說(shuō)明是寫(xiě)數(shù)據(jù)操作。 主器件發(fā)送完寫(xiě)數(shù)據(jù)command后繼續(xù)發(fā)送數(shù)據(jù),SPI Slave持續(xù)接收數(shù)據(jù),直到主器件將 SS拉高,SCLK時(shí)鐘停止,一次寫(xiě)數(shù)據(jù)操作結(jié)束。
以上四種數(shù)據(jù)交互方式實(shí)現(xiàn)了數(shù)據(jù)的連續(xù)讀寫(xiě)。每次讀寫(xiě)操作時(shí),指令只消耗 一個(gè)word周期,其余都是有效數(shù)據(jù)。交互方式簡(jiǎn)單明確,不容易出錯(cuò),每次有效操作都 在SS拉低時(shí)進(jìn)行,只要SS拉高,相應(yīng)操作馬上結(jié)束。
基于上述交互方式,串行外設(shè)主器件可以方便快捷地與具有本發(fā)明的SPI Slave 接口的芯片進(jìn)行大數(shù)據(jù)量通信,具體通信方式如下
(1)主器件讀芯片內(nèi)部數(shù)據(jù)
請(qǐng)參閱圖9所示,具體操作步驟如下
第一步一主器件寫(xiě)DMA_SRC寄存器,確定芯片內(nèi)部源數(shù)據(jù)地址。
第一步——主器件寫(xiě)DMA_DST寄存器,將DMA目的地址寫(xiě)為SPI Slave的 RAM起始地址,這樣DMA就會(huì)將芯片內(nèi)部數(shù)據(jù)搬運(yùn)到該RAM空間內(nèi)。
第三步——主器件寫(xiě)DMA_LENGTH寄存器,以確定DMA要搬運(yùn)的數(shù)據(jù)長(zhǎng)度。
第四步一主器件寫(xiě)SPI_SLAVE_CFG觸發(fā)DMA搬運(yùn)數(shù)據(jù),此時(shí)中斷信號(hào) TRIG_DMA會(huì)產(chǎn)生中斷脈沖來(lái)觸發(fā)DMA執(zhí)行操作。DMA收到脈沖信號(hào)后,將芯片內(nèi) 部的數(shù)據(jù),搬運(yùn)到SPI Slave的RAM空間內(nèi),搬運(yùn)數(shù)據(jù)長(zhǎng)度為DMA_LENGTH定義的長(zhǎng) 度。
第五步——主器件讀SPI_SLAVE_STATUS,查詢DMA是否搬運(yùn)結(jié)束。
第六步一主器件發(fā)出讀數(shù)據(jù)請(qǐng)求,SPI Slave將其RAM空間內(nèi)DMA剛搬運(yùn)過(guò) 來(lái)的數(shù)據(jù)發(fā)送給主器件。
(2)主器件往芯片內(nèi)部寫(xiě)數(shù)據(jù)
請(qǐng)參閱圖10所示,具體操作步驟如下
第一步一主器件發(fā)出寫(xiě)數(shù)據(jù)請(qǐng)求,不斷往SPI Slave發(fā)送數(shù)據(jù),SPI Slave將接 收到的數(shù)據(jù)存入RAM空間內(nèi)。
第二步一主器件寫(xiě)DMA_SRC寄存器,將DMA要搬運(yùn)的源數(shù)據(jù)地址寫(xiě)為 RAM空間起始地址,這樣DMA就會(huì)將SPI Slave收到的數(shù)據(jù)從RAM空間搬走。
第三步一主器件寫(xiě)DMA_DST寄存器,確定DMA要將數(shù)據(jù)搬運(yùn)到芯片內(nèi)部的 具體目的地址。
第四步——主器件寫(xiě)DMA_LENGTH寄存器,確定DMA要搬運(yùn)的數(shù)據(jù)長(zhǎng)度。
第五步一主器件寫(xiě)SPI_SLAVE_CFG觸發(fā)DMA搬運(yùn)數(shù)據(jù),此時(shí)中斷信號(hào) TRIG_DMA會(huì)產(chǎn)生中斷脈沖來(lái)觸發(fā)DMA執(zhí)行操作。DMA收到脈沖信號(hào)后,將SPI Slave 剛收到的RAM空間內(nèi)數(shù)據(jù),搬運(yùn)到DMA_DST定義的芯片內(nèi)部目的地址,搬運(yùn)數(shù)據(jù)長(zhǎng)度為DMA_LENGTH定義的長(zhǎng)度。第六步——主器件讀SPI_SLAVE_STATUS,查詢DMA是否搬運(yùn)結(jié)束。本發(fā)明的SPI Slave接口還對(duì)發(fā)送和接收邏輯部分對(duì)時(shí)序進(jìn)行了特殊處理。下面 詳細(xì)說(shuō)明(1)當(dāng)SPISlave接收時(shí),主器件在SS、SCLK、MOSI上產(chǎn)生有效信號(hào)。由于 SS、SCLK、MOSI相對(duì)SPI Slave的芯片內(nèi)部系統(tǒng)時(shí)鐘是異步信號(hào),不能直接輸入SPI
Slave作為同步信號(hào)使用,所以必須將其轉(zhuǎn)化為同步信號(hào)。因此在接收邏輯控制模塊對(duì)接 收時(shí)序進(jìn)行了以下特殊處理將該三根異步信號(hào)輸入D觸發(fā)器,延時(shí)3個(gè)系統(tǒng)時(shí)鐘后再使用。請(qǐng)參閱圖3所示,其中SPI Slave使用的是將MOSI延時(shí)3個(gè)系統(tǒng)時(shí)鐘后的信號(hào) MOSI_D。這種做法解決了將異步時(shí)序轉(zhuǎn)化為同步時(shí)序的問(wèn)題,避免由于觸發(fā)器直接采樣 異步信號(hào)而可能產(chǎn)生的亞穩(wěn)態(tài)現(xiàn)象,增強(qiáng)了系統(tǒng)的穩(wěn)定性。(2)當(dāng)SPI Slave發(fā)送時(shí),主器件發(fā)送SS和SCLK信號(hào),Slave根據(jù)主器件產(chǎn)生 的SS和SCLK信號(hào),通過(guò)MISO將數(shù)據(jù)發(fā)送給主器件。根據(jù)SPI時(shí)序規(guī)范,MISO上的 數(shù)據(jù)信號(hào)應(yīng)嚴(yán)格與SCLK時(shí)鐘信號(hào)對(duì)齊。當(dāng)傳輸速率比較快時(shí),如果采用和接收時(shí)相同 的時(shí)序處理方法,采用延時(shí)2個(gè)系統(tǒng)時(shí)鐘后的SCLK信號(hào),MISO上的數(shù)據(jù)信號(hào)就不能與 SCLK信號(hào)同步對(duì)齊。因此在發(fā)送邏輯控制模塊對(duì)發(fā)送時(shí)序進(jìn)行了以下特殊處理請(qǐng)參閱圖8所示,將SCLK和SS信號(hào)經(jīng)過(guò)一些組合邏輯處理,生成一個(gè)新的 時(shí)鐘信號(hào)TX_CLK,該時(shí)鐘信號(hào)與SCLK完全同步對(duì)齊,然后使用TX_CLK作為發(fā)送時(shí) 鐘,將數(shù)據(jù)發(fā)送給主器件。這一處理使得SPISlave的數(shù)據(jù)信號(hào)與SPI Master的時(shí)鐘信號(hào)完全同步,解決了
SPI接口高速傳輸時(shí)的難題。采用了上述的集成電路芯片中串行外設(shè)從器件接口結(jié)構(gòu)及數(shù)據(jù)讀寫(xiě)方法,由于 其中采用了四種數(shù)據(jù)交互方式串行外設(shè)主器件讀寄存器、串行外設(shè)主器件寫(xiě)寄存器、 串行外設(shè)主器件讀數(shù)據(jù)、串行外設(shè)主器件寫(xiě)數(shù)據(jù),從而基于上述交互方式,外部串行外 設(shè)主器件可以方便快捷地與具有串行外設(shè)從器件(SPI Slave)接口結(jié)構(gòu)的芯片進(jìn)行大數(shù)據(jù) 量通信,同時(shí)SPISlave接口結(jié)構(gòu)還對(duì)發(fā)送和接收邏輯部分對(duì)時(shí)序進(jìn)行了特殊處理,從而 保證了 SPISlave接口的數(shù)據(jù)傳輸速率遠(yuǎn)遠(yuǎn)高于普通SPI接口,根據(jù)實(shí)際測(cè)試經(jīng)驗(yàn),本發(fā) 明的SPI Slave接口傳輸速率可以穩(wěn)定達(dá)到20Mbps,而且該SPI Slave接口結(jié)構(gòu)簡(jiǎn)單,操 作方式方便快捷,開(kāi)發(fā)成本低廉,工作性能穩(wěn)定可靠,適用范圍較為廣泛,拓寬了現(xiàn)有 集成電路領(lǐng)域高速串行數(shù)據(jù)傳輸接口的選擇方案,在串行高速數(shù)據(jù)傳輸應(yīng)用領(lǐng)域有著廣 闊的應(yīng)用前景。在此說(shuō)明書(shū)中,本發(fā)明已參照其特定的實(shí)施例作了描述。但是,很顯然仍可以 作出各種修改和變換而不背離本發(fā)明的精神和范圍。因此,說(shuō)明書(shū)和附圖應(yīng)被認(rèn)為是說(shuō) 明性的而非限制性的。
1權(quán)利要求
1.一種集成電路芯片中串行外設(shè)從器件接口結(jié)構(gòu),其特征在于,所述的接口結(jié)構(gòu)包括寄存器模塊,進(jìn)行數(shù)據(jù)傳輸控制;存儲(chǔ)模塊,存儲(chǔ)外部串行外設(shè)主器件發(fā)送來(lái)的數(shù)據(jù)和需要發(fā)送給外部串行外設(shè)主器 件的數(shù)據(jù);狀態(tài)機(jī)邏輯控制模塊,分別與所述的寄存器模塊、存儲(chǔ)模塊相連接,控制串行外設(shè) 從器件的狀態(tài)機(jī)邏輯跳轉(zhuǎn);所述的串行外設(shè)從器件接口結(jié)構(gòu)通過(guò)芯片內(nèi)部總線與芯片的中央處理器相連接,且 該串行外設(shè)從器件接口結(jié)構(gòu)還通過(guò)數(shù)據(jù)傳輸線與外部串行外設(shè)主器件相連接。
2.根據(jù)權(quán)利要求1所述的集成電路芯片中串行外設(shè)從器件接口結(jié)構(gòu),其特征在于,所 述的寄存器模塊包括控制寄存器,控制串行外設(shè)從器件的傳輸功能信息;狀態(tài)寄存器,顯示串行外設(shè)從器件的內(nèi)部狀態(tài)信息;起始地址寄存器,控制DMA操作所搬運(yùn)數(shù)據(jù)的起始地址;目的地址寄存器,控制DMA操作所搬運(yùn)數(shù)據(jù)的目的地址;長(zhǎng)度寄存器,控制DMA操作所搬運(yùn)數(shù)據(jù)的長(zhǎng)度;所述的控制寄存器、狀態(tài)寄存器、起始地址寄存器、目的地址寄存器和長(zhǎng)度寄存器 均與所述的狀態(tài)機(jī)邏輯控制模塊相連接。
3.根據(jù)權(quán)利要求1所述的集成電路芯片中串行外設(shè)從器件接口結(jié)構(gòu),其特征在于,所 述的存儲(chǔ)模塊為RAM存儲(chǔ)器。
4.根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的集成電路芯片中串行外設(shè)從器件接口結(jié)構(gòu),其 特征在于,所述的接口結(jié)構(gòu)還包括發(fā)送邏輯控制模塊,該發(fā)送邏輯控制模塊與所述的狀 態(tài)機(jī)邏輯控制模塊相連接,對(duì)數(shù)據(jù)發(fā)送時(shí)序進(jìn)行控制,將數(shù)據(jù)轉(zhuǎn)化成串行格式。
5.根據(jù)權(quán)利要求4所述的集成電路芯片中串行外設(shè)從器件接口結(jié)構(gòu),其特征在于,所 述的發(fā)送邏輯控制模塊中包括時(shí)鐘組合邏輯單元和D觸發(fā)器單元,所述的時(shí)鐘組合邏輯 單元的輸出端與所述的D觸發(fā)器的時(shí)鐘輸入端相連接。
6.根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的集成電路芯片中串行外設(shè)從器件接口結(jié)構(gòu),其 特征在于,所述的接口結(jié)構(gòu)還包括接收邏輯控制模塊,該接收邏輯控制模塊與所述的狀 態(tài)機(jī)邏輯控制模塊相連接,對(duì)數(shù)據(jù)接收時(shí)序進(jìn)行控制,將串行數(shù)據(jù)依次接收并排列組合 后存入所述的存儲(chǔ)模塊中。
7.根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的集成電路芯片中串行外設(shè)從器件接口結(jié)構(gòu),其 特征在于,所述的接收邏輯控制模塊包括依次級(jí)聯(lián)的三個(gè)D觸發(fā)器。
8.一種利用權(quán)利要求1所述的接口結(jié)構(gòu)實(shí)現(xiàn)集成電路芯片中串行外設(shè)接口數(shù)據(jù)高速讀 寫(xiě)的方法,其特征在于,所述的寄存器模塊包括控制寄存器、狀態(tài)寄存器、起始地址寄 存器、目的地址寄存器和長(zhǎng)度寄存器,所述的方法包括串行外設(shè)主器件讀取數(shù)據(jù)處理和 串行外設(shè)主器件寫(xiě)入數(shù)據(jù)處理,所述的串行外設(shè)主器件讀取數(shù)據(jù)處理,包括以下步驟(11)所述的外部串行外設(shè)主器件對(duì)起始地址寄存器進(jìn)行寫(xiě)操作,設(shè)置芯片內(nèi)部讀取 的源數(shù)據(jù)地址;(12)所述的外部串行外設(shè)主器件對(duì)目的地址寄存器進(jìn)行寫(xiě)操作,將DMA操作的目的地址設(shè)置為所述的串行外設(shè)從器件接口結(jié)構(gòu)中的存儲(chǔ)模塊的起始地址;(13)所述的外部串行外設(shè)主器件對(duì)長(zhǎng)度寄存器進(jìn)行寫(xiě)操作,設(shè)置DMA操作所搬運(yùn)的 數(shù)據(jù)長(zhǎng)度;(14)所述的外部串行外設(shè)主器件對(duì)控制寄存器進(jìn)行寫(xiě)操作,觸發(fā)DMA操作,將芯片 內(nèi)部的數(shù)據(jù)搬運(yùn)到所述的存儲(chǔ)模塊中;(15)所述的外部串行外設(shè)主器件對(duì)狀態(tài)寄存器進(jìn)行讀操作,查詢DMA操作是否完成;(16)所述的外部串行外設(shè)主器件從所述的串行外設(shè)從器件接口結(jié)構(gòu)讀取存儲(chǔ)于存儲(chǔ) 模塊中的數(shù)據(jù);所述的串行外設(shè)主器件寫(xiě)入數(shù)據(jù)處理,包括以下步驟(21)所述的外部串行外設(shè)主器件向所述的串行外設(shè)從器件接口結(jié)構(gòu)發(fā)送數(shù)據(jù),所述 的串行外設(shè)從器件接口結(jié)構(gòu)將接收到的數(shù)據(jù)存入所述的存儲(chǔ)模塊中;(22)所述的外部串行外設(shè)主器件對(duì)起始地址寄存器進(jìn)行寫(xiě)操作,將DMA操作的源數(shù) 據(jù)地址設(shè)置為存儲(chǔ)模塊的起始地址;(23)所述的外部串行外設(shè)主器件對(duì)目的地址寄存器進(jìn)行,設(shè)置DMA操作將數(shù)據(jù)搬運(yùn) 到芯片內(nèi)部的目的地址;(24)所述的外部串行外設(shè)主器件對(duì)長(zhǎng)度寄存器進(jìn)行寫(xiě)操作,設(shè)置DMA操作所搬運(yùn)的 數(shù)據(jù)長(zhǎng)度;(25)所述的外部串行外設(shè)主器件對(duì)控制寄存器進(jìn)行寫(xiě)操作,觸發(fā)DMA操作,將所述 的存儲(chǔ)模塊中的數(shù)據(jù)搬運(yùn)到芯片內(nèi)部;(26)所述的外部串行外設(shè)主器件對(duì)狀態(tài)寄存器進(jìn)行讀操作,查詢DMA操作是否完成。
9.根據(jù)權(quán)利要求8所述的實(shí)現(xiàn)集成電路芯片中串行外設(shè)接口數(shù)據(jù)高速讀寫(xiě)的方法,其 特征在于,所述的外部串行外設(shè)主器件對(duì)起始地址寄存器進(jìn)行寫(xiě)操作、對(duì)目的地址寄存 器進(jìn)行寫(xiě)操作、對(duì)長(zhǎng)度寄存器進(jìn)行寫(xiě)操作、對(duì)控制寄存器進(jìn)行寫(xiě)操作均為外部串行外設(shè) 主器件對(duì)寄存器進(jìn)行寫(xiě)操作,包括以下步驟(31)所述的外部串行外設(shè)主器件將串行外設(shè)接口的片選信號(hào)線的信號(hào)電平設(shè)置為 低,并在時(shí)鐘線上產(chǎn)生時(shí)鐘信號(hào);(32)所述的外部串行外設(shè)主器件通過(guò)主器件數(shù)據(jù)輸出從器件數(shù)據(jù)輸入線向串行外設(shè) 從器件接口結(jié)構(gòu)發(fā)送讀寄存器操作指令;(33)所述的外部串行外設(shè)主器件通過(guò)主器件數(shù)據(jù)輸出從器件數(shù)據(jù)輸入線向所述的串 行外設(shè)從器件接口結(jié)構(gòu)中的相應(yīng)寄存器發(fā)送數(shù)據(jù)信息;(34)數(shù)據(jù)信息發(fā)送完畢后,所述的外部串行外設(shè)主器件將片選信號(hào)線的信號(hào)電平設(shè) 置為高,并使得時(shí)鐘線上的時(shí)鐘信號(hào)停止。
10.根據(jù)權(quán)利要求8所述的實(shí)現(xiàn)集成電路芯片中串行外設(shè)接口數(shù)據(jù)高速讀寫(xiě)的方法, 其特征在于,所述的對(duì)狀態(tài)寄存器進(jìn)行讀操作,包括以下步驟(41)所述的外部串行外設(shè)主器件將串行外設(shè)接口的片選信號(hào)線的信號(hào)電平設(shè)置為 低,并在時(shí)鐘線上產(chǎn)生時(shí)鐘信號(hào);(42)所述的外部串行外設(shè)主器件通過(guò)主器件數(shù)據(jù)輸出從器件數(shù)據(jù)輸入線向串行外設(shè)從器件接口結(jié)構(gòu)發(fā)送讀狀態(tài)寄存器操作指令;(43)所述的串行外設(shè)從器件接口結(jié)構(gòu)接收到該讀狀態(tài)寄存器操作指令,并通過(guò)主器 件數(shù)據(jù)輸入從器件數(shù)據(jù)輸出線向所述的外部串行外設(shè)主器件發(fā)送該狀態(tài)寄存器的數(shù)據(jù)信 息;(44)數(shù)據(jù)信息發(fā)送完畢后,所述的外部串行外設(shè)主器件將片選信號(hào)線的信號(hào)電平設(shè) 置為高,并使得時(shí)鐘線上的時(shí)鐘信號(hào)停止。
11.根據(jù)權(quán)利要求8所述的實(shí)現(xiàn)集成電路芯片中串行外設(shè)接口數(shù)據(jù)高速讀寫(xiě)的方法, 其特征在于,所述的外部串行外設(shè)主器件從串行外設(shè)從器件接口結(jié)構(gòu)讀取存儲(chǔ)于存儲(chǔ)模 塊中的數(shù)據(jù),包括以下步驟(51)所述的外部串行外設(shè)主器件將片選信號(hào)線的信號(hào)電平設(shè)置為低,并在時(shí)鐘線上 產(chǎn)生時(shí)鐘信號(hào);(52)所述的外部串行外設(shè)主器件通過(guò)主器件數(shù)據(jù)輸出從器件數(shù)據(jù)輸入線向串行外設(shè) 從器件接口結(jié)構(gòu)發(fā)送數(shù)據(jù)讀取指令;(53)所述的串行外設(shè)從器件接口結(jié)構(gòu)接收到該數(shù)據(jù)讀取指令,并通過(guò)主器件數(shù)據(jù)輸 入從器件數(shù)據(jù)輸出線向所述的外部串行外設(shè)主器件發(fā)送存儲(chǔ)與存儲(chǔ)模塊中的數(shù)據(jù)信息;(54)數(shù)據(jù)信息發(fā)送完畢后,所述的外部串行外設(shè)主器件將片選信號(hào)線的信號(hào)電平設(shè) 置為高,并使得時(shí)鐘線上的時(shí)鐘信號(hào)停止。
12.根據(jù)權(quán)利要求8所述的實(shí)現(xiàn)集成電路芯片中串行外設(shè)接口數(shù)據(jù)高速讀寫(xiě)的方法, 其特征在于,所述的外部串行外設(shè)主器件向串行外設(shè)從器件接口結(jié)構(gòu)發(fā)送數(shù)據(jù),包括以 下步驟(61)所述的外部串行外設(shè)主器件將片選信號(hào)線的信號(hào)電平設(shè)置為低,并在時(shí)鐘線上 產(chǎn)生時(shí)鐘信號(hào);(62)所述的外部串行外設(shè)主器件通過(guò)主器件數(shù)據(jù)輸出從器件數(shù)據(jù)輸入線向串行外設(shè) 從器件接口結(jié)構(gòu)發(fā)送數(shù)據(jù)寫(xiě)入指令;(63)所述的外部串行外設(shè)主器件通過(guò)主器件數(shù)據(jù)輸出從器件數(shù)據(jù)輸入線向所述的串 行外設(shè)從器件接口結(jié)構(gòu)發(fā)送數(shù)據(jù)信息;(64)數(shù)據(jù)信息發(fā)送完畢后,所述的外部串行外設(shè)主器件將片選信號(hào)線的信號(hào)電平設(shè) 置為高,并使得時(shí)鐘線上的時(shí)鐘信號(hào)停止。
全文摘要
本發(fā)明涉及一種集成電路芯片中串行外設(shè)從器件接口結(jié)構(gòu),其中包括寄存器模塊、存儲(chǔ)模塊、狀態(tài)機(jī)邏輯控制模塊,串行外設(shè)從器件接口結(jié)構(gòu)通過(guò)芯片內(nèi)部總線與芯片的中央處理器連接,串行外設(shè)從器件接口結(jié)構(gòu)還通過(guò)數(shù)據(jù)傳輸線與外部串行外設(shè)主器件連接。本發(fā)明還涉及一種利用該接口結(jié)構(gòu)實(shí)現(xiàn)集成電路芯片中串行外設(shè)接口數(shù)據(jù)高速讀寫(xiě)的方法,包括串行外設(shè)主器件讀取數(shù)據(jù)處理和串行外設(shè)主器件寫(xiě)入數(shù)據(jù)處理。采用該種集成電路芯片中串行外設(shè)從器件接口結(jié)構(gòu)及數(shù)據(jù)讀寫(xiě)方法,保證了數(shù)據(jù)傳輸速率遠(yuǎn)遠(yuǎn)高于普通SPI接口,結(jié)構(gòu)簡(jiǎn)單,操作方式方便快捷,開(kāi)發(fā)成本低廉,工作性能穩(wěn)定可靠,適用范圍較為廣泛,拓寬了集成電路高速數(shù)據(jù)傳輸接口方案,具有廣闊的應(yīng)用前景。
文檔編號(hào)G06F13/28GK102023956SQ200910196260
公開(kāi)日2011年4月20日 申請(qǐng)日期2009年9月23日 優(yōu)先權(quán)日2009年9月23日
發(fā)明者王冬佳 申請(qǐng)人:上海摩波彼克半導(dǎo)體有限公司