微信搜尋“每日硬知識”,關注公眾號,支援下硬知識吧!

在上文中為大家講解了DDR4的儲存定址原理。在本節,我們將為大家講解DDR4的詳細硬體設計步驟,DDR的時序引數,以及DDR4的SI模擬。

DDR的硬體設計步驟

作為硬體工程師,我們通常收到需求是:該產品記憶體配置為DDR4,容量8Gb(1GB=8Gb)。

而我們通常需要把這個“簡陋”的需求,轉化為具體的電路,該如何去實現呢?

其實,很簡單。DDR4的硬體設計過程可以總結為:為某個平臺搭配一顆DDR記憶體顆粒,並保證平臺與DDR記憶體顆粒均能正常工作。

所以可以分為2部分,如何為平臺選型1顆DDR記憶體顆粒?如何保證DDR相關電路能正常工作?

DDR記憶體顆粒選型

目前很多晶片都會把CPU與外圍控制電路(例如:FLASH控制電路,DDR控制電路,USB控制電路)整合到1顆晶片中,像高通MDM8909,類似這樣的晶片,我們稱為“平臺晶片”。平臺晶片中DDR控制電路,我們稱為“DDR Controller”,翻譯過來為:DDR控制器。

為DDR控制器搭配它能控制的DDR記憶體顆粒,你就必須先了解下:DDR控制器需要什麼樣的記憶體顆粒?

硬體設計第一步:查閱平臺晶片規格書中,關於DDR控制器部分的描述。

It has

16/32 bits DDR3L/4 up to 2400 MT/s

, parallel NAND, serial NOR interfaces。

DDR4實戰教學(二):DDR4硬體詳細設計

所以我們瞭解到了:

該平臺晶片,支援DDR3L或者DDR4記憶體顆粒,資料位寬為16位或者32位,最高資料傳輸速度為2400MT/s,即頻率為1200MHz(DDR是雙邊沿資料傳輸,1個時鐘週期傳輸2次資料,1s傳輸了2400M次,即意味著1s時鐘變化了1200次,即頻率為1200MHz)。

結合產品需求:容量8Gb,那我們基本可以鎖定DDR的詳細規格了。

在正式選型之前,還要引入1個概念“RANK”。我們知道,DDR即支援多個記憶體顆粒擴充套件容量,又支援多個記憶體顆粒擴充套件資料位寬。

例如,我們的DDR控制器支援32位資料位寬,那我們可以用8個4位DDR,或者4個8位DDR,或者2個16位DDR,或者1個32位DDR進行資料位擴充套件。假如我們用8個4位DDR顆粒進行設計,我們的RANK數量就是8,我們戲稱為“8-RANK設計”,當然實際生活中,我們肯定不會這麼蠢,拿8個4位DDR去擴充套件32位。

所以,再確定我們的RANK數量後,需求被鎖定了。

容量設定為8Gb,型別為DDR4,資料寬度為32位,最高頻率為1200MHz。由於目前大部分DDR記憶體顆粒最高支援16位資料寬度,所以RANK數量為2,即我們說的Dual-RANK設計。

根據這個需求,可以在DDR官網上去尋找合適的“DDR晶片”了。例如在鎂光官網產品頁,選定DRR4-SDRAM,選定8Gb,DDR4。

DDR4實戰教學(二):DDR4硬體詳細設計

網頁會為你推薦很多型號。像資料位寬是8位的,可以直接跳過。

DDR4實戰教學(二):DDR4硬體詳細設計

資料位寬為16位,頻率為1200Mhz(2400MT/s)的,仍然有很多。這時候就是考驗硬體工程師職業素養的時候了,我們不僅要考慮硬體效能,還要考慮下物料成本,物料採購週期。考慮成本,就儘量不要有“過設計”的地方,所以速率為3200MT/s的器件排除掉。如果我們是消費類商規產品,所以溫度範圍選擇較窄的商業級器件,其次,為了增進你和採購的感情,

千萬不要選擇停產的物料。

千萬不要選擇停產的物料。

千萬不要選擇停產的物料。

DDR4實戰教學(二):DDR4硬體詳細設計

這樣下來,我們選型基本就鎖定到MT40A512M16JY-083E了,用量為2片。

此時,開始閱覽器件規格書,瞭解電氣效能,設計外圍電路,讓DDR控制器和DDR記憶體顆粒都歡快的執行起來。

DDR的硬體電路搭建

設計邏輯器件電路,就要有邏輯思維,最簡單的邏輯思維,就是分組。所以,先了解DDR控制器的硬體介面。控制器硬體PIN腳可以分為電源組,配置組,控制組,時鐘組,地址組,資料組。

電源組和配置組介面如下,供電,接電阻就可以完成,1。2V的供電,儘可能要平穩,此處忽略。ZQ電阻是用來校準ODT阻抗的,我們後面會講到。

DDR4實戰教學(二):DDR4硬體詳細設計

控制組介面如下。

DDR4實戰教學(二):DDR4硬體詳細設計

分好組後,就要根據DDR的工作原理來進行外圍硬體設計了。

控制訊號中,需要注意CS0和CS1,2個片選訊號的可以用來進行,多RANK記憶體容量擴充套件的,說明DDR控制器,最多支援2組RANK。每組RANK分配單獨的片選訊號。我們此處設計2個16位晶片組成1個RANK,即CS0要同時接在目前選的2個DDR顆粒的CS上,組成菊花鏈。其餘控制訊號一般無時序要求,能傳遞邏輯即可。

地址訊號通常要參考時鐘訊號,來進行定址,所以地址訊號要嚴格與時鐘訊號保持長度一致,來保證所有地址位在取樣的時候同時到達。因為同一塊單板上,每根線上電子的傳遞速度是一樣的,所以訊號線長度約長,訊號越晚到達,訊號線長度越短,訊號越早到達,地址取樣的時候,是有時間期限的,所以,所有的地址訊號必須保證在取樣時間範圍內,全部到達,因此要求地址線相對時鐘線進行長度控制。前面一節我們講了記憶體定址原理,先用BG訊號選擇BANK GROUP,再用BA訊號進行BANK選擇,再用A[0:16]進行行列選擇,再用A[0:16]進行列選擇,完成定址。可以看到,Address訊號在進行行選擇和列選擇時,BG和BA訊號都是保持的,所以BG訊號和BA訊號的等長要求會相對略寬。

DDR控制器有2根BG訊號,2根BA訊號,17根Address訊號,同一個RANK有2個DDR顆粒,每個DDR顆粒有1根BG訊號,2根BA訊號,17根Address訊號,前面CS0同時連線了2個DDR顆粒的片選,所以定址時兩顆DDR會被同時片選,那麼DDR控制器如何區分開定址其中1顆DDR顆粒呢?硬體又該怎麼連線?其實很簡單,根據上節講的記憶體定址原理,我們知道每個DDR顆粒有2個BANK GROUP(1根BG訊號),4個BANK(2根BA訊號),與CS擴充套件容量的原理一致,我們把BG0接在DDR顆粒1上,BG0拉高拉低,我們可以定址CHIP1的8個BANK。BG1接在DDR顆粒2上,BG1拉高拉低,我們可以定址CHIP1的8個BANK。BA、ADDR進行菊花鏈連線,同時接在2顆DDR晶片上。

接下來,我們看看資料訊號的連結,資料訊號是內部分組的,由於DDR資料訊號傳輸的時候雙邊沿資料傳輸,而且如果所有訊號都參考時鐘去做等長,會導致等長控制非常困難,增加DDR的設計難度,所以聰明的人類想出了另外一招,額外增加資料選通訊號來作為資料訊號的取樣時鐘,每8位訊號,參考一組差分。所以我們很輕易可以看出DDR控制器有4組DQS差分訊號,32根資料訊號。我們的RANK中有2個DDR顆粒,每個顆粒有2組DQS差分訊號,16根資料訊號。所以

控制器的DQS[0:1]連線DDR CHIP0的DQS[0:1],

控制器的DQ[0:15]連線DDR CHIP0的DQ[0:15]。

控制器的DQS[2:3]連線DDR CHIP1的DQS[0:1],

控制器的DQ[16:31]連線DDR CHIP1的DQ[0:15]。

至此所有訊號連線完成。

接下來是阻抗匹配,地址訊號都需要外部加49歐姆匹配電阻到電源或者GND,資料訊號,則不需要。因為DDR內部整合ODT功能,只需要透過配置,即可完成每組資料線的阻抗匹配。

本節,我們講解了DDR的硬體設計過程,下一節我們重點講解DDR的除錯關注點以及基於Hyperlynx的訊號完整性分析。