當(dāng)前位置:首頁 > 工業(yè)控制 > 電子設(shè)計自動化
[導(dǎo)讀] 今天我們來講的是SDRAM的架構(gòu)以及設(shè)計,這也是小墨第一次接觸架構(gòu),也談不上給大家講,就是把我理解的當(dāng)做一個筆記分享給大家,我也試著做了一個SDRAM 的架構(gòu)word文檔,在文章的后面,喜歡的朋友可以下載下來看一下

 今天我們來講的是SDRAM的架構(gòu)以及設(shè)計,這也是小墨第一次接觸架構(gòu),也談不上給大家講,就是把我理解的當(dāng)做一個筆記分享給大家,我也試著做了一個SDRAM 的架構(gòu)word文檔,在文章的后面,喜歡的朋友可以下載下來看一下,有什么錯誤也請積極指正,畢竟我也是沒有老師教,也是自己摸索的,難免有些不合理的地方。

一、SDRAM 工作部分

1、上電初始化

我們先來看第一部分,上電初始化。上電初始化我們知道,上電之后我們需要等待200us的穩(wěn)定期,這段時間我們可以用一個定時器來計數(shù),這沒什么問題,然后進入的是預(yù)充電部分,這個時候,預(yù)充電的時候,sdram_cmd模塊會檢測此時的初始化狀態(tài)機的狀態(tài),若處于預(yù)充電狀態(tài),那么sdram_cmd模塊向SDRAM發(fā)命令,具體命令sdram的datasheet里面有,發(fā)的是一個precharge,即預(yù)充電,發(fā)完命令之后,需要等待一段時間,來確保這個命令被SDRAM捕獲,這等待的時間,特權(quán)老師用的方式我覺得很好

用一個宏定義,當(dāng)計數(shù)器計數(shù)到相應(yīng)的時間后,預(yù)充電完成參數(shù)置位 即end_trp 置位,下面的用法也是一樣,即當(dāng)初始化狀態(tài)機進入預(yù)充電狀態(tài)i_pre時,計數(shù)器開啟,開始計數(shù),計數(shù)完成,也就是預(yù)充電結(jié)束的時候,計數(shù)器復(fù)位,這個復(fù)位的控制,可以用case語句來檢測初始化狀態(tài)機的狀態(tài),在相應(yīng)的狀態(tài)給予相應(yīng)的復(fù)位與置位

接下來是8個自刷新,操作和預(yù)充電一樣

到了模式寄存器的配置階段,我們需要選定L_bank,以及SDRAM工作模式的配置,當(dāng)sdram_cmd模塊檢測到初始化狀態(tài)機到達模式寄存器配置階段時,我們的給SDRAM的sdram_bank端口賦相應(yīng)的值,并且設(shè)置地址總線

當(dāng)初始化結(jié)束的時候,標(biāo)志位init_done置位,告訴工作狀態(tài)機,初始化狀態(tài)機已經(jīng)結(jié)束,進入工作狀態(tài)。下面是我用word做的上電初始化的狀態(tài)轉(zhuǎn)移圖

2、自刷新

初始化結(jié)束之后,SDRAM為了防止數(shù)據(jù)丟失,要進行自刷新,上一篇文章已經(jīng)講過了,刷新2^12行需要64ms,也就是每15us刷新一行,也就是我們需要每15us發(fā)送一次自刷新請求給SDRAM工作狀態(tài)機,狀態(tài)機一旦檢測到自刷新請求信號,就告訴sdram工作模塊,然后工作模塊就向SDRAM發(fā)送自刷新命令,即CMD_A_PEF

下面是自刷新的狀態(tài)轉(zhuǎn)移圖

3、讀寫狀態(tài)

初始化結(jié)束以后,SDRAM就處于工作狀態(tài),每15us進行一次自刷新,這個時候,如果想要讀或?qū)憯?shù)據(jù)的話,即向工作狀態(tài)機sdram_work_FSM發(fā)送讀寫請求,如果是讀請求,那么工作狀態(tài)機進入行有效狀態(tài),也即激活狀態(tài)w_active,此時,sdram_cmd模塊會發(fā)送行有效命令,即CMD_ACTIVEA

同時,我們需要將我們的12位行地址送給我們的sdram地址總線sdram_addr,然后便是一個等待時間段,TRCD,這個時間段里我們是不需要做什么工作的,只需等待TRCD結(jié)束

TRCD結(jié)束的時候,工作狀態(tài)機進入讀狀態(tài),此時,我們需要發(fā)送列地址選中我們的存儲單元,并告訴sdram_cmd模塊發(fā)送讀命令,這個過程是讀命令和列地址同時發(fā)送的。我們知道,讀命令發(fā)出之后,會進入潛伏期TCL。

這個狀態(tài)我們也不需要做什么,因為我們在模式寄存器配置階段已經(jīng)將各種參數(shù)配置好了,包括什么潛伏期長,突發(fā)讀寫長度之類的,等到潛伏期結(jié)束之后,SDRAM會自動進行讀數(shù)據(jù),而且讀的數(shù)據(jù)長度會跟我們之前設(shè)置的一樣長,這個讀數(shù)據(jù)的狀態(tài)需要時間,即我們的工作狀態(tài)機工作在w_rd狀態(tài),等待8個時鐘周期之后,所有的數(shù)據(jù)都已經(jīng)被送到數(shù)據(jù)總線。

這個時候我們需要等一會,因為我們在發(fā)送讀命令的時候,A10是置1的,也就是說,每次讀寫完之后要自動進行預(yù)充電,從而才可以打開新的工作行,這時,我們的工作狀態(tài)機即進入了w_rwait狀態(tài),等到預(yù)充電結(jié)束,才完成一次讀操作,返回初始狀態(tài),等待下一個請求的到來

下面是讀寫狀態(tài)轉(zhuǎn)移圖,由于寫狀態(tài)只是沒有潛伏期,寫完之后有一個寫回延時,其他地方與讀狀態(tài)相同,我就不再介紹了

二、模擬信號產(chǎn)生部分

我們先來想一下我們的要想測試我們的SDRAM控制器是否正確,都需要什么測試參數(shù)吧

1、 首先我們需要發(fā)送讀寫地址對吧,但是我們需要有一個間隔,即每隔一段時間發(fā)送一次寫地址,為什么呢?因為我們之前在模式寄存器配置的時候,定義了突發(fā)讀寫的長度為8,也就是我們發(fā)送一個地址,那么sdram會在連續(xù)的8個地址中連續(xù)寫8次數(shù),我們?nèi)绻侔l(fā)送地址,需要等到這8次地址寫完之后再發(fā)送下一個地址這個延時大概為640ns,也就是計數(shù)器為什么要計到3f的原因,下一個地址的發(fā)送就需要比之前的地址大8了,比如第一次我發(fā)送的是0地址,那,隔一段時間之后,我就需要發(fā)送8地址了。

讀地址也一樣,當(dāng)寫地址寫滿了之后,讓地址清零,從零地址讀起即可

還有再解釋一下,特權(quán)老師為什么定義22位的模擬地址,22位的模擬地址包括2位的L_BANK的地址,12位行地址和8位列地址。有人會問,為什么是行地址和列地址分開呢,不是行列地址共用嗎?注意這里只是模擬地址,到時候我們給地址總線賦值的時候是分開賦值的

2、然后我們需要產(chǎn)生遞增數(shù)據(jù),每640ns產(chǎn)生8個數(shù)即可

3、在發(fā)送遞增數(shù)據(jù)之前,我們需要發(fā)送寫請求信號,這個寫請求信號是要發(fā)送到我們接下來要講的FIFO里面,發(fā)送寫請求之后,數(shù)據(jù)進入FIFO,注意,這里的寫請求是發(fā)送給FIFO的,不是發(fā)送到SDRAM的,SDRAM的寫請求是由FIFO發(fā)出去的

有人會問,寫請求有了,是不是還該有讀請求,要知道,我們的數(shù)據(jù)是先寫到FIFO里面,再有SDRAM對FIFO進行讀操作,將寫進FIFO的數(shù)據(jù)再送到SDRAM,而我們從SDRAM中讀回的數(shù)據(jù),同樣要寫到FIFO里面,然后我們再從FIFO里面讀。是不是有人會問,這不是多此一舉嗎?其實不然,要知道我們的SDRAM是工作在100M的時鐘頻率下,而且是有相位偏移的,對我們FPGA來說是一個異步時鐘,如果我們不采用FIFO的形式,那很容易發(fā)生亞穩(wěn)態(tài)問題,導(dǎo)致系統(tǒng)不穩(wěn)定

三、數(shù)據(jù)緩存部分

1、寫FIFO

我來解釋一下,寫入時鐘,也就是我們FPGA的時鐘,50MHZ,在這個時鐘頻率下,我們需要給FIFO發(fā)送寫請求和遞增數(shù)據(jù),wrusedw反映了我寫入FIFO的占用量,當(dāng)sdram工作狀態(tài)機檢測到寫請求之后(FIFO發(fā)出的寫請求),會產(chǎn)生一個響應(yīng),告訴FIFO要讀數(shù)據(jù)了,這個響應(yīng)作為FIFO的讀信號,在100MHZ的時鐘頻率下,將我們寫入的數(shù)據(jù)讀走,送到SDRAM數(shù)據(jù)總線上

2、讀FIFO

讀FIFO跟寫FIFO相反,寫FIFO時鐘為100MHZ,在這個時鐘頻率下,我們將從SDRAM中讀回的數(shù)據(jù)寫到FIFO里面,注意這里我們還用了wrusedw,來反應(yīng)寫FIFO的占用量,也就是我們從SDRAM里讀了多少數(shù)據(jù),然后在50MHZ的時鐘下,將從SDRAM讀回的數(shù)據(jù)采集下來,送到顯示模塊來驗證是否是遞增數(shù)據(jù),這個顯示模塊我們用數(shù)碼管來顯示,比較方便,為了觀察清楚,我們可以在數(shù)碼管顯示模塊,每隔1S種發(fā)送一次讀FIFO請求,這樣在數(shù)碼管上,會每隔1秒鐘顯示一個遞增的數(shù)據(jù)了

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉