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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

基于S3C2440A+SDRAM(K4M51163)

發(fā)布時間:2025/4/16 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于S3C2440A+SDRAM(K4M51163) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.


本系統(tǒng)是采用兩片K4M51163-BG75的SDRAM,大小為2*64M。

1. SDRAM的工作原理

1.1 SDRAM概述

SDRAM:Synchronous Dynamic Random Access Memory,同步動態(tài)隨機存儲器。同步是指其時鐘頻率(CLK)與CPU的AHB總線時鐘頻率(HCLK)相同,并且內(nèi)部的命令的發(fā)送于數(shù)據(jù)的傳輸都以它為基準;動態(tài)是指存儲陣列需要不斷的刷新來保證數(shù)據(jù)不丟失;隨機是指數(shù)據(jù)不是線性依次存儲,而是自由指定地址進行數(shù)據(jù)的讀寫。

1.2 SDRAM的相關概念

⑴bank

一個SDRAM芯片一般由4個bank組成,下圖是K4M51163-BG75功能結(jié)構(gòu)圖的關于bank的部分

?

上圖中間可見K4M51163-BG75有4個bank,一個bank的大小是8M*16bite,8M表示這個bank有8M個存儲單元,而每個單元可以存儲16bit的數(shù)據(jù)。SDRAM的基本存儲單位就是存儲單元,最小的存儲單位就是bit。

⑵位寬

上面提到一個存儲單元包含16bit,這就是bank的位寬,也是一個SDRAM芯片的位寬,位寬表示每個傳輸周期(在這里是指送進CLK端的時鐘的一個周期)傳送的數(shù)據(jù)量(16bit)。

⑶SDRAM的容量

SDRAM的容量就是指存儲單元的數(shù)量,計算公式如下

SDRAM的容量=bank的數(shù)量*(行數(shù)*列數(shù))

在這里bank的數(shù)量是4個,而行數(shù)及列數(shù)的相關說明見下圖

?

可以行數(shù)是用A0~A12總共13根地址線表示,可表達的行數(shù)達2的13次方(8192);列數(shù)是用A0~A9總共10根地址線來表示,可表達的列數(shù)達2的10次方(1024),同時看出行和列地址線是分時復用的。

1.3 SDRAM的尋址原理

SDRAM的內(nèi)部是一個存儲陣列,陣列就如何表格一樣,和表格的檢索原理一樣,先指定一個行row,再指定一個列column,這樣我們就可以準確找到所需要的單元格了,這就是SDRAM芯片尋址的基本原理。對于內(nèi)存,這個單元格被稱為存儲單元,那么這個表格(存儲陣列)叫什么呢?它就是bank。我們的系統(tǒng)是采用兩片K4M51163-BG75,那么這兩片K4M51163-BG75是如何工作的呢?見下圖

?

通過nSCS0來選擇當前是哪個SDRAM芯片在工作,選定了指定的SDRAM芯片之后,通過BA0和BA1來選擇特定的bank,選擇了特定的bank,接著就選擇特定行,然后在選擇列,這樣就可以找到特定的存儲單元了。

注:SDRAM一次傳輸一個存儲單元的數(shù)據(jù),也就是16bit的數(shù)據(jù),通過DQ0~DQ15讀出或?qū)懭霐?shù)據(jù),這里的讀出就是存儲電容的放電,而寫入就是存儲電容的充電,每一位對應的數(shù)據(jù)保存在存儲電容中,也就是一位能表示的高低電平,下圖是有助于理解這點

?

2 K4M51163PG-BG75

2.1 SDRAM的引腳

SDRAM要想工作,必須要于內(nèi)存控制器有所聯(lián)系,同時對于一個電氣元件,電源供應也是必不可少的,而且數(shù)據(jù)的傳輸要有一個時鐘來同步數(shù)據(jù)的傳送。因此電源與時鐘引腳是必須的,那么還需要哪些控制引腳呢?

I:首先,我們知道內(nèi)存控制器要先確定選擇系統(tǒng)使用的兩個SDRAM芯片的哪一個,然后才能對被選定的芯片進行尋址操作。因此要有一個片選的信號,它一次選擇一個SDRAM芯片。

II:接下來就是對所選擇的芯片進行bank的尋址,目前SDRAM中bank的數(shù)量最高為4個,所以需要兩個bank的地址信號。

III:然后就是要對被選擇的bank進行行和列(存儲單元)尋址,其中所需要的地址線數(shù)量根據(jù)SDRAM芯片容量大小及組織結(jié)構(gòu)分別設計了,但在相同容量下,行數(shù)不變,只有列數(shù)會根據(jù)位寬的變化而變化,位寬越大,列數(shù)越小,因為所需的存儲單元減少了。

IV:找到存儲單元后,就要把這個單元的數(shù)據(jù)讀出或者寫入,那么肯定要有與位寬相同的數(shù)據(jù)I/O通道才行,所以要有相應數(shù)量的數(shù)據(jù)引線。

2.1 K4M51163PG-BG75的功能結(jié)構(gòu)圖

?

2.2 K4M51163PG-BG75的引腳

引腳圖如下

?

下面詳細描述這些pin

CLK

系統(tǒng)時鐘,S3C2443的mobile控制器的SDRAM時鐘引腳連接這個引腳,這個clock引腳的作用就是用于同步數(shù)據(jù)傳輸,就是以這個時鐘信號作為數(shù)據(jù)傳輸?shù)挠|發(fā)參考。K4M51163PG-BG75關于CLK周期時間的要求如下圖所示

?

又結(jié)合下圖

?

而S3C2443是通過HCLK給SDRAM芯片提供時鐘信號的,見下圖

?

我們系統(tǒng)HCLK=400Mhz/3=133Mhz,所以應該去CAS latency=3,從而知道對一個CLK周期時間的要求就是>=7.5ns,有HCLK=133Mhz,可以算出HCLK的一個時鐘周期時間=1/133Mhz=7.5188ns>7.5ns,可知當前的HCLK可以提供滿足K4M51163PG-BG7的CLK。

/CS

片選信號,在使用多個SDRAM芯片時使用,用于選擇某個時間哪個SDRAM芯片工作,S3C2443的nSCS0和這個引腳連接,mobie控制器功過控制這根信號線來選擇我們系統(tǒng)采用兩片SDRAM中的任何一片。

CKE

時鐘有效信號線,和S3C2443的SCKE連接,mobile控制器功過這個信號線來使CLK有效。

A0~A12

行地址線,用于選擇每個bank的行,也即行激活。

A0~A9

列地址線,用于選擇每個bank的列,也即選擇存儲單元格,行和列地址是復用的。

BA0~BA1

Bank的選擇地址,因為此SDRAM芯片有4個bank,所以需要兩位的bank地址線才能選擇到這4個bank。

/RAS

行地址選通,在這個信號線為低電平時,地址線A0~A12送出來的具體的行地址才有實際的意義,也就是才能選通具體的行

/CAS

列地址選擇,在這個信號線為低電平時,地址線A0~A9送出來的具體的列地址才有實際的意義,也就是才能選通具體的列,也及存儲單元格。

/WE

寫使能,為高電平時,可以讀取數(shù)據(jù);為低電平時,可以寫入數(shù)據(jù)。

L(U)DQM

數(shù)據(jù)輸入/輸出屏蔽,用于在突發(fā)傳輸時。

DQ0~15

數(shù)據(jù)輸入/輸出端

2.3 SDRAM的內(nèi)部基本操作與工作時序

2.3.1 SDRAM芯片的初始化

SDRAM在上電以后必須先對其進行初始化操作,而后才能對其進行其他操作,初始化的操作具體步驟如下:

⑴SDRAM在上電以后至少要等待200us,在等待時間結(jié)束后還至少要執(zhí)行一條空操作指令。

⑵SDRAM執(zhí)行一條預充電命令后,要執(zhí)行一條空操作命令,這兩個操作會使所有的存儲單元進行一次預充電,從而使所有陣列中的器件處于待機狀態(tài)。

⑶SDRAM至少要執(zhí)行兩條自刷新命令,每一條刷新命令之后,都要執(zhí)行一條空操作命令,這些操作可使SDRAM芯片內(nèi)部的刷新及計數(shù)器進入正常運行狀態(tài),以便SDRAM為模式寄存器編程做好準備。

⑷執(zhí)行一個MRS(mode register set)命令去初始化mode register(模式寄存器)。

⑸在normal MRS之后,可以執(zhí)行一個EMRS(extended mode register)命令來實現(xiàn)想要的操作模式。

下圖是K4M51163PG-BG75上電之后的操作要求

?

下面的圖是SDRAM初始化過程的大概描述,有助于加強理解

?

2.3.2 SDRAM行有效

初始化完成后,要像對一個bank中的存儲單元進行尋址,首先就要確定行,也即行選通,使之處于激活狀態(tài)(Active),然后再確定列。我們知道要確定行,首先要進行片選和bank的定址,這兩個動作和行選通可以同時進行,下圖是K4M51163PG-BG75的bank和行選通的真值表,也即時序圖

?

從上圖可以看出,在/CS和bank定址的同時,/RAS(行地址選通)也處于有效狀態(tài)(低電平有效),此時,A0~A12地址線則發(fā)送具體的行地址,共有13個地址線,由于是二進制表示法,所以共有8192個行(2^13=8192),A0~A12的不同二進制數(shù)值就確定了具體ideas行地址。由于行有效的同時也是相應的bank有效,所以行有效也可稱為bank有效,根據(jù)上圖這個表,也可轉(zhuǎn)化為下面類似的時序圖,下面這個圖可以加強這方面的理解。

?

2.3.3 列讀寫

行地址確定之后,就要對列地址進行尋址了。但是,地址線仍然是行地址所用的A0~A9,在SDRAM中,行地址于列地址是復用的。不過,讀/寫的命令是怎么發(fā)出來的呢?其實沒有一個信號是發(fā)送讀或?qū)懙拿鞔_命令的,而是通過芯片的可寫狀態(tài)(/WE)的控制來達到讀/寫的目的。/WE信號就是一個關鍵,在/WE為高低電平時,是讀取命令;/WE為低電平時,是寫入命令。下圖是K4M51163PG-BG75關于列讀取的真值表

?

從上圖可知,列尋址信號與讀取命令是同時發(fā)出的,雖然列地址線與行尋址共用,但CAS(Column Address Strobe,列地址選通)信號則可以區(qū)分開行與列尋址的不同,再配合A0~A9來確定具體的列地址,請注意行有效和列尋址命令時RAS和CAS的電平變化,上圖可以轉(zhuǎn)化為類似下面的時序圖,可以加強理解

?

我們知道,在發(fā)送列讀取命令時必須要有與行有效命令有一個間隔,這個間隔被定義為tRCD,即RAS to CAS Delay(RAS 至CAS延遲),也可以理解為行選通周期,這應該是根據(jù)芯片存儲陣列電子元件響應時間(從一種狀態(tài)到另一種狀態(tài)變化的過程)所制定的延遲,下圖是K4M51163PG-BG75對這個參數(shù)的要求

?

tRCD是SDRAM的一個重要時序參數(shù)。廣義的tRCD以時鐘周期數(shù)為單位,比如Trcd=2,就代表延遲周期為兩個時鐘周期,具體到確切的時間,則要根據(jù)時鐘頻率CLK(也即S3C2440A送過來的HCLK)而定,又上圖可看出tRCD要滿足tRCD>=22.5ns,已知HCLK=400/3Mhz,可算出HCLK的一個時鐘周期時間=1/133Mhz=7.5188ns,所以tRCD的時間要求是至少為3個clock,根據(jù)S3C2440A內(nèi)存控制器相關寄存器BANKCONn的下圖描述

?

可以看出,只要BANKCONn[3:2]位等于01或10,都可以滿足tRCD的要求,下圖有助于理解tRCD

?

2.4 數(shù)據(jù)輸出(讀取)

在選定列地址后,就已經(jīng)確定了具體的存儲單元,接下來的事情就是數(shù)據(jù)通過數(shù)據(jù)I/O通道(DQ0~DQ15)輸出到內(nèi)存總線(SDATA0~SDATA31,兩片SDRAM)上。但是在CAS發(fā)出之后,仍要經(jīng)過一定的時間才能有數(shù)據(jù)輸出,從CAS與讀取命令發(fā)出到第一筆數(shù)據(jù)輸出的這段時間,被定義為CL(CAS Latency,CAS潛伏期)。由于CL只在讀取時出現(xiàn),所以CL又被成為讀取潛伏期(RL,Read Latency)。CL的單位與tRCD一樣,為時鐘周期數(shù),具體耗時由時鐘頻率決定。CL是SDRAM及其重要的一個參數(shù),如果這個參數(shù)設置不對,很有可能使bootloader的eboot不能更新NK,關于這個話題,我打算另外寫篇文章來共享我所遇到的問題及解決的辦法,下面接下來還是看看S3C2440A的寄存器MRSR中關于CL的設置

在結(jié)合K4M51163PG-BG75 datasheet中相關部分,見下圖

?

可以看出,CL的值應該是選擇3,因為我們的HCLK=133Mhz,所以寄存器MRSR[6:4]=011。

請注意,CAS并不是經(jīng)過CL周期之后才送達存儲單元。實際上CAS與RAS一樣時瞬間到達的,但CAS的響應時間要更快一些。為什么呢?現(xiàn)在我們采用的SDRAM芯片位寬是16bit,列數(shù)為1024(2^10),那么一個行地址要選通(就是一行中所有的存儲體選通,在這里一個存儲單元有16個存儲體)16*1024個存儲體,而一個列地址值需要選通16個存儲體。但存儲體中晶體管的反應時間仍會造成數(shù)據(jù)不可能與CAS在同一個上升沿觸發(fā),肯定要延后至少一個時鐘周期。

由于芯片體積的原因,存儲單元中的電容容量很小,所以信號要經(jīng)過放大來保證其有效的識別性,這個放大/驅(qū)動工作由Sense AMP負責,一個存儲體對應一個Sens AMP通道。

見下圖

?

但它(Sense AMP)要有一個準備時間才能保證信號的發(fā)送強度(事前還要進行電壓比較以進行邏輯電平的判斷),因此從數(shù)據(jù)I/O總線上有數(shù)據(jù)輸出之前的一個時鐘上升沿開始,數(shù)據(jù)即已傳向Sense AMP,也就是說此時數(shù)據(jù)已經(jīng)被觸發(fā),經(jīng)過一定的驅(qū)動時間最終傳向數(shù)據(jù)I/O總線進行輸出,這段時間稱之為tAC (Access Time from CLK,時鐘觸發(fā)后的訪問時間)。tAC的單位是ns,對于不同的頻率各有不同的明確規(guī)定,但必須要小于一個時鐘周期,否則會因訪問時間過長而使效率降低。K4M51163PG-BG75對這個參數(shù)定義為tSAC,下圖

?

從上圖可以知道K4M51163PG-BG75的時鐘周期最小為7.5ns,而tSAC的最大值為6ns,這個值小于7.5ns。需要強調(diào)的是,每個數(shù)據(jù)在讀取時都有tAC,包括在連續(xù)讀取中,只是在進行第一個數(shù)據(jù)傳輸?shù)耐瑫r就開始了第二個數(shù)據(jù)的tAC。下圖有助于對tAC參數(shù)的理解

?

CL的數(shù)值不能超出芯片的設計規(guī)范,否則會導致內(nèi)存的不穩(wěn)定,甚至不能更新NK和不能正常啟動系統(tǒng),而且它也不能在數(shù)據(jù)讀取前臨時更改。CL周期在開機初始化過程中的MRS階段設置。

?

2.5 數(shù)據(jù)輸入(寫)

數(shù)據(jù)寫入的操作也是在tRCD之后進行的,但此時沒有了CL(記住,CL只出現(xiàn)在讀取操作中),下圖時數(shù)據(jù)輸入和輸出的真值表

?

從圖可以看出,數(shù)據(jù)輸入和數(shù)據(jù)輸出的唯一區(qū)別就是,在數(shù)據(jù)輸入時,/WE信號有效(低電平有效)。數(shù)據(jù)信號由SDRAM控制器發(fā)出,輸入時只需要直接傳到數(shù)據(jù)輸入寄存器(Data input register),然后再由寫入驅(qū)動器進行對存儲電容的充電操作,因此數(shù)據(jù)可以與CAS同時發(fā)送,也就是說寫入延遲為0。不過,數(shù)據(jù)并不是即時地寫入存儲電容,因為選通三極管(就如讀取時一樣)與電容的充電必須要有一段時間,所以數(shù)據(jù)的真正寫入需要一定的周期。

2.6 突發(fā)長度

突發(fā)(Burst)是指在同一行中相鄰的存儲單元連續(xù)進行數(shù)據(jù)傳輸?shù)姆绞?#xff0c;連續(xù)傳輸所涉及到存儲單元(列)的數(shù)量就是突發(fā)長度(Burst Lengths,簡稱BL),下圖是S3C2440A的關于BL的類型及長度的描述

?

從上圖可看出S3C2440A的內(nèi)存控制器只支持sequential的BT類型,及只支持1個字節(jié)的突發(fā)長度,下圖是K4M51163PG-BG75支持的BT類型及長度

?

從上圖可知在A3=0且A0~A2均為1時,支持的突發(fā)長度是full page(全頁),全頁突發(fā)傳輸是指bank里的一行中所有存儲單元(2^10=1024)從頭至尾進行連續(xù)傳輸,不過這種針對芯片的頁定義是狹義的,我們常用的則是廣義上的頁,我們知道內(nèi)存系統(tǒng)的每次傳輸都是以一個SDRAM芯片位寬為單位的(K4M51163PG-BG75的位寬為16bit),而我們系統(tǒng)是采用兩片K4M51163PG-BG75。在每次尋址時,每個SDRAM芯片所得到的bank地址與行地址都是相同的。這樣在全頁操作中,就等于對內(nèi)存系統(tǒng)中這兩個SDRAM芯片內(nèi)同一個bank同一行的所有存儲單元讀/寫,那就是2*2^10=2048個存儲單元,這就是廣義上的頁。

突發(fā)傳輸技術,只要指定其實列地址與突發(fā)長度,內(nèi)存就會一次地自動對后面相應數(shù)量的存儲單元進行讀/寫而不需要內(nèi)存控制器連續(xù)地提供列地址。這樣,除了第一筆數(shù)據(jù)的傳輸需要若干個周期(主要是之前的延遲,一般是tRC + CL)外,其后每個數(shù)據(jù)只需要一個周期即可獲得,下圖有助于理解突出傳輸

?

2.7 預充電

由于SDRAM的尋址具有獨占性,所以在進行完讀寫操作后,如果要對同一個bank的另一行進行尋址,就要將原來有效(工作)的行關閉,重新發(fā)送行/列地址。Bank關閉現(xiàn)有工作行,準備打開新行的操作就是預充電(Precharge)。預充電可以通過命令控制,也可以通過輔助設定讓SDRAM在每次讀寫操作之后自動進行預先充電。實際上,預充電是一種對工作行中的所有存儲體進行數(shù)據(jù)重寫,并對行地址進行復位,同時釋放sense –AMP,下圖是關于預充電的控制真值表圖

?

從上圖可看出地址線A10控制著是否進行在讀寫之后對當前bank自動進行預充電,這就是上文所說的“輔助設定”。而在單獨的預充電命令中,A10則控制著是對指定的bank還是所有的bank進行預先充電,前者需要提供bank的地址,后者只需將A10信號置于高電平。

在發(fā)出預充電命令之后,要經(jīng)過一段時間才能允許發(fā)送RAS行有效命令打開新的工作行,這個間隔被稱為tRP(Precharge command Period,預充電有效周期)。和tRCD、CL一樣,tRP的單位也是時鐘周期數(shù),K4M51163PG-BG75對這個參數(shù)見下圖

?

從上圖可看出tPR的最小值是22.5ns,S3C2440A的內(nèi)存控制器相關部分見下圖

?

為了滿足tPR>=22.5ns,而每個clock周期是7.5ns,所以至少需要3個clock,那么只要Trp位的值是01或10都可以提供滿足要求的tPR給SDRAM芯片。

2.8 刷新

之所以成為SDRAM,就是因為它要不斷進行刷新(Refresh)才能保留住數(shù)據(jù),因此它是SDRAM最重要的操作。刷新操作與預充電中重寫的操作一樣,都是用sense-AMP先讀后寫。但為什么有預充電操作還要進行刷新呢?因為預充電是對一個或所有bank中的工作行操作,并且是不定期的,而刷新則是有固定的周期,依次對所有行進行操作,以保留那些久久沒經(jīng)歷重寫的存儲體中的數(shù)據(jù)。但與所有bank預充電不同的是,這里的行是指所有bank中地址相同的行,而預充電中各bank中的工作行地址并不是一定是相同的。

那么要隔多長時間重復一次刷新呢?目前公認的標準是,存儲體中電容的數(shù)據(jù)有效保存期上限是64ms,也就是說每一行刷新的循環(huán)周期是64ms。這樣的刷新速度就是:行數(shù)量/64ms。

K4M51163PG-BG75對這個參數(shù)的描述如下圖所示

?

這里的8K實際就是8192(2^13),8k就代表這個芯片中每個bank的行數(shù)。刷新命令一次對一行有效,發(fā)送間隔也是隨著行總數(shù)而變化,8192行時就是64ms/80192=7.8125us。

刷新操作分為兩種:自動刷新(auto refresh,簡稱AR)與自刷新(self refresh,簡稱SR)。不論是何種刷新方式,都不需要外部提供行地址信息,因為這是一個內(nèi)部的自動操作。對于AR,SDRAM內(nèi)部有一個行地址生成器(也稱刷新計時器)用來自動的依次生成行地址。由于刷新是針對一行中的所有存儲體進行,所以無需列尋址,或則會說CAS在RAS之前有效。所以,AR又稱CBR(CAS Before RAS,列提前于行定位)式刷新。由于刷新涉及到所有的bank,因此在刷新過程中,所有的bank都停止工作,而每次刷新所占用的時間對于不同的SDRAM芯片的值不同,K4M51163PG-BG75對這個參數(shù)描述如下圖所示:

?

可以看出在11(80ns/7.5ns=10)個時鐘周期內(nèi),所有的工作指令只能等待而無法執(zhí)行,我們知道每個7.8125us發(fā)送一次行刷新命令,也就是說在1041(7.8125us/7.5ns)個時鐘周期內(nèi),有11個時鐘周期是用于等待一行的刷新。

SR則主要用于休眠模式低功耗狀態(tài)下的數(shù)據(jù)保存,這方面最著名的應用就是STR(Suspend to RAM,休眠掛起于內(nèi)存)。在發(fā)出AR命令時,將CKE置于無效狀態(tài),就進入了SR模式,下圖是K4M51163PG-BG75的相關描述

?

可以看出,當發(fā)出AR命令后,如果將CKE置為電平(無效狀態(tài)),就進入了SR模式,此時不再依靠系統(tǒng)時鐘工作,而是根據(jù)內(nèi)部的時鐘進行刷新操作,這部分和系統(tǒng)進入睡眠時的應用有緊密的聯(lián)系,后面深入學習系統(tǒng)進入睡眠部分時再做總結(jié)。在SR期間除了CKE之外的所有外部信號都是無效的(無需外部提供刷新命令)。


本文來自CSDN博客,轉(zhuǎn)載請標明出處:http://blog.csdn.net/chinesedragon2010/archive/2010/07/22/5756587.aspx

總結(jié)

以上是生活随笔為你收集整理的基于S3C2440A+SDRAM(K4M51163)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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