專利名稱:用于改進數(shù)據(jù)吞吐量的寫入緩沖器的串行外圍接口(spi)裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及串行外圍接口。更具體地,本發(fā)明涉及為改進串行外圍接口數(shù)據(jù)吞吐量而避免寫入沖突出現(xiàn)。
背景技術(shù):
串行外圍接口(SPI)是摩托羅拉MC68HC11A8微控制器中所包含的兩種獨立的串行通信子系統(tǒng)之一。如同其名稱所示一樣,SPI主要是用作允許微控制器單元(MCU)與外部設(shè)備進行通信。在摩托羅拉串行外圍接口系統(tǒng)中的中央元件是包含有移位寄存器和讀取數(shù)據(jù)緩沖器的模塊。該系統(tǒng)在傳送方向是單向緩沖,而在接收方向是雙向緩沖的。該事實就意味著在當(dāng)前的數(shù)據(jù)字節(jié)傳輸完成之前,要傳輸?shù)暮罄m(xù)數(shù)據(jù)字節(jié)是不能寫入至移位器中的;但是,接收到的數(shù)據(jù)可傳輸至并行讀取數(shù)據(jù)緩沖器中,從而移位器可以隨意接收第二串行字符。只要在下一串行字符要傳送之前從讀取數(shù)據(jù)緩沖器中讀取第一字符,則不會產(chǎn)生寫入沖突的狀態(tài)。
如果在傳送處于進程中的同時對數(shù)據(jù)寄存器進行寫入,則會出現(xiàn)寫入沖突。由于數(shù)據(jù)寄存器在傳送方向并非是雙向緩沖的,則對數(shù)據(jù)寄存器的寫入將使得數(shù)據(jù)直接寫入到SPI移位寄存器中。由于這樣的寫入將會破壞任何處于進程中的傳送,從而產(chǎn)生寫入沖突出錯。傳送仍然繼續(xù),同時導(dǎo)致出錯的寫入數(shù)據(jù)并沒有寫入到移位器中。在摩托羅拉SPI中避免寫入沖突會導(dǎo)致數(shù)據(jù)吞吐量降低。當(dāng)請求傳送新的數(shù)據(jù)字節(jié)時,軟件驅(qū)動器必須指示精確的時刻。軟件驅(qū)動器定位于CPU電平,并且整體考慮MCU到MCU通信中所有主-從寄存器的寫入沖突問題。軟件驅(qū)動器并非位于每一局部SPI上,因此,它會占用系統(tǒng)的時間損失和數(shù)據(jù)吞吐量。
圖1示出代表現(xiàn)有SPI電路圖的示意圖。SPI子系統(tǒng)100包括串行主移位寄存器102、串行從移位寄存器110以及并行從移位寄存器130。該電路所固有的問題要求軟件驅(qū)動器要等待當(dāng)前的數(shù)據(jù)字節(jié)傳輸完成以及另一個必需的控制命令,以避免寫入沖突。
從CPU(未示出)中將并行數(shù)據(jù)載入到數(shù)據(jù)輸入總線101DataInBus以及串行從移位寄存器110中。當(dāng)主時鐘為高時,串行數(shù)據(jù)首先移位至主移位寄存器102。當(dāng)串行數(shù)據(jù)從串行主寄存器102中串行移位至串行從寄存器110中時,來自于CPU以及數(shù)據(jù)輸入總線101DataInBus中的先前并行數(shù)據(jù)左移一比特并進入到串行主寄存器102中。在所有的數(shù)據(jù)從串行輸入103偏移至串行主寄存器102之后,并且在先前數(shù)據(jù)從串行從寄存器110中移回到串行主寄存器102之后,來自于CPU的后續(xù)數(shù)據(jù)以并行的模式載入到串行從寄存器110中。CPU處的軟件驅(qū)動器(未示出)密切監(jiān)視這些數(shù)據(jù)傳輸,以避免數(shù)據(jù)出錯。
SPI100也還具有軟件驅(qū)動器(未示出),跟蹤SPI傳輸狀態(tài)的比特計數(shù)器,以及對SPI提供載入控制信號的有限狀態(tài)機(FSM)控制器,將“接收準(zhǔn)備”信號傳送給CPU并報告任何寫入沖突錯誤。
當(dāng)SPI100沒有完成將當(dāng)前數(shù)據(jù)字節(jié)從串行主寄存器102傳送到串行從寄存器110中時,寫入沖突就發(fā)生了,同時后續(xù)的數(shù)據(jù)字節(jié)已經(jīng)傳送到串行從寄存器110中。為了避免寫入沖突,軟件驅(qū)動器必需清楚當(dāng)前數(shù)據(jù)傳送在何時完成,并且等待諸如寫入沖突信號、接收存儲信號、接收準(zhǔn)備好信號等其它控制命令,以允許傳送后續(xù)的數(shù)據(jù)字節(jié)。因此,時鐘信號延長,同時SPI100的數(shù)據(jù)吞吐量受損。
人們試圖解決串行外圍接口裝置的這些主要缺點。在U.S.專利申請?zhí)?4,816,996中由Susan C.Hill等提出名為“Queued Serial Peripheral Interface forUse in Data Processing System”的專利中揭示了這種嘗試(以下稱為’996專利)。在’996專利中,經(jīng)過改進的串行外圍接口通過使用具有隊列指針的存儲器裝置以及耦合到主從輸入/輸出緩沖器的數(shù)據(jù)串行器來減少控制數(shù)據(jù)處理設(shè)備部分所需的干預(yù)量。存儲裝置存儲接收到的數(shù)據(jù)和要傳輸?shù)臄?shù)據(jù),以及每一串行傳送的命令。依照每一傳送所特有的命令來執(zhí)行該串行傳送。該命令將隊列指針改為符合該特定的數(shù)據(jù)字節(jié),并改進傳送的效率,從而減少控制器對每一數(shù)據(jù)傳送的干預(yù)。換言之,’996專利的串行外圍接口包括為改進串行傳送而設(shè)置的存儲器裝置、串行器、命令/控制、隊列指針以及輸入/輸出緩沖器。最終的結(jié)果就是串行傳送有效率,為實現(xiàn)給定的數(shù)據(jù)傳送而減少控制器的干預(yù)。
串行外圍接口裝置的吞吐量需要一種簡單經(jīng)濟的改進。
發(fā)明內(nèi)容
相應(yīng)地,通過串行外圍接口裝置而實現(xiàn)的本發(fā)明目的是在當(dāng)前數(shù)據(jù)字節(jié)從第一寫入緩沖器中經(jīng)由該裝置串行地傳送同時,用第二并行寫入緩沖器來使能控制處理單元(CPU)以載入后續(xù)的數(shù)據(jù)字節(jié)。具有兩個并行寫入緩沖器的串行外圍接口無需等待先前數(shù)據(jù)字節(jié)以完成串行傳送,并無需避免數(shù)據(jù)沖突和后續(xù)數(shù)據(jù)字節(jié)傳送的其它控制命令。由于軟件驅(qū)動器無需為在載入要傳輸?shù)暮罄m(xù)字節(jié)之前無數(shù)據(jù)沖突地完成當(dāng)前數(shù)據(jù)字節(jié)傳送而監(jiān)視主從寄存器,因此第二并行寫入緩沖器減輕了軟件驅(qū)動器的負擔(dān)。這樣,狀態(tài)機和第二寫入緩沖器處于門電平,并且通過將早期的“載入啟動”信號提供給軟件驅(qū)動器來有效地簡化軟件驅(qū)動器的監(jiān)視功能。
僅僅是在有限狀態(tài)機控制器檢查了兩個信號主寫入緩沖器的狀態(tài)以及第二并行寫入緩沖器的狀態(tài)之后,后續(xù)的數(shù)據(jù)字節(jié)才會傳送到該第二并行寫入緩沖寄存器。隨后,當(dāng)載入使能具備且寫入緩沖器可用時,狀態(tài)機控制器命令后續(xù)的數(shù)據(jù)字節(jié)從第二并行寫入緩沖器傳送至主寫入緩沖器。當(dāng)比特計數(shù)器計數(shù)到先前數(shù)據(jù)比特(占用主寫入緩沖器)串行傳送的前一半、而并非等待串行傳送完成以及其它的控制命令時,對于第二寫入緩沖器來說,載入使能已經(jīng)具備。因此,第二并行寫入緩沖器可避免主時鐘延長并且自然地改進了數(shù)據(jù)吞吐量,而無需使用復(fù)雜而昂貴的外部設(shè)備。
圖1示出了現(xiàn)有技術(shù)串行外圍接口的詳細框圖。
圖2A和2B示出了依照本發(fā)明具有雙重寫入緩沖器的強化串行外圍接口(圖2A)的框圖,及其相關(guān)的有限狀態(tài)機控制器(圖2B)。
圖3(在圖3A和3B兩部分中示出)示出了依照本發(fā)明、具有雙重寫入緩沖器以改進吞吐量的強化串行外圍接口的時序圖。
圖4示出現(xiàn)有技術(shù)串行外圍接口和依照本發(fā)明具有寫入緩沖器的串行外圍接口的吞吐量性能之間的比較。
圖5A到5C示出了依照本發(fā)明使用寫入緩沖器來改進數(shù)據(jù)吞吐量的CPU軟件驅(qū)動器的流程圖。
圖6A到6C示出了本發(fā)明控制有限狀態(tài)機(FSM)的流程圖,該狀態(tài)機將命令控制信號提供給本發(fā)明的串行外圍接口,并且與應(yīng)用本發(fā)明的整體系統(tǒng)環(huán)境進行通信。
具體實施例方式
參照圖2A,新強化模式SPI200框圖的示例性實施例包括用作為第二并行寫入緩沖器250的新寄存器鎖存。它的目的是在先前數(shù)據(jù)字節(jié)仍在傳輸?shù)耐瑫r,在并行輸入數(shù)據(jù)總線DataInBus252上接收輸入數(shù)據(jù)內(nèi)容并且將其存儲。強化SPI200包括串行主寄存器202、串行從寄存器210、并行從寄存器230以及第二并行寫入緩沖器250。
串行寄存器202和210耦合在一起,用于通過串行輸出SerialOut 216串行地傳送數(shù)據(jù)。(數(shù)據(jù)也可通過串行輸入SerialIn 203串行地接收,并由串行寄存器轉(zhuǎn)換成總線DataOutBus 232的并行輸出。)主寄存器202的輸出耦合到從寄存器210的輸入,而從寄存器210的輸出耦合到串行輸出SerialOut 216以及通向主寄存器202輸入的反饋總線218。串行寄存器202和210最好都包括耦合到時鐘觸發(fā)器207或215(或其它鎖存電路)的多路復(fù)用器205和213。并行從寄存器230和用作寫入緩沖器的并行主寄存器250最好包括時鐘觸發(fā)器或其它鎖存電路。所有的寄存器元件,包括它們的連接線,通常都是字節(jié)寬度,除了反饋總線218,它只有7比特寬度,且使得從寄存器輸出<6:0>偏移至主寄存器輸入<7:1>,藉此形成一串行移位寄存器。施加載入控制信號LoadParMst、LoadSerMst、LoadSerSlv以及LoadParSlv,以控制串行寄存器的多路復(fù)用器205和213(它們隨后從寫入緩沖器250的輸出中選定輸入D1)的輸入,并且寄存并行寄存器230和250的時鐘輸入,如圖2A所示。觸發(fā)器207和215由各自的主和從時鐘信號MCK和SCK進行鎖存。
除了SPI移位寄存器電路200之外(圖2A),還有不同于現(xiàn)有技術(shù)中的有限狀態(tài)機控制器的有限狀態(tài)機(FSM)控制器260(圖2B)。在SPI 200中,有限狀態(tài)機(FSM)控制器260代替現(xiàn)有技術(shù)中的軟件驅(qū)動器來監(jiān)視數(shù)據(jù)傳輸。有限狀態(tài)機控制器260使用“傳送緩沖器滿”(TxBufFull)以及“載入使能”(LDEN)將載入后續(xù)數(shù)據(jù)字節(jié)的信號送到第二并行寫入緩沖器250中。FSM控制器260同時也對SPI200提供載入控制信號。
串行外圍接口裝置200在當(dāng)前數(shù)據(jù)字節(jié)通過其正在傳送的同時,用第二并行寫入緩沖器250來存儲后續(xù)的數(shù)據(jù)字節(jié)。因此,具有第二并行寫入緩沖器250的串行外圍接口裝置200無需等待當(dāng)前數(shù)據(jù)字節(jié)完成串行傳送,以及避免寫入沖突的其它控制命令。僅僅是在由軟件驅(qū)動器所驅(qū)動的CPU檢查了兩個新信號FSM260所產(chǎn)生的載入使能(LDEN)的狀態(tài)以及寫入緩沖器(TxBufFull)的狀態(tài)之后,隨后的數(shù)據(jù)字節(jié)才會傳送到第二并行寫入緩沖器250中。隨后,當(dāng)載入使能(LDEN)具備(高)且并行寫入緩沖器250可用(TxBufFull為低)時,軟件驅(qū)動CPU命令后續(xù)的數(shù)據(jù)字節(jié)傳送到第二并行寫入緩沖器250中。在比特計數(shù)器270計數(shù)到先前數(shù)據(jù)字節(jié)串行傳送的前一半,而并非等待串行傳送完成以及其它避免寫入沖突的控制命令時,載入使能具備。因此,寫入緩沖器250避免了主時鐘MCK延長同時自然地改進了SPI裝置200的數(shù)據(jù)吞吐量。
圖3(圖3A和3B兩部分)示出了時序圖300,圖示了第二并行寫入緩沖器250避免主時鐘MCK302延長的方式,以及由此而改進了數(shù)據(jù)吞吐量。如上所述,在表示摩托羅拉芯片的SPI100中出現(xiàn)的主時鐘(MCK)延長是由于軟件驅(qū)動器等待當(dāng)前數(shù)據(jù)字節(jié)傳送完成以及其它避免寫入沖突的命令而導(dǎo)致的。
事件a、b、c和d的序列表示當(dāng)前數(shù)據(jù)字節(jié)的串行傳送。由于有第二并行寫入緩沖器250,主時鐘302沒有延長。信號ParMstBus表示并行寫入緩沖器250的輸出,信號SerMstBus表示串行主寄存器202的輸出,同時信號SerSlvBus表示串行從寄存器210的輸出,其最高有效位形成了串行輸出信號SerialOut,同時其它七比特形成了到串行主寄存器的反饋。
在比特0的時隙期間發(fā)生事件j(載入寫入緩沖器250)。第二并行寫入緩沖器250的載入促使有限狀態(tài)控制器260將第二寫入緩沖器250的狀態(tài)設(shè)為信號316TxBufFull。該信號316 TxBufFull代替了現(xiàn)有技術(shù)中其它的避免寫入沖突信號。軟件驅(qū)動器在嘗試傳輸新的字節(jié)之前總是應(yīng)該核對信號316 TxBufFull,以在其沒有清除傳送循環(huán)之前避免出現(xiàn)寫入沖突(參見流程圖500)。該信號316 TxBufFull在對軟件驅(qū)動CPU提供必需的反饋的過程中滿足單個的字節(jié)傳送。為了創(chuàng)建通過SPI200接收和傳送的數(shù)據(jù)的連續(xù)流,則需要由FSM 260產(chǎn)生另一信號LDEN。
由事件e和f的時序示出并行寫入緩沖器250到串行從寄存器210中的載入。由于從時鐘信號303 SCK在事件e的時間中持續(xù)為高,則由CPU完成的直接到串行從寄存器210中的載入將會導(dǎo)致寫入沖突。最好是CPU將后續(xù)的數(shù)據(jù)字節(jié)載入到第二并行寫入緩沖器250。在串行主載入信號309 LoadSerMst的正脈沖之外的主時鐘302 MCK為低。由于串行主寄存器202的多路復(fù)用器從寫入緩沖器250中接收數(shù)據(jù),并且由于載入串行主信號309LoadSerMst為高,則在事件e的時間內(nèi)串行從寄存器210和串行主寄存器202之間的鏈接關(guān)閉。由于從時鐘303 SCK為高,則由時間f所指定,新的數(shù)據(jù)字節(jié)立即傳送至串行從寄存器210??梢灾?,只有經(jīng)過事件d,才可以將新的字節(jié)載入到串行主寄存器202或者串行從寄存器210(事件e或f)。否則,所接收的字節(jié)將會丟失。為了該目的,當(dāng)請求新的字節(jié)傳送很安全時,從有限狀態(tài)機控制器260中發(fā)出一信號。該信號為載入使能315 LDEN,同時在傳送串行數(shù)據(jù)比特0、1、2和3期間聲明(assert)。在比特槽4、5、6和7期間載入使能315為低。即便軟件驅(qū)動CPU在載入使能315 LDEN變低之前獲取高的載入使能LDEN,三個比特槽(4、5和6)也會對軟件驅(qū)動CPU給予充分的時間,以通過產(chǎn)生一傳送請求信號317 TxREQ脈沖來更新輸入數(shù)據(jù)318 DataInBus和載入并行寫入緩沖器250,而不會溢出比特槽7。串行時鐘頻率必須比主CPU系統(tǒng)時鐘314 Phi足夠慢。
結(jié)論就是,軟件驅(qū)動CPU在嘗試由信號傳送請求317 TxBEQ做出的新字節(jié)傳送請求之前,測試出寫入緩沖的狀態(tài)TxBufFull為低,以及載入使能的狀態(tài)315LDEN為高。這兩個新的信號包含在SPI狀態(tài)寄存器(未示出)中。由于軟件驅(qū)動器在當(dāng)前字節(jié)傳送期間具有充足的時間來載入要傳送的新字節(jié),則主時鐘302MCK或從時鐘303 SCK不會出現(xiàn)延長,因此就可以實現(xiàn)高的吞吐量。
圖4A和4B示出了將代表現(xiàn)有技術(shù)的典型SPI 100(圖1)和依照本發(fā)明的SPI 200(圖2)的數(shù)據(jù)傳送相比較的時序圖400和401。為了比較,提供了從時鐘信號SCK、來自串行主寄存器MOSI的數(shù)據(jù)輸出以及來自串行從寄存器MISO的數(shù)據(jù)輸出。圖4A所示的現(xiàn)有技術(shù)數(shù)據(jù)傳送揭示了先前數(shù)據(jù)組和后續(xù)數(shù)據(jù)組之間的多個間隙(gap)410。這些間隙410是由外部的CPU控制命令以及對當(dāng)前數(shù)據(jù)字節(jié)完成串行傳送的相關(guān)等待而導(dǎo)致的。間隔410可以更大,這要取決于CPU及其波特率。字節(jié)速率越慢,間隙410也會越大,出現(xiàn)寫入沖突的機會也就越小。字節(jié)速率越快,間隙410越窄,而出現(xiàn)寫入沖突的機會也就越高。相比之下,本發(fā)明中的從時鐘SCK的時序404(以及類似的數(shù)據(jù)輸出)示出沒有間隙出現(xiàn),這是因為寫入緩沖器250允許有限狀態(tài)機控制器260僅僅是等待載入使能信號316(LDEN)以及寫入緩沖器315的狀態(tài)TxbuffFull。
在本發(fā)明的另一方面,在圖5和圖6中示出了在串行外圍接口裝置200(圖4)中串行移動數(shù)據(jù)的方法。圖5A到5C表示軟件驅(qū)動器的流程圖。
在進入SPI子程序之后,傳輸請求信號TxBEQ的脈沖(步驟502)使得要被傳送的數(shù)據(jù)第一字節(jié)從數(shù)據(jù)輸入總線252載入到并行主寄存器(寫入緩沖器)250中。并行主寄存器250立即刷新串行寄存器202或210之一。字節(jié)以SPI模式0或2載入到串行主寄存器202中。字節(jié)以SPI模式1或3載入到串行從寄存器210中。
從SPI狀態(tài)寄存器中讀取載入使能信號LDEN并核對其是否為高(步驟504)。如果不是,則繼續(xù)核對,直到LDEN為高時為止。當(dāng)LDEN為高時,信號TxREQ的另一脈沖(步驟506)從數(shù)據(jù)輸入總線252中將下一個數(shù)據(jù)字節(jié)載入到并行主寄存器250中。在LDEN再次變高之前,TxBufFull在先前比特7時隙結(jié)束時被清除。因此如果在先前比特7的時隙期間在并行主寄存器250中已經(jīng)出現(xiàn)新的字節(jié),由CPU測試高的LDEN已經(jīng)足夠,則同時測試TXBufFull為低是多余的。而且,由于SPI串行時鐘SCK將停止,在最后的字節(jié)之后(當(dāng)并行主寄存器250中沒有新字節(jié)時)LDEN將不會再次變高。因此,為了檢測出最后字節(jié)傳輸完成,CPU必需測試低的TxBufFull(參見步驟522)。
在將下一字節(jié)載入到并行主寄存器之后(步驟506),TxBufFUll在此時仍然為高。該軟件從SPI狀態(tài)寄存器中讀取LDEN并核對LDEN是否為低(步驟508),以確知傳輸正在進行,而避免TxREQ的假觸發(fā)出現(xiàn)。
其次,CPU從SPI狀態(tài)寄存器中讀取準(zhǔn)備信號RxRDY,并且核對RxRDY是否為高(步驟510)。如果不是,則核對繼續(xù),直到RxRDY變高為止。當(dāng)RxRDY為高時,來自并行從寄存器230中的字節(jié)通過數(shù)據(jù)輸出總線232傳送到RAM上由地址指針?biāo)付ǖ奈恢?步驟512)。然后地址指針重新指向下一RAM位置(要傳送的下一字節(jié)和/或下一進入字節(jié)的下一位置)(步驟514)。
如果沒有要傳送的最后字節(jié)(步驟516),則流程回復(fù)至核對LDEN(步驟504)。否則,從SPI狀態(tài)寄存器中讀取并核對RxRDY,以確知它是否為高(步驟518)。如果不是,則CPU繼續(xù)核對,直至RxRDY變高為止。當(dāng)RxRDY為高時,最后接收的字節(jié)連同先前字節(jié)一同傳送至RAM中由地址指針?biāo)付ǖ漠?dāng)前地址。然后TxBufFull被讀取并被核對(步驟522),直到它復(fù)位為止。然后執(zhí)行SPI驅(qū)動器子程序。
圖6A到6C表示控制FSM流程圖。當(dāng)SPI被重新設(shè)置時,有限狀態(tài)機控制器(圖2B中的260)開始操作。隨后它等待傳送請求信號TxREQ,重復(fù)核對(步驟604),直至它變高為止。隨后,F(xiàn)SM控制器260根據(jù)SPI模式來簽發(fā)LoadSerMst脈沖或LoadSerSlv脈沖(步驟606)。以SPI模式0或2載入串行主寄存器202(當(dāng)期望實現(xiàn)通過DataOutBus 232的并行輸出時使用),并以SPI模式1或3載入串行從寄存器210(當(dāng)期望實現(xiàn)通過SeiralOut線216的串行輸出時使用)。
然后FSM控制器260等待,直至比特0時隙出現(xiàn)為止(步驟608)。圖2B中的比特計數(shù)器270用作為FSM控制器260的從裝置。一旦比特0時隙出現(xiàn),則載入使能信號LDEN變高(步驟610)。隨后FSM控制器260等待TxREQ變高,比特4時隙出現(xiàn)(步驟612和616)。當(dāng)TxREQ為高時,則控制器260將TxBufFull設(shè)置為高(步驟614)。當(dāng)比特4時隙出現(xiàn)時,控制器260復(fù)位LDEN為低(步驟618)。然后控制器260再次等待TxREQ為高和比特時隙(步驟620和624)。但TxREQ為高時,控制器260再次設(shè)置TxBufFull為高(步驟622)。當(dāng)比特7時隙出現(xiàn)時,流程進入至LoadParSlv脈沖(步驟626)。注意,對于比特7時隙來說,傳送請求(TxREQ)是不可接受的。即便CPU在比特3時隙將要結(jié)束時(僅僅是LDEN要在比特槽4中重設(shè)成低之前)采樣到了高的LDEN,CPU也必需要有足夠的時間(3比特時隙)來簽發(fā)其TxREQ。
LoadParSlv脈沖(步驟626)將接收到的字節(jié)存儲在并行輸出緩沖器230中。隨后接收準(zhǔn)備信號RxRDY設(shè)為高(步驟628)并且(因為主時鐘MCK仍然為低,則以所有的SPI模式)簽發(fā)出LoadSerMst(步驟630)。控制器260然后等待來自CPU的RxSVD信號(步驟632)。在RxSVD變高之后,控制器260等待比特0時隙再次出現(xiàn)(步驟634)。在比特0時隙期間,信號TxBufFull被重新設(shè)置為低,LDEN被設(shè)為高(步驟636和638)。
僅僅是由傳送結(jié)束時出現(xiàn)的SPI復(fù)位來終止?fàn)顟B(tài)機260。直到這時,控制器的流程回復(fù)(步驟640)以等待高的TxREQ以及比特4時隙,重復(fù)該流程中的后續(xù)步驟,直至所有的字節(jié)被傳送為止。
雖然對示例性實施例做出了特定的說明,但是本領(lǐng)域一般技術(shù)人員可以認識到在本發(fā)明的范圍內(nèi)可以做出一定的變化和修改。例如,所示的第二并行寫入緩沖器250實現(xiàn)了D型鎖存。一個技術(shù)人員可以使用其它類型的鎖存來實現(xiàn)。
還有,在另一實施例中,在本發(fā)明較佳實施例中采用的有限狀態(tài)機控制器260可以由可編程邏輯陣列(PLA)或微處理器來代替,而不會改變本發(fā)明的實質(zhì)。
權(quán)利要求
1.一種串行外圍接口裝置,包括耦合在一起的多個移位寄存器,用于串行地傳送數(shù)據(jù);耦合到所述多個移位寄存器的寫入緩沖器;耦合到所述多個移位寄存器的比特計數(shù)器,用于跟蹤通過所述裝置傳送的數(shù)據(jù)字節(jié)的比特字段;以及耦合到所述裝置的有限狀態(tài)機控制器,用于控制通過其中的數(shù)據(jù)傳輸,并通過檢查所述比特計數(shù)器的狀態(tài)和所述寫入緩沖器的狀態(tài)來使后續(xù)數(shù)據(jù)字節(jié)能載入所述寫入緩沖器。
2.如權(quán)利要求1所述的串行外圍接口裝置,其特征在于,所述多個移位寄存器包括串行主移位寄存器、以及耦合到所述串行主移位寄存器的輸出的串行從移位寄存器,用于串行地傳送數(shù)據(jù)。
3.如權(quán)利要求2所述的串行外圍接口裝置,其特征在于,每一個所述主和從串行移位寄存器都包括耦合到時鐘控制觸發(fā)器的多路復(fù)用器。
4.如權(quán)利要求2所述的串行外圍接口裝置,其特征在于,所述多個移位寄存器還包括耦合到所述串行主移位寄存器的輸出的并行從移位寄存器。
5.如權(quán)利要求4所述的串行外圍接口裝置,其特征在于,所述并行從移位寄存器包括時鐘控制觸發(fā)器。
6.如權(quán)利要求2所述的串行外圍接口裝置,其特征在于,所述寫入緩沖器耦合到所述串行從移位寄存器的輸出。
7.如權(quán)利要求1所述的串行外圍接口裝置,其特征在于,所述有限狀態(tài)機控制器還控制所述數(shù)據(jù)字節(jié)向所述多個移位寄存器的載入。
8.如權(quán)利要求7所述的串行外圍接口裝置,其特征在于,所述有限狀態(tài)機控制器對所述比特計數(shù)器的狀態(tài)作出響應(yīng),從而僅僅在其中傳送當(dāng)前數(shù)據(jù)字節(jié)的第四比特的時隙時才允許后續(xù)數(shù)據(jù)字節(jié)載入到寫入緩沖器中。
9.如權(quán)利要求1所述的串行外圍接口裝置通過總線接口耦合到控制處理單元和存儲器模塊,用于在所述寫入緩沖器的輸入處從其接收數(shù)據(jù)字節(jié)。
全文摘要
一種串行外圍接口裝置(200)具有第二并行寫入緩沖器(250),以在當(dāng)前數(shù)據(jù)字節(jié)(DO<7:0>)通過一對串行移位寄存器傳送的同時載入后續(xù)的數(shù)據(jù)字節(jié)(DataInBus<7:0>),同時避免出現(xiàn)寫入沖突。當(dāng)比特計數(shù)器計數(shù)到了先前數(shù)據(jù)組串行傳送的前一半時,則具備了控制從第二并行緩沖器到移位寄存器的傳送的載入使能(LoadSerSlv)。因此,第二并行寫入緩沖器避免了主時鐘延長,同時增加了系統(tǒng)的數(shù)據(jù)吞吐量。
文檔編號G06F13/40GK1882902SQ200480034506
公開日2006年12月20日 申請日期2004年11月12日 優(yōu)先權(quán)日2003年11月25日
發(fā)明者E·蘭布朗克, B·F·弗洛明 申請人:愛特梅爾股份有限公司