專利名稱:一種讀取內(nèi)存中數(shù)據(jù)的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及內(nèi)存控制技術(shù)領(lǐng)域,特別涉及一種讀取內(nèi)存中數(shù)據(jù)的方法和系統(tǒng)。
背景技術(shù):
隨著片上系統(tǒng)(System On Chip,SOC)芯片技術(shù)的發(fā)展,芯片所需存儲器的容量越來越大,僅靠SOC芯片上集成的片上存儲器已經(jīng)難以滿足實(shí)際需要,況且增加片上存儲器的容量會大大增加SOC芯片的成本。為此,常采用片外的內(nèi)存代替片上存儲器供SOC芯片上的硬件模塊使用。目前,最常見的內(nèi)存為同步動態(tài)隨機(jī)存儲器(Synchronous Dynamic random accessmemory,SDRAM)。
現(xiàn)有技術(shù)讀取SDRAM中數(shù)據(jù)的工作原理如圖1所示。SDRAM控制模塊101向SDRAM 102輸出主時鐘(Main Clock,MCLK)。在MCLK的某一個時鐘周期內(nèi),SDRAM控制模塊101向SDRAM發(fā)出讀取數(shù)據(jù)的控制信號以及所讀取的地址;在MCLK的下一個時鐘周期,SDRAM 102將所讀取的數(shù)據(jù)返回SDRAM控制模塊101。
由于SDRAM的管腳和SOC芯片的管腳之間存在時延,這些時延包括從SDRAM控制器101到SOC芯片管腳的延時ΔT0、SOC芯片管腳到SDRAM102的延時ΔT1以及從SDRAM 102到SOC芯片管腳的延時ΔT2。SDRAM 102實(shí)際是工作在時鐘MCLK’下,時鐘MCLK’相對于時鐘MCLK的時延為ΔT0+ΔT1,從SDMRAM控制模塊101的角度來說,實(shí)際上從SDRAM102返回?cái)?shù)據(jù)的時刻比理想情況晚ΔT的時間,其中ΔT可認(rèn)為是內(nèi)存和內(nèi)存控制器之間的時延,ΔT=ΔT0+ΔT1+ΔT2。在MCLK的時鐘頻率很高的情況下,MCLK的時鐘周期會接近甚至小于時延ΔT,這樣就難以保證在下一個時鐘周期的上升沿讀取SDRAM 102中的數(shù)據(jù),導(dǎo)致讀取SDRAM 102的數(shù)據(jù)出現(xiàn)錯誤。
針對這一問題,現(xiàn)有技術(shù)通常的做法是在SDRAM控制器101和SDRAM 102之間采用復(fù)雜的后端電路嚴(yán)格控制時延ΔT,使之小于MCLK的時鐘周期。這種方法實(shí)現(xiàn)復(fù)雜,而且并沒有從根本上解決問題。隨著SOC芯片性能的提高,MCLK的時鐘周期必然會進(jìn)一步減小,則該方法會越來越難以實(shí)現(xiàn)。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提出一種讀取內(nèi)存中數(shù)據(jù)的方法,可以在高時鐘頻率的工作環(huán)境下,避免內(nèi)存和內(nèi)存控制器之間的時延對讀取數(shù)據(jù)造成的影響。該方法設(shè)置與內(nèi)存控制器主時鐘MCLK具有相位差Tph的采樣時鐘DATA_CLK,并且包括如下步驟 A、內(nèi)存控制器在主時鐘域下,向內(nèi)存發(fā)送讀控制信號和讀地址; B、在采樣時鐘域下接收內(nèi)存輸出的所述讀地址中存儲的數(shù)據(jù),并緩存所接收的數(shù)據(jù); C、內(nèi)存控制器在主時鐘域下,讀取所述緩存的數(shù)據(jù)。
所述設(shè)置采樣時鐘為設(shè)置采樣時鐘的時鐘周期T與主時鐘的時鐘周期相同,采樣時鐘與主時鐘的相位差Tph滿足ΔT+Ts<Tph<ΔT+T-Th,其中Ts為采樣時鐘要求的數(shù)據(jù)建立時間,Th為采樣時鐘要求的數(shù)據(jù)保持時間,ΔT為內(nèi)存和內(nèi)存控制器之間的時延。
所述設(shè)置采樣時鐘為將主時鐘信號延時所述Tph時間,所得信號為采樣時鐘信號。
本發(fā)明還提出一種讀取內(nèi)存中數(shù)據(jù)的系統(tǒng),包括內(nèi)存和內(nèi)存控制模塊,內(nèi)存控制模塊在主時鐘域下向內(nèi)存發(fā)送讀控制信號和讀地址;采樣模塊,用于在采樣時鐘域下接收內(nèi)存輸出的數(shù)據(jù),緩存所接收的數(shù)據(jù),并在主時鐘域下將所緩存的數(shù)據(jù)發(fā)送至內(nèi)存控制模塊。
所述內(nèi)存控制模塊進(jìn)一步包括主時鐘單元,用于生成主時鐘信號,并將所述主時鐘信號分別發(fā)送至內(nèi)存和采樣模塊。
所述采樣模塊包括 采樣時鐘單元,用于向內(nèi)存輸出采樣時鐘信號; 采樣單元,用于在采樣時鐘域下接收來自內(nèi)存的數(shù)據(jù),并將所讀取的數(shù)據(jù)發(fā)送至緩存單元; 緩存單元,用于緩存來自采樣單元的數(shù)據(jù),并在主時鐘域下將所緩存的單元輸出至內(nèi)存控制模塊。
所述緩存單元為異步先入先出存儲器。
所述內(nèi)存為同步動態(tài)隨機(jī)存儲器或雙數(shù)據(jù)率同步動態(tài)隨機(jī)存儲器。
從以上技術(shù)方案可以看出,內(nèi)存控制器在主時鐘域下向內(nèi)存發(fā)送讀地址和讀控制信號,在與主時鐘域具有一定相位差的采樣時鐘域下讀取內(nèi)存中的數(shù)據(jù),經(jīng)緩存后再調(diào)整到主時鐘域下由內(nèi)存控制器讀取,這樣就解決了內(nèi)存控制器和內(nèi)存之間的時延可能會使讀取數(shù)據(jù)出現(xiàn)錯誤的問題。并且本發(fā)明方案簡單,易于實(shí)現(xiàn)。
圖1為現(xiàn)有技術(shù)的SDRAM工作原理圖; 圖2為本發(fā)明的DATA_CLK與MCLK的時鐘周期關(guān)系示意圖; 圖3為本發(fā)明實(shí)施例系統(tǒng)結(jié)構(gòu)示意圖; 圖4為本發(fā)明實(shí)施例從SDRAM讀取數(shù)據(jù)的流程圖。
具體實(shí)施例方式 本發(fā)明方案采用兩套時鐘來處理內(nèi)存控制器和內(nèi)存之間的數(shù)據(jù)和控制信息的交互過程。即在主時鐘MCLK之外,引入采樣時鐘(DATA_CLK),DATA_CLK與MCLK之間具有一定的時延。當(dāng)讀取數(shù)據(jù)時,內(nèi)存在DATA_CLK時鐘域下輸出數(shù)據(jù),所輸出的數(shù)據(jù)緩存在先入先出緩存(FIFO)中,然后在MCLK的上升沿內(nèi)存控制器讀取所緩存的數(shù)據(jù)。這樣就可以解決內(nèi)存和內(nèi)存控制器之間的時延所造成的讀取錯誤的問題。以下實(shí)施例中的內(nèi)存均為SDRAM。
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖對本發(fā)明作進(jìn)一步的詳細(xì)闡述。
圖2為本發(fā)明的DATA_CLK與MCLK的時鐘周期關(guān)系示意圖,時間軸左側(cè)為較早時刻,右側(cè)為較晚時刻。為了便于描述,對SDRAM的一次數(shù)據(jù)讀取過程中取7個時刻,分別用T0到T6來表示,垂直方向的虛線為時刻在時間軸上的位置。各個時刻對應(yīng)的含義如下 時刻T0中的MCLK時鐘上升沿,SDRAM控制器向SDRAM發(fā)出讀信號和讀地址; 時刻T1和時刻T0的間隔為SDRAM控制器和SDRAM之間的延時,該延時長度為ΔT;在時刻T1,SDRAM收到了讀信號和讀地址; 時刻T2到時刻T4是數(shù)據(jù)輸出到FIFO中被緩存的時間,其中時刻T3對應(yīng)的DATA_CLK上升沿是FIFO保存數(shù)據(jù)的瞬間,并且T3與T1的時間間隔就是DATA_CLK與MCLK之間的時延Tph。為了保存這個數(shù)據(jù),時刻T2至?xí)r刻T3之間的Ts是需要滿足DATA_CLK的建立時間(setup time),時刻T3至?xí)r刻T4之間的Th是需要滿足的DATA_CLK的保持時間(hold time)。
時刻T4到時刻T6是數(shù)據(jù)被緩存在FIFO中到被SDRAM控制器處理的等待時間,時刻T6對應(yīng)的MCLK的上升沿,SDRAM控制器讀取所述緩存的數(shù)據(jù)。其中時刻T5與時刻T1之間的間隔為一個時鐘周期。
根據(jù)Ts和Th的定義,要求滿足如下關(guān)系 Tph-ΔT>Ts(1) ΔT-Tph>Th 根據(jù)不等式組(1)可以得到 ΔT+Ts<Tph<ΔT+T-Th(2) 由于Ts+Th=T,因此Tph有很大的調(diào)整空間,這意味著通過比較簡單的后端流程以及靜態(tài)時序就可以滿足不等式(2)。
用于實(shí)現(xiàn)本發(fā)明方案的系統(tǒng)如圖3所示,具體如下 SDRAM控制模塊310,用于從采樣模塊330中讀取數(shù)據(jù),或者向SDRAM 320寫入數(shù)據(jù)。具體地說,該模塊包括主時鐘單元311,用于向SDRAM 320以及采樣模塊330輸出MCLK信號。
參照圖2所示的時序圖,在T0至T6的讀數(shù)據(jù)過程中,在時刻T0對應(yīng)的MCLK時鐘上升沿,SDRAM控制模塊310向SDRAM 320輸出讀地址、讀控制信號,并在時刻T6對應(yīng)的MCLK時鐘上升沿,即圖2中MCLK的第三個上升沿,從采樣模塊330獲得所要讀取的數(shù)據(jù)。
SDRAM 320,用于根據(jù)來自SDRAM控制模塊310的寫控制信號和寫地址,存儲來自SDRAM控制模塊310的數(shù)據(jù);還用于根據(jù)來自SDRAM控制模塊310的讀控制信號和讀地址,將所存儲的數(shù)據(jù)輸出至采樣模塊330。
參照圖2所示的時序圖,SDRAM 320在時刻T1中收到了來自SDRAM控制模塊310的讀控制信號和讀地址,然后在此之后的DATA_CLK時鐘的某個上升沿,即比T0延后Tph所對應(yīng)的DATA_CLK時鐘域的上升沿,也就是圖2所示時刻T3對應(yīng)的DATA_CLK的時鐘上升沿,將所存儲的數(shù)據(jù)輸出至采樣模塊330。
采樣模塊330,用于在DATA_CLK時鐘域下從SDRAM 320中讀取數(shù)據(jù),并緩存所讀取的數(shù)據(jù),在MCLK時鐘域下將所緩存的數(shù)據(jù)輸出至SDRAM控制模塊310。
對照圖2所示的時序圖,在時刻T3對應(yīng)的DATA_CLK上升沿,采樣模塊330從SDRAM 320中讀取數(shù)據(jù)。所讀取的數(shù)據(jù)先緩存起來,等到MCLK接下來出現(xiàn)的時鐘上升沿,即圖2所示的時刻T6對應(yīng)的MCLK時鐘上升沿,將所讀取的數(shù)據(jù)輸出至SDRAM控制模塊310。
具體地說,該模塊包括采樣時鐘單元331、采樣單元332和緩存單元333。采樣時鐘單元331用于向SDRAM 320輸出DATA_CLK信號。采樣單元332用于在DATA_CLK時鐘域下從SDRAM 320讀取數(shù)據(jù),并在DATA_CLK時鐘域下將所讀取的數(shù)據(jù)輸出至緩存單元333。緩存單元333為異步先入先出(FIFO)存儲器,在DATA_CLK時鐘的某個時鐘周期的上升沿,如圖2中DATA_CLK將來自采樣單元332的數(shù)據(jù)存儲起來,再在緊跟著上述上升沿的MCLK時鐘的上升沿T6將所存儲的數(shù)據(jù)輸出至SDRAM控制模塊310。
可以看出,由于ΔT的存在,在主時鐘MCLK的第一個上升沿向SDRAM320發(fā)出讀信號后,難以實(shí)現(xiàn)在接下來的主時鐘MCLK的上升沿將所要讀取的數(shù)據(jù)返回SDRAM控制模塊310。因此,本發(fā)明方案是通過采樣時鐘DATA_CLK讀取SDRAM 320的數(shù)據(jù),將所讀取的數(shù)據(jù)存在FIFO存儲器中。該FIFO存儲器實(shí)際上起到時鐘域轉(zhuǎn)換的作用,這樣從SDRAM控制模塊310的角度來看,就是在MCLK時鐘域下第一個上升沿發(fā)出讀信號后,在之后的第二個上升沿收到所要讀取的信號,這樣就避免了由于時延造成讀取數(shù)據(jù)錯誤的問題。
在芯片設(shè)計(jì)過程中,對SDRAM控制模塊310和SDRAM 320之間的時延ΔT、DATA_CLK要求數(shù)據(jù)建立時間Ts和數(shù)據(jù)保持時間Th進(jìn)行時序分析,根據(jù)分析結(jié)果以及SDRAM控制模塊310的MCLK信號確定采樣模塊330中的采樣時鐘單元331的DATA_CLK信號,所述DATA_CLK信號DATA_CLK信號與MCLK信號的周期相同,DATA_CLK信號的相位比MCLK信號延后Tph,其中Tph滿足不等式(2)。
一般來說,時延ΔT對于向SDRAM寫數(shù)據(jù)過程的影響基本可以忽略,因此圖3所示系統(tǒng)對于寫數(shù)據(jù)過程的處理流程與現(xiàn)有技術(shù)相同。在設(shè)計(jì)本發(fā)明實(shí)施例的裝置時,需要根據(jù)主時鐘信號設(shè)置采樣時鐘信號,具體為獲取內(nèi)存與內(nèi)存控制器之間的時延ΔT、DATA_CLK要求的數(shù)據(jù)建立時間Ts、MCLK的時鐘周期T、DATA_CLK要求的數(shù)據(jù)保持時間Th,根據(jù)以上各數(shù)據(jù)估算滿足不等式(2)的相位差Tph,將MCLK信號延遲Tph后所得信號即為DATA_CLK。其中,ΔT、Ts、Th和T均為固定值。而上述系統(tǒng)實(shí)現(xiàn)讀數(shù)據(jù)的流程如圖4所示,包括如下步驟 步驟401SDRAM控制模塊310將讀地址、讀控制信號在MCLK時鐘域下發(fā)送至SDRAM 320。
步驟402SDRAM 320根據(jù)所述讀控制信號,將所述讀地址中存儲的數(shù)據(jù)在DATA_CLK時鐘域下發(fā)送至采樣模塊330,采樣模塊330緩存所收到的數(shù)據(jù)。
步驟403SDRAM控制模塊310在MCLK時鐘域下讀取采樣模塊330中緩存的數(shù)據(jù)。
本發(fā)明方案不僅適用于SDRAM,對于其它種類的內(nèi)存也同樣適用,例如雙數(shù)據(jù)率同步動態(tài)隨機(jī)存儲器(Double Data rate Random Access Memory,DDRAM)等。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種讀取內(nèi)存中數(shù)據(jù)的方法,其特征在于,設(shè)置與內(nèi)存控制器主時鐘MCLK具有相位差Tph的采樣時鐘DATA_CLK,并且包括如下步驟
A、內(nèi)存控制器在主時鐘域下,向內(nèi)存發(fā)送讀控制信號和讀地址;
B、在采樣時鐘域下接收內(nèi)存輸出的所述讀地址中存儲的數(shù)據(jù),并緩存所接收的數(shù)據(jù);
C、內(nèi)存控制器在主時鐘域下,讀取所述緩存的數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述設(shè)置采樣時鐘為設(shè)置采樣時鐘的時鐘周期T與主時鐘的時鐘周期相同,采樣時鐘與主時鐘的相位差Tph滿足ΔT+Ts<Tph<ΔT+T-Th,其中Ts為采樣時鐘要求的數(shù)據(jù)建立時間,Th為采樣時鐘要求的數(shù)據(jù)保持時間,ΔT為內(nèi)存和內(nèi)存控制器之間的時延。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述設(shè)置采樣時鐘為將主時鐘信號延時所述Tph時間,所得信號為采樣時鐘信號。
4.一種讀取內(nèi)存中數(shù)據(jù)的系統(tǒng),包括內(nèi)存和內(nèi)存控制模塊,內(nèi)存控制模塊在主時鐘域下向內(nèi)存發(fā)送讀控制信號和讀地址,其特征在于,該系統(tǒng)還包括
采樣模塊,用于在采樣時鐘域下接收內(nèi)存中輸出的數(shù)據(jù),緩存所接收的數(shù)據(jù),并在主時鐘域下將所緩存的數(shù)據(jù)發(fā)送至內(nèi)存控制模塊。
5.根據(jù)權(quán)利要求4所述的系統(tǒng),其特征在于,所述內(nèi)存控制模塊進(jìn)一步包括主時鐘單元,用于生成主時鐘信號,并將所述主時鐘信號分別發(fā)送至內(nèi)存和采樣模塊。
6.根據(jù)權(quán)利要求4所述的系統(tǒng),其特征在于,所述采樣模塊包括
采樣時鐘單元,用于向內(nèi)存輸出采樣時鐘信號;
采樣單元,用于在采樣時鐘域下接收來自內(nèi)存的數(shù)據(jù),并將所讀取的數(shù)據(jù)發(fā)送至緩存單元;
緩存單元,用于緩存來自采樣單元的數(shù)據(jù),并在主時鐘域下將所緩存的單元輸出至內(nèi)存控制模塊。
7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述緩存單元為異步先入先出存儲器。
8.根據(jù)權(quán)利要求4至7任一項(xiàng)所述的系統(tǒng),其特征在于,所述內(nèi)存為同步動態(tài)隨機(jī)存儲器或雙數(shù)據(jù)率同步動態(tài)隨機(jī)存儲器。
全文摘要
本發(fā)明公開了一種讀取內(nèi)存中數(shù)據(jù)的方法,設(shè)置與內(nèi)存控制器主時鐘MCLK具有相位差Tph的采樣時鐘DATA_CLK,并且包括如下步驟A.內(nèi)存控制器在主時鐘域下,向內(nèi)存發(fā)送讀控制信號和讀地址;B.在采樣時鐘域下接收內(nèi)存輸出的所述讀地址中存儲的數(shù)據(jù),并緩存所接收的數(shù)據(jù);C.內(nèi)存控制器在主時鐘域下,讀取所述緩存的數(shù)據(jù)。本發(fā)明還公開了一種讀取內(nèi)存中數(shù)據(jù)的系統(tǒng)。本發(fā)明方案可以解決內(nèi)存控制器和內(nèi)存之間的時延可能會導(dǎo)致讀取數(shù)據(jù)錯誤的問題,并且本發(fā)明方案簡單,易于實(shí)現(xiàn)。
文檔編號G11C7/00GK101110262SQ200710140629
公開日2008年1月23日 申請日期2007年8月9日 優(yōu)先權(quán)日2007年1月22日
發(fā)明者李曉強(qiáng) 申請人:北京中星微電子有限公司