READ命令見下圖,用于對打開的行的burst讀取訪問,burst長度在模式寄存器中設置。BA0和BA1選擇bank,地址輸入選擇起始列位置。A10的值確定是否使用自動預充電A10=1使能。如果選擇“自動預充電”,將在讀取burst結束時對正在訪問的行進行預充電并關閉;如果未選擇“自動預充電”,則該行將保持打開狀態以供后續訪問。
DQS與輸出數據一起由LPDDR SDRAM驅動,完全對齊,控制器內部對DQS延遲到DQ的中間再根據DQS邊沿采樣DQ。
在完成讀取burst后,沒有啟動其他讀取命令,則DQ將變為高阻態。
?

CK是核心,因為都是以CK時鐘為參考來進行的,所以其抖動,占空比等等都有嚴格的要求,否則無法正常通訊。
?

?

?

對于讀,該參數很重要,即CK上升沿到DQS上升沿的距離。
?

?

DQS上升沿到DQ有效之間的距離。
理論上讀時要求DQS和DQ是對齊的,實際有間隔,要求該間隔不大于tDQSQmax。
?

?

?

DQ有效到CK上升沿的間隔。
?

?
?

tAC=tDQSCK+tDQSQ
tAC和tDQSCK都是以CK上升沿為基準,一個是和DQ有效的距離,一個是和DQS上升沿的間隔,兩者差tDQSQ就是DQS上升沿和DQ有效之間的間隔,由于讀使用DQS邊沿去采樣DQ,所以對tDQSQ非常關心,決定了DQS至少要延遲多少才能去采樣DQ。
控制內部會調整DQS延遲,延遲到DQ中心即最佳采樣位置。
?

tLZ:DQ & DQS low-impedance time from CK/#CK
tHZ:DQ & DQS high-impedance time from?CK/#CK
?

?

?

DQ從DQS邊沿開始的保持時間。
?

?

?

?

在模式寄存器中定義,如下CL=3是默認值,可選CL=2和CL4
CAS延遲定義:當CL=3時,第一個數據在READ命令對應上升沿時鐘后的(2*tCK+tAC)處有效。既簡單的可以理解為第3個時鐘內有效。
?

?

BURST TERMINATE命令用于截斷讀取burst(未使用自動預充電時A10=0)。BURST TERMINATE命令之前最近的READ命令將被截斷。注意,BURST TERMINATE命令針對所有bank。此命令不能用于寫burst 終止。
?

DQS的初始低狀態被稱為讀取前導碼preamble;與最后一個數據輸出數據對齊的低狀態被稱為讀取后同步碼postamble。
?

參數如下
?

?

?

來自讀取burst的數據可以通過隨后的read命令進行級聯或截斷。來自新burst的第一個數據跟隨在已完成burst的最后一個元素或正在被截斷的較長burst的最后所數據之后。新的READ命令應在第一個READ命令之后X個周期發出,其中X等于所需數據輸出對的數量(2n預取架構需要對為單位)。如圖所示。
(1)第一個讀命令
(2)第一個讀命令之后,間隔2個周期,發送第二讀命令
(3)留給數據傳輸的周期是2個周期,所以第一個命令傳輸了4個數據。如果是burst 4剛好傳完,burst 8和以上則被截斷。
?

READ命令可以在前一個READ命令之后的任何時鐘周期上啟動。非連續讀取如圖所示。
(1)第一個讀命令
(2)第一個讀命令之后,間隔3個周期,發送第二讀命令
(4)留給數據傳輸的周期是3個周期,如果是burst 4則傳輸完還剩余一個周期。
?

可以在一個或多個page中執行全速隨機讀取訪問,如圖所示
(1)發送第一個讀命令
(2)連續發送第二命令,這樣每個命令間隔一個周期,傳輸2個數據,剩下的被截斷。相當于完全隨機讀取。
?

可以使用burst TERMINATE命令BST來截斷來自任何READ?burst的數據,如圖所示。BURST TERMINATE延時等于讀取(CAS)延時即CL,即應在read命令之后X個周期發出BURST TERMINATE命令,其中X等于所需的數據對數。 簡而言之就是需要讀多少對數據就在都命令多少個周期后發BST命令。
(1)讀命令
(2)一個周期后 BST命令終止,只發送了一個數據對。
?

必須先完成或截斷來自READ?burst的數據,然后才能發出后續的WRITE命令。如果需要截斷,則必須使用BURST TERMINATE命令,如圖tDQSS的情況所示。
(1)讀命令
(2)一個周期后發,終止命令,可以發送1個數據對。
(3)2個周期后寫命令。
如果burst為2則完全不需要BST命令,因為一個周期足夠發送完。
Burst大于2則只傳了一個數據對,剩余的截斷。
?

讀取burst之后可以是到同一bank的預充電命令,或者用預充電命令截斷讀取burst(前提是未使能自動預充電A10=0)。PRECHARGE命令應在READ命令之后X個周期發出,其中X等于所需數據對的數量。如圖所示。
在PRECHARGE命令之后,在滿足tRP之前,不能向同一bank發出后續命令。注意,行預充電時間的一部分在最后一個數據輸出的訪問期間被隱藏。
在讀取被執行到完成的情況下,在最佳時間發出的預充電命令提供了與啟用自動預充電的讀取burst相同的操作。PRECHARGE命令的缺點是它要求命令和地址總線在適當的時間可用以發出命令。PRECHARGE命令的優點在于,它可以用于截斷突發。
(1)讀
(2)2個周期后預充電命令,此間可以發送2個數據對
(3)tRP之后(以上一個預充命令上升沿為基準)才能發送新的命令。
?

?

tRCD決定了打開行ACTIVE之后多久可以發送讀寫命令。
CL即CAS決定了讀數據命令發出多久之后數據可以返回到總線上。
tRP即決定了發送預充電之后多久可以發送新的命令。
以上三個參數覆蓋了最為普遍的操作過程,即
1)打開行
2)讀寫行
3)預充關閉行
為什么選擇這幾個參數作為速度評價參數呢,正是因為它代表了最普遍的一般操作,實際行內可以連續隨機讀,并不需要每次操作都要以上三個步驟效率可以快的更多。所以用最為一般來代替速度評價是合理的。
這里要忍不住來吐槽下各國產廠家,都喜歡加一大長串定語來定義自己第一,只要定語夠長,人人都是第一,實際就不是使用普遍操作環境來定義,就屬于你懂的操作?。?!真正有良心的,有信心的,有能力的,都會關系實際通常的應用場景的體驗,那才是接近真實的。
以上分享了LPDDR的讀寫時序,重點在于DQS,可說能否正確讀寫主要在于DQS和DQ的相位關系。DDR采用的是source synchronous的設計,即數據傳輸不再使用CK采樣,而是增加了DQS信號,DQS由發送端驅動接收方根據其邊沿進行采樣DQ。
不管是讀還是寫,都是接收端看到的DQS邊沿在DQ的中間采樣就是最優的。這樣保證最優的采樣窗口。實際是讀時顆粒驅動DQS和DQ邊緣對齊,由控制器接收端對DQS延遲到DQ中心采樣。寫時控制器驅動DQS到DM的中心,顆粒不需要作延遲處理。這樣做的目的是把決定權都交給控制器,因為顆粒產量大控制成本的收益更可觀,所以盡量顆粒簡單點,而控制器可以靈活的使用traing算法去調整DQS,比顆粒去調整也更靈活。