在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

SDRAM控制器的設計——Sdram_Control.v代碼解析(異步FIFO讀寫模塊、讀寫SDRAM過程)

友晶FPGA ? 來源:友晶FPGA ? 2025-03-04 10:49 ? 次閱讀

前言

SDRAM控制器里面包含5個主要的模塊,分別是PLL模塊,異步FIFO 寫模塊,異步FIFO讀模塊,SDRAM接口控制模塊,SDRAM指令執行模塊。

4fe50166-f897-11ef-9310-92fbcf53809c.png

其中異步FIFO模塊解讀參考:05-SDRAM控制器的設計——異步FIFO的調用;

http://m.xsypw.cn/d/6468023.html

SDRAM接口控制模塊解讀參考:03-SDRAM控制器的設計——control_interface.v代碼解析;
http://m.xsypw.cn/d/6458523.html

SDRAM指令執行模塊解讀參考:04-SDRAM控制器的設計——command.v代碼解析

http://m.xsypw.cn/d/6466276.html

PLL時鐘模塊

SDRAM控制器模塊里面的PLL將27MHz時鐘倍頻出2個100MHz時鐘,其中一個100MHz時鐘給SDRAM里面的模塊使用;另外一個100MHz時鐘相移-109.8°以后輸出給SDRAM器件。(相移-109.8°是這個SDRAM器件在DE10-Standard開發板上的時序約束經驗值)

502118b8-f897-11ef-9310-92fbcf53809c.png

PLL參數設置如下:

5038e718-f897-11ef-9310-92fbcf53809c.png

關于Sdram_Control.v模塊時鐘分布請參考下圖的藍色走線:

504ee306-f897-11ef-9310-92fbcf53809c.png

其實也可以直接從FPGA 的50MHz時鐘經過PLL得到100M時鐘傳遞給工程里其他模塊工作,這里設置27M是為了讓大家看看FIFO跨時鐘域的一個工作情況。

數據路徑控制

SDRAM的數據口是一個inout接口,要做成三態門控制,控制電路代碼如下:

50901d12-f897-11ef-9310-92fbcf53809c.png

從command.v傳過來的oe信號為高時,將數據送到DQ端口,此為SDRAM的寫入操作;當oe信號為低時,DQ輸入為高阻,三態門截止,DQ端口的數據送出給讀fifo模塊進行緩存,此為SDRAM的讀操作。(關于oe信號的控制請參考04-SDRAM控制器的設計——command.v代碼解析)

自動且連續的讀寫操作

接下來是設置完成連續讀寫(64個數據)以及進行突發中斷的操作。

command.v模塊里面已經設置突發長度為整頁(整頁可讀寫數據量為1024),所以每次讀寫64個數據后需要提前中斷突發操作。根據IS42R16320D手冊可知下發突發中斷命令或者預充電命令可提前結束突發操作。

50cb2042-f897-11ef-9310-92fbcf53809c.png

該案例選擇預充電命令來結束突發操作。參考前面的章節可知預充電命令是RAS_N, CAS_N,WE_N組合為010。

50df1d2c-f897-11ef-9310-92fbcf53809c.png

為了拉出相關信號查看其波形,先要暫時把這些信號輸出,不然這些信號會被Quartus在綜合操作時優化掉。

50f57f4a-f897-11ef-9310-92fbcf53809c.png

從波形圖可以看到,確實在每次讀或者寫64個數據后,都會跟著出現一個預充電命令來結束全頁突發操作。

5120268c-f897-11ef-9310-92fbcf53809c.png

如果上面總體的圖縮小看不清,可以參考下面放大的圖:

51376838-f897-11ef-9310-92fbcf53809c.png

可能大家會疑惑為什么不直接寫256個數據,然后讀256個數據?這里設置64個數據長度是為了讓大家看到多次讀和寫是如何進行的。

如果想設置256個數據也是可以的,這時就把自動讀設計成寫完256個數據后自動進行。

5162007a-f897-11ef-9310-92fbcf53809c.png

此時的波形圖如圖所示(一次性寫完256個數據,一次性讀完256個數據):

5176bc22-f897-11ef-9310-92fbcf53809c.png

指令的產生

讀過程通過Pre_RD和mRD信號的組合標志出連續讀的起始時間,通過Read信號標志出連續讀的過程。

寫過程通過Pre_WR和mWR信號的組合標志出連續寫的起始時間,通過Write信號標志出連續寫的過程。

當FIFO讀模塊中的數據量低于一次需要讀取的數據量時,mRD置1;直到連續讀完成時,mRD才會清零。即mRD保持為0或1的狀態都會持續多個周期,因此我們無法通過電平狀態來判斷是否產生開始讀信號Read,所以這里采取用寄存器保存mRD的前一狀態,并與當前狀態進行比較,當前一狀態為0,當前狀態為1,即產生上升沿時,開始讀信號Read信號置1。寫信號同理。

51b458c0-f897-11ef-9310-92fbcf53809c.png

提前一個時鐘送出異步FIFO寫模塊的讀出使能信號是因為寫數據沒有延遲,寫命令發出的當拍要準備好數據,所以讀使能信號提前一拍給出。

51cb8662-f897-11ef-9310-92fbcf53809c.png

51e8774a-f897-11ef-9310-92fbcf53809c.png

52026e52-f897-11ef-9310-92fbcf53809c.png

寫入地址和讀出地址

256個數據寫入節奏是這樣的:

當KEY1被按下,觸發了counter產生數據0~255,這個數據同步傳遞給異步FIFO寫模塊進行緩存。當系統檢測到write_side_fifo_rusedw1值大于64時,異步FIFO寫模塊的讀出端口會把FIFO里面的數據讀出,傳遞給SDRAM器件進行儲存。FIFO一次讀出64個數據。總共會讀出4次。

52410504-f897-11ef-9310-92fbcf53809c.png

從top文件傳遞過來的地址0開始寫SDRAM,一次寫64個數據,寫第二筆64個數據時初始地址是0+64,寫第三筆64個數據時初始地址是64+64=128,寫第四筆64個數據時初始地址是128+64=192。

5255a900-f897-11ef-9310-92fbcf53809c.png

526e0414-f897-11ef-9310-92fbcf53809c.png

256個數據讀出節奏是這樣的:

異步FIFO讀模塊從離開初始化狀態且離開復位狀態且檢測到read_side_fifo_wusedw1小于64時開始讀取SDRAM器件的數據。

5284a462-f897-11ef-9310-92fbcf53809c.png

其復位狀態的離開主要看KEY0信號和wr_latch信號:

52972024-f897-11ef-9310-92fbcf53809c.png

第一筆64個數據(0~63)是等異步FIFO寫模塊已經完成256個字節的緩存操作(其中的192個數據已寫入到SDRAM器件了)以后讀出。此時讀SDRAM的地址送出是0。

第二筆64個數據(64~127)是等異步FIFO讀模塊讀出第一個數據0的下一個時鐘節拍讀出,因為此時read_side_fifo_wusedw1的值64-1等于63又小于64。此時讀SDRAM的地址送出是64。

第三筆64個數據(128~191)是等到異步FIFO讀模塊數據又只剩63個數據時讀出,此時地址送出是128。

第四筆64個數據(192~255)同樣是等到異步FIFO讀模塊數據又只剩63個數據時讀出,此時地址送出是192。

52ab620a-f897-11ef-9310-92fbcf53809c.png

無論是SDRAM寫操作還是讀操作,在讀寫完256個數據后又會從地址0開始重復讀寫:

52d63e08-f897-11ef-9310-92fbcf53809c.png

拿SDRAM讀操作來說,當讀完256個數據還繼續觸發讀操作時抓取波形圖可以看到:

52ed8f68-f897-11ef-9310-92fbcf53809c.png

可能讀者會有疑惑,當異步FIFO寫模塊第四次累計了64個數據時,為什么沒有馬上寫入SDRAM器件,而是先從SDRAM器件里面讀出64個數據緩存到異步FIFO讀模塊,等這64個數據讀完以后再繼續往SDRAM里面寫最后的64個數據(192~255)。這里是因為if語句存在優先級,電路是先判斷有沒有讀指令,當有讀命令時就先處理讀操作。當異步FIFO寫模塊寫入了第四個64個數據后,異步FIFO讀模塊就離開了復位狀態,系統會自動發送讀命令,此時就開始SDRAM器件數據的讀取操作。

530fc63c-f897-11ef-9310-92fbcf53809c.png

PS

本文的Signaltap波形圖文件對應:~sdramcontroloutput_filesSdram_Control.stp

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

    關注

    3

    文章

    392

    瀏覽量

    44055
  • 代碼
    +關注

    關注

    30

    文章

    4856

    瀏覽量

    69434
  • SDRAM控制器
    +關注

    關注

    0

    文章

    29

    瀏覽量

    8229

原文標題:07-SDRAM控制器的設計——Sdram_Control.v代碼解析

文章出處:【微信號:友晶FPGA,微信公眾號:友晶FPGA】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    【開源騷客】《輕松設計SDRAM控制器》第九講—解密讀寫FIFO

    終于到第九講了,第九講是這套《輕松設計SDRAM控制器》的最后一講。相信大家也是非常的期待這套教程的終結,在前面的8講內容,我們已經介紹完了SDRAM控制器、串口部分和命令
    發表于 05-08 22:38

    多路讀寫SDRAM接口設計

    摘要:介紹SDRAM的主要控制信號和基本命令時序,提出一種應用于解復用的支持多路讀寫SDRAM接口設計,為需要大容量存儲的電路設計提供了
    發表于 12-03 15:20

    【每周FPGA案例】至簡設計系列- SDRAM讀寫控制器

    第1節 SDRAM讀寫控制器--作者:小黑同學本文為明德揚原創及錄用文章,轉載請注明出處!1.1 總體設計1.1.1 概述同步動態隨機存取內存(synchronousdynamic
    發表于 10-15 15:16

    具有時間隱藏特性的數據塊讀寫SDRAM控制器

    針對SDRAM 控制器讀寫數據塊訪問延時長、速度慢的問題,提出時間隱藏技術,將其應用于SDRAM 控制器的設計,采用FPGA實現。實驗結果表
    發表于 03-25 09:00 ?15次下載

    基于FPGA的高速SDRAM控制器的視頻應用

    基于FPGA的高速SDRAM控制器的視頻應用 0 引言    SDRAM(同步動態存儲)是一種應用廣泛的存儲
    發表于 11-04 09:56 ?946次閱讀

    SDRAM控制器簡易化設計

    SDRAM存儲芯片擁有快速讀寫的性能,可以應用以回波模擬系統作為數據高速緩存SDRAM芯片是由SDRAM
    發表于 10-24 15:08 ?0次下載
    <b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>簡易化設計

    NiosII的奇幻漂流-Chap09-SDRAM-v1.0

    介紹在 Nios II 中利用 SDRAM 控制模塊實現對 SDRAM 存儲芯片—— K4M561633G 的讀寫,通過本章,你能學到
    發表于 12-14 15:40 ?0次下載

    DDR SDRAM控制器參考設計VHDL代碼

    Xilinx FPGA工程例子源碼:DDR SDRAM控制器參考設計VHDL代碼
    發表于 06-07 11:44 ?19次下載

    DDR SDRAM控制器verilog代碼

    Xilinx FPGA工程例子源碼:DDR SDRAM控制器verilog代碼
    發表于 06-07 14:13 ?38次下載

    華清遠見FPGA代碼-SDRAM讀寫控制的實現與Modelsim

    華清遠見FPGA代碼-SDRAM讀寫控制的實現與Modelsim仿真
    發表于 10-27 18:07 ?26次下載

    SDRAM控制器的設計

    在很多通信芯片及系統的開發中,常常需要用到存儲容量大、讀寫速度快的存儲。在各種隨機存儲器件中,SDRAM的價格低、體積小、速度快、容量大,是比較理想的器件。但是,與SRAM相比較,SDRAM
    發表于 11-28 19:51 ?5次下載
    <b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>的設計

    FPGA讀寫SDRAM的實例和SDRAM的相關文章及一些SDRAM控制器設計論文

    本文檔的主要內容詳細介紹的是FPGA讀寫SDRAM的實例和SDRAM的相關文章及一些SDRAM控制器設計論文主要包括了:FPGA
    發表于 12-25 08:00 ?56次下載
    FPGA<b class='flag-5'>讀寫</b><b class='flag-5'>SDRAM</b>的實例和<b class='flag-5'>SDRAM</b>的相關文章及一些<b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>設計論文

    如何使用FPGA設計SDRAM控制器

    針對SDRAM 操作繁瑣的問題,在對SDRAM 存儲和全頁突發式操作進行研究的基礎上,提出一種簡易SDRAM 控制器的設計方法。該設計方法
    發表于 12-18 16:13 ?6次下載
    如何使用FPGA設計<b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>

    基于SDRAM控制器軟核的Verilog設計

    SDRAM控制邏輯復雜,使用很不方便。 為了解決這個矛盾,需要設計專用的SDRAM控制器,使系統用戶象使用SRAM一樣方便的使用SDRAM
    的頭像 發表于 06-30 09:16 ?2794次閱讀
    基于<b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>軟核的Verilog設計

    SDRAM控制器設計之command.v代碼解析

    command.v文件對應圖中SDRAM指令執行模塊,它會從SDRAM接口控制模塊接收指令,然后
    的頭像 發表于 02-25 10:32 ?112次閱讀
    <b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>設計之command.<b class='flag-5'>v</b><b class='flag-5'>代碼</b><b class='flag-5'>解析</b>
    主站蜘蛛池模板: 欧美日韩在线一本卡 | 国产福利网站 | 狠狠色丁香久久婷婷 | 热门国产xvideos中文 | 亚洲午夜综合网 | 欧美一级看片免费观看视频在线 | 尻逼尻逼 | 加勒比综合 | 国产精品一区电影 | 国产在线理论片免费播放 | 午夜影院操 | 久草五月 | 韩国特黄特色a大片免费 | 四虎tv在线观看884aa | 亚洲国产精品第一区二区 | 狠狠色婷婷狠狠狠亚洲综合 | 一级片 在线播放 | 免费在线黄色网址 | 亚洲免费看片 | 手机看片1024精品日韩 | 色视频免费在线观看 | www.妖精视频| 亚洲视频入口 | 欧美猛交xxxx免费看 | 男人午夜视频 | 亚洲天堂免费 | 久久久久久免费观看 | 午夜一级毛片免费视频 | 亚色在线观看 | 奇米影视7777久久精品 | 亚洲欧洲一区二区三区在线观看 | 色综合久久综合欧美综合图片 | 免费一级毛毛片 | 亚洲伦理中文字幕一区 | 天天干天天拍天天射 | 亚洲第一香蕉视频 | 欧美三级第一页 | 伊伊成人网| aaa一级 | 一级黄免费 | 天天色综合天天 |