專利名稱::集成在芯片內(nèi)的高速串行外圍接口電路的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及串行外圍接口,尤其是一種集成在芯片內(nèi)的串行通訊接口電路。
背景技術(shù):
:隨著芯片日益的系統(tǒng)集成化和復(fù)雜化,市場上越來越多的芯片集成了微處理器,而且芯片的外圍通訊接口也越來越豐富,其中串行外圍接口(SPI)就是常用的一種。如同其名稱一樣,SPI主要是用作微處理器與外部設(shè)備進(jìn)行通信,比如SD卡,串行FLASH等,可見SPI應(yīng)用很廣。但是SPI需要微處理器與外部設(shè)備的頻繁通信來完成數(shù)據(jù)交互,因此微處理器的工作負(fù)擔(dān)很大,SPI只能靠提高系統(tǒng)時(shí)鐘的頻率來增加數(shù)據(jù)吞吐量,從而在一定的系統(tǒng)頻率下局限了SPI的傳輸速度。人們試圖解決SPI裝置的這個(gè)缺點(diǎn)。在專利申請?zhí)?00480034506.9中由E'蘭布朗克等提出名為"用于改進(jìn)數(shù)據(jù)吞吐量的寫入緩沖器的串行外圍接口SPI裝置"的專利中做出了嘗試(以下稱為200480034506.9專利)。他們提出了一種通過避免寫入沖突和主時(shí)鐘延長來改進(jìn)數(shù)據(jù)吞吐量的方法,雖然在一定的系統(tǒng)頻率下能提高一點(diǎn)傳輸速度,但是畢竟還是沒有本質(zhì)上解決問題,即仍需通過CPU的大量干預(yù)來完成數(shù)據(jù)傳輸,等待CPU時(shí)間和CPU計(jì)算時(shí)間占了SPI的大部分傳輸時(shí)間,故在大規(guī)模芯片中這種工作方式會占用其他模塊的CPU工作時(shí)間,影響其他模塊的工作速度,尤其在大量數(shù)據(jù)通訊的時(shí)候,它會大大增加CPU的工作負(fù)擔(dān),嚴(yán)重影響整體芯片的性能,而且該SPI傳輸效率很低,本身的數(shù)據(jù)吞吐量仍非常有限。同時(shí),外部器件的設(shè)計(jì)本身也處于快速發(fā)展之中,如SD卡有高速、低速卡,而且容量種類豐富,200480034506.9專利的SPI可以驅(qū)動SD卡,但是所有的數(shù)據(jù)都是通過CPU來傳遞,而且軟件驅(qū)動需要占用CPU來計(jì)算復(fù)雜的CRC校驗(yàn)位,尤其是驅(qū)動大容量的SD卡,該SPI低速的特性更為明顯,整個(gè)芯片的性能降低更為顯著,因此目前的SPI裝置無法在保證一定靈活性的前提下同時(shí)適應(yīng)大量復(fù)雜的高速數(shù)據(jù)傳輸環(huán)境。
發(fā)明內(nèi)容為了克服己有的串行外圍接口SPI裝置需要占用大量CPU資源、不能適應(yīng)大量復(fù)雜高速數(shù)據(jù)傳輸、數(shù)據(jù)吞吐量受限的不足,本發(fā)明提供一種大大減少占用CPU資源、能夠適應(yīng)大量復(fù)雜高速數(shù)據(jù)傳輸,增大數(shù)據(jù)吞吐量的集成在芯片內(nèi)的高速串行外圍接口電路。本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是一種集成在芯片內(nèi)的高速串行外圍接口電路,包括常規(guī)串行外圍接口電路模塊,所述常規(guī)串行外圍接口電路模塊包括數(shù)據(jù)緩沖器,用于緩沖寫數(shù)據(jù)txdfifo和讀數(shù)據(jù)rxdfifo;數(shù)據(jù)打包/解包單元,用于將寫操作下將寫數(shù)據(jù)txdfifo讀出的數(shù)拆分成一個(gè)個(gè)數(shù)據(jù)單元,在讀操作下用于將芯片外讀取的數(shù)據(jù)存入讀數(shù)據(jù)rxdfifo;SPI傳輸控制層,用于控制數(shù)據(jù)打包/解包單元和SPI物理層之間的時(shí)序關(guān)系寫操作時(shí)數(shù)據(jù)打包/解包單元完成數(shù)據(jù)單元的還原時(shí)使能SPI物理層,讀操作時(shí)SPI物理層完成串轉(zhuǎn)并時(shí)使能數(shù)據(jù)打包/解包單元;SPI物理層,用于實(shí)現(xiàn)并轉(zhuǎn)串、串轉(zhuǎn)并及大小端;AHBslave接口單元,用于基于AHB總線跟CPU交互,實(shí)現(xiàn)SPI工作模式的配置和SPI工作狀態(tài)的讀取;所述的高速串行外圍接口電路設(shè)有普通工作模式;所述高速串行外圍接口電路還包括串行外圍接口電路加速模塊,所述的高速串行外圍接口電路還設(shè)有加速工作模式,所述串行外圍接口電路加速模塊還包括AHBmaster接口單元,用于基于AHB總線來讀/寫DDR;寫加速單元,用于采用單塊/多塊寫操作方式發(fā)送同步頭FF—發(fā)送單塊FE、多塊FC通過AHBmaster接口單元從DDR取數(shù)據(jù)至寫數(shù)據(jù)txdfifo且常規(guī)串行外圍接口電路模塊的寫操作,同時(shí)啟動CRC計(jì)算單元—發(fā)送CRC校驗(yàn)位;讀加速單元,用于啟動常規(guī)串行外圍接口電路模塊的讀操作且啟動AHBmaster接口單元將讀數(shù)據(jù)rxdfifo里數(shù)據(jù)發(fā)送至DDR,同時(shí)啟動CRC計(jì)算單元—CRC校驗(yàn)—發(fā)送同步頭FF且拉低片選印/—化/;CRC計(jì)算單元,用于采用CRC計(jì)算公式進(jìn)行計(jì)算;加速控制單元,用于啟動所述寫加速單元或讀加速單元,并控制讀寫方向,配置寄存器,反映狀態(tài);在加速工作模式下,數(shù)據(jù)傳輸過程中CPU告知數(shù)據(jù)存取地址以長度,由加速控制單元控制讀寫,在完成加速操作時(shí),通過AHBmaster接口單元發(fā)送中斷。作為優(yōu)選的一種方案所述的CRC計(jì)算單元采用16位CRC的計(jì)算公式G(x)=x16+x12+:x5+l,其中x為8位數(shù)據(jù)單元。進(jìn)一步,在所述數(shù)據(jù)緩沖器由二塊32深度、32寬度的FIFO組成,其中一塊用于緩存寫數(shù)據(jù)txdfifo,另外一塊用于緩沖讀數(shù)據(jù)rxdfifo。普通工作模式下,寫操作是CPU配置寫入txdfifo,讀操作是CPU讀取rxdfifo;加速工作模式下,寫操作是直接到DDR取數(shù)據(jù)寫入txdfifo,讀操作是直接將ncdfifo里的數(shù)據(jù)發(fā)至DDR目標(biāo)地址且發(fā)中斷給CPU。再進(jìn)一步,所述的數(shù)據(jù)打包/解包單元中,在讀操作下將芯片外讀取的數(shù)據(jù)打包成32位存入讀數(shù)據(jù)rxdfifo或直接存入讀數(shù)據(jù)rxdfifo。更進(jìn)一步,所述的SPI物理層還包含時(shí)鐘產(chǎn)生器,用于產(chǎn)生2-256任意分頻的時(shí)鐘給片外器件,并設(shè)置波特率。所述AHBslave接口單元支持8位、16位、32位的數(shù)據(jù)單元,支持打包和不打包模式,支持1/21/256bit/clk,每個(gè)數(shù)據(jù)單元支持大端和小端模式,同時(shí)支持普通SPI模式、加速SPI模式和串行FLASH模式。本發(fā)明的技術(shù)構(gòu)思為該串行外圍接口電路主要由常規(guī)SPI模塊和SPI加速模塊組成,其中常規(guī)SPI模塊由數(shù)據(jù)緩沖器、數(shù)據(jù)打包/解包單元、SPI傳輸控制層、SPI物理層和AHBslave接口單元組成,SPI加速模塊由AHBmaster接口單元、寫加速單元、讀加速單元、CRC計(jì)算單元和加速控制單元組成。該電路支持普通工作模式和加速工作模式。常規(guī)SPI模塊采用普通工作模式,它將CPU要傳輸?shù)臄?shù)據(jù)經(jīng)過AHBslave接口單元寫入數(shù)據(jù)緩沖器,再由數(shù)據(jù)緩沖器取出經(jīng)數(shù)據(jù)打包/解包單元分解還原成數(shù)據(jù)單元,通過SPI傳輸控制層控制將并行的數(shù)據(jù)單元送入到SPI物理層,從而可以進(jìn)一步分解成串行的數(shù)據(jù)寫入到外部器件;將從外部器件讀取的串行數(shù)據(jù)經(jīng)SPI物理層轉(zhuǎn)化為并行的數(shù)據(jù)單元,通過SPI傳輸控制層控制將數(shù)據(jù)單元送入到數(shù)據(jù)打包/解包單元進(jìn)行打包,存入數(shù)據(jù)緩沖器,CPU通過AHBslave接口單元從數(shù)據(jù)緩沖器讀取該外部器件的數(shù)據(jù),故這種模式需要CPU極大的干預(yù)來完成與外部器件的數(shù)據(jù)通訊,雖然傳輸速度慢,但是適合于發(fā)送復(fù)雜的命令字。SPI加速模塊采用加速工作模式,整個(gè)傳輸過程中只需要CPU告知數(shù)據(jù)存取地址及長度,無需其它的干預(yù)就可以完成數(shù)據(jù)交互寫操作時(shí)候,加速控制單元啟動寫加速單元,寫加速單元自動啟動常規(guī)SPI模塊來完成同步頭和start—token(單塊FE,多塊FC)的發(fā)送,然后通過AHBmaster接口單元從DDR取數(shù)據(jù)至數(shù)據(jù)緩沖器,并且再次自動啟動常規(guī)SPI模塊,完成將數(shù)據(jù)緩沖器中的數(shù)據(jù)寫入到外部器件中,同時(shí)寫加速單元啟動CRC計(jì)算單元來計(jì)算寫數(shù)據(jù)的CRC校驗(yàn)位,當(dāng)完成有效數(shù)據(jù)的傳輸時(shí),啟動常規(guī)SPI模塊來發(fā)送該CRC校驗(yàn)位;讀操作時(shí)候,加速控制單元啟動讀加速單元,讀加速單元自動啟動常規(guī)SPI模塊來完成對外圍器件的讀取,且將讀取的數(shù)據(jù)存入到數(shù)據(jù)緩沖器,啟動CRC計(jì)算單元來計(jì)算讀取數(shù)據(jù)的CRC校驗(yàn)位,同時(shí)啟動AHBmaster接口單元將數(shù)據(jù)緩沖器中的數(shù)據(jù)發(fā)送至DDR,當(dāng)完成對外圍器件的讀取時(shí),將讀取到的CRC校驗(yàn)位和CRC計(jì)算單元的結(jié)果進(jìn)行對比來檢驗(yàn)數(shù)據(jù)傳輸是否正確,并且將該對比結(jié)果寫入到AHBslave模塊里的對應(yīng)狀態(tài)寄存器里,最后啟動常規(guī)SPI模塊來發(fā)送同步頭,同時(shí)拉低外圍器件的片選信號,此時(shí)從外部器件讀取的數(shù)據(jù)均放在DDR上。當(dāng)完成SPI加速操作時(shí),均會通過AHBslave接口單元發(fā)出中斷,便于軟件進(jìn)行下一步操作,與常規(guī)技術(shù)相比可,本發(fā)明SPI電路的加速工作模式不僅可以通過CRC計(jì)算單元來實(shí)現(xiàn)復(fù)雜的CRC計(jì)算,而且其所有的交互數(shù)據(jù)都是通過AHBmaster接口單元和DDR之間的傳輸來傳遞,與外部器件通訊期間無需CPU進(jìn)行干預(yù),大大減少了CPU的負(fù)擔(dān),在較低的系統(tǒng)頻率下極大地提高數(shù)據(jù)傳輸?shù)乃俣?,減少功耗。此外,該SPI電路還可以實(shí)現(xiàn)串行FLASH芯片跟CPU之間的互相通訊。本發(fā)明的有益效果主要表現(xiàn)在1、在需要發(fā)送不同命令字且數(shù)據(jù)量小時(shí)候可以啟動常規(guī)SPI模塊,這樣在保證接口目標(biāo)的靈活性前提下,提高了系統(tǒng)性能的穩(wěn)定性;2、在需要發(fā)送命令相對固定、數(shù)據(jù)量大時(shí)候可以啟動SPI加速模塊,這樣在減少CPU工作負(fù)擔(dān)條件下,極大提高了數(shù)據(jù)傳輸速度;3、在一定數(shù)據(jù)吞吐量條件下它較常規(guī)SPI需要更低的系統(tǒng)頻率,從而降低了功耗;4、SPI加速模塊的讀/寫特有命令可以通過CPU配置來屏蔽,從而在保證速度的前提下增強(qiáng)了對外部器件加速的兼容性,真正實(shí)現(xiàn)了保證一定靈活性前提下同時(shí)適應(yīng)大量復(fù)雜數(shù)據(jù)傳輸環(huán)境的目的。圖1是本發(fā)明的高速SPI電路結(jié)構(gòu)框圖。圖2是本發(fā)明的SPI與外部器件控制時(shí)序圖,其中(a)所示為cpha=0cpol二0的示意圖;(b)戶/示為cpha=0cpol=l時(shí)的示意圖;(c)所示為cpha二lcpol^時(shí)的示意圖;(d)所示為cpha=lcPol=l時(shí)的示意圖。圖3是本發(fā)明的SPI串行FLASH操作模式時(shí)序圖,其中(a)所示為讀FLASH的示意圖,(b)所示為寫FLASH的示意圖。圖4是本發(fā)明的數(shù)據(jù)打包電原理圖。圖5是本發(fā)明的數(shù)據(jù)解包電原理圖。圖6是本發(fā)明的AHBslave接口時(shí)序圖,其中(a)所示為讀slave的示意圖,(b)所示為寫slave的示意圖。圖7是本發(fā)明的AHBmaster接口時(shí)序圖,其中(a)所示為master寫操作的示意圖,(b)所示為master讀操作的示意圖。圖8是本發(fā)明的32位數(shù)據(jù)單元流水操作時(shí)序圖。具體實(shí)施例方式下面結(jié)合附圖對本發(fā)明作進(jìn)一步描述。參照圖1圖8,一種集成在芯片內(nèi)的高速串行外圍接口電路,包括常規(guī)串行外圍接口電路模塊,所述常規(guī)串行外圍接口電路模塊包括:數(shù)據(jù)緩沖器,用于緩沖寫數(shù)據(jù)txdfifo和讀數(shù)據(jù)rxdfifo;數(shù)據(jù)打包/解包單元,用于將寫操作下將寫數(shù)據(jù)txdfifo讀出的數(shù)拆分成一個(gè)個(gè)數(shù)據(jù)單元,在讀操作下用于將芯片外讀取的數(shù)據(jù)存入讀數(shù)據(jù)rxdfifo;SPI傳輸控制層,用于控制數(shù)據(jù)打包/解包單元和SPI物理層之間的時(shí)序關(guān)系寫操作時(shí)數(shù)據(jù)打包/解包單元完成數(shù)據(jù)單元的還原時(shí)使能SPI物理層,讀操作時(shí)SPI物理層完成串轉(zhuǎn)并時(shí)使能數(shù)據(jù)打包/解包單元;SPI物理層,用于實(shí)現(xiàn)并轉(zhuǎn)串、串轉(zhuǎn)并及大小端;AHBslave接口單元,用于基于AHB總線跟CPU交互,實(shí)現(xiàn)SPI工作模式的配置和SPI工作狀態(tài)的讀取;所述的高速串行外圍接口電路設(shè)有普通工作模式;所述高速串行外圍接口電路還包括串行外圍接口電路加速模塊,所述的高速串行外圍接口電路還設(shè)有加速工作模式,所述串行外圍接口電路加速模塊還包括AHBmaster接口單元,用于基于AHB總線來讀/寫DDR;寫加速單元,用于采用單塊/多塊寫操作方式發(fā)送同步頭FF—發(fā)送單塊FE、多塊FC—通過AHBmaster接口單元從DDR取數(shù)據(jù)至寫數(shù)據(jù)txdfifo且常規(guī)串行外圍接口電路模塊的寫操作,同時(shí)啟動CRC計(jì)算單元—發(fā)送CRC校驗(yàn)位;讀加速單元,用于啟動常規(guī)串行外圍接口電路模塊的讀操作且啟動AHBmaster接口單元將讀數(shù)據(jù)rxdfifo里數(shù)據(jù)發(fā)送至DDR,同時(shí)啟動CRC計(jì)算單元—CRC校驗(yàn)—發(fā)送同步頭FF且拉低片選spi_sel;CRC計(jì)算單元,用于采用CRC計(jì)算公式進(jìn)行計(jì)算;加速控制單元,用于啟動所述寫加速單元或讀加速單元,并控制讀寫方向,配置寄存器,反映狀態(tài);在加速工作模式下,數(shù)據(jù)傳輸過程中CPU告知數(shù)據(jù)存取地址以長度,由加速控制單元控制讀寫,在完成加速操作時(shí),通過AHBmaster接口單元發(fā)送中斷。本發(fā)明的高速SPI電路是基于AHB總線的CPU和外部器件串行通訊接口,其結(jié)構(gòu)框圖如圖1所示,其中spi—sel是給外部器件的片選信號(低電平有效),spi—sck是給外部器件的時(shí)鐘,spi—mosi是寫入外部器件的串行數(shù)據(jù),spi-miso是從外部器件讀出的串行數(shù)據(jù)。該電路由常規(guī)SPI模塊和SPI加速模塊組成,其中常規(guī)SPI模塊由數(shù)據(jù)緩沖器、數(shù)據(jù)打包/解包單元、SPI傳輸控制層、SPI物理層和AHBslave接口單元組成,SPI加速模塊由AHBmaster接口單元、寫加速單元、讀加速單元、CRC計(jì)算單元和加速控制單元組成。常規(guī)SPI模塊遵照SPI協(xié)議,將CPU要傳輸?shù)臄?shù)據(jù)經(jīng)過AHBslave接口單元寫入數(shù)據(jù)緩沖器,再由數(shù)據(jù)緩沖器取出經(jīng)數(shù)據(jù)打包/解包單元分解還原成數(shù)據(jù)單元,通過SPI傳輸控制層控制將并行的數(shù)據(jù)單元送入到SPI物理層,從而可以進(jìn)一步分解成串行的數(shù)據(jù)寫入到外部器件;將從外部器件讀取的串行數(shù)據(jù)經(jīng)SPI物理層轉(zhuǎn)化為并行的數(shù)據(jù)單元,通過SPI傳輸控制層控制將數(shù)據(jù)單元送入到數(shù)據(jù)打包/解包單元進(jìn)行打包,存入數(shù)據(jù)緩沖器,CPU通過AHBslave接口單元從數(shù)據(jù)緩沖器讀取該外部器件的數(shù)據(jù)。常規(guī)SPI模塊跟外部器件的控制關(guān)系如下表1200810121248.8說明書第9/16頁所示,<table>tableseeoriginaldocumentpage13</column></row><table>表l具體的控制時(shí)序圖如圖2所示,其中tsels、tw、tselh、tdis都是參數(shù)可配,這樣通過CPU的參數(shù)配置可以滿足不同的外部器件對控制信號的延遲及驅(qū)動/采樣時(shí)鐘的相位要求,增強(qiáng)了兼容性。常規(guī)SPI模塊還可以通過CPU配置實(shí)現(xiàn)串行FLASH芯片跟CPU之間的互相通訊讀操作時(shí)候,首先需要往Flash發(fā)送64bit的命令,即命令字52(8bit)+4個(gè)"1""+頁地址(libit)+頁內(nèi)字節(jié)的起始地址(9bit)+32個(gè)無關(guān)位,發(fā)送完這64bit(通常是組合成8個(gè)字節(jié))命令后,緊跟著從Flash讀數(shù)據(jù),每讀出一個(gè)字節(jié),字節(jié)地址自動加l,如遇到該頁的末尾,只要有spi—sck時(shí)鐘,系統(tǒng)再加到該頁的起始處讀數(shù)據(jù),在整個(gè)操作過程中spi—sel始終為"0",當(dāng)sp^sel腳回到"r時(shí),將終止此次操作,spi一miso腳恢復(fù)到高阻狀態(tài);寫操作時(shí)候首先需要往Flash發(fā)送32bit的命令,緊跟著發(fā)送寫入的數(shù)據(jù),具體的時(shí)序如圖3所示。由此可見,常規(guī)SPI模塊雖然需要CPU極大的干預(yù)來完成與外部器件的數(shù)據(jù)通訊,但是它很靈活,可以支持不同類型的外部器件。SPI加速模塊工作在一種類似于"DMA"的方式,以往CPU對常規(guī)SPI的控制,現(xiàn)在由SPI加速模塊完成,整個(gè)傳輸過程中只需要CPU告知數(shù)據(jù)存取地址及長度,無需其它的干預(yù)就可以完成數(shù)據(jù)交互寫操作時(shí)候,加速控制單元啟動寫加速單元,寫加速單元自動啟動常規(guī)SPI模塊來完成同步頭和start一token(單塊FE,多塊FC)的發(fā)送,然后通過AHBmaster接口單元從DDR取數(shù)據(jù)至數(shù)據(jù)緩沖器,并且再次自動啟動常規(guī)SPI模塊,完成將數(shù)據(jù)緩沖器中的數(shù)據(jù)寫入到外部器件中,同時(shí)寫加速單元啟動CRC計(jì)算單元來計(jì)算寫數(shù)據(jù)的CRC校驗(yàn)位,當(dāng)完成有效數(shù)據(jù)的傳輸時(shí),啟動常規(guī)SPI模塊來發(fā)送該CRC校驗(yàn)位;讀操作時(shí)候,加速控制單元啟動讀加速單元,讀加速單元自動啟動常規(guī)SPI模塊來完成對外圍器件的讀取,且將讀取的數(shù)據(jù)存入到數(shù)據(jù)緩沖器,啟動CRC計(jì)算單元來計(jì)算讀取數(shù)據(jù)的CRC校驗(yàn)位,同時(shí)啟動AHBmaster接口單元將數(shù)據(jù)緩沖器中的數(shù)據(jù)發(fā)送至DDR,當(dāng)完成對外圍器件的讀取時(shí),將讀取到的CRC校驗(yàn)位和CRC計(jì)算單元的結(jié)果進(jìn)行對比來檢驗(yàn)數(shù)據(jù)傳輸是否正確,并且將該對比結(jié)果寫入到AHBslave模塊里的對應(yīng)狀態(tài)寄存器里,最后啟動常規(guī)SPI模塊來發(fā)送同步頭,同時(shí)拉低外圍器件的片選信號,此時(shí)從外部器件讀取的數(shù)據(jù)均放在DDR上。當(dāng)完成SPI加速操作時(shí),均會通過AHBslave接口單元發(fā)出中斷,便于軟件進(jìn)行下一步操作,由此可見,SPI加速模塊不僅可以通過CRC計(jì)算單元來實(shí)現(xiàn)復(fù)雜的CRC計(jì)算,而且其所有的交互數(shù)據(jù)都是通過AHBmaster接口單元和DDR之間的傳輸來傳遞,與外部器件通訊期間無需CPU進(jìn)行干預(yù),大大減少了CPU工作量,在較低的系統(tǒng)頻率下極大地提高數(shù)據(jù)傳輸?shù)乃俣?,減少功耗,但是鑒于不同器件其命令字不同,而且同一種器件其初始化階段的命令字多且復(fù)雜,同時(shí)考慮到硬件復(fù)雜性,故SPI加速模塊只能適用于命令字相對固定且數(shù)據(jù)量大階段(即數(shù)據(jù)傳輸階段),對于支持讀/寫特有命令的外部器件,比如SD卡,它的加速性能更為優(yōu)越,同時(shí)該讀/寫特有命令又可以通過CPU配置來屏蔽,從而可以適用于其它器件的加速。以下結(jié)合圖1的結(jié)構(gòu)框圖詳細(xì)說明主要部件的功能及結(jié)構(gòu)。數(shù)據(jù)緩沖器數(shù)據(jù)緩沖器由二塊32深度、32寬度的FIFO組成,其中一塊用于緩存寫數(shù)據(jù)(txdfifo),另外一塊用于緩沖讀數(shù)據(jù)(rxdfifo)。普通模式下,寫操作是CPU配置寫入txdfifo,讀操作是CPU讀取rxdfifo。加速模式下,寫操作是SPI利用AHB總線直接到DDR取數(shù)據(jù)寫入txdfifo,讀操作是SPI直接將rxdfifo里的數(shù)據(jù)發(fā)至DDR目標(biāo)地址且發(fā)中斷給CPU。數(shù)據(jù)打包/解包單元數(shù)據(jù)打包/解包單元如圖4、5所示,其中打包使能信號由CPU配置,32位寄存器組由32個(gè)D觸發(fā)器構(gòu)成。(1)寫操作且打包模式下,32位寄存器組0和32位寄存器組1相連組成一個(gè)右移寄存器組,txdfifo里的數(shù)據(jù)是幾個(gè)數(shù)據(jù)單元打包組成。當(dāng)讀txdfifo時(shí),先將讀出的數(shù)據(jù)存到32位寄存器組0,32位寄存器組1將上次傳輸好的數(shù)據(jù)單元右移出D觸發(fā)器,同時(shí)32位寄存器組0右移數(shù)據(jù)入32位寄存器組1的高位,當(dāng)右移個(gè)數(shù)等于數(shù)據(jù)單元長度時(shí)就完成數(shù)據(jù)解包。(2)寫操作且不打包模式下,txdfifo讀出的數(shù)就是數(shù)據(jù)單元,可以直接存到32位寄存器組1。(3)讀操作且打包模式下,該過程是寫操作且打包模式的逆過程,32位寄存器組2和32位寄存器組3相連組成一個(gè)右移寄存器組,rxdfifo里的數(shù)據(jù)是幾個(gè)數(shù)據(jù)單元打包組成,SPI物理層將外圍的串行數(shù)據(jù)轉(zhuǎn)為并行數(shù)據(jù)且存于32位寄存器組2,32位寄存器組2和32位寄存器組3同時(shí)右移操作,32位寄存器組2里的數(shù)據(jù)存入32位寄存器組3空閑區(qū),當(dāng)32位寄存器組3滿32位時(shí)候?qū)懭氲絩xdfifo。(4)讀操作且不打包模式下,rxdfifo的每一個(gè)地址所存的數(shù)據(jù)就是一個(gè)數(shù)據(jù)單元,故可以直接將32位寄存器組2寫入到rxdfifo。SPI傳輸控制層SPI傳輸控制層用于控制數(shù)據(jù)打包/解包單元和SPI物理層之間的時(shí)序關(guān)系寫操作時(shí)數(shù)據(jù)打包/解包單元完成數(shù)據(jù)單元的還原時(shí)使能SPI物理層;讀操作時(shí)SPI物理層完成串轉(zhuǎn)并時(shí)使能數(shù)據(jù)打包/解包單元。SPI物理層SPI物理層用于實(shí)現(xiàn)并轉(zhuǎn)串(寫)、串轉(zhuǎn)并(讀)及大小端功能。并轉(zhuǎn)串可以通過D觸發(fā)器首尾相接構(gòu)成,大端模式下,由數(shù)據(jù)單元的最高位作為出口左移完成;小端模式下,由數(shù)據(jù)單元的最低位作為出口右移完成。此外,SPI物理層還包含了時(shí)鐘產(chǎn)生器,它可以產(chǎn)生2-256任意分頻的時(shí)鐘給片外器件,實(shí)現(xiàn)波特率的靈活設(shè)置,而這個(gè)時(shí)鐘產(chǎn)生器在偶分頻時(shí)候用時(shí)鐘上升沿觸發(fā)的加法計(jì)數(shù)器實(shí)現(xiàn),奇分頻時(shí)候?qū)⑾陆笛赜|發(fā)加法計(jì)數(shù)器產(chǎn)生信號和上升沿觸發(fā)加法計(jì)數(shù)器產(chǎn)生信號經(jīng)過或門實(shí)現(xiàn)。AHBslave接口單元AHBslave接口單元是基于AHB總線來跟CPU交互,實(shí)現(xiàn)SPI工作模式的配置和SPI工作狀態(tài)的讀取。該電路支持8位、16位、32位的數(shù)據(jù)單元,支持打包和不打包模式,支持1/21/256bit/clk,每個(gè)數(shù)據(jù)單元支持大端和小端模式,同時(shí)支持普通SPI模式、加速SPI模式和串行FLASH模式,AHBslave接口單元的時(shí)序如圖6所示。AHBmaster接口單元AHBmaster接口單元是基于AHB總線來讀/寫DDR,其控制時(shí)序如圖7所示。在加速控制單元控制下,利用該模塊,SPI就類似DMA—樣,不需要CPU干預(yù),直接將DDR的數(shù)據(jù)寫入到外部器件或直接將外部器件的數(shù)據(jù)讀入到DDR。而對于常規(guī)的SPI操作,通訊的數(shù)據(jù)都需要CPU跟SPI直接交互來完成,相同的系統(tǒng)頻率下常規(guī)的SPI數(shù)據(jù)吞吐量小,CPU工作量大。寫加速單元和讀加速單元寫/讀加速單元主要應(yīng)用于命令相對固定,數(shù)據(jù)量較大的情況,本發(fā)明的寫加速單元采用單塊/多塊寫操作方式(1)發(fā)送同步頭FF—(2)發(fā)送start—token(單塊FE,多塊FC)—(3)通過AHBmaster接口單元從DDR取數(shù)據(jù)至txdfifo且啟動SPI模塊寫操作,同時(shí)啟動CRC計(jì)算單元—(4)發(fā)送CRC校驗(yàn)位。具體實(shí)現(xiàn)過程可以通過一個(gè)具3個(gè)狀態(tài)的狀態(tài)機(jī)來整體控制狀態(tài)a代表(1)、(2)過程,同步頭和start—token當(dāng)作一個(gè)16位數(shù)據(jù)單元發(fā)送,在狀態(tài)a時(shí)候可以將這個(gè)16位數(shù)據(jù)單元寫入到txdfifo,同時(shí)啟動常規(guī)SPI模塊的寫操作來發(fā)送該16數(shù)據(jù)單元至外部器件;完成狀態(tài)a后可以跳至狀態(tài)b,狀態(tài)b用于實(shí)現(xiàn)過程(3),它啟動AHBmaster來讀DDR數(shù)據(jù)入txdfifo,同時(shí)讀取txdfifo里數(shù)據(jù)入常規(guī)SPI模塊來執(zhí)行寫操作,每當(dāng)數(shù)據(jù)打包/解包單元完成數(shù)據(jù)單元還原時(shí)候就開始計(jì)算這個(gè)數(shù)據(jù)單元對應(yīng)的CRC校驗(yàn)位;完成狀態(tài)b后可以跳至狀態(tài)c,狀態(tài)c用于實(shí)現(xiàn)過程(4),這時(shí)候已經(jīng)完成了寫操作,CRC計(jì)算單元的結(jié)果就是要傳輸數(shù)據(jù)的最終CRC校驗(yàn)位(16位),這時(shí)只要將這個(gè)16位CRC校驗(yàn)位置入txdfifo且啟動常規(guī)SPI模塊來發(fā)送即可。本實(shí)施例的讀加速單元采用的讀操作方式為(5)啟動SPI模塊讀操作且啟動AHBmaster接口單元將rxdfifo里數(shù)據(jù)發(fā)送至DDR,同時(shí)啟動CRC計(jì)算單元—(6)CRC校驗(yàn)—(7)發(fā)送同步頭FF且拉低片選spi—sel。具體實(shí)現(xiàn)過程可以通過一個(gè)具3個(gè)狀態(tài)的狀態(tài)機(jī)來整體控制狀態(tài)d代表過程(5),它啟動常規(guī)SPI模塊去讀外部器件,一旦rxdfifo半滿就通過AHBmaster模塊寫DDR,每當(dāng)SPI物理層完成一個(gè)數(shù)據(jù)單元的串轉(zhuǎn)并時(shí)候就啟動CRC計(jì)算單元;完成狀態(tài)d后可以跳至狀態(tài)e,狀態(tài)e用于實(shí)現(xiàn)過程(6),這時(shí)候已經(jīng)完成了有效數(shù)據(jù)的讀取,但是還需要啟動常規(guī)SPI模塊讀取有效數(shù)據(jù)的16位校驗(yàn)位,將該讀取的校驗(yàn)位和CRC計(jì)算單元的結(jié)果對比來檢驗(yàn)是否數(shù)據(jù)傳輸正確,將該對比結(jié)果寫入到AHBslave模塊里的對應(yīng)狀態(tài)寄存器里;完成狀態(tài)e后可以跳至狀態(tài)f,狀態(tài)f用于實(shí)現(xiàn)過程(7),此時(shí)對外部器件操作完成,發(fā)送同步頭和拉低片選來結(jié)束外部器件操作,故寫8位FF入txdfifo,同時(shí)啟動常規(guī)SPI模塊來執(zhí)行寫操作,完成后拉低片選,同時(shí)可以發(fā)送中斷給CPU去取外部器件的數(shù)據(jù)。對于支持寫加速單元和讀加速單元操作方式的外部器件,比如SD卡,本發(fā)明的電路加速性能更為優(yōu)越。由上可知寫加速單元和讀加速單元只是控制AHBmaster讀/寫DDR、常規(guī)SPI寫/讀操作而已,其操作簡單,便于硬件實(shí)現(xiàn)。為了增強(qiáng)SPI加速模塊的兼容性,寫操作的特有命令"發(fā)送同步頭FF、start一token、CRC計(jì)算"及讀操作的特有命令"CRC計(jì)算、校驗(yàn)、發(fā)送同步頭FF且拉低片選spi—sel"可以通過CPU配置來屏蔽,此時(shí)只要跳過這幾個(gè)狀態(tài)即可實(shí)現(xiàn),從而使得SPI的加速模塊應(yīng)用加速于其它類型的器件,最大限度地減少了以后升級的工CRC計(jì)算單元CRC計(jì)算單元采用16位CRC的計(jì)算公式G(x)=xl6+xl2+x5+l,其中x為8位數(shù)據(jù)單元。將該公式進(jìn)行多項(xiàng)式展開,可以將多項(xiàng)式的系數(shù)存于只讀存儲器rom一crc中,這樣CRC計(jì)算公式可以簡化為crc=(crc8)Arom_crc[(crc8)A數(shù)據(jù)單元],方便硬件實(shí)現(xiàn)。雖然該公式只支持8位數(shù)據(jù)單元,但是本發(fā)明的電路從高位至低位按8劃分?jǐn)?shù)據(jù)單元來依次計(jì)算CRC,這樣在CRC公式不變的條件下該SPI可以支持8、16、32位數(shù)據(jù),從而在加速模式下可以通過該電路來實(shí)現(xiàn)復(fù)雜的CRC計(jì)算,不需要軟件驅(qū)動占用CPU來完成,大大減少了CPU的負(fù)擔(dān),提高了速度,而且多種位寬的數(shù)據(jù)單元使得操作更加靈活,尤其是32位數(shù)據(jù)單位可以提高總線效率,減少FIFO的存取次數(shù),減少功耗。為了與其它外部器件兼容,該CRC計(jì)算單元可以通過CPU配置來屏蔽,增強(qiáng)了硬件的兼容性。具體實(shí)現(xiàn)過程可以通過三級流水來實(shí)現(xiàn)第一級流水用于將數(shù)據(jù)單元按高位至低位順序按8劃分得到send—buffer,如32位數(shù)據(jù)單元可以劃分成4段"31-24"、"23-16"、"15-8"、"7-0"依次計(jì)算CRC;第二級流水用于計(jì)算rom—crc的地址"(crc原>〉8)Asend—buffer";第三級流水可以根據(jù)地址讀rom—crc,再(crc原<<8)Arom一crc得至UCRC校驗(yàn)位crc,如32位數(shù)據(jù)單元的流水操作如圖8所示。加速控制單元當(dāng)CPU通過AHBslave接口單元啟動加速模式時(shí),開啟加速控制單元。加速控制單元根據(jù)CPU配置的讀/寫寄存器來啟動讀加速/寫加速單元,從而決定了對AHB總線的操作方式。在操作過程中根據(jù)寫加速/讀加速單元的狀態(tài)機(jī)動態(tài)配置傳輸數(shù)據(jù)單元個(gè)數(shù)、數(shù)據(jù)單元長度及SPI的讀/寫方向?qū)懖僮鲿r(shí)候,狀態(tài)a配置傳輸數(shù)據(jù)單元個(gè)數(shù)為l、數(shù)據(jù)單元長度為16、SPI的讀/寫方向?yàn)閷懀瑺顟B(tài)b配置傳輸數(shù)據(jù)單元個(gè)數(shù)和數(shù)據(jù)單元長度為CPU預(yù)先設(shè)置的參數(shù)、SPI的讀/寫方向?yàn)閷?,狀態(tài)C配置傳輸數(shù)據(jù)單元個(gè)數(shù)為1、數(shù)據(jù)單元長度為16、SPI的讀/寫方向?yàn)閷懀蛔x操作時(shí)候,狀態(tài)d配置傳輸數(shù)據(jù)單元個(gè)數(shù)和數(shù)據(jù)單元長度為CPU預(yù)先設(shè)置的參數(shù)、SPI的讀/寫方向?yàn)樽x,狀態(tài)e配置傳輸數(shù)據(jù)單元個(gè)數(shù)為1、數(shù)據(jù)單元長度為16、SPI的讀/寫方向?yàn)樽x,狀態(tài)f配置傳輸數(shù)據(jù)單元個(gè)數(shù)為1、數(shù)據(jù)單元長度為8、SPI的讀/寫方向?yàn)閷憽.?dāng)操作結(jié)束時(shí)候,通過AHBslave接口單元將相應(yīng)的狀態(tài)寫入到狀態(tài)寄存器里,便于軟件查詢。綜上所述,本發(fā)明的高速SPI接口電路有兩方面的優(yōu)點(diǎn)。一方面,外部器件的初始化階段命令與應(yīng)答信號比較多,情況比較復(fù)雜,但是占CPU不是很緊張,在這段時(shí)間的操作可以由常規(guī)SPI模塊完成,既保證了系統(tǒng)性能穩(wěn)定性,又保證了接口目標(biāo)的靈活性。另一方面,外部器件的數(shù)據(jù)傳輸階段命令字相對固定,而且數(shù)據(jù)量大,在這段時(shí)間操作關(guān)系到芯片接口性能好壞,這時(shí)可以由SPI加速模塊完成,從而可以實(shí)現(xiàn)足夠的數(shù)據(jù)傳輸效率前提下不干擾CPU,既保證了數(shù)據(jù)的傳輸速度,又保證了芯片的性能。上述實(shí)施例用來解釋說明本發(fā)明,而不是對本發(fā)明進(jìn)行限制,在本發(fā)明的精神和權(quán)利要求的保護(hù)范圍內(nèi),對本發(fā)明作出的任何修改和改變,都落入本發(fā)明的保護(hù)范圍。權(quán)利要求1、一種集成在芯片內(nèi)的高速串行外圍接口電路,包括常規(guī)串行外圍接口電路模塊,所述常規(guī)串行外圍接口電路模塊包括數(shù)據(jù)緩沖器,用于緩沖寫數(shù)據(jù)txdfifo和讀數(shù)據(jù)rxdfifo;數(shù)據(jù)打包/解包單元,用于將寫操作下將寫數(shù)據(jù)txdfifo讀出的數(shù)拆分成一個(gè)個(gè)數(shù)據(jù)單元,在讀操作下用于將芯片外讀取的數(shù)據(jù)存入讀數(shù)據(jù)rxdfifo;SPI傳輸控制層,用于控制數(shù)據(jù)打包/解包模塊和SPI物理層之間的時(shí)序關(guān)系寫操作時(shí)數(shù)據(jù)打包/解包模塊完成數(shù)據(jù)單元的還原時(shí)使能SPI物理層,讀操作時(shí)SPI物理層完成串轉(zhuǎn)并時(shí)使能數(shù)據(jù)打包/解包模塊;SPI物理層,用于實(shí)現(xiàn)并轉(zhuǎn)串、串轉(zhuǎn)并及大小端;AHBslave接口模塊,用于基于AHB總線跟CPU交互,實(shí)現(xiàn)SPI工作模式的配置和SPI工作狀態(tài)的讀??;所述的高速串行外圍接口電路設(shè)有普通工作模式;其特征在于所述高速串行外圍接口電路還包括串行外圍接口電路加速模塊,所述的高速串行外圍接口電路還設(shè)有加速工作模式,所述串行外圍接口電路加速模塊還包括AHBmaster接口單元,用于基于AHB總線來讀/寫DDR;寫加速單元,用于采用單塊/多塊寫操作方式發(fā)送同步頭FF→發(fā)送單塊FE、多塊FC→通過AHBmaster接口模塊從DDR取數(shù)據(jù)至寫數(shù)據(jù)txdfifo且常規(guī)串行外圍接口電路模塊的寫操作,同時(shí)啟動CRC計(jì)算模塊→發(fā)送CRC校驗(yàn)位;讀加速單元,用于啟動常規(guī)串行外圍接口電路模塊的讀操作且啟動AHBmaster接口單元將讀數(shù)據(jù)rxdfifo里數(shù)據(jù)發(fā)送至DDR,同時(shí)啟動CRC計(jì)算模塊→CRC校驗(yàn)→發(fā)送同步頭FF且拉低片選spi_swl;CRC計(jì)算單元,用于采用CRC計(jì)算公式進(jìn)行計(jì)算;加速控制單元,用于啟動所述寫加速單元或讀加速單元,并控制讀寫方向,配置寄存器,反映狀態(tài);在加速工作模式下,數(shù)據(jù)傳輸過程中CPU告知數(shù)據(jù)存取地址以長度,由加速控制單元控制讀寫,在完成加速操作時(shí),通過AHBmaster接口單元發(fā)送中斷。2、如權(quán)利要求1所述的集成在芯片內(nèi)的高速串行外圍接口電路,其特征在于所述的CRC計(jì)算模塊采用16位CRC的計(jì)算公式G(x)=x16+x12+x5+l,其中x為8位數(shù)據(jù)單元。3、如權(quán)利要求1或2所述的集成在芯片內(nèi)的高速串行外圍接口電路,其特征在于在所述數(shù)據(jù)緩沖器由二塊32深度、32寬度的FIFO組成,其中一塊用于緩存寫數(shù)據(jù)txdfifo,另外一塊用于緩沖讀數(shù)據(jù)rxdfifo。普通工作模式下,寫操作是CPU配置寫入txdfifo,讀操作是CPU讀取rxdfifo;加速工作模式下,寫操作是直接到DDR取數(shù)據(jù)寫入txdfifo,讀操作是直接將rxdfifo里的數(shù)據(jù)發(fā)至DDR目標(biāo)地址且發(fā)中斷給CPU。4、如權(quán)利要求3所述的集成在芯片內(nèi)的高速串行外圍接口電路,其特征在于所述的數(shù)據(jù)打包/解包單元中,在讀操作下將芯片外讀取的數(shù)據(jù)打包成32位存入讀數(shù)據(jù)rxdfifo或直接存入讀數(shù)據(jù)rxdfifo。5、如權(quán)利要求l或2所述的集成在芯片內(nèi)的高速串行外圍接口電路,其特征在于所述的SPI物理層還包含時(shí)鐘產(chǎn)生器,用于產(chǎn)生2-256任意分頻的時(shí)鐘給片外器件,并設(shè)置波特率。6、如權(quán)利要求4所述的集成在芯片內(nèi)的高速串行外圍接口電路,其特征在于所述的SPI物理層還包含時(shí)鐘產(chǎn)生器,用于產(chǎn)生2-256任意分頻的時(shí)鐘給片外器件,并設(shè)置波特率。7、如權(quán)利要求1或2所述的集成在芯片內(nèi)的高速串行外圍接口電路,其特征在于所述AHBslave接口單元支持8位、16位、32位的數(shù)據(jù)單元,支持打包和不打包模式,支持1/21/256bit/clk,每個(gè)數(shù)據(jù)單元支持大端和小端模式,同時(shí)支持普通SPI模式、加速SPI模式和串行FLASH模式。8、如權(quán)利要求6所述的集成在芯片內(nèi)的高速串行外圍接口電路,其特征在于所述AHBslave接口單元支持8位、16位、32位的數(shù)據(jù)單元,支持打包和不打包模式,支持1/21/256bit/dk,每個(gè)數(shù)據(jù)單元支持大端和小端模式,同時(shí)支持普通SPI模式、加速SPI模式和串行FLASH模式。全文摘要一種集成在芯片內(nèi)的高速串行外圍接口電路,包括常規(guī)串行外圍接口電路模塊,其包括數(shù)據(jù)緩沖器、數(shù)據(jù)打包/解包單元、SPI傳輸控制層、SPI物理層、AHBslave接口模塊,高速串行外圍接口電路設(shè)有普通工作模式;還包括串行外圍接口電路加速模塊,高速串行外圍接口電路還設(shè)有加速工作模式,串行外圍接口電路加速模塊包括AHBmaster接口單元、寫加速單元、讀加速單元、CRC計(jì)算單元、加速控制單元、在加速工作模式下,數(shù)據(jù)傳輸過程中CPU告知數(shù)據(jù)存取地址以長度,由加速控制單元控制讀寫,在完成加速操作時(shí),通過AHBmaster接口單元發(fā)送中斷。本發(fā)明大大減少占用CPU資源、能夠適應(yīng)大量復(fù)雜高速數(shù)據(jù)傳輸,增大數(shù)據(jù)吞吐量。文檔編號G06F13/40GK101382927SQ200810121248公開日2009年3月11日申請日期2008年9月25日優(yōu)先權(quán)日2008年9月25日發(fā)明者姚衛(wèi)忠,興秦,郁軍軍申請人:杭州愛威芯科技有限公司