專利名稱:一種異步數(shù)據(jù)緩存裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)傳輸領(lǐng)域,特別涉及異步數(shù)據(jù)緩存裝置。
背景技術(shù):
當(dāng)兩個(gè)系統(tǒng)工作頻率一致時(shí)即同步時(shí),系統(tǒng)之間數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)相對(duì)簡單;當(dāng)兩個(gè)系統(tǒng)工作頻率不一致時(shí),即其時(shí)鐘不同時(shí),數(shù)據(jù)傳輸一般采用異步先進(jìn)先出存儲(chǔ)器即異步FIFO實(shí)現(xiàn)。異步FIFO是一種先進(jìn)先出的電路,用來存儲(chǔ)、緩存在兩個(gè)異步時(shí)鐘系統(tǒng)之間傳輸?shù)臄?shù)據(jù)。
一般在異步FIFO中應(yīng)用雙端口的SRAM,對(duì)面積的占用很大,特別是在芯片設(shè)計(jì)中,占用面積過大會(huì)造成成本的增加。
同時(shí),較高工作頻率的系統(tǒng)如嵌入式DSP已經(jīng)越來越多的被應(yīng)用到主系統(tǒng)中,且DSP主要用于大量數(shù)據(jù)的計(jì)算,因此主系統(tǒng)與嵌入式DSP之間的數(shù)據(jù)傳輸對(duì)于整個(gè)系統(tǒng)的重要性也越來越大,所以在異步時(shí)鐘系統(tǒng)之間實(shí)現(xiàn)數(shù)據(jù)傳輸時(shí)能夠節(jié)約電路面積成了亟待解決的問題。
此外,在異步電路中,由于時(shí)鐘之間的周期和相位完全獨(dú)立,因而數(shù)據(jù)的丟失概率不為零。對(duì)于聲音處理芯片來說,數(shù)據(jù)流失可能造成聲音的跳躍;對(duì)于圖像處理芯片來說,可能會(huì)造成圖像的斷續(xù),因而影響到聽覺或視覺效果。
發(fā)明內(nèi)容
針對(duì)上述問題,本發(fā)明的目的就是提供一種能夠減小電路面積的異步數(shù)據(jù)緩存裝置。
因此本發(fā)明提出了一種異步數(shù)據(jù)緩存裝置,用于緩存由系統(tǒng)一向系統(tǒng)二傳輸?shù)臄?shù)據(jù),所述系統(tǒng)一的工作頻率低于系統(tǒng)二的工作頻率,包括存儲(chǔ)模塊、多路選擇模塊及同步控制模塊;所述存儲(chǔ)模塊由兩個(gè)單端口的存儲(chǔ)器組成,用于交替執(zhí)行數(shù)據(jù)的讀/寫操作;所述同步控制模塊,用于根據(jù)來自所述系統(tǒng)一的寫操作命令控制所述兩個(gè)存儲(chǔ)器中的一個(gè)進(jìn)行寫操作,并根據(jù)來自所述系統(tǒng)二的讀操作命令控制所述兩個(gè)存儲(chǔ)器中的另一個(gè)進(jìn)行讀操作;所述多路選擇模塊,用于在所述同步控制模塊的控制下選擇輸出所述用于進(jìn)行讀操作的存儲(chǔ)器的輸出數(shù)據(jù)至所述系統(tǒng)二。
優(yōu)選地,所述同步控制模塊中包括滿中斷產(chǎn)生單元,用于在所述存儲(chǔ)模塊中的用于寫操作的存儲(chǔ)器被寫滿數(shù)據(jù)時(shí),產(chǎn)生一滿中斷信號(hào)發(fā)送給所述系統(tǒng)二。
進(jìn)一步地,所述同步控制模塊還包括一個(gè)數(shù)據(jù)量設(shè)置單元,用于設(shè)定向所述存儲(chǔ)模塊中的用于寫操作的存儲(chǔ)器一次寫入的數(shù)據(jù)量,及從所述存儲(chǔ)模塊中的用于讀操作的存儲(chǔ)器中一次讀取的數(shù)據(jù)量,所述滿中斷產(chǎn)生單元根據(jù)所述數(shù)據(jù)量設(shè)置單元設(shè)定的數(shù)據(jù)量,判斷執(zhí)行寫操作的存儲(chǔ)器是否被寫滿,而產(chǎn)生滿中斷信號(hào)。
進(jìn)一步地,所述同步控制模塊中還包括讀使能信號(hào)保持單元,用于根據(jù)所述讀使能信號(hào)產(chǎn)生一個(gè)保持信號(hào),在存儲(chǔ)器中數(shù)據(jù)被讀取的過程中保持讀使能信號(hào)有效。
進(jìn)一步地,所述裝置接收的數(shù)據(jù)來源是所述系統(tǒng)一中的兩個(gè)數(shù)據(jù)來源,在所述裝置中還包括數(shù)據(jù)源同步控制單元,用于協(xié)調(diào)所述兩個(gè)數(shù)據(jù)源的輸入,并且根據(jù)接收到的寫使能信號(hào),產(chǎn)生與所述系統(tǒng)二的工作頻率同步的寫入數(shù)據(jù)有效信號(hào)。
優(yōu)選地,所述系統(tǒng)二為嵌入式DSP,所述系統(tǒng)一為工作頻率低于所述嵌入式DSP的工作系統(tǒng)。
優(yōu)選地,所述存儲(chǔ)器為SRAM、SDRAM或FLASH。
優(yōu)選地,所述同步控制模塊中包括由兩個(gè)計(jì)數(shù)器組成的地址發(fā)生電路,其中一個(gè)計(jì)數(shù)器用于根據(jù)寫操作命令產(chǎn)生所述存儲(chǔ)模塊寫操作所需的寫地址,另一個(gè)計(jì)數(shù)器用于根據(jù)讀操作命令產(chǎn)生所述存儲(chǔ)模塊讀操作所需的讀地址。
本發(fā)明還公開了另一種異步數(shù)據(jù)緩存裝置,用于緩存系統(tǒng)二向系統(tǒng)一傳輸?shù)臄?shù)據(jù),所述系統(tǒng)一的工作頻率低于系統(tǒng)二的工作頻率,包括存儲(chǔ)模塊、多路選擇模塊及同步控制模塊;所述存儲(chǔ)模塊由兩個(gè)單端口的存儲(chǔ)器組成,用于交替執(zhí)行數(shù)據(jù)的讀/寫操作;所述同步控制模塊,用于根據(jù)來自所述系統(tǒng)二的寫操作命令控制所述兩個(gè)存儲(chǔ)器中的一個(gè)進(jìn)行寫操作,并根據(jù)來自所述系統(tǒng)一的讀操作命令控制所述兩個(gè)存儲(chǔ)器中的另一個(gè)進(jìn)行讀操作;所述多路選擇模塊,用于在所述同步控制模塊的控制下選擇輸出所述用于進(jìn)行讀操作的存儲(chǔ)器的輸出數(shù)據(jù)至所述系統(tǒng)一。
優(yōu)選地,所述同步控制模塊包括一空中斷產(chǎn)生單元,用于在所述存儲(chǔ)模塊中的用于讀操作的存儲(chǔ)器中的數(shù)據(jù)被讀空后,產(chǎn)生一空中斷信號(hào)發(fā)送給所述系統(tǒng)二。
進(jìn)一步地,所述同步控制模塊還包括一個(gè)數(shù)據(jù)量設(shè)置單元,用于設(shè)定向所述存儲(chǔ)模塊中的用于寫操作的存儲(chǔ)器一次寫入的數(shù)據(jù)量,及從所述存儲(chǔ)模塊中的用于讀操作的存儲(chǔ)器中一次讀取的數(shù)據(jù)量,所述空中斷產(chǎn)生單元根據(jù)所述數(shù)據(jù)量設(shè)置單元設(shè)定的數(shù)據(jù)量,判斷執(zhí)行寫操作的存儲(chǔ)器是否被讀空,而產(chǎn)生空中斷信號(hào)。
優(yōu)選地,所述系統(tǒng)二為嵌入式DSP,所述系統(tǒng)一為工作頻率低于所述嵌入式DSP的工作系統(tǒng)。
優(yōu)選地,所述存儲(chǔ)器為SRAM、SDRAM或FLASH。
優(yōu)選地,所述同步控制模塊中包括由兩個(gè)計(jì)數(shù)器組成的地址發(fā)生電路,其中一個(gè)計(jì)數(shù)器用于根據(jù)寫操作命令產(chǎn)生存儲(chǔ)模塊寫操作所需的寫地址,另一個(gè)計(jì)數(shù)器用于根據(jù)讀操作命令產(chǎn)生存儲(chǔ)模塊讀操作所需的讀地址。
本發(fā)明為兩個(gè)異步系統(tǒng)之間的數(shù)據(jù)傳輸提供了異步數(shù)據(jù)緩存裝置,第一種用于緩存從較低工作頻率的系統(tǒng)向較高工作頻率的系統(tǒng)傳輸?shù)臄?shù)據(jù),第二種用于緩存從較高工作頻率的系統(tǒng)向較低工作頻率的系統(tǒng)傳輸?shù)臄?shù)據(jù)。所述兩種緩存裝置都包括由兩個(gè)單端口存儲(chǔ)器組成的乒乓結(jié)構(gòu)存儲(chǔ)模塊,相比雙端口存儲(chǔ)器可以節(jié)約面積;另外,第一種裝置利用滿中斷控制高頻工作系統(tǒng)從所述存儲(chǔ)器中讀取數(shù)據(jù),第二種裝置則利用空中斷控制高頻工作系統(tǒng)向所述存儲(chǔ)器寫入數(shù)據(jù),另外,兩種裝置都可以設(shè)置寫入存儲(chǔ)器及從存儲(chǔ)器讀出的數(shù)據(jù)量,從而可以有效避免數(shù)據(jù)的丟失;另外,與應(yīng)用FIFO作為緩存裝置時(shí)一般需要FIFO空和FIFO滿兩個(gè)控制信號(hào)來讀/寫數(shù)據(jù)相比,本發(fā)明的緩存裝置可以只利用滿或空中斷信號(hào)來控制高頻工作系統(tǒng)進(jìn)行讀或?qū)憯?shù)據(jù),同時(shí)兩片單端口存儲(chǔ)器使用相同的地址發(fā)生器,因此電路相對(duì)簡單。
圖1為系統(tǒng)向DSP輸入數(shù)據(jù)時(shí)的異步數(shù)據(jù)緩存裝置示意圖;圖2為系統(tǒng)向DSP輸入數(shù)據(jù)時(shí)的異步數(shù)據(jù)緩存裝置示意圖,且具有讀使能信號(hào)保持信號(hào)產(chǎn)生單元和ADC同步單元;圖3為io_hold產(chǎn)生單元的內(nèi)部結(jié)構(gòu)示意圖;圖4為與DSP讀數(shù)據(jù)相關(guān)的內(nèi)部控制信號(hào)邏輯示意圖;圖5為數(shù)據(jù)源同步單元的內(nèi)部結(jié)構(gòu)示意圖;圖6為DSP向系統(tǒng)輸出數(shù)據(jù)的異步數(shù)據(jù)緩存裝置示意圖;圖7為DSP寫數(shù)據(jù)的時(shí)序示意圖。
具體實(shí)施例方式
下面結(jié)合說明書附圖進(jìn)一步詳細(xì)說明本發(fā)明的異步緩存裝置。
首先說明,所述異步緩存裝置用于在系統(tǒng)一和系統(tǒng)二之間緩存數(shù)據(jù),所述系統(tǒng)一的工作頻率低于所述系統(tǒng)二的工作頻率。在本實(shí)施例中,所述系統(tǒng)二可以為一嵌入式DSP(在下文中簡稱為DSP),工作頻率假設(shè)為20MHz,所述系統(tǒng)一為一個(gè)主系統(tǒng),其工作頻率假設(shè)為12MHz,因而DSP和主系統(tǒng)屬于不同的時(shí)鐘域,在進(jìn)行數(shù)據(jù)傳輸時(shí)處于異步狀態(tài)。
在所述主系統(tǒng)向DSP傳送數(shù)據(jù)時(shí),可設(shè)置一異步緩存裝置buffer,其輸入數(shù)據(jù)來自工作頻率較低的主系統(tǒng),其輸出數(shù)據(jù)傳送到工作頻率較高的DSP,在下文中將該異步緩存裝置稱為inbuf;相應(yīng)的,在緩存由DSP向主系統(tǒng)傳送的數(shù)據(jù)時(shí),可設(shè)置一異步緩存裝置buffer,稱之為outbuf。
如圖1、2及5所示,所述inbuf及outbuf中的存儲(chǔ)模塊中包括存儲(chǔ)器一和存儲(chǔ)器二,其可以采用兩個(gè)單端口的可擦寫存儲(chǔ)器,如SRAM、SDRAMFLASH均可,在本發(fā)明的實(shí)施例中,可以為兩個(gè)單端口的SRAMSRAM1和SRAM2??梢詫㈩A(yù)定需要存儲(chǔ)在緩存器中的數(shù)據(jù)量一分為二來設(shè)置每個(gè)單端口SRAM的大小,形成應(yīng)用空滿中斷控制的乒乓結(jié)構(gòu)的緩存器,例如原本應(yīng)用雙端口SRAM時(shí),需要256K的緩存容量,現(xiàn)在只需兩片128K的單端口SRAM即可,兩片128K的單端口SRAM比一片256K的雙端口SRAM面積小,從而在芯片設(shè)計(jì)中可以大大節(jié)約芯片面積。需要注意的是,在本發(fā)明中,一個(gè)SRAM被寫入數(shù)據(jù)時(shí),另一個(gè)SRAM中的數(shù)據(jù)可以被讀出。
另外,所述inbuf和outbuf中的多路選擇模塊也是基本相同的,都是用于選擇一路數(shù)據(jù)輸出,不過inbuf中的多路選擇模塊將數(shù)據(jù)輸出給所述工作頻率較高的DSP,而outbuf中的多路選擇模塊是將數(shù)據(jù)輸出給所述工作頻率相對(duì)較低的主系統(tǒng),因此其工作頻率是不同的。
首先介紹inbuf,圖1所示即為所述inbuf的電路框圖,如圖所示,其中data_in為來自主系統(tǒng)的數(shù)據(jù),data_out為所述inbuf輸出給所述DSP的數(shù)據(jù),d1、d2分別為所述SRAM1和SRAM2輸出給所述多路選擇模塊的數(shù)據(jù),所述inbuf電路主要包括1)存儲(chǔ)模塊,由兩個(gè)單端口的存儲(chǔ)器組成,即SRAM1和SRAM2,用于交替執(zhí)行數(shù)據(jù)的讀/寫操作,一個(gè)SRAM接收并存儲(chǔ)來自主系統(tǒng)的數(shù)據(jù)時(shí),另一個(gè)SRAM中的數(shù)據(jù)可被DSP通過多路選擇模塊讀出;2)同步控制模塊,用于根據(jù)所述主系統(tǒng)發(fā)來的寫操作命令,在此可以為寫使能信號(hào)write_enable,及DSP發(fā)來的讀操作命令,在此可以為讀使能信號(hào)read_enable,產(chǎn)生對(duì)所述兩個(gè)存儲(chǔ)器SRAM1和SRAM2進(jìn)行數(shù)據(jù)讀/寫操作所需的控制信號(hào),包括片選信號(hào)cen、讀/寫有效信號(hào)wen及地址信號(hào)addr,以及通知所述DSP讀取數(shù)據(jù)的控制信號(hào),該控制信號(hào)可以為一個(gè)滿中斷信號(hào)full_interrupt,及控制所述多路選擇模塊選定待讀取數(shù)據(jù)的存儲(chǔ)器的控制信號(hào)rbuf_sel;3)多路選擇模塊,用于根據(jù)所述同步控制模塊發(fā)來的控制信號(hào)rbuf_sel選擇待讀取數(shù)據(jù)的SRAM,傳輸來自所述SRAM1或SRAM2的數(shù)據(jù)d1或d2給所述DSP。
首先詳細(xì)介紹上述cen、wen、addr信號(hào),在該三個(gè)信號(hào)的綜合作用下,可實(shí)現(xiàn)對(duì)SRAM1、SRAM2進(jìn)行讀/寫有效控制,所述SRAM1及SRAM2都有各自相應(yīng)的cen、wen及addr信號(hào)。其控制原則為一個(gè)SRAM被寫入數(shù)據(jù)時(shí),另一個(gè)SRAM中的數(shù)據(jù)可以被讀出,如SRAM1的片選信號(hào)有效,且讀/寫有效信號(hào)為寫有效時(shí),主系統(tǒng)向SRAM1的地址中寫入數(shù)據(jù),若讀/寫有效信號(hào)為讀有效時(shí),則DSP讀取的數(shù)據(jù)data_out是通過所述多路選擇模塊從SRAM1中讀取的數(shù)據(jù)d1;相應(yīng)地,當(dāng)SRAM2的片選信號(hào)有效,且讀/寫有效信號(hào)為寫有效時(shí),即主系統(tǒng)向SRAM2中寫入數(shù)據(jù),若為讀有效,則DSP讀取的數(shù)據(jù)data_out是通過所述多路選擇模塊從SRAM2中讀取的數(shù)據(jù)d2。
在產(chǎn)生所述兩個(gè)SRAM的讀地址和寫地址時(shí),可以只用兩個(gè)計(jì)數(shù)器,一個(gè)用于產(chǎn)生讀地址,另一個(gè)用于產(chǎn)生寫地址,在將讀/寫地址輸出給兩個(gè)SRAM時(shí),根據(jù)兩個(gè)SRAM各自當(dāng)前的讀/寫狀態(tài),選擇應(yīng)該輸出讀地址,還是輸出寫地址。例如SRAM1為寫有效,則將寫地址輸出給SRAM1,同時(shí)SRAM2為讀有效,則將讀地址輸出給SRAM2。相比于現(xiàn)有技術(shù)中每個(gè)SRAM都需要自己的讀地址發(fā)生器和寫地址發(fā)生器,這種方法可以減少電路面積。
其次介紹所述滿中斷信號(hào)full_interrupt,在所述同步控制模塊中可以包括一滿中斷產(chǎn)生單元(圖中未示出),用于根據(jù)寫地址產(chǎn)生所述full_interrupt。如前所述,一個(gè)SRAM的容量為128K,則可以在寫滿128K時(shí),產(chǎn)生一個(gè)full_interrupt,發(fā)送給所述DSP的中斷控制器,通知DSP讀取數(shù)據(jù)。
另外,也可以在所述同步控制模塊中包括數(shù)據(jù)量設(shè)置單元(圖中未示出),其可以根據(jù)接收到的來自主系統(tǒng)的變量值word_depth,來設(shè)定并控制每次寫入SRAM的數(shù)據(jù)量,若寫入SRAM的數(shù)據(jù)量已達(dá)到word_depth的值,則認(rèn)為該SRAM已被寫滿,同步控制模塊即產(chǎn)生一滿中斷信號(hào)發(fā)給DSP。其具體實(shí)現(xiàn)是令主系統(tǒng)發(fā)出與word_depth同值的若干個(gè)寫使能信號(hào)write_enable。在一個(gè)實(shí)施例中,可以令word_depth值為100K,則系統(tǒng)發(fā)出100K個(gè)寫使能信號(hào),即可實(shí)現(xiàn)向選定的SRAM中寫入與word_depth等值個(gè)數(shù)的數(shù)據(jù),即實(shí)現(xiàn)了寫入設(shè)定數(shù)量數(shù)據(jù)的目的。同理,所述DSP每次讀取的數(shù)據(jù)量也由word_depth設(shè)定,即DSP每次發(fā)出的read_enable信號(hào)的個(gè)數(shù)也等于word_depth的值,這樣就可以保證數(shù)據(jù)在緩存過程中不會(huì)被丟失。word_depth的具體值可以由軟件根據(jù)需要傳輸?shù)臄?shù)據(jù)量的多少而確定,因此其值可不為固定值,而是根據(jù)需要變化,如所述兩個(gè)SRAM可以用不同的word_depth值,同一個(gè)SRAM也可不必每次都使用相同的word_depth值,但是這樣會(huì)使硬件電路的設(shè)計(jì)復(fù)雜化,所以在本實(shí)施例中可選擇使用相對(duì)固定的word_depth值,即兩個(gè)SRAM都使用相同的word_depth值,且每次word_depth值都基本相同。之所以為基本相同,是因?yàn)樵跀?shù)據(jù)傳輸結(jié)束時(shí),可能有一個(gè)SRAM未被寫滿,但其中數(shù)據(jù)仍需被讀出,如經(jīng)過軟件計(jì)算后確定最后只有80K數(shù)據(jù)需要傳輸,則主系統(tǒng)可給出word_depth值為80K,那么主系統(tǒng)和DSP只需給出80K個(gè)有效的write_enable及read_enable信號(hào)即可。
下面介紹上述inbuf的工作過程。同步控制模塊根據(jù)所述主系統(tǒng)發(fā)來的寫使能信號(hào)write_enable,產(chǎn)生對(duì)所述SRAM進(jìn)行寫數(shù)據(jù)操作的控制信號(hào),控制所述SRAM開始接收來自主系統(tǒng)的數(shù)據(jù)data_in,因?yàn)橐话阍陂_始傳輸數(shù)據(jù)時(shí),所述SRAM1和SRAM2均為空,所以可以將緩存裝置設(shè)置為首先向SRAM1寫入數(shù)據(jù)。另外,如上所述,在本實(shí)施例中,所述word_depth為100K,則主系統(tǒng)向SRAM1寫入100K數(shù)據(jù),寫滿100K后,所述控制模塊即向DSP發(fā)出滿中斷信號(hào)full_interruput。
所述DSP在收到full_interrupt后,可以發(fā)出與word_depth等值的read_enable信號(hào),即100K個(gè)read_enable信號(hào),所述同步控制模塊會(huì)選中SRAM1為待讀取數(shù)據(jù)的存儲(chǔ)器,開始讀取其中的100K個(gè)數(shù)據(jù),因?yàn)閷懭氲臄?shù)據(jù)量及讀出的數(shù)據(jù)量都已設(shè)置好,因此避免了數(shù)據(jù)丟失的現(xiàn)象。另一方面,所述SRAM1被寫滿后,主系統(tǒng)可以繼續(xù)向SRAM2中寫入數(shù)據(jù),其寫數(shù)據(jù)過程與向SRAM1中寫數(shù)據(jù)相同。
因?yàn)樽x數(shù)據(jù)的一方為所述DSP,其工作頻率大于主系統(tǒng)的工作頻率,在DSP讀取SRAM1的數(shù)據(jù)結(jié)束后,數(shù)據(jù)data_in還在寫入SRAM2,但這時(shí)SRAM1已經(jīng)可以再次被寫入數(shù)據(jù)了,因此,在寫滿SRAM2之后可以繼續(xù)向SRAM1中寫入數(shù)據(jù)。當(dāng)SRAM2被寫滿后,所述同步控制模塊再次向DSP的中斷控制器發(fā)送full_interrupt,DSP又會(huì)進(jìn)行同樣的處理,即從SRAM2中讀取數(shù)據(jù)。本發(fā)明可以只用一個(gè)full_interrupt來通知所述DSP開始讀取數(shù)據(jù),因此簡化了電路。上述工作過程即為inbuf在工作時(shí)的主要狀態(tài)一個(gè)SRAM被寫入數(shù)據(jù)的同時(shí),另一個(gè)SRAM中的數(shù)據(jù)被DSP讀取,如此兩個(gè)SRAM交替執(zhí)行讀/寫操作,即可完成緩存數(shù)據(jù)的功能。
當(dāng)主系統(tǒng)需要輸入DSP的數(shù)據(jù)流結(jié)束時(shí),沒有數(shù)據(jù)可寫入SRAM,此時(shí)DSP僅從其中一個(gè)SRAM,即被最后寫入數(shù)據(jù)的那個(gè)SRAM,如SRAM1中讀取數(shù)據(jù)。前面已經(jīng)介紹過,所述DSP讀取的數(shù)據(jù)量是由軟件決定的,因此,如果最后只剩80K數(shù)據(jù)需要讀出,則主系統(tǒng)在最后一次寫數(shù)據(jù)時(shí),只給出80K個(gè)有效的word_depth,即可設(shè)定最后一次主系統(tǒng)寫入緩存裝置的數(shù)據(jù)量及DSP讀取的數(shù)據(jù)量,DSP讀取數(shù)據(jù)完畢后,緩存工作結(jié)束。
下面介紹inbuf更優(yōu)化的實(shí)施方式,如圖2所示,其中包括一存儲(chǔ)器控制模塊,可視為與圖1中的同步控制模塊的功能相同,存儲(chǔ)器控制模塊用于根據(jù)各個(gè)控制信號(hào)產(chǎn)生對(duì)兩個(gè)SRAM進(jìn)行讀寫的控制信號(hào),包括片選cen、讀/寫有效信號(hào)wen、地址addr、控制多路控制模塊的信號(hào)rbuf_sel,以及滿中斷full_interrupt等,所述各個(gè)控制信號(hào)與圖1中所示相應(yīng)信號(hào)的作用相同。
在此基礎(chǔ)上,如圖2所示,可以增加讀使能信號(hào)保持單元即io_hold產(chǎn)生單元,這是因?yàn)閞ead_enable信號(hào)在輸入給所述同步控制模塊后,要經(jīng)過處理產(chǎn)生地址、片選等控制信號(hào),所以數(shù)據(jù)最后被讀出時(shí),就會(huì)有一定的時(shí)間延遲,即在被讀出的數(shù)據(jù)有效時(shí),read_enable信號(hào)可能已經(jīng)不再有效了。因此需要將read_enable信號(hào)保持住,以使DSP能夠讀入正確有效的數(shù)據(jù)。圖中所示io_hold信號(hào)是根據(jù)所述讀使能信號(hào)read_enable產(chǎn)生的一個(gè)中間信號(hào),其被輸出給所述DSP用于延長read_enable信號(hào),圖中的io_valid信號(hào)為inbuf的一個(gè)內(nèi)部信號(hào),是實(shí)際讀取數(shù)據(jù)時(shí)有效的讀有效信號(hào)。
如圖3所示,為io_hold信號(hào)產(chǎn)生單元的內(nèi)部結(jié)構(gòu),其中有三個(gè)輸入信號(hào)read_enable、rst_d及dclk,其中read_enable為所述DSP發(fā)來的讀使能信號(hào),dclk為DSP的時(shí)鐘,rst_d為復(fù)位信號(hào);有兩個(gè)輸出信號(hào)io_hold及io_valid,所述io_hold被發(fā)送給所述DSP,而所述io_valid則被送到所述存儲(chǔ)器控制模塊,配合其它信號(hào)產(chǎn)生讀地址等信號(hào)。所述rst_d及dclk分別連接到觸發(fā)器1和觸發(fā)器2上,所述read_enable首先進(jìn)入觸發(fā)器1;其輸出為與門1的一個(gè)輸入,低電平有效,所述與門1的另一輸入為read_enable;該與門的輸出為觸發(fā)器2的輸入;所述觸發(fā)器2的輸出為選擇器的選擇控制信號(hào),所述選擇器的一個(gè)輸入為read_enable,另一輸入為0,當(dāng)所述選擇控制信號(hào)的值為0時(shí),輸出read_enable信號(hào),其值為1時(shí)輸出0值;其輸出信號(hào)即為io_hold信號(hào),該信號(hào)為與門2的一個(gè)輸入,低電平有效,所述與門2的另一輸入為read_enable,其輸出即為io_valid。
上述內(nèi)容中與io_hold產(chǎn)生單元相關(guān)的三個(gè)控制信號(hào)read_enable、io_hold和io_valid及數(shù)據(jù)有效的相關(guān)時(shí)序如圖4所示,dclk為DSP的工作頻率,read_enable的頻率為dclk的1/3,其一個(gè)周期中高電平有效時(shí)間為兩個(gè)DSP時(shí)鐘周期,io_hold是inbuf向DSP發(fā)出的控制信號(hào),可以使DSP發(fā)給inbuf的read_enable信號(hào)保持住,io_hold本身處于高電平的時(shí)間就是延長read_enable保持高電平的時(shí)間,inbuf設(shè)置這個(gè)時(shí)間是1個(gè)DSP時(shí)鐘周期,圖中read_enable的兩個(gè)dclk時(shí)鐘周期的高電平是被延長一個(gè)周期后得到的結(jié)果,data_out是多路選擇模塊1輸出給DSP的數(shù)據(jù)流。
如果所述主系統(tǒng)輸入給inbuf的數(shù)據(jù)data_in是來自兩個(gè)數(shù)據(jù)源,如兩個(gè)ADC,則如圖2所示,控制模塊中還可以包含有一個(gè)數(shù)據(jù)源同步控制單元,用于協(xié)調(diào)兩個(gè)ADC的數(shù)據(jù)輸入。其內(nèi)部結(jié)構(gòu)如圖5所示,其中dclk及rst_d,分別為所述DSP的時(shí)鐘和復(fù)位信號(hào),分別連接到三個(gè)觸發(fā)器或觸發(fā)器組上;write_enable為來自系統(tǒng)的寫使能信號(hào);adc_out_mode用于確定數(shù)據(jù)來自一個(gè)ADC還是兩個(gè)ADC若其值為0,可認(rèn)為是來自一個(gè)ADC,其值為1,可認(rèn)為是來自兩個(gè)ADC;而i2s_ws是用于確定數(shù)據(jù)來自哪個(gè)ADC,若其值為0,則可認(rèn)為數(shù)據(jù)來自ADC1,若其值為1,則可認(rèn)為數(shù)據(jù)來自ADC2;上述三個(gè)輸入信號(hào)都要經(jīng)過觸發(fā)器同步后輸出,其中adc_out_mode和i2s_ws經(jīng)過DSP時(shí)鐘同步后生成表明信號(hào)來源的i2s_ws_d及表明數(shù)據(jù)來源數(shù)量的adc_out_mode_d;而write_enable信號(hào)經(jīng)過的觸發(fā)器是一個(gè)觸發(fā)器組,其輸出信號(hào)buffer_wen_d2及buffer_wen_d3分別是write_enable被延遲2個(gè)和3個(gè)dclk的信號(hào),都輸入給一個(gè)與門,所述與門連接buffer_wen_d3的輸入端為低電平有效,所述與門的輸出為inbuf_we。
下面介紹outbuf的組成結(jié)構(gòu)及工作流程,如圖6所示,outbuf的結(jié)構(gòu)與inbuf類似,同樣主要包括存儲(chǔ)模塊、同步控制模塊2以及多路選擇模塊2,其功能與inbuf中的相應(yīng)模塊類似,并且所述outbuf的幾個(gè)主要控制信號(hào)cen、wen、addr、rbuf_sel及數(shù)據(jù)流d1、d2的意義也與所述inbuf中的相應(yīng)內(nèi)容類似。
其不同之處在于,圖中所示的write_enable信號(hào)是來自所述DSP的寫使能信號(hào),read_enable信號(hào)是來自主系統(tǒng)的讀使能信號(hào);通知系統(tǒng)一讀取數(shù)據(jù)的控制信號(hào)可以是同步控制模塊2中的空中斷產(chǎn)生單元(圖中未示出)產(chǎn)生的空中斷信號(hào)empty_interrupt;data_in為所述DSP輸入到所述outbuf的數(shù)據(jù),data_out為所述outbuf輸出給所述主系統(tǒng)的數(shù)據(jù)。
所述outbuf的工作過程也與inbuf類似,但因?yàn)樗鰋utbuf用于緩存所述DSP輸出給所述主系統(tǒng)的數(shù)據(jù),而所述DSP的時(shí)鐘頻率高于所述主系統(tǒng)的時(shí)鐘頻率,因此所述DSP寫滿一個(gè)SRAM的時(shí)間要小于所述主系統(tǒng)讀完一個(gè)SRAM數(shù)據(jù)的時(shí)間,所以在outbuf中,當(dāng)一個(gè)SRAM中的數(shù)據(jù)被讀空后,同步控制模塊2才向DSP的中斷控制器發(fā)送空中斷empty_interrupt,通知其可以向該SRAM中寫入數(shù)據(jù),因此所述outbuf是一個(gè)以空中斷控制的乒乓結(jié)構(gòu)的buffer。
下面介紹所述outbuf的工作過程,開始時(shí)兩個(gè)SRAM都處于空狀態(tài),因?yàn)闊o論哪個(gè)SRAM處于空狀態(tài),同步控制模塊2都向DSP的中斷控制器發(fā)送空中斷empty_interrupt,DSP會(huì)響應(yīng)此中斷,向outbuf發(fā)送寫使能信號(hào)write_enable,同步控制模塊2據(jù)此產(chǎn)生直接控制SRAM的讀/寫有效信號(hào)wen,片選信號(hào)cen和地址addr,控制兩個(gè)SRAM交替被寫入數(shù)據(jù)。因?yàn)殚_始時(shí)兩個(gè)SRAM都為空,所以可以令數(shù)據(jù)data_in寫入SRAM1,寫入的數(shù)據(jù)量也可由數(shù)據(jù)量設(shè)置單元(圖中未示出)根據(jù)word_depth限定,并且寫滿一個(gè)SRAM后,系統(tǒng)讀取所述SRAM的數(shù)據(jù)量也由word_depth限定,此時(shí)SRAM2閑置。
由于目前只有SRAM1中被寫入了數(shù)據(jù),SRAM2仍為空,而只要有一個(gè)SRAM為空,空中斷就依然有效,所以SRAM1被寫滿后,DSP仍會(huì)響應(yīng)空中斷,繼續(xù)向outbuf中的SRAM2輸送一定數(shù)量的數(shù)據(jù)。在此同時(shí),作用在多路選擇模塊2上片選信號(hào)rbuf_sel選定SRAM1,結(jié)合cen、wen和addr中SRAM1對(duì)應(yīng)的控制信號(hào),所述SRAM1即被選定為讀數(shù)據(jù)的SRAM,其數(shù)據(jù)d1經(jīng)過所述多路選擇模塊2輸出給系統(tǒng),輸出信號(hào)記為data_out。
當(dāng)DSP輸出的數(shù)據(jù)流結(jié)束時(shí),沒有數(shù)據(jù)寫入,此時(shí)只有從其中一個(gè)即最后被寫入的SRAM中向外部輸送數(shù)據(jù)。
如圖7所示,為DSP對(duì)outbuf進(jìn)行寫操作的時(shí)序圖,其中dclk為DSP時(shí)鐘;addr為寫數(shù)據(jù)時(shí)的地址信號(hào),A2為一個(gè)地址;write_enable為DSP發(fā)出的寫使能信號(hào);data_in為數(shù)據(jù)信號(hào),D2為一個(gè)數(shù)據(jù)。
上述緩存裝置inbuf及outbuf也可以采用兩個(gè)以上SRAM組成存儲(chǔ)模塊,那樣數(shù)據(jù)傳輸效率會(huì)更高,只是在一定程度上會(huì)增加成本,在實(shí)際使用中可根據(jù)具體的數(shù)據(jù)傳輸速率的要求來設(shè)置SRAM的個(gè)數(shù)。
在本發(fā)明的實(shí)施例中,所述兩個(gè)存儲(chǔ)器SRAM1和SRAM2的容量是一樣大的,在實(shí)際使用中,也可以選擇容量不一樣大的存儲(chǔ)器。
本發(fā)明實(shí)施例主要針對(duì)工作頻率較高、數(shù)據(jù)傳輸量大的DSP設(shè)計(jì),同時(shí)也能應(yīng)用于其它因工作頻率不同,而需要異步傳輸數(shù)據(jù)的兩個(gè)系統(tǒng)之間。
本發(fā)明實(shí)施例采用空/滿中斷控制的乒乓結(jié)構(gòu)buffer實(shí)現(xiàn)了異步時(shí)鐘域之間的數(shù)據(jù)傳輸,具有以下三方面主要的特點(diǎn)1)應(yīng)用乒乓結(jié)構(gòu)單端口SRAM替代了雙端口SRAM實(shí)現(xiàn)了異步FIFO的功能,節(jié)約面積;2)根據(jù)DSP自身的特點(diǎn)實(shí)現(xiàn)每個(gè)中斷響應(yīng)限定數(shù)據(jù)傳輸量,防止數(shù)據(jù)傳輸過程中的數(shù)據(jù)流失;3)當(dāng)讀取數(shù)據(jù)的時(shí)鐘頻率大于寫入數(shù)據(jù)的時(shí)鐘頻率時(shí)采用滿中斷控制;當(dāng)寫入數(shù)據(jù)的時(shí)鐘頻率大于讀取數(shù)據(jù)的時(shí)鐘頻率時(shí)采用空中斷控制,這種中斷控制機(jī)制具有一定的靈活性,其他的異步電路也可以方便采用。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以作出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種異步數(shù)據(jù)緩存裝置,用于緩存系統(tǒng)一向系統(tǒng)二傳輸?shù)臄?shù)據(jù),所述系統(tǒng)一的工作頻率低于系統(tǒng)二的工作頻率,其特征在于包括存儲(chǔ)模塊、多路選擇模塊及同步控制模塊;所述存儲(chǔ)模塊由兩個(gè)單端口的存儲(chǔ)器組成,用于交替執(zhí)行數(shù)據(jù)的讀/寫操作;所述同步控制模塊,用于根據(jù)來自所述系統(tǒng)一的寫操作命令控制所述兩個(gè)存儲(chǔ)器中的一個(gè)進(jìn)行寫操作,并根據(jù)來自所述系統(tǒng)二的讀操作命令控制所述兩個(gè)存儲(chǔ)器中的另一個(gè)進(jìn)行讀操作;所述多路選擇模塊,用于在所述同步控制模塊的控制下選擇輸出所述用于進(jìn)行讀操作的存儲(chǔ)器的輸出數(shù)據(jù)至所述系統(tǒng)二。
2.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述同步控制模塊中包括滿中斷產(chǎn)生單元,用于在所述存儲(chǔ)模塊中的用于寫操作的存儲(chǔ)器被寫滿數(shù)據(jù)時(shí),產(chǎn)生一滿中斷信號(hào)發(fā)送給所述系統(tǒng)二。
3.根據(jù)權(quán)利要求2所述的裝置,其特征在于,所述同步控制模塊還包括一個(gè)數(shù)據(jù)量設(shè)置單元,用于設(shè)定向所述存儲(chǔ)模塊中的用于寫操作的存儲(chǔ)器一次寫入的數(shù)據(jù)量,及從所述存儲(chǔ)模塊中的用于讀操作的存儲(chǔ)器中一次讀取的數(shù)據(jù)量,所述滿中斷產(chǎn)生單元根據(jù)所述數(shù)據(jù)量設(shè)置單元設(shè)定的數(shù)據(jù)量,判斷執(zhí)行寫操作的存儲(chǔ)器是否被寫滿,而產(chǎn)生滿中斷信號(hào)。
4.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述同步控制模塊中還包括讀使能信號(hào)保持單元,用于根據(jù)所述讀使能信號(hào)產(chǎn)生一個(gè)保持信號(hào),在存儲(chǔ)器中數(shù)據(jù)被讀取的過程中保持讀使能信號(hào)有效。
5.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述裝置接收的數(shù)據(jù)來源是所述系統(tǒng)一中的兩個(gè)數(shù)據(jù)來源,在所述裝置中還包括數(shù)據(jù)源同步控制單元,用于協(xié)調(diào)所述兩個(gè)數(shù)據(jù)源的輸入,并且根據(jù)接收到的寫使能信號(hào),產(chǎn)生與所述系統(tǒng)二的工作頻率同步的寫入數(shù)據(jù)有效信號(hào)。
6.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述系統(tǒng)二為嵌入式DSP,所述系統(tǒng)一為工作頻率低于所述嵌入式DSP的工作系統(tǒng)。
7.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述存儲(chǔ)器為SRAM、SDRAM或FLASH。
8.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述同步控制模塊中包括由兩個(gè)計(jì)數(shù)器組成的地址發(fā)生電路,其中一個(gè)計(jì)數(shù)器用于根據(jù)寫操作命令產(chǎn)生所述存儲(chǔ)模塊寫操作所需的寫地址,另一個(gè)計(jì)數(shù)器用于根據(jù)讀操作命令產(chǎn)生所述存儲(chǔ)模塊讀操作所需的讀地址。
9.一種異步數(shù)據(jù)緩存裝置,用于緩存系統(tǒng)二向系統(tǒng)一傳輸?shù)臄?shù)據(jù),所述系統(tǒng)一的工作頻率低于系統(tǒng)二的工作頻率,其特征在于包括存儲(chǔ)模塊、多路選擇模塊及同步控制模塊;所述存儲(chǔ)模塊由兩個(gè)單端口的存儲(chǔ)器組成,用于交替執(zhí)行數(shù)據(jù)的讀/寫操作;所述同步控制模塊,用于根據(jù)來自所述系統(tǒng)二的寫操作命令控制所述兩個(gè)存儲(chǔ)器中的一個(gè)進(jìn)行寫操作,并根據(jù)來自所述系統(tǒng)一的讀操作命令控制所述兩個(gè)存儲(chǔ)器中的另一個(gè)進(jìn)行讀操作;所述多路選擇模塊,用于在所述同步控制模塊的控制下選擇輸出所述用于進(jìn)行讀操作的存儲(chǔ)器的輸出數(shù)據(jù)至所述系統(tǒng)一。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述同步控制模塊包括一空中斷產(chǎn)生單元,用于在所述存儲(chǔ)模塊中的用于讀操作的存儲(chǔ)器中的數(shù)據(jù)被讀空后,產(chǎn)生一空中斷信號(hào)發(fā)送給所述系統(tǒng)二。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述同步控制模塊還包括一個(gè)數(shù)據(jù)量設(shè)置單元,用于設(shè)定向所述存儲(chǔ)模塊中的用于寫操作的存儲(chǔ)器一次寫入的數(shù)據(jù)量,及從所述存儲(chǔ)模塊中的用于讀操作的存儲(chǔ)器中一次讀取的數(shù)據(jù)量,所述空中斷產(chǎn)生單元根據(jù)所述數(shù)據(jù)量設(shè)置單元設(shè)定的數(shù)據(jù)量,判斷執(zhí)行寫操作的存儲(chǔ)器是否被讀空,而產(chǎn)生空中斷信號(hào)。
12.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述系統(tǒng)二為嵌入式DSP,所述系統(tǒng)一為工作頻率低于所述嵌入式DSP的工作系統(tǒng)。
13.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述存儲(chǔ)器為SRAM、SDRAM或FLASH。
14.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述同步控制模塊中包括由兩個(gè)計(jì)數(shù)器組成的地址發(fā)生電路,其中一個(gè)計(jì)數(shù)器用于根據(jù)寫操作命令產(chǎn)生存儲(chǔ)模塊寫操作所需的寫地址,另一個(gè)計(jì)數(shù)器用于根據(jù)讀操作命令產(chǎn)生存儲(chǔ)模塊讀操作所需的讀地址。
全文摘要
本發(fā)明公開了一種異步數(shù)據(jù)緩存裝置,用于緩存由系統(tǒng)一向系統(tǒng)二傳輸?shù)臄?shù)據(jù),所述系統(tǒng)一的工作頻率低于系統(tǒng)二的工作頻率,包括存儲(chǔ)模塊,由兩個(gè)單端口存儲(chǔ)器組成,用于交替執(zhí)行數(shù)據(jù)的讀/寫操作;同步控制模塊,用于控制所述兩個(gè)存儲(chǔ)器中的一個(gè)進(jìn)行寫操作,另一個(gè)進(jìn)行讀操作;多路選擇模塊,用于在所述同步控制模塊的控制下選擇輸出所述用于進(jìn)行讀操作的存儲(chǔ)器的輸出數(shù)據(jù)至所述系統(tǒng)二。本發(fā)明還公開了另一種異步數(shù)據(jù)緩存裝置,用于緩存由所述系統(tǒng)二向系統(tǒng)一傳輸?shù)臄?shù)據(jù)。應(yīng)用本發(fā)明的緩存裝置,能節(jié)約電路面積、簡化電路設(shè)計(jì),并且能有效避免數(shù)據(jù)丟失,可以廣泛應(yīng)用于異步時(shí)鐘系統(tǒng)之間的數(shù)據(jù)緩存領(lǐng)域中。
文檔編號(hào)G06F5/06GK1862518SQ20061008935
公開日2006年11月15日 申請(qǐng)日期2006年6月21日 優(yōu)先權(quán)日2006年6月21日
發(fā)明者溫婷婷, 楊作興, 張 浩, 劉子熹, 陳洪 申請(qǐng)人:北京中星微電子有限公司