日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

FPGA ——DDR基础概念详解

發(fā)布時(shí)間:2024/3/26 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 FPGA ——DDR基础概念详解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

DDR基礎(chǔ)知識(shí)

DDR存儲(chǔ)機(jī)制

?DDR3詳解

DDR3型號(hào)

DDR3引腳

DDR操作

DDR讀操作

DDR寫(xiě)操作


DDR基礎(chǔ)知識(shí)

?????? DDR=Double Data Rate雙倍速率,DDR SDRAM=雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器,人們習(xí)慣稱(chēng)為DDR,其中,SDRAM 是Synchronous Dynamic Random Access Memory的縮寫(xiě),即同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器。而DDR SDRAM是Double Data Rate SDRAM的縮寫(xiě),是雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器的意思。

?????????SDR SDRAM采用單端(Single-Ended)時(shí)鐘信號(hào), 在一個(gè)時(shí)鐘周期內(nèi)只傳輸一次數(shù)據(jù);而 DDR由于工作頻率比較快,采用可降低干擾的差分時(shí)鐘信號(hào)作為同步時(shí)鐘。在一個(gè)時(shí)鐘周期內(nèi)可以傳輸兩次數(shù)據(jù),它能夠在的DQS上升沿和和下降沿各傳輸一次數(shù)據(jù)。

相對(duì)比于DDR,DDR2的時(shí)鐘加速,是DDR的兩倍,DDR3的時(shí)鐘是DDR的四倍

DDR存儲(chǔ)機(jī)制

DDR3的內(nèi)部是一個(gè)存儲(chǔ)陣列,將數(shù)據(jù)“填”進(jìn)去,你可以它想象成一張表格。和表格的檢索原理一樣,先指定一個(gè)行(Row),再指定一個(gè)列(Column),我們就可以準(zhǔn)確地找到所需要的單元格,這就是內(nèi)存芯片尋址的基本原理。對(duì)于內(nèi)存,這個(gè)單元格可稱(chēng)為存儲(chǔ)單元,那么這個(gè)表格(存儲(chǔ)陣列)就是邏輯Bank(Logical Bank,下面簡(jiǎn)稱(chēng)Bank)。

?DDR內(nèi)部Bank示意圖,這是一個(gè)NXN的陣列,B代表Bank地址編號(hào)C代表列地址編號(hào)R代表行地址編號(hào)。如果尋址命令是B1、R2、C6,就能確定地址是圖中紅格的位置。

目前DDR3內(nèi)存芯片基本上都是8個(gè)Bank設(shè)計(jì),也就是說(shuō)一共有8個(gè)這樣的“表格”。

尋址的流程也就是先指定Bank地址,再指定行地址,然后指列地址最終的確尋址單元。

1.??? 控制器單元:包括輸入命令解析,模式配置&控制部分;

2.??? 行地址選通單元:行激活通過(guò)此處操作;

3.??? Bank控制邏輯:行/列地址解碼用到bank選通

4.??? 列地址選擇單元,讀寫(xiě)操作同時(shí)在打開(kāi)列地址的時(shí)候送到1;

5.??? 內(nèi)部存儲(chǔ)陣列,此處分8個(gè)bank,以4g8bit的顆粒為例;每個(gè)bank分65536行,128列,每個(gè)cell存儲(chǔ)8*bl的數(shù)據(jù)寬度;

6.??? 讀寫(xiě)數(shù)據(jù)緩存及接口驅(qū)動(dòng);dq數(shù)據(jù)在此變換位寬后內(nèi)外交互;

7.??? 鎖存與控制邏輯:刷新與預(yù)充電用到該模塊。


?DDR3詳解

DDR3型號(hào)

DDR3有上圖的三種型號(hào)?

MT為公司,41J為型號(hào),xxM為容量單位是bit,之后的數(shù)字為數(shù)據(jù)位寬即數(shù)據(jù)的管腳個(gè)數(shù)

如256M8,是256M bit 的容量,8位位寬(對(duì)外數(shù)據(jù)管腳為8)?

DDR3引腳

名稱(chēng)

輸入/輸出

描述

A[14:13], A12/BC#,

A11, A10/AP, A[9:0]

in

地址輸入:為 ACTIVATE 命令提供行地址,

為 READ/WRITE 命令提供列地址和自動(dòng)預(yù)充電位 (A10)

BA[2:0]

in

Bank地址輸入

CK, CK#

in

差分時(shí)鐘

CKE

in

時(shí)鐘使能

CS#

in

片選

DM

in

輸入數(shù)據(jù)屏蔽:DM是寫(xiě)數(shù)據(jù)的輸入屏蔽信號(hào)。 在寫(xiě)訪問(wèn)期間,當(dāng) DM 與輸入數(shù)據(jù)一起被采樣為高電平時(shí)輸入數(shù)據(jù)被屏蔽

ODT

in

片上端接:ODT 啟用(注冊(cè)為高電平)和禁用(注冊(cè)為低電平)DDR3 SDRAM 內(nèi)部的端接電阻。

RAS#, CAS#, WE#

in

行使能,列使能,寫(xiě)使能

DQ[3:0]

I/O

數(shù)據(jù)輸入/輸出:x4 配置的雙向數(shù)據(jù)總線

DQ[7:0]

I/O

數(shù)據(jù)輸入/輸出:x8 配置的雙向數(shù)據(jù)總線

DQS, DQS #

I/O

數(shù)據(jù)選通:輸出讀取數(shù)據(jù),與讀取數(shù)據(jù)邊緣對(duì)齊。 輸入與寫(xiě)入數(shù)據(jù),居中對(duì)齊寫(xiě)入數(shù)據(jù)。

TDQS, TDQS#

out

終止數(shù)據(jù)選通

DDR3控制命令表:

?

?DDR3 mode寄存器設(shè)置圖:

?由于SDRAM的尋址具體獨(dú)占性,所以在進(jìn)行完讀寫(xiě)操作后,如果要對(duì)同一L-Bank的另一行進(jìn)行尋址,就要將原來(lái)有效(工作)的行關(guān)閉,重新發(fā)送行/列地址。L-Bank關(guān)閉現(xiàn)有工作行,準(zhǔn)備打開(kāi)新行的操作就是預(yù)充電(Precharge)。預(yù)充電可以通過(guò)命令控制,也可以通過(guò)輔助設(shè)定讓芯片在每次讀寫(xiě)操作之后自動(dòng)進(jìn)行預(yù)充電。實(shí)際上,預(yù)充電是一種對(duì)工作行中所有存儲(chǔ)體進(jìn)行數(shù)據(jù)重寫(xiě),并對(duì)行地址進(jìn)行復(fù)位,之所以稱(chēng)為DRAM,就是因?yàn)樗粩噙M(jìn)行刷新(Refresh)才能保留住數(shù)據(jù),因此它是DRAM最重要的操作。

刷新操作與預(yù)充電中重寫(xiě)的操作一樣。但為什么有預(yù)充電操作還要進(jìn)行刷新呢?因?yàn)轭A(yù)充電是對(duì)一個(gè)或所有L-Bank中的工作行操作,并且是不定期的,而刷新則是有固定的周期,依次對(duì)所有行進(jìn)行操作,以保留那些久久沒(méi)經(jīng)歷重寫(xiě)的存儲(chǔ)體中的數(shù)據(jù)。但與所有L-Bank預(yù)充電不同的是,這里的行是指所有L-Bank中地址相同的行,而預(yù)充電中各L-Bank中的工作行地址并不是一定是相同的。

在實(shí)際工作中,Bank地址與相應(yīng)的行地址是同時(shí)發(fā)出的,此時(shí)這個(gè)命令稱(chēng)之為“行激活”(Row Active)。在此之后,將發(fā)送列地址尋址命令與具體的操作命令(是讀還是寫(xiě)),這兩個(gè)命令也是同時(shí)發(fā)出的,所以一般都會(huì)以“讀/寫(xiě)命令”來(lái)表示列尋址。根據(jù)相關(guān)的標(biāo)準(zhǔn),從行有效到讀/寫(xiě)命令發(fā)出之間的間隔被定義為tRCD,即RAS to CAS Delay(RAS至CAS延遲,RAS就是行地址選通脈沖,CAS就是列地址選通脈沖),我們可以理解為行選通周期。tRCD是DDR的一個(gè)重要時(shí)序參數(shù),廣義的tRCD以時(shí)鐘周期(tCK,Clock Time)數(shù)為單位,比如tRCD=3,就代表延遲周期為兩個(gè)時(shí)鐘周期,具體到確切的時(shí)間,則要根據(jù)時(shí)鐘頻率而定,DDR3-800,tRCD=3,代表30ns的延遲。

?

?接下來(lái),相關(guān)的列地址被選中之后,將會(huì)觸發(fā)數(shù)據(jù)傳輸,但從存儲(chǔ)單元中輸出到真正出現(xiàn)在內(nèi)存芯片的 I/O 接口之間還需要一定的時(shí)間(數(shù)據(jù)觸發(fā)本身就有延遲,而且還需要進(jìn)行信號(hào)放大),這段時(shí)間就是非常著名的 CL(CAS Latency,列地址脈沖選通潛伏期)。CL 的數(shù)值與 tRCD 一樣,以時(shí)鐘周期數(shù)表示。如 DDR3-800,時(shí)鐘頻率為 100MHz,時(shí)鐘周期為 10ns,如果 CL=2 就意味著 20ns 的潛伏期。不過(guò)CL只是針對(duì)讀取操作。

?

??由于芯片體積的原因,存儲(chǔ)單元中的電容容量很小,所以信號(hào)要經(jīng)過(guò)放大來(lái)保證其有效的識(shí)別性,這個(gè)放大/驅(qū)動(dòng)工作由S-AMP負(fù)責(zé),一個(gè)存儲(chǔ)體對(duì)應(yīng)一個(gè)S- AMP通道。但它要有一個(gè)準(zhǔn)備時(shí)間才能保證信號(hào)的發(fā)送強(qiáng)度(事前還要進(jìn)行電壓比較以進(jìn)行邏輯電平的判斷),因此從數(shù)據(jù)I/O總線上有數(shù)據(jù)輸出之前的一個(gè)時(shí)鐘上升沿開(kāi)始,數(shù)據(jù)即已傳向S-AMP,也就是說(shuō)此時(shí)數(shù)據(jù)已經(jīng)被觸發(fā),經(jīng)過(guò)一定的驅(qū)動(dòng)時(shí)間最終傳向數(shù)據(jù)I/O總線進(jìn)行輸出,這段時(shí)間我們稱(chēng)之為 tAC(Access Time from CLK,時(shí)鐘觸發(fā)后的訪問(wèn)時(shí)間)。

突發(fā)(Burst)是指在同一行中相鄰的存儲(chǔ)單元連續(xù)進(jìn)行數(shù)據(jù)傳輸?shù)姆绞?#xff0c;連續(xù)傳輸?shù)闹芷跀?shù)就是突發(fā)長(zhǎng)度(Burst Lengths,簡(jiǎn)稱(chēng)BL)。

?

?在進(jìn)行突發(fā)傳輸時(shí),只要指定起始列地址與突發(fā)長(zhǎng)度,內(nèi)存就會(huì)依次地自動(dòng)對(duì)后面相應(yīng)數(shù)量的存儲(chǔ)單元進(jìn)行讀/寫(xiě)操作而不再需要控制器連續(xù)地提供列地址。這樣,除了第一筆數(shù)據(jù)的傳輸需要若干個(gè)周期(主要是之前的延遲,一般的是tRCD+CL)外,其后每個(gè)數(shù)據(jù)只需一個(gè)周期的即可獲得。

突發(fā)連續(xù)讀取模式:只要指定起始列地址與突發(fā)長(zhǎng)度,后續(xù)的尋址與數(shù)據(jù)的讀取自動(dòng)進(jìn)行,而只要控制好兩段突發(fā)讀取命令的間隔周期(與BL相同)即可做到連續(xù)的突發(fā)傳輸。

談到了突發(fā)長(zhǎng)度時(shí)。如果BL=4,那么也就是說(shuō)一次就傳送4×64bit的數(shù)據(jù)。但是,如果其中的第二筆數(shù)據(jù)是不需要的,怎么辦?還都傳輸嗎?為了屏蔽不需要的數(shù)據(jù),人們采用了數(shù)據(jù)掩碼(Data I/O Mask,簡(jiǎn)稱(chēng)DQM)技術(shù)。通過(guò)DQM,內(nèi)存可以控制I/O端口取消哪些輸出或輸入的數(shù)據(jù)。這里需要強(qiáng)調(diào)的是,在讀取時(shí),被屏蔽的數(shù)據(jù)仍然會(huì)從存儲(chǔ)體傳出,只是在“掩碼邏輯單元”處被屏蔽。DQM由北橋控制,為了精確屏蔽一個(gè)P-Bank位寬中的每個(gè)字節(jié),每個(gè)DIMM有8個(gè)DQM 信號(hào)線,每個(gè)信號(hào)針對(duì)一個(gè)字節(jié)。這樣,對(duì)于4bit位寬芯片,兩個(gè)芯片共用一個(gè)DQM信號(hào)線,對(duì)于8bit位寬芯片,一個(gè)芯片占用一個(gè)DQM信號(hào),而對(duì)于 16bit位寬芯片,則需要兩個(gè)DQM引腳。

在數(shù)據(jù)讀取完之后,為了騰出讀出放大器以供同一Bank內(nèi)其他行的尋址并傳輸數(shù)據(jù),內(nèi)存芯片將進(jìn)行預(yù)充電的操作來(lái)關(guān)閉當(dāng)前工作行。從開(kāi)始關(guān)閉現(xiàn)有的工作行,到可以打開(kāi)新的工作行之間的間隔就是tRP(Row Precharge command Period,行預(yù)充電有效周期),單位也是時(shí)鐘周期數(shù)。

  • 差分時(shí)鐘
  • 差分時(shí)鐘是DDR的一個(gè)必要設(shè)計(jì),但CK#的作用,并不能理解為第二個(gè)觸發(fā)時(shí)鐘(你可以在講述DDR原理時(shí)簡(jiǎn)單地這么比喻),而是起到觸發(fā)時(shí)鐘校準(zhǔn)的作用。

    ?由于數(shù)據(jù)是在CK的上下沿觸發(fā),造成傳輸周期縮短了一半,因此必須要保證傳輸周期的穩(wěn)定以確保數(shù)據(jù)的正確傳輸,這就要求CK的上下沿間距要有精確的控制。但因?yàn)闇囟取㈦娮栊阅艿母淖兊仍?#xff0c;CK上下沿間距可能發(fā)生變化,此時(shí)與其反相的CK#就起到糾正的作用(CK上升快下降慢,CK# 則是上升慢下降快)。而由于上下沿觸發(fā)的原因,也使CL=1.5和2.5成為可能,并容易實(shí)現(xiàn)。與CK反相的CK#保證了觸發(fā)時(shí)機(jī)的準(zhǔn)確性。

    2、數(shù)據(jù)選取脈沖DQS

    DQS 是DDR中的重要功能,它的功能主要用來(lái)在一個(gè)時(shí)鐘周期內(nèi)準(zhǔn)確的區(qū)分出每個(gè)傳輸周期,并便于接收方準(zhǔn)確接收數(shù)據(jù)。每一顆芯片都有一個(gè)DQS信號(hào)線,它是雙向的,在寫(xiě)入時(shí)它用來(lái)傳送由北橋發(fā)來(lái)的DQS信號(hào),讀取時(shí),則由芯片生成DQS向北橋發(fā)送。完全可以說(shuō),它就是數(shù)據(jù)的同步信號(hào)。

    在讀取時(shí),DQS與數(shù)據(jù)信號(hào)同時(shí)生成(也是在CK與CK#的交叉點(diǎn))。而DDR內(nèi)存中的CL也就是從CAS發(fā)出到DQS生成的間隔,DQS生成時(shí),芯片內(nèi)部的預(yù)取已經(jīng)完畢了,由于預(yù)取的原因,實(shí)際的數(shù)據(jù)傳出可能會(huì)提前于DQS發(fā)生(數(shù)據(jù)提前于DQS傳出)。由于是并行傳輸,DDR內(nèi)存對(duì)tAC也有一定的要求,對(duì)于DDR266,tAC的允許范圍是±0.75ns,對(duì)于DDR333,則是±0.7ns,有關(guān)它們的時(shí)序圖示見(jiàn)前文,其中CL里包含了一段DQS 的導(dǎo)入期。

    ?

    ?在寫(xiě)入時(shí),以DQS的高/低電平期中部為數(shù)據(jù)周期分割點(diǎn),而不是上/下沿,但數(shù)據(jù)的接收觸發(fā)仍為DQS的上/下沿

    DDR操作

    ?????? 啟動(dòng):上電->解復(fù)位->初始化->ZQCL-> LEVELING->IDLE(ready)

    ?????? 讀:IDLE->行激活->讀數(shù)據(jù)(1次或多次突發(fā))->預(yù)充電->IDLE

    ?????? 寫(xiě):IDLE->行激活->寫(xiě)數(shù)據(jù)(1次或多次突發(fā))->預(yù)充電->IDLE

    ?????? 刷新:IDLE->REF->IDLE

    ?????? 自刷新的進(jìn)入與退出:IDLE->SFR->IDLE

    ?????? 定期校正:IDLE->ZQCS->IDLE,一般外部溫度或電壓改變時(shí)操作

    ?????? 動(dòng)態(tài)更改配置:IDLE->MRS/MPR->IDLE

    DDR讀操作

    ???????? ddr發(fā)起一次讀的過(guò)程包含一系列命令有:

    1.??? 操作開(kāi)始于Active命令——Active命令同時(shí)并發(fā)含帶地址位,以選擇Bank和Row地址(BA0-BA2選擇BANK、A0-A15選擇Row)。用于打開(kāi)一個(gè)工作行。

    2.??? 隨后是一個(gè)Read命令——Read命令并發(fā)含帶突發(fā)操作的起始Column地址和bank號(hào),打開(kāi)對(duì)應(yīng)gating的列;

    3.??? 數(shù)據(jù)經(jīng)過(guò)特定的延時(shí)(CL+AL,后面詳細(xì)介紹);將數(shù)據(jù)傳出IO;

    4.??? 完成數(shù)據(jù)傳出后,需將當(dāng)前cache的數(shù)據(jù)刷回存儲(chǔ)整列并關(guān)閉當(dāng)前工作行(攜帶命令和BA信息);【是否發(fā)布自動(dòng)預(yù)充電命令(通過(guò)A10)】

    DDR寫(xiě)操作

    ??????? ddr發(fā)起一次寫(xiě)操作與讀類(lèi)似,除寫(xiě)數(shù)據(jù),其他步驟參照讀。

    1.??? 和讀操作一樣。

    2.??? 隨后是一個(gè)write命令——Read命令并發(fā)含帶突發(fā)操作的起始Column地址和bank號(hào),打開(kāi)對(duì)應(yīng)gating的列;

    3.??? 經(jīng)過(guò)特定的延時(shí)(CWL+AL,后面詳細(xì)介紹);數(shù)據(jù)從IO寫(xiě)入io gating;這之間又有一個(gè)延時(shí)tWR。

    4.??? 完成數(shù)據(jù)寫(xiě)入后,預(yù)充電的操作和讀一樣。

    總結(jié)

    以上是生活随笔為你收集整理的FPGA ——DDR基础概念详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。