SDRAM内存的接口和设计方法(并行输送接口)
轉載自:http://tech.sina.com.cn/c/2001-07-30/4752.html
| http://www.sina.com.cn 2001/07/30?09:42?小熊在線 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ? | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 雖然目前SDRAM內存條價格已經接底線,內存開始向DDR和Rambus內存過渡。但是由于DDR內存是在SDRAM基礎上發展起來的,所以詳細了解SDRAM內存的接口和主板設計方法對于設計基于DDR內存的主板不無裨益。下面我們就從內存顆粒、內存槽位接口、主板和內存之間的信號接口幾個方面來詳細闡述SDRAM內存條和主板內存系統的設計思路。 內存顆粒介紹 ?
對于DRAM(Dynamic Random Access Memory)內存我想凡是對于計算機有所了解的讀者都不會陌生。這種類型的內存都是以一個電容是否充有電荷來作為存儲狀態的標志,電容沖有電荷為狀態1,電容沒有電荷為狀態0。其最大優點是集成度高,容量大,但是其速度相對于SRAM (Static Random Access Memory) 內存來說慢了許多。目前的內存顆粒封裝方式有許多種,本文僅僅以大家常見的TSSOP封裝的內存顆粒為例子。 其各個管腳的信號定義和我們所使用的DIMM插槽的定義是相同的,對于不同容量的內存,地址信號的位數有所不同。另外一個需要注意的地方就是其供電電路。Vcc和Vss是為內存顆粒中的存儲隊列供電,而VccQ和VssQ是為內存顆粒中的地址和數據緩沖區供電。兩者的作用不同。 我們對內存顆粒關心的問題主要是其顆粒的數據寬度(數據位數)和容量(尋址空間大小)。而對于顆粒自檢、顆粒自刷新等等邏輯并不需要特別深入的研究,所以對此我僅僅是一筆帶過,如果讀者有興趣的讀者可以詳細研究內存顆粒的數據手冊。雖然內存顆粒有這么多的邏輯命令方式,但是由于目前北橋芯片和內存顆粒的集成度非常高,只要在布線和元器件的選擇上嚴格按照內存規范來設計和制造,需要使用邏輯分析儀來調試電路上的差錯的情況比較少,并且在設計過程中盡量避免出現這種情況。 168線DIMM內存插槽的信號定義我們目前PC和Server使用的內存大都是168 Pins的SDRAM,區別只是其工作頻率有的可能是100MHz頻率,有的可能是133MHz頻率的。但是只要是SDRAM,其DIMM插槽的信號定義是一樣的。而這些引腳得定義就是設計內存條和主板所必須遵從的規范。 內存引腳主要分為如下幾類:地址引腳、數據引腳(包含校驗位引腳)、片選等控制信號、時鐘信號。整個內存時序系統就是這些引腳上的信號配合產生。下面的表中就是內存插槽的引腳數量和引腳定義,對于一些沒有定義或者是保留以后使用的信號就沒有列出來。
?
? * 在讀模式時,控制芯片顆粒的Buffers數據輸出 在寫模式時,將芯片顆粒的Buffers中的數據寫入芯片顆粒中的內存隊列中 ? ** 當該信號為高時,時鐘信號有 ? 當該信號為低時,時鐘信號無效,并且該信號會觸發內存顆粒的低功耗模式、自刷新模式或者掛起模式 我們從DIMM插槽的引腳定義就可以計算出來,每個DIMM槽位最大支持的內存數值。該數值實際上是尋址空間乘上數據寬度,所以每個DIMM槽位支持最大容量為4GB = 214 x 214 x 8 Byte。但是由于內存芯片顆粒的制造局限性,所以目前能夠使用的DIMM條的內存都達不到這個容量,其容量最大的內存條為1GB。 在設計和制造內存條的時候,所有的內存條都是按照插槽的規范來布線和生產,所以對于內存地址空間,所有生產出來的內存條都是相同的地址空間,例如一條128MB內存,他就是用了地址線A0-A13,當我們在一臺計算機上安裝多個內存時,如何分配每個內存內存條的地址空間呢?這個工作就需要北橋芯片和主板來配合了。 SPD信號定義 ? 內存中使用的SPD都是一片8針TSSOP(Plastic Thin Small Outline Package)封裝的串行存儲EEPROM,其容量是2048bit。每個DIMM的SPD數據讀寫時鐘線SCL和數據線SDA都是共享在一條總線上,所以當我們在一臺機器上會安裝多條內存時,其SPD的片選信號就需要事先確定。該片選信號是由SA0,SA1,SA2三條數據線來確定,該數據線的狀態由主板設計廠商在設計主板的時候固定下來。在每次讀寫該EEPROM的時候,北橋芯片會按照EEPROM的讀寫規格首先向該芯片發送3位片選信號和8位地址信息,每個芯片都會讀入該3位片選信號和8位地址信號。當3位片選信號和主板上固化的3?醯刂廢擼⊿A0,SA1,SA2)的狀態一致的時候該內存條上的SPD芯片就被選中,其信息會記錄在北橋控制器的寄存器中(Register)。 SPD讀寫邏輯中的片選必須滿足下圖的時序邏輯。在此主要介紹地址選擇邏輯,對于數據如何讀寫的時序,有興趣的讀者可以查閱 Atemel 24C02A 的數據手冊(許多內存廠商都選用該芯片作為SPD)。在這個時序中,硬件上僅僅需要滿足其Device Address 地址信息。該地址信息是一個 8bit 的數據,它的格式如下
?
? 該數據通過SCL提供的時鐘同步,0-3 位是固定的信息,4-6 位是片選地址,7位是判斷該,命令是讀還是寫。在芯片內部會對4-6位的數據和硬件電路上的狀態進行比較,相符的話,該芯片被選中,否則不進行下面的操作。從該時序邏輯可以得知,一個SPD通道(僅僅只有一對SCL和SDA信號線)只支持8條內存。至于SPD的讀寫和SPD內容的含義在此就不做進一步說明。 注:SPD涉及到的縮寫 SA 0-2 Serial Presence Detect Address Inputs SDA Serial Presence Detect Address Input/Output SCL Serial Presence Detect Clock Input WP Write Protect for SPD on DIMM 內存條的設計 ? 我們已經知道了內存顆粒、SPD的接口信息,下面就可以開始設計內存了。內存條的邏輯功能圖差別不是非常大,對于不同容量的顆粒,只是在數量上有所改變。
? 上面的邏輯功能圖就是一個帶ECC功能72bit 內存條的邏輯功能圖。采用的是16bit數據寬度的內存顆粒。由于內存條每次讀寫必須滿足64bits(非ECC)或者72bit(ECC),所以在設計的時候顆粒數量是固定的。上面的內存條僅僅只有一個Bank,所以沒有使用BA信號。如果該內存條設計的時候是兩個Bank,其功能圖中就多出了BA選擇信號,并且其容量也會隨之增加1倍。剩下的工作就是布線,在一個6層電路板上布下所有的信號線。 但是隨著目前服務器內存的增大,內存插槽數量的增多,服務器內存系統各個引腳間的引線長度會產生較大差別,導致信號時序會產生錯位。并且控制器的信號控制這么多的內存,有限的驅動能力會不堪重負。針對這種情況,服務器中的內存主要采用的是Registered內存,在內存上添加鎖相環電路和幾個寄存器,這樣每個控制信號僅僅針對數量很少的寄存器,不用針對內存條上的每個內存顆粒來輸出信號,可以很大程度上降低控制芯片的負載,提高信號的質量。同時鎖相環電路大大減少了內存系統的時間延遲,保證了數據的同步。 下面就是寄存器的功能圖
? 寄存器僅僅寄存了每個內存條上的控制信號,對于數據信號沒有進行任何操作。因為控制信號例如S0、CKE0等等信號都是控制多個內存顆粒的信號,所以當服務器上安裝8到16條內存的時候,僅僅靠主板上的控制芯片來控制肯定是力不從心。
? 上面的邏輯圖就很好的說明了Registered內存中鎖相環電路的作用。該電路時時保證和主板上的時鐘電路所屬出的時鐘頻率保持同步,使用這個時鐘信號驅動寄存器和內存芯片顆粒就不會產生時鐘的漂移。所以目前的服務器內存都采用的是Registered內存條。 主板上內存系統的設計主板上對于內存的訪問主要是由北橋芯片來控制。32位CPU能夠訪問的內存容量是64GB。這是由CPU尋址空間和數據帶寬固定的。但是在實際使用中,我們的北橋芯片能夠尋址的空間卻十分有限。一般PC是2GB,高端PC可能達到4GB,高端服務器可以達到32GB的內存容量。這一部分和各個系統內存控制芯片的設計有關。在此我以Intel 815E芯片組為例說明一下主板上內存系統的設計。 Intel 815E北橋控制芯片的內存控制電路的邏輯圖如下:
? 每種信號引腳的功能如下表:
? 該芯片組的內存兼容性和管理特性主要有下面幾點: Intel 815E支持64bits的內存。 從芯片引腳信號圖可以看出,該芯片組只有64bits的數據帶寬,沒有8bits的ECC校驗。 北橋芯片沒有SPD監測電路。 該信息必須通過南橋芯片上的服務器系統管理總線SM_Bus總線來讀出SPD的信息,然后傳送到北橋芯片的寄存器中。 該芯片組不支持Registered內存。 可以支持3個DIMM插槽。每個槽位最大支持512MB。 計算方法:采用SMAA,總共使用數據帶寬為64bits。 容量為512MB=213 x 213 x 8 我們根據Intel 815E芯片的特性,就可以設計出主板上的DIMM插槽的電路連接邏輯示意圖了(注:該圖中沒有標出SPD的地址分配信息):
? 每個DIMM槽的SDQM、SMD、SMB_CLK(管理總線_時鐘信號線)、SMB_DATA(管理總線_數據信號線)、SCAS、SRAS、SWE、SBS是共享的。那么如何區別每個DIMM槽上的內存呢?每個DIMM槽上的內存顆粒通過SMAA,SMAB,SMAC三個地址來區分其不同的地址段,而12條片選信號則在每個DIMM槽上分配4條,分別選擇不同的芯片顆粒。這樣同種的內存條插在不同的插槽上就被分配了不同的內存地址段。 至此,我們的內存系統從顆粒到主板的整個地址和數據組織管理模式就清晰的擺在讀者面前了。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?
轉載于:https://www.cnblogs.com/gujiangtaoFuture/articles/7146147.html
總結
以上是生活随笔為你收集整理的SDRAM内存的接口和设计方法(并行输送接口)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js 实现trim()的两种方法
- 下一篇: 宣传片交付标准