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

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

生活随笔

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

编程问答

[FPGA系列] SDRAM项目实战总结

發(fā)布時(shí)間:2023/12/20 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [FPGA系列] SDRAM项目实战总结 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ? ? 這個(gè)項(xiàng)目里面包含了大量的知識(shí)點(diǎn),內(nèi)容比較復(fù)雜,為了方便后續(xù)復(fù)習(xí),對(duì)其中的內(nèi)容進(jìn)行一個(gè)大概的梳理。

一、項(xiàng)目介紹

????????設(shè)計(jì)并實(shí)現(xiàn)一個(gè) SDRAM 數(shù)據(jù)讀寫(xiě)控制器,使用 PC 機(jī)通過(guò)串口向 SDRAM 寫(xiě)入 10 字節(jié)數(shù)據(jù),并將寫(xiě)入的 10 字節(jié)數(shù)據(jù)讀出,通過(guò)串口回傳至 PC 機(jī),在串口助手上位機(jī)上打印顯示回傳數(shù)據(jù)。

? ? ? ? 項(xiàng)目中用到的SDRAM型號(hào)為W9825G6KH , 存 儲(chǔ) 容 量 為 256Mbit(32MByte),地址位寬 13 位,數(shù)據(jù)位寬 16 位。

二、思路整理

? ? ? ? 這個(gè)項(xiàng)目大大小小調(diào)用了13個(gè)模塊,其模塊框圖如下所示。

? ? ? ? ?根據(jù)硬件設(shè)計(jì)的思路,其程序流向如下圖所示。

? ? ? ? ?端口數(shù)和線路連接雖然很多,但只要弄清楚每個(gè)端口的作用和每個(gè)模塊的作用,整個(gè)項(xiàng)目就會(huì)清晰很多。

? ? ? ? ?整體大致可以分為三個(gè)模塊:

? ? ? ? ①sdram_ctrl:這個(gè)模塊的作用是將對(duì)SDRAM最底層的讀寫(xiě)、刷新、初始化等操作進(jìn)行了封裝,留出基本的地址線、數(shù)據(jù)線、命令線等,方便后續(xù)直接對(duì)SDRAM進(jìn)行讀寫(xiě)操作。

? ? ? ? ②sdram_top:這個(gè)模塊是在sdram_ctrl基礎(chǔ)上,加入了fifo模塊,并進(jìn)行封裝,整個(gè)模塊具有了基本的緩沖功能,方便后續(xù)跨時(shí)鐘域?qū)DRAM進(jìn)行讀寫(xiě)操作。

? ? ? ? ③uart_sdram:這個(gè)是最頂層的模塊,在本項(xiàng)目中,我們使用了uart通信實(shí)現(xiàn)PC與SDRAM間數(shù)據(jù)交互,加入了fifo_read模塊,對(duì)SDRAM讀出的數(shù)據(jù)進(jìn)行緩存,然后提供給uart_tx模塊將數(shù)據(jù)輸出。

? ? ? ? 其他模塊,比如對(duì)SDRAM進(jìn)行基本操作的模塊,可以根據(jù)SDRAM數(shù)據(jù)手冊(cè)進(jìn)行編寫(xiě),從下至上,步步為營(yíng),每個(gè)模塊仿真沒(méi)有問(wèn)題后,一步步封裝引用,到最后水到渠成。

三、項(xiàng)目總結(jié)(細(xì)節(jié)知識(shí)整理)

????????1、SDRAM的自動(dòng)刷新操作

? ? ? ? SDRAM的存儲(chǔ)體是利用電容能夠保持電荷以及可充放電的特性制成,電容所存儲(chǔ)的電荷會(huì)隨時(shí)間慢慢釋放,這就需要不斷刷新為電容充電,以保證存儲(chǔ)數(shù)據(jù)可靠性。

????????SDRAM的刷新操作是周期性的,在兩次刷新的間隔可以進(jìn)行數(shù)據(jù)的相關(guān)操作,所以我們需要計(jì)算出執(zhí)行刷新操作的時(shí)間間隔。目前國(guó)際公認(rèn)的標(biāo)準(zhǔn)是,存儲(chǔ)體中電容的數(shù)據(jù)有效保存期上限是64ms,也就是說(shuō)每一行刷新的循環(huán)周期最大為 64ms,那么刷新速度就是:行數(shù)/64ms。

? ? ? ? 刷新命令一次對(duì)一行有效,刷新間隔也是隨總行數(shù)而變化,由此可知,刷新周期計(jì)算公式為:T = 64ms \ 總行數(shù)?。要注意的是,這里算出的刷新周期是允許的最大周期,一般設(shè)置的比這個(gè)周期小一點(diǎn)更穩(wěn)妥。

????????2、仲裁模塊

? ? ? ? 在項(xiàng)目中,我們共涉及到SDRAM的4種操作方式,初始化操作、自動(dòng)刷新操作、數(shù)據(jù)寫(xiě)操作和數(shù)據(jù)讀操作,其中初始化操作優(yōu)先級(jí)最高,SDRAM只有經(jīng)過(guò)初始化操作后,才可被正常使用。SDRAM初始化后,自動(dòng)刷新操作周期執(zhí)行,而讀和寫(xiě)操作不定時(shí)執(zhí)行,為了協(xié)調(diào)好這些模塊的運(yùn)行,我們使用仲裁模塊對(duì)其進(jìn)行處理。

? ? ? ? 使用狀態(tài)機(jī)來(lái)表示仲裁模塊的執(zhí)行:

?????????由圖可知, SDRAM 上電后處于初始狀態(tài)(IDLE),初始化完成后,狀態(tài)跳轉(zhuǎn)到仲裁狀態(tài)(ARBIT);當(dāng)狀態(tài)機(jī)處于仲裁狀態(tài)時(shí),若自動(dòng)刷新請(qǐng)求、讀請(qǐng)求、寫(xiě)請(qǐng)求中的任意一路請(qǐng)求有效,且其他兩路請(qǐng)求信號(hào)無(wú)效,狀態(tài)跳轉(zhuǎn)到有效請(qǐng)求信號(hào)對(duì)應(yīng)狀態(tài),對(duì)應(yīng)操作完成后,對(duì)應(yīng)結(jié)束信號(hào)有效,狀態(tài)跳回到仲裁狀態(tài),等待下一次請(qǐng)求信號(hào)。

????????若多路請(qǐng)求信號(hào)同時(shí)有效,優(yōu)先執(zhí)行優(yōu)先級(jí)較高的操作,默認(rèn)優(yōu)先級(jí)為自動(dòng)刷新操作>數(shù)據(jù)寫(xiě)操作>數(shù)據(jù)讀操作。

????????各路請(qǐng)求信號(hào)只有在仲裁狀態(tài)才會(huì)被響應(yīng),這就保證某一操作正在執(zhí)行時(shí),不會(huì)被新的請(qǐng)求信號(hào)打斷。

? ? ? ? 3、數(shù)據(jù)流銜接

? ? ? ? 項(xiàng)目能夠順利實(shí)現(xiàn),很重要的一點(diǎn)就是要處理好數(shù)據(jù)流之間的銜接關(guān)系,也就是“打拍打地恰到好處”。比如項(xiàng)目中用到了FIFO模塊,我們使用的FIFO 讀模式為normal模式,這樣從FIFO中讀取數(shù)據(jù)會(huì)有“延一拍”的效果,在使能信號(hào)到達(dá)后,還要再來(lái)一拍數(shù)據(jù)才會(huì)輸出,而寫(xiě)模式卻沒(méi)有滯后,所以要理清每個(gè)端口數(shù)據(jù)流接收與發(fā)送之間的時(shí)間關(guān)系,設(shè)計(jì)時(shí)才會(huì)成竹在胸。

參考資料:《FPGA Verilog開(kāi)發(fā)實(shí)戰(zhàn)指南——基于Altera EP4CE10》

總結(jié)

以上是生活随笔為你收集整理的[FPGA系列] SDRAM项目实战总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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