内存攻略:SDRAM应用解析
生活随笔
收集整理的這篇文章主要介紹了
内存攻略:SDRAM应用解析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
SDRAM(Synchronous Dynamic Random Access Memory) 同步動態隨機存儲器,同步是指 Memory工作需要同步時鐘,內部的命令的發送與數據的傳輸都以它為基準;動態是指存儲陣列需要不斷的刷新來保證數據不丟失;隨機是指數據不是線性依次存儲,而是自由指定地址進行數據讀寫(from baidu)。
SDRAM的儲存是由電容介質充放電實現的,掉電丟失。
下面我們拿三星的一款SDRAM作為樣本詳細解析 這塊芯片是一塊CMOS技術芯片,標準供電電壓3.3V SDRAM芯片的地址都有行列之分,相當于一個表格給定行地址和列地址就能確定其中的某個數據,一塊芯片里有幾個不同的表格,每個表格稱為一個bank 該芯片(大部分SDRAM)中有4個bank
上圖中有三種型號*4 *8 *16分別表示輸出數據寬度為4bit,8bit,16bit 上圖中的引腳作用如下(#代表低電平有效)
CLK?????????? ?系統時鐘?????????????? ??? 邊沿采樣,系統時鐘必須供給才能讓芯片運作 #CS????????? ? 片選信號???????????????? ??能夠屏蔽對芯片的操作,除了CLK,CKE,DQM腳不被影響 CKE??????????? 時鐘使能信號????????? ?當它為0時能夠屏蔽系統時鐘以此來凍結整個芯片(類似鎖存作用)在發送命令一個時鐘周期之前就必須將CKE置1 A0~A12????? 地址????????????????????????? 行列地址共用這個信號,行地址占用A0~A12,列地址占用(x4 : CA0~ CA9,CA11), (x8 : CA0~ CA9), (x16 : CA0~ CA8)
BA0~BA1?? bank選擇地址???????????在行地址鎖存時間時激活某個bank,在列地址鎖存時間時選擇bank來讀寫(后面會說) #RAS???????? 行地址鎖存???????????????當它為0時在時鐘邊沿時鎖存行地址 #CAS???????? 列地址鎖存?????????????? 當它為0時在時鐘邊沿時鎖存列地址 #WE????????? 寫使能?????????????????????? 使能寫,使能行預充電 DQM?????????數據輸入輸出屏蔽???? 使數據輸出腳變成高阻態,屏蔽數據輸入 DQ0~n???? ?數據輸入輸出??????????? 這些腳同時是數據輸入腳也是數據輸出腳(x4 : DQ0~3), (x8 : DQ0~7), (x16 : DQ0~15) VDD????????? 電源 VSS????????? 地 VDDQ?????? 數據電源???????????????????數據電源需要較小的噪聲干擾 VSSQ?????? 數據地?????????????????????? 同樣需要較小的噪聲干擾 NC???????????無連接
下面是芯片工作環境的相關參數,一般商用SDRAM的標準值應該也差不多
下面我們通過真值表來對使用時序進行分析
H高電平,L低電平,X無影響,V有效的
SDRAM的初始化: 當VDD和VDDQ被同時加電后,首先需要維持CLK時鐘還有CKE為1,DQM為1,200us的延時(期間空操作,對應No Operation Command),然后就需要一個預充電指令Precharge我們選擇所有bank預充電,這個指令的值可以在真值表中看出,然后執行2個以上自動刷新Auto refresh接著就執行Mode register set SDRAM具有模式寄存器,通過該模式寄存器,可以切換SDRAM的操作模式
Mode register set(模式寄存器設置)相關信息 如果A9在模式寄存器設置周期為1,"Burst Read Single Bit Write(突發讀單bit寫)"功能將允許,RFU在模式寄存器設置周期應該保持為0 在模式寄存器周期之后芯片就能夠正常讀寫了
先來說下突發的概念 在實際工作中,bank地址與相應的行地址是同時發出的,這個命令叫做“行有效”或“行激活”對應前面圖中bank active&row addr。 在此之后將發送列地址尋址命令與具體的操作命令(讀還是寫),這兩個命令也是同時發出的我們叫“讀/寫”(看真值表) 從”行有效“到“讀/寫”命令發出之間的間隔被定義為tRCD(RAS to CAS Delay),直白地說“行選通周期”,它是SDRAM時序的一個重要參數,需要根據控制芯片頻率而定。 tRCD以時鐘周期為單位 翻看數據手冊,我們可以發現該芯片的tRCD的最小值 接下來,相關的列地址被選中后,將會觸發數據傳輸。數據從儲存器到達IO口仍然需要一定時間,該時間被定義為CL(CAS Lantency) 直白地說,列地址脈沖選通潛伏期 CL也是以時鐘周期為單位,對于SDRAM,寫入是沒有潛伏期的 突發(burst)是指在同一行周期中相鄰的存儲單元連續進行數據傳輸的方式,連續傳輸的周期數就是突發長度(Burst Lengths)BL 在進行突發傳輸時,只要指定起始列地址與突發長度,內存就會依次自動對后面相應數量的存儲單元進行讀/寫操作而不再需要控制器連續地提供列地址 這樣,除了第一次數據傳輸需要若干周期(主要是tRCD+CL)外,其后每個數據只需要一個時鐘周期就可以獲得。 在讀取完數據之后為了騰出讀出放大器以供同一bank內其他行的尋址并行傳輸數據,內存芯片要進行預充電工作,如果當前尋址的存儲單元是bank1, 行2,列6,接下來的尋址是bank1,行2,列8,則不用預充電,因為讀出放大器正在為這一行服務,但如果是bank1,行4,列2,因為不同行,就必須先把行2關閉 從開始關閉現有行工作到可以打開新行的工作之間的時間間隔是tRP(Row Precharge command period)行預充電有效周期,單位也是時鐘周期數
預充電:如果在讀寫完一行后要對同一bank另一行進行尋址,就要將原有效行關閉,準備打開新有效行重新尋址。關閉原有效行,準備打開新行的操作就是預充電。 預充電可以通過命令控制,也可以通過輔助設定讓芯片在每次讀寫操作之后自動執行。在發送預充電命令之后,需要一段時間才能允許發送行有效,這個間隔就是tRP
刷新:SDRAM需要不斷刷新來保留數據,刷新操作分為兩種,自動刷新Auto Refresh和自刷新Self Refresh,都是一個內部的自動操作。 自動刷新:SDRAM內部有一個行地址生成器,用來自動依次生成行地址,由于刷新是針對一行中的所有儲存體進行,所以無需列尋址,所以是列提前于行方式刷新 自刷新:主要用于休眠模式低功耗模式下的數據儲存,此時不需要依靠系統時鐘工作,而是根據內部時鐘進行刷新操作,在SR期間除了SKE之外的所有外部信號都是無效的。 只有重新使能CKE才能退出自刷新模式進入正常狀態。
數據掩碼(DQM):在講述讀/寫操作時,我們談到了突發長度,如果BL=4,那么也就是說一次傳送4*位寬bit數據。但是,如果其中的第二筆數據不需要怎么辦,這就用到了該技術 通過DQM,內存可以控制IO端口取消哪些輸入或者輸出數據。在讀取時,被屏蔽的數據仍然會從儲存體傳出,只是被屏蔽。
下面我們拿三星的一款SDRAM作為樣本詳細解析 這塊芯片是一塊CMOS技術芯片,標準供電電壓3.3V SDRAM芯片的地址都有行列之分,相當于一個表格給定行地址和列地址就能確定其中的某個數據,一塊芯片里有幾個不同的表格,每個表格稱為一個bank 該芯片(大部分SDRAM)中有4個bank
上圖中有三種型號*4 *8 *16分別表示輸出數據寬度為4bit,8bit,16bit 上圖中的引腳作用如下(#代表低電平有效)
CLK?????????? ?系統時鐘?????????????? ??? 邊沿采樣,系統時鐘必須供給才能讓芯片運作 #CS????????? ? 片選信號???????????????? ??能夠屏蔽對芯片的操作,除了CLK,CKE,DQM腳不被影響 CKE??????????? 時鐘使能信號????????? ?當它為0時能夠屏蔽系統時鐘以此來凍結整個芯片(類似鎖存作用)在發送命令一個時鐘周期之前就必須將CKE置1 A0~A12????? 地址????????????????????????? 行列地址共用這個信號,行地址占用A0~A12,列地址占用(x4 : CA0~ CA9,CA11), (x8 : CA0~ CA9), (x16 : CA0~ CA8)
BA0~BA1?? bank選擇地址???????????在行地址鎖存時間時激活某個bank,在列地址鎖存時間時選擇bank來讀寫(后面會說) #RAS???????? 行地址鎖存???????????????當它為0時在時鐘邊沿時鎖存行地址 #CAS???????? 列地址鎖存?????????????? 當它為0時在時鐘邊沿時鎖存列地址 #WE????????? 寫使能?????????????????????? 使能寫,使能行預充電 DQM?????????數據輸入輸出屏蔽???? 使數據輸出腳變成高阻態,屏蔽數據輸入 DQ0~n???? ?數據輸入輸出??????????? 這些腳同時是數據輸入腳也是數據輸出腳(x4 : DQ0~3), (x8 : DQ0~7), (x16 : DQ0~15) VDD????????? 電源 VSS????????? 地 VDDQ?????? 數據電源???????????????????數據電源需要較小的噪聲干擾 VSSQ?????? 數據地?????????????????????? 同樣需要較小的噪聲干擾 NC???????????無連接
下面是芯片工作環境的相關參數,一般商用SDRAM的標準值應該也差不多
下面我們通過真值表來對使用時序進行分析
H高電平,L低電平,X無影響,V有效的
SDRAM的初始化: 當VDD和VDDQ被同時加電后,首先需要維持CLK時鐘還有CKE為1,DQM為1,200us的延時(期間空操作,對應No Operation Command),然后就需要一個預充電指令Precharge我們選擇所有bank預充電,這個指令的值可以在真值表中看出,然后執行2個以上自動刷新Auto refresh接著就執行Mode register set SDRAM具有模式寄存器,通過該模式寄存器,可以切換SDRAM的操作模式
Mode register set(模式寄存器設置)相關信息 如果A9在模式寄存器設置周期為1,"Burst Read Single Bit Write(突發讀單bit寫)"功能將允許,RFU在模式寄存器設置周期應該保持為0 在模式寄存器周期之后芯片就能夠正常讀寫了
先來說下突發的概念 在實際工作中,bank地址與相應的行地址是同時發出的,這個命令叫做“行有效”或“行激活”對應前面圖中bank active&row addr。 在此之后將發送列地址尋址命令與具體的操作命令(讀還是寫),這兩個命令也是同時發出的我們叫“讀/寫”(看真值表) 從”行有效“到“讀/寫”命令發出之間的間隔被定義為tRCD(RAS to CAS Delay),直白地說“行選通周期”,它是SDRAM時序的一個重要參數,需要根據控制芯片頻率而定。 tRCD以時鐘周期為單位 翻看數據手冊,我們可以發現該芯片的tRCD的最小值 接下來,相關的列地址被選中后,將會觸發數據傳輸。數據從儲存器到達IO口仍然需要一定時間,該時間被定義為CL(CAS Lantency) 直白地說,列地址脈沖選通潛伏期 CL也是以時鐘周期為單位,對于SDRAM,寫入是沒有潛伏期的 突發(burst)是指在同一行周期中相鄰的存儲單元連續進行數據傳輸的方式,連續傳輸的周期數就是突發長度(Burst Lengths)BL 在進行突發傳輸時,只要指定起始列地址與突發長度,內存就會依次自動對后面相應數量的存儲單元進行讀/寫操作而不再需要控制器連續地提供列地址 這樣,除了第一次數據傳輸需要若干周期(主要是tRCD+CL)外,其后每個數據只需要一個時鐘周期就可以獲得。 在讀取完數據之后為了騰出讀出放大器以供同一bank內其他行的尋址并行傳輸數據,內存芯片要進行預充電工作,如果當前尋址的存儲單元是bank1, 行2,列6,接下來的尋址是bank1,行2,列8,則不用預充電,因為讀出放大器正在為這一行服務,但如果是bank1,行4,列2,因為不同行,就必須先把行2關閉 從開始關閉現有行工作到可以打開新行的工作之間的時間間隔是tRP(Row Precharge command period)行預充電有效周期,單位也是時鐘周期數
預充電:如果在讀寫完一行后要對同一bank另一行進行尋址,就要將原有效行關閉,準備打開新有效行重新尋址。關閉原有效行,準備打開新行的操作就是預充電。 預充電可以通過命令控制,也可以通過輔助設定讓芯片在每次讀寫操作之后自動執行。在發送預充電命令之后,需要一段時間才能允許發送行有效,這個間隔就是tRP
刷新:SDRAM需要不斷刷新來保留數據,刷新操作分為兩種,自動刷新Auto Refresh和自刷新Self Refresh,都是一個內部的自動操作。 自動刷新:SDRAM內部有一個行地址生成器,用來自動依次生成行地址,由于刷新是針對一行中的所有儲存體進行,所以無需列尋址,所以是列提前于行方式刷新 自刷新:主要用于休眠模式低功耗模式下的數據儲存,此時不需要依靠系統時鐘工作,而是根據內部時鐘進行刷新操作,在SR期間除了SKE之外的所有外部信號都是無效的。 只有重新使能CKE才能退出自刷新模式進入正常狀態。
數據掩碼(DQM):在講述讀/寫操作時,我們談到了突發長度,如果BL=4,那么也就是說一次傳送4*位寬bit數據。但是,如果其中的第二筆數據不需要怎么辦,這就用到了該技術 通過DQM,內存可以控制IO端口取消哪些輸入或者輸出數據。在讀取時,被屏蔽的數據仍然會從儲存體傳出,只是被屏蔽。
總結
以上是生活随笔為你收集整理的内存攻略:SDRAM应用解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Kaggle比赛] 高频股价预测小结
- 下一篇: IBM T43 刷bios 装win7教