0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

零基礎(chǔ)學FPGA - SDRAM(理論篇)

電子工程師 ? 來源:至芯科技 ? 作者:至芯科技 ? 2021-03-25 17:08 ? 次閱讀

一、從結(jié)構(gòu)說起:

1、P-bank

SDRAM,也即我們的內(nèi)存,我們的電腦手機等設(shè)備都離不開我們的內(nèi)存。一個設(shè)備運行速度的快慢,內(nèi)存起到關(guān)鍵性的作用,就像我們的電腦,開機之后一般都是把一些應(yīng)用程序加載到內(nèi)存里運行,因為RAM的讀寫速度要遠遠大于ROM,而我們的SDRAM,即同步動態(tài)隨機存儲器,就是通過不斷地刷新,充電,防止電容電量的丟失,從而保留住數(shù)據(jù)。與CPU交換數(shù)據(jù),根據(jù)CPU位寬的不同,要相應(yīng)選擇不同的SDRAM芯片,SDRAM芯片的位寬不等,我們用的這片SDRAM是16位位寬,假設(shè)我們的CPU是64位的,那么我們要想與之匹配,就必須用到4片這樣的SDRAM,才能構(gòu)成64位的位寬,那么由這4片SDRAM 構(gòu)成的芯片集合,我們稱之為物理bank,即P-bank,CPU通過控制SDRAM的片選信號,控制相應(yīng)的芯片

2、L-bank

再往芯片里面看,每一片SDRAM里面,有幾個存儲陣列,我們開發(fā)板上的都是4個存儲陣列,這樣的存儲陣列,我們稱它為邏輯bank,即L-bank。每個存儲陣列里面有2^12行,2^8列,我們可以通過控制SDRAM的地址線,來選中相應(yīng)的行與列,進而確定一個存儲單元,每個存儲單元里面就是我們的數(shù)據(jù)了,我們的芯片是16位的,所以我們的存儲單元也就是16位的。

這樣一來,CPU通過片選信號選中一片SDRAM,然后訪問某一個L-bank,通過行列地址確定某一個存儲單元,將存儲單元里的數(shù)據(jù)讀出來送到CPU。這樣看來,芯片的位寬就是我們的存儲單元的位寬,若是一同選中所有SDRAM芯片,那么輸出的也就是16X4=64位的CPU位寬了。

3、芯片容量 與 內(nèi)存容量

我們來算一下SDRAM的芯片容量,一片SDRAM芯片假設(shè)有4個L-bank,2^12行,2^8列,那么它就含有4 x 2^12 x 2^8個存儲單元,又因為每個存儲單元里面有16位數(shù)據(jù),因此,我們的芯片容量為 4 x 2^12 x 2^8 x 16 = 64Mbit = 16MB,如果是一個P-bank里面是4片SDRAM的話,那么我們的內(nèi)存容量就是4 x 16 = 64MB

我們再算一下,假如我們的SDRAM的芯片位寬是8位的但是芯片容量不變,即芯片位寬是8位,芯片容量是16MB,那么,要想與64位的CPU匹配,我們需要8片SDRAM,那么我們的內(nèi)存容量就是8 x 16 = 128MB,由此可見,在芯片容量相同的情況下,位寬越小,內(nèi)存容量越大。這就說明了,為什么我們的臺式電腦要用位寬小的芯片,因為臺式電腦空間大,位寬越小,用的芯片越多,內(nèi)存也就越大,相反,我們的手機就必須用大位寬的芯片,從而節(jié)約空間,但是付出了內(nèi)存容量小的代價,這也說明了為什么我們的手機或者筆記本電腦不如臺式機運行速度快的原因,在內(nèi)存方面差了一大截

下面是我用畫圖做的一個框架,幫助大家理解

3d1ff2ac-8c67-11eb-8b86-12bb97331649.jpg

二、工作原理其實不難

這部分我們就按照代碼的順序開始講起

1、初始化

40506362-8c67-11eb-8b86-12bb97331649.jpg

初始化開始,SDRAM需要經(jīng)過一個200us的穩(wěn)定延時,這部分在代碼部分直接做一個計數(shù)器就好了,下面來講一下預(yù)充電

預(yù)充電

官方解釋是 L-Bank關(guān)閉現(xiàn)有工作行,準備打開新行的操作就是預(yù)充電。也就是說,我們發(fā)送了一個行地址,有發(fā)送了一個列地址,找到了相應(yīng)的存儲單元之后,如果我們想訪問另一個地址,而這個地址不在這一行內(nèi),那么我們就需要先將這一工作行關(guān)閉,這個過程就是預(yù)充電,然而剛開始我們還沒有發(fā)送行列地址,只是先做一下初始化,以后等我們要發(fā)送行列地址的時候,為了手動設(shè)置預(yù)充電麻煩,我們可以告訴SDRAM在每次尋址完之后自動進行預(yù)充電即可

自刷新

我們之所以叫DRAM,就是因為它是動態(tài)的,就是每隔一段時間進行一次刷新,確保那些沒有被讀寫過的數(shù)據(jù)不會以為時間長導致電容漏電,從而導致數(shù)據(jù)丟失,因此,每隔一段時間要對存儲單元進行一次自刷新,由于存儲體中電容的數(shù)據(jù)有效保存期上限是64ms,因此,我們需要每64ms對所有的存儲體進行一次刷新,又因為我們有2^12= 4096行,那么我們來算一下,每刷新一行所要的時間是64ms/4096 = 15us 也就是說,我們每15us需要發(fā)送一個自刷新命令

模式寄存器配置

40997f70-8c67-11eb-8b86-12bb97331649.jpg

模式寄存器的配置主要還是用于后面的讀寫操作的,我們先看上面,是地址總線,首先大家不要被他迷惑,我們的地址總線是12位的,行列共用,他前面的兩位bank地址不屬于地址總線范圍,只是在配置的時候需要用到那兩位,所以會將其加進來,下面來一一解釋。

關(guān)于操作模式 : 操作模式可以分為突發(fā)讀,突發(fā)寫,單一寫等,突發(fā)讀就是我們在發(fā)送了行列地址后,找到了我們要的存儲單元地址,對它進行讀,如果設(shè)置了突發(fā)讀的話,那么我們在讀取第一個數(shù)據(jù)之后,如果想讀取這個存儲單元后面的一個存儲單元的數(shù)據(jù)的話,就不必再次發(fā)送行列地址了,他會自動的讀取接下來的數(shù)據(jù),至于讀幾個存儲單元,就涉及到突發(fā)長度,一般是2,4,8,全頁的方式,全頁就是將這一行上的數(shù)據(jù)一連串的全部讀出或?qū)懭?,同時還涉及到突發(fā)傳輸方式,分為順序和交錯傳輸,順序傳輸就是依次讀后面的幾個存儲單元,交錯傳輸就是隔一個讀一個。

關(guān)于潛伏期 : 潛伏期就是我們發(fā)送了行列地址后,數(shù)據(jù)并不是馬上到達數(shù)據(jù)總線,而是要經(jīng)過一段潛伏期,一般為2到3個時鐘周期,注意潛伏期不是延遲,潛伏期是發(fā)送列地址后數(shù)據(jù)已經(jīng)有效,只是還沒有達到一定的高度,或者說是信號不夠強,要經(jīng)過一定的放大才能輸出,所以說潛伏期不是延遲

2、工作狀態(tài)

初始化結(jié)束以后,SDRAM就可以正常工作了,這個時候,如果收到讀寫信號,并且收到地址,那么SDRAM就會進行相應(yīng)的尋址,并將數(shù)據(jù)作相應(yīng)處理。

讀狀態(tài)

上面說了,SDRAM的地址是行列共用,也就是說行地址和列地址共用那條12位的地址線,假設(shè)某個時間我們要讀一個數(shù)據(jù),那么就先要發(fā)送12位地址線,就是行地址,當然也要接著發(fā)送的是P-bank的地址,但是這個時候還沒有發(fā)送讀信號,讀信號要和列地址一起發(fā)送,我們稱這個狀態(tài)為行有效(RAS)

發(fā)送完行地址之后,就要發(fā)送列地址,但是不能馬上發(fā)送,要經(jīng)過一定的延時,這個延時我們叫做行有效到列有效的延時,即Trcd

經(jīng)過Trcd之后,我們需要發(fā)送列地址,即列有效(CAS),這樣我們就確定了我們邏輯單元所在的位置了,在發(fā)送列地址的同時,給SDRAM發(fā)送讀命令。有人會問,既然地址線是行列共用,那么12位的地址線,列地址才占8位,其他的怎么用?沒錯,列地址是只占了8位,還有第8到11位地址線沒用,這個時候我們就將其補零就好了,湊夠12位地址發(fā)送給SDRAM,但是我們有一位地址很重要就是A10位,A10位置1的話,那么我們每次進行完一次讀寫,SDRAM就會自動預(yù)充電,因此,我們一般把地址總線的第8到11位賦值0100,然后與列地址合并,再發(fā)給SDRAM。

40cb85ec-8c67-11eb-8b86-12bb97331649.jpg

發(fā)送完列地址后,也就是讀命令后,就要進入潛伏期Tcl,剛剛說了,數(shù)據(jù)在潛伏期里,要經(jīng)過一定的放大驅(qū)動,達到一定的高度之后才會被輸出,這個放大的過程是在一個叫做S-AMP的通道里完成的,每一個存儲體都對應(yīng)一個S-AMP通道 ,因此從數(shù)據(jù)I/O總線上有數(shù)據(jù)輸出之前的一個時鐘上升沿開始,數(shù)據(jù)即已傳向S-AMP,也就是說此時數(shù)據(jù)已經(jīng)被觸發(fā),經(jīng)過一定的驅(qū)動時間最終傳向數(shù)據(jù)總線進行輸出,這段時間稱之為tAC。

在后面的時序分析中,我們會用到這個參數(shù),即數(shù)據(jù)在SDRAM芯片中的傳輸時間Tco,數(shù)據(jù)輸出到SDRAM數(shù)據(jù)總線上以后會有一個保持時間Toh,也是我們以后做時序分析要用到的參數(shù),這兩個參數(shù)告訴我們,數(shù)據(jù)從有效前的一個時鐘周期開始算起,最大要經(jīng)過Tac時間才會輸出到數(shù)據(jù)總線,最慢需要Toh時間因此,在后面的時序分析中我們要計算,數(shù)據(jù)在SDRAM芯片的傳輸時間 Toh 《 Tco 《 Tac

4106b720-8c67-11eb-8b86-12bb97331649.jpg

寫狀態(tài)

寫狀態(tài)跟讀狀態(tài)有一點不同,就是寫狀態(tài)沒有潛伏期,即行有效之后,等待Trcd后發(fā)送寫命令和列地址,數(shù)據(jù)直接會寫到數(shù)據(jù)總線上,也就是說,寫數(shù)據(jù)是零延時的,但是,即使寫數(shù)據(jù)是零延時的,但是數(shù)據(jù)要進入SDRAM的存儲體還是需要時間的,這個時間叫做寫回延時Twr,試想,如果SDRAM工作在寫回延時狀態(tài),突然來了一個預(yù)充電,那么數(shù)據(jù)是不是就不能正確的被寫入了,因此,寫回延時不能和預(yù)充電同時進行。

4161caf2-8c67-11eb-8b86-12bb97331649.jpg

三、參數(shù)總結(jié)

好了,說了這么多,是不是感覺SDRAM的操作并不難,那么我們就來總結(jié)一下之前出現(xiàn)的一些參數(shù)吧,這些參數(shù)的消化,能夠幫我們更好的理解SDRAM的工作原理

1、RAS : 行有效

2、Trcd : 行地址到列地址的延時時間,單位是周期數(shù),一般為2到3個時鐘周期

3、CAS : 列有效,同時發(fā)送讀寫命令

4、 Tcl : 潛伏期,發(fā)生在讀狀態(tài),數(shù)據(jù)有效到出現(xiàn)在數(shù)據(jù)總線上的延時,單位為周期數(shù)

5、 Tac : 數(shù)據(jù)從存儲單元里出來之后,已經(jīng)進入S-AMP通道進行驅(qū)動與放大,到出現(xiàn)在數(shù)據(jù)總線上的時間

6、 Toh : 數(shù)據(jù)出現(xiàn)在數(shù)據(jù)總線上,并保持一段時間

7、 Trp : 在發(fā)出預(yù)充電命令之后,要經(jīng)過一段時間才能允許發(fā)送RAS行有效命令打開新的工作行

8 、Twr :寫狀態(tài)時的寫回延時,寫入的數(shù)據(jù)進入SDRAM存儲單元的時間

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1620

    文章

    21510

    瀏覽量

    598915
  • SDRAM
    +關(guān)注

    關(guān)注

    7

    文章

    420

    瀏覽量

    55047
收藏 人收藏

    評論

    相關(guān)推薦

    20.2-電磁桿在磁軌道的測試 零基礎(chǔ)入門智能車競賽 STM32電磁小車

    20.2-電磁桿在磁軌道的測試 零基礎(chǔ)入門智能車競賽 智能車競賽 電磁桿原理圖 電磁循跡小車 智能車電磁組 STM32電磁小車 電磁循跡小車 電磁循跡算法 智能車環(huán)島 智能車比賽規(guī)則 智能車競賽
    的頭像 發(fā)表于 08-20 10:52 ?415次閱讀
    20.2-電磁桿在磁軌道的測試 <b class='flag-5'>零基</b>礎(chǔ)入門智能車競賽 STM32電磁小車

    SDRAM的特點與應(yīng)用

    同步動態(tài)隨機存儲器(Synchronous Dynamic Random Access Memory,簡稱SDRAM)是一種基于同步時鐘的DRAM。
    的頭像 發(fā)表于 07-29 16:56 ?855次閱讀

    海靈犀FPGA基礎(chǔ)研實驗箱

    海靈犀FPGA基礎(chǔ)研實驗箱(EDU_H6_01_1V0)是由中科億海微電子科技(蘇州)有限公司(簡稱:中科億海微)自主研發(fā)設(shè)計的教學用具,由箱體、FPGA開發(fā)卡、LCD屏、USB下載線及相關(guān)實驗
    的頭像 發(fā)表于 06-13 08:11 ?767次閱讀
    海靈犀<b class='flag-5'>FPGA</b>基礎(chǔ)研<b class='flag-5'>學</b>實驗箱

    DDR SDRAMSDRAM功能及結(jié)構(gòu)差異

    在計算機運算速度發(fā)展的過程中,需要提高內(nèi)存的讀寫速率,只能通過提高時鐘頻率來提高SDRAM的讀寫速率。由于溫度等因素的影響,SDRAM的內(nèi)核時鐘頻率受限,無法進一步提升。
    發(fā)表于 04-06 09:26 ?1333次閱讀
    DDR <b class='flag-5'>SDRAM</b>和<b class='flag-5'>SDRAM</b>功能及結(jié)構(gòu)差異

    fpga哪些東西

    學習FPGA需要掌握一系列的知識和技能,主要包括以下幾個方面。
    的頭像 發(fā)表于 03-27 14:40 ?670次閱讀

    零基礎(chǔ)小白適不適合鴻蒙開發(fā)?

    ,自由流轉(zhuǎn);統(tǒng)一生態(tài),原生智能。隨著鴻蒙生態(tài)的壯大,投入鴻蒙開發(fā)的IT專業(yè)人才越來越多,對于從未接觸過此方面零基礎(chǔ)的學生而言,也是一次很不錯的職業(yè)轉(zhuǎn)向和技術(shù)提升的好機會。 什么是鴻蒙? ? 鴻蒙系統(tǒng)(HarmonyOS)是華為技
    的頭像 發(fā)表于 03-04 17:50 ?1552次閱讀
    <b class='flag-5'>零基</b>礎(chǔ)小白適不適合<b class='flag-5'>學</b>鴻蒙開發(fā)?

    FPGA用哪種開發(fā)板或?qū)嶒炂脚_比較好?

    剛開始FPGA,目前正在學理論知識,想通過用開發(fā)板或?qū)嶒炂脚_搞些東西,加深理解,不知道用哪種開發(fā)平臺比較好?
    發(fā)表于 02-06 22:56

    從入門到放棄……為什么你會覺得FPGA難學?如何學習FPGA?

    問:本人零基礎(chǔ),想學FPGA,求有經(jīng)驗的人說說,我應(yīng)該從哪入手,應(yīng)該看什么教程,應(yīng)該用什么學習板和開發(fā)板,看什么書等,希望有經(jīng)驗的好心人能夠給我一些引導。 如果想速成,那就上網(wǎng)看視頻吧,這樣主要
    的頭像 發(fā)表于 02-02 17:04 ?645次閱讀
    從入門到放棄……為什么你會覺得<b class='flag-5'>FPGA</b>難學?如何學習<b class='flag-5'>FPGA</b>?

    FPGA設(shè)計高級技巧 Xilinx

    FPGA設(shè)計高級技巧 Xilinx
    發(fā)表于 01-08 22:15

    零基礎(chǔ)入門 Hyperlynx 仿真教程

    電子發(fā)燒友網(wǎng)站提供《零基礎(chǔ)入門 Hyperlynx 仿真教程.pdf》資料免費下載
    發(fā)表于 12-22 10:49 ?22次下載

    Fpga Verilog SDRAM模塊—單字讀寫案例

    筆者與SDRAM有段不短的孽緣,它作為冤魂日夜不斷糾纏筆者。筆者嘗試過許多方法將其退散,不過屢試屢敗的筆者,最終心情像橘子一樣橙。
    的頭像 發(fā)表于 12-15 09:09 ?1169次閱讀
    <b class='flag-5'>Fpga</b> Verilog <b class='flag-5'>SDRAM</b>模塊—單字讀寫案例

    FPGA時序約束--基礎(chǔ)理論

    鐘偏差。 Tlogic與我們寫的HDL代碼有直接關(guān)系,Trouting是FPGA開發(fā)軟件綜合布線根據(jù)FPGA內(nèi)部資源情況進行布線產(chǎn)生的延時。 四、總結(jié) 本文介紹了FPGA時序約束的基礎(chǔ)
    發(fā)表于 11-15 17:41

    LOTO示波器_從開始手把手測電源開環(huán)增益/電源環(huán)路頻響曲線/PSM

    我們之前有篇文章從理論到實踐演示了如何測量電源環(huán)路的開環(huán)增益曲線,不過偏重于理論和原理,沒有很多細節(jié)的展現(xiàn),所以這片文章從另外的角度,從零基礎(chǔ)開始,手把手一步一步演示如果進行實操測試。
    的頭像 發(fā)表于 10-26 16:08 ?731次閱讀
    LOTO示波器_從<b class='flag-5'>零</b>開始手把手測電源開環(huán)增益/電源環(huán)路頻響曲線/PSM

    基于FPGA的一種SDRAM控制器簡易化設(shè)計方法

    電子發(fā)燒友網(wǎng)站提供《基于FPGA的一種SDRAM控制器簡易化設(shè)計方法.pdf》資料免費下載
    發(fā)表于 10-26 09:08 ?0次下載
    基于<b class='flag-5'>FPGA</b>的一種<b class='flag-5'>SDRAM</b>控制器簡易化設(shè)計方法

    手把手教你FPGA仿真

    電子發(fā)燒友網(wǎng)站提供《手把手教你FPGA仿真.pdf》資料免費下載
    發(fā)表于 10-19 09:17 ?2次下載
    手把手教你<b class='flag-5'>學</b><b class='flag-5'>FPGA</b>仿真