SDRAM (一) sdrm刷新和自刷新,工作原理_備查(突發傳輸 , 突發長度)


 

SDRAM的自動刷新AS(Auto Refresh)和自刷新SR(Self Refresh):

     刷新操作分為兩種:自動刷新(Auto Refresh,簡稱AR)與自刷新(Self Refresh,簡稱SR)。不論是何種刷新方式,都不需要外部提供行地址信息,因為這是一個內部的自動操作。

    對於AR, SDRAM內部有一個行地址生成器(也稱刷新計數器)用來自動的依次生成行地址。由於刷新是針對一行中的所有存儲體進行,所以無需列尋址,或者說CAS在RAS之前有效。所以,AR又稱CBR(CAS Before RAS,列提前於行定位)式刷新。由於刷新涉及到所有L-Bank,因此在刷新過程中,所有L-Bank都停止工作,而每次刷新所占用的時間為9個時鍾周期(PC133標准),之后就可進入正常的工作狀態,也就是說在這9 個時鍾期間內,所有工作指令只能等待而無法執行。64ms之后則再次對同一行進行刷新,如此周而復始進行循環刷新。顯然,刷新操作肯定會對SDRAM的性能造成影響,但這是沒辦法的事情,也是DRAM相對於SRAM(靜態內存,無需刷新仍能保留數據)取得成本優勢的同時所付出的代價。

    SR則主要用於休眠模式低功耗狀態下的數據保存,這方面最著名的應用就是STR(Suspend to RAM,休眠掛起於內存)。在發出AR命令時,將CKE置於無效狀態,就進入了SR模式,此時不再依靠系統時鍾工作,而是根據內部的時鍾進行刷新操作。在SR期間除了CKE之外的所有外部信號都是無效的(無需外部提供刷新指令),只有重新使CKE有效才能退出自刷新模式並進入正常操作狀態。 

 

提示:

  有的資料上說 "一般刷新或自刷新是選上的" , 實際上從SDRAM工作的原理看,是 "一定"要enable的.如s3c2440 REFRESH寄存器的[23]是enable的,[22]到底是AR還是SR可以選擇自動.另外自己記得在進行suspend to ram的時候應該是使用SR的.

 

附加:

sdram工作原理:

之所以成為DRARM就是因為它要不斷進行刷新(Refresh)才能保留住數據,因此它是DRAM最重要的操作。那么要隔多長時間重復一次刷新,目前公認的標准是,存儲體中電容的數據有效保存期上限是64ms(毫秒,1/1000秒),也就是說每一行刷新的循環周期是64ms。這樣刷新速度就是:行數量/64ms。我們在看內存規格時,經常會看到4096
Refresh Cycles/64ms或8192 Refresh Cycles/64ms的標識,這里的4096與8192就代表這個芯片中每個Bank的行數。刷新命令一次對一行有效,發送間隔也是隨總行數而變化,4096行時為15.625μs(微秒,1/1000毫秒),8192行時就為7.8125μs。HY57V561620為8192 refresh cycles / 64ms。

  SDRAM是多Bank結構,例如在一個具有兩個Bank的SDRAM的模組中,其中一個Bank在進行預充電期間,另一個Bank卻馬上可以被讀取,這樣當進行一次讀取后,又馬上去讀取已經預充電Bank的數據時,就無需等待而是可以直接讀取了,這也就大大提高了存儲器的訪問速度。

  為了實現這個功能,SDRAM需要增加對多個Bank的管理,實現控制其中的Bank進行預充電。在一個具有2個以上Bank的SDRAM中,一般會多一根叫做BAn的引腳,用來實現在多個Bank之間的選擇。

  SDRAM具有多種工作模式,內部操作是一個復雜的狀態機。SDRAM器件的引腳分為以下幾類。

  (1)控制信號:包括片選、時鍾、時鍾使能、行列地址選擇、讀寫有效及數據有效。

  (2)地址信號:時分復用引腳,根據行列地址選擇引腳,控制輸入的地址為行地址或列地址。。

  (3)數據信號:雙向引腳,受數據有效控制。

  SDRAM的所有操作都同步於時鍾。根據時鍾上升沿控制管腳和地址輸入的狀態,可以產生多種輸入命令。

  模式寄存器設置命令。

  激活命令。

  預充命令。

  讀命令。

  寫命令。

  帶預充的讀命令。

  帶預充的寫命令。

  自動刷新命令。

  自我刷新命令。

  突發停命令。

  空操作命令。

  根據輸入命令,SDRAM狀態在內部狀態間轉移。內部狀態包括模式寄存器設置狀態、激活狀態、預充狀態、寫狀態、讀狀態、預充讀狀態、預充寫狀態、自動刷新狀態及自我刷新狀態。

  SDRAM支持的操作命令有初始化配置、預充電、行激活、讀操作、寫操作、自動刷新、自刷新等。所有的操作命令通過控制線CS#、RAS#、CAS#、WE#和地址線、體選地址BA輸入。

  1、行激活

  行激活命令選擇處於空閑狀態存儲體的任意一個行,使之進入准備讀/寫狀態。從體激活到允許輸入讀/寫命令的間隔時鍾節拍數取決於內部特征延時和時鍾頻率。HY57V561620內部有4個體,為了減少器件門數,4個體之間的部分電路是公用的,因此它們不能同時被激活,而且從一個體的激活過渡到另一個體的激活也必須保證有一定的時間間隔。

  2、預充電

  預充電命令用於對已激活的行進行預充電即結束活動狀態。預充電命令可以作用於單個體,也可以同時作用於所有體(通過所有體預充電命令)。對於猝發寫操作必須保證在寫入預充電命令前寫操作已經完成,並使用DQM禁止繼續寫入數據。預充電結束后回到空閑狀態,也可以再次被激活,此時也可以輸入進入低功耗、自動刷新、自刷新和模式設置等操作命令。

  預充電中重寫的操作與刷新操作一樣,只不過預充電不是定期的,而只是在讀操作以后執行的。因為讀取操作會破壞內存中的電荷。因此,內存不但要每64ms刷新一次,而且每次讀操作之后還要刷新一次。

  由於SDRAM的尋址具有獨占性,所以在進行完讀操作后,如果要對同一L-BANK的另一行進行尋址,就要關閉原來的工作行,重新發送行/列地址。L-BANK關閉現有工作行,准備打開新行的操作就是預充電(precharge).預充電可以通過命令控制,也可以通過輔助設定讓芯片在每次讀寫操作之后自動進行預充電。實際上預充電是一種對工作行中所有存儲體進行數據重寫,並對行地址進行復位。 

 

 

對於預充電的補充:

 

預充電

 

    由於SDRAM的尋址具有獨占性,所以在進行完讀寫操作后,如果要對同一L-Bank的另一行進行尋址,就要將原來有效(工作)的行關閉,重新發送行/列
地址。L-Bank關閉現有工作行,准備打開新行的操作就是預充電(Precharge)。

   預充電可以通過命令控制,也可以通過輔助設定讓芯片在每次讀寫操作之后自動進行預充電。實際上,預充電是一種對工作行中所有存儲體進行數據重寫,並對行地址進行復位,同時釋放S-AMP(重新加入比較電壓,一般是電容電壓的1/2,以幫助判斷讀取數據的邏輯電平,因為S-AMP是通過一個參考電壓與存儲體位線電壓的比較來判斷邏輯值的),以准備新行的工作。具體而言,就是將S-AMP中的數據回寫,即使是沒有工作過的存儲體也會因行選通而使存儲電容受到干擾,所以也需要S-AMP進行讀后重寫。此時,電容的電量(或者說其產生的電壓)將是判斷邏輯狀態的依據(讀取時也需要),為此要設定一個臨界值,一般為電容電量的1/2,超過它的為邏輯1,進行重寫,否則為邏輯0,不進行重寫(等於放電)。為此,現在基本都將電容的另一端接入一個指定的電壓(即1/2電容電壓),而不是接地,以幫助重寫時的比較與判斷。現在我們再回過頭看看讀寫操作時的命令時序圖,從中可以發現地址線A10控制着是否進行在讀寫之后當前L-Bank自動進行預充電,這就是上文所說的“輔助設定”。而在單獨的預充電命令中,A10則控制着是對指定的L-Bank還是所有的L-Bank(當有多個L-Bank處於有效/活動狀態時)進行預充電,前者需要提供L-Bank的地址,后者只需將A10信號置於高電平。在發出預充電命令之后,要經過一段時間才能允許發送RAS行有效命令打開新的工作行,這個間隔被稱為tRP(Precharge command Period,預充電有效周期)。和tRCD、CL一樣,tRP的單位也是時鍾周期數,具體值視時鍾頻率而定

 

 


  3、自動預充電

  如果在猝發讀或猝發寫命令中,A10/AP位置為“1”,在讀寫操作完成后自動附加一個預充電動作。操作行結束活動狀態,但在內部狀態機回到空閑態之前不能給器件發送新的操作命令。

  4、猝發讀

  猝發讀命令允許某個體中的一行被激活后,連續讀出若干個數據。第一個數據在經過指定的CAS延時節拍后呈現在數據線上,以后每個時鍾節拍都會讀出一個新的數據。猝發讀操作可以被同體或不同體的新的猝發讀/寫命令或同一體的預充電命令及猝發停止命令中止。

  5、猝發寫

  猝發寫命令與猝發讀命令類似,允許某個體中的一行被激活后,連續寫入若干個數據。第一個寫數據與猝發寫命令同時在數據線上給出,以后每個時鍾節拍給出一個新的數據,輸入緩沖在猝發數據量滿足要求后停止接受數據。猝發寫操作可以被猝發讀/寫命令或DQM數據輸入屏蔽命令和預充電命令或猝發停止命令中止。

  6、自動刷新

  由於動態存儲器存儲單元存在漏電現象,為了保持每個存儲單元數據的正確性,HY57V561620必須保證在64ms內對所有的存儲單元刷新一遍。一個自動刷新周期只能刷新存儲單元的一個行,每次刷新操作后內部刷新地址計數器自動加“1”。只有在所有體都空閑(因為4個體的對應行同時刷新)並且未處於低功耗模式時才能啟動自動刷新操作,刷新操作執行期間只能輸入空操作,刷新操作執行完畢后所有體都進入空閑狀態。該器件可以每間隔7.8μs執行一次自動刷新命令,也可以在64ms內的某個時間段對所有單元集中刷新一遍。

  7、自刷新

  自刷新是動態存儲器的另一種刷新方式,通常用於在低功耗模式下保持SDRAM的數據。在自刷新方式下,SDRAM禁止所有的內部時鍾和輸入緩沖(CKE除外)。為了降低功耗,刷新地址和刷新時間全部由器件內部產生。一旦進入自刷新方式只有通過CKE變低才能激活,其他的任何輸入都將不起作用。給出退出自刷新方式命令后必須保持一定節拍的空操作輸入,以保證器件完成從自刷新方式的退出。如果在正常工作期間采用集中式自動刷新方式,則在退出自刷新模式后必須進行一遍(對於HY57V561620來說,8192個)集中的自動刷新操作。

  8、時鍾和時鍾屏蔽

  時鍾信號是所有操作的同步信號,上升沿有效。時鍾屏蔽信號CKE決定是否把時鍾輸入施加到內部電路。在讀寫操作期間,CKE變低后的下一個節拍凍結輸出狀態和猝發地址,直到CKE變高為止。在所有的體都處於空閑狀態時,CKE變低后的下一個節拍SDRAM進入低功耗模式並一直保持到CKE變高為止。

  9、DQM操作

  DQM用於屏蔽輸入輸出操作,對於輸出相當於開門信號,對於輸入禁止把總線上的數據寫入存儲單元。對讀操作DQM延遲2個時鍾周期開始起作用,對寫操作則是當拍有效。

 

附加:

突發傳輸 ,突發長度 , 非突發傳輸:

 

  突發(Burst)是指在同一行中相鄰的存儲單元連續進行數據傳輸的方式,連續傳輸所涉及到存儲單元(列)的數量就是突發長度(Burst Lengths,簡稱BL)。在目前,由於內存控制器一次讀/寫P-Bank位寬的數據,也就是8個字節,但是在現實中小於8個字節的數據很少見,所以一般都要經過多個周期進行數據的傳輸。上文講到的讀/寫操作,都是一次對一個存儲單元進行尋址,如果要連續讀/寫就還要對當前存儲單元的下一個單元進行尋址,也就是要不斷的發送列地址與讀/寫命令(行地址不變,所以不用再對行尋址)。雖然由於讀/寫延遲相同可以讓數據的傳輸在I/O端是連續的,但它占用了大量的內存控制資源,在數據進行連續傳輸時無法輸入新的命令,效率很低(早期的FPE/EDO內存就是以這種方式進行連續的數據傳輸)。為此,人們開發了突發傳輸技術,只要指定起始列地址與突發長度,內存就會依次地自動對后面相應數量的存儲單元進行讀/寫操作而不再需要控制器連續地提供列地址。這樣,除了第一筆數據的傳輸需要若干個周期(主要是之前的延遲,一般的是tRCD+CL)外,其后每個數據只需一個周期的即可獲得。在很多北橋芯片的介紹中都有類似於X-1-1-1的字樣,就是指這個意思,其中的X代表就代表第一筆數據所用的周期數。

   非突發連續讀取模式:不采用突發傳輸而是依次單獨尋址,此時可等效於BL=1。雖然可以讓數據是連續的傳輸,但每次都要發送列地址與命令信息,控制資源占用極大,突發連續讀取模式:只要指定起始列地址與突發長度,尋址與數據的讀取自動進行,而只要控制好兩段突發讀取命令的間隔周期(與BL相同)即可做到連續的突發傳輸


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM