一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

SDRAM控制器設(shè)計(jì)之control_interface.v代碼解析

友晶FPGA ? 來源:友晶FPGA ? 2025-02-19 15:31 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

control_interface.v文件里已經(jīng)寫了非常詳盡的代碼備注。本文繼續(xù)對該文件代碼進(jìn)行講解,并給出SignalTap波形輔助讀者理解。

下圖是本案例的功能框圖。

4da4e62c-ee93-11ef-9310-92fbcf53809c.png

control_interface.v文件對應(yīng)圖中SDRAM接口控制模塊,該模塊主要控制SDRAM命令的產(chǎn)生,包括空操作命令、預(yù)充電命令、自動(dòng)刷新命令、加載模式寄存器命令和讀寫命令等。如下是該模塊的RTL視圖:

4dbd60da-ee93-11ef-9310-92fbcf53809c.png

根據(jù)IS42R16320D 的時(shí)序圖可知該SDRAM上電后約經(jīng)過 200us 才進(jìn)入穩(wěn)定期,在這段時(shí)間不可以對 SDRAM 做任何的操作(除了發(fā)送NOP命令), 200us 之后要對所有的區(qū)塊進(jìn)行預(yù)充電,接著再給SDRAM發(fā)送 8次自動(dòng)刷新命令,最后才進(jìn)行SDRAM模式寄存器的設(shè)定。完成了初始化過程之后,SDRAM 才能進(jìn)行正常的讀寫操作。整個(gè)過程可簡化為下圖所示:

4ddceb80-ee93-11ef-9310-92fbcf53809c.png

control_interface.v模塊工作時(shí)鐘100MHz,由Sdram_Control.v的PLL模塊提供。以100MHz時(shí)鐘周期計(jì)算,200us需要經(jīng)歷20000個(gè)周期。另外,參考IS42R16320D的datasheet或者參考02-SDRAM控制器的設(shè)計(jì)——解讀IS42R16320D的數(shù)據(jù)手冊可知預(yù)充電最少要2個(gè)時(shí)鐘周期,自動(dòng)刷新命令完成需要至少8個(gè)時(shí)鐘周期,模式寄存器的設(shè)定至少也要2個(gè)時(shí)鐘周期。為了保險(xiǎn)起見,將預(yù)充電、自動(dòng)刷新和模式寄存器設(shè)定等操作的等待周期都設(shè)定為20個(gè)時(shí)鐘周期(也就是0.2us)。

4df9b45e-ee93-11ef-9310-92fbcf53809c.png

代碼里面首先設(shè)計(jì)兩個(gè)計(jì)數(shù)器,第一個(gè)計(jì)數(shù)器是初始化動(dòng)作的計(jì)時(shí)器。為了保險(xiǎn)起見,初始化先等待24000個(gè)時(shí)鐘周期:

4e1d45b8-ee93-11ef-9310-92fbcf53809c.png

從SignalTap波形圖可以看到INIT_REQ在init_timer從0計(jì)數(shù)到24000以后拉低了。INIT_REQ拉高(綠色部分)指示了SDRAM開機(jī)后的輸入穩(wěn)定期。

4e3e5cc6-ee93-11ef-9310-92fbcf53809c.png

把INIT_REQ和init_timer局部放大如下:

4e53622e-ee93-11ef-9310-92fbcf53809c.png

代碼里面實(shí)現(xiàn)預(yù)充電操作等待20個(gè)時(shí)鐘周期:

4e6c6cf6-ee93-11ef-9310-92fbcf53809c.png

4e878180-ee93-11ef-9310-92fbcf53809c.png

代碼里面實(shí)現(xiàn)每次自動(dòng)刷新都等待20個(gè)時(shí)鐘周期(總共8次):

4ea6e958-ee93-11ef-9310-92fbcf53809c.png

4ec40e84-ee93-11ef-9310-92fbcf53809c.png

第二個(gè)計(jì)數(shù)器是正常讀寫時(shí)的自動(dòng)刷新間隔計(jì)時(shí)器,因?yàn)镾DRAM必須要不斷進(jìn)行刷新才能保留數(shù)據(jù) ,由IS42R16320D數(shù)據(jù)手冊可知每一行刷新的循環(huán)周期最多為64ms。DE10-Standard開發(fā)板上的SDRAM有13位的行地址,共有8192行,而每一次的刷新命令只能對一行有效,所以在最長 64ms / 8192 = 7.8125us 的時(shí)間間隔內(nèi),就必須發(fā)一次刷新的命令。在工作時(shí)鐘100M下,這里刷新周期設(shè)置為768。

4ede362e-ee93-11ef-9310-92fbcf53809c.png

從SignalTap波形圖可以看到timer的值在輸入穩(wěn)定等待期(INIT_REQ為高)一直是968:

4f05d4c2-ee93-11ef-9310-92fbcf53809c.png

INIT_REQ拉低以后timer開始倒數(shù)計(jì)數(shù):

4f21bdae-ee93-11ef-9310-92fbcf53809c.png

初始化操作結(jié)束后timer的計(jì)數(shù)周期就變成了768:

4f44b1c4-ee93-11ef-9310-92fbcf53809c.png

可能讀者疑惑這里為什么中間有三個(gè)周期timer的值是65535、65534、65533,而不是馬上變?yōu)?68呢?

其實(shí)可以結(jié)合這個(gè)圖看:

4f65ef88-ee93-11ef-9310-92fbcf53809c.png

1. timer 為0;

2. timer為0 的下個(gè)時(shí)鐘周期REFRESH_cycle為1,timer值繼續(xù)減一,為65535;

3. 繼而下個(gè)時(shí)鐘周期 do_refresh 為1,timer值繼續(xù)減一,為65534;

4. 繼而下個(gè)時(shí)鐘周期 REF_ACK 為1,timer值繼續(xù)減一,為65533;
5. 繼而在下個(gè)時(shí)鐘周期的時(shí)候 timer 賦值為768。

注意本文件當(dāng)中REFRESH_init和REFRESH_cycle都是指示自動(dòng)刷新操作的命令,都會(huì)控制SDRAM控制器去發(fā)送RASCASWE組合是001的命令,它們只是指示的是不同狀態(tài)下的自動(dòng)刷新。

4f838912-ee93-11ef-9310-92fbcf53809c.png

讀寫指令譯碼的代碼部分如下,當(dāng)CMD值為000時(shí),對應(yīng)NOP指令,當(dāng)CMD值為001對應(yīng)讀指令,當(dāng)CMD值為010時(shí)對應(yīng)寫指令:

4f9eb6f6-ee93-11ef-9310-92fbcf53809c.png

再來看CM_ACK和CMD_ACK信號。大家可能會(huì)疑惑為什么要弄CM_ACK和CMD_ACK這兩個(gè)變量呢?

4fba8d90-ee93-11ef-9310-92fbcf53809c.png

首先看輸入信號CM_ACK。由command.v文件可知當(dāng)do_refresh || do_reada || do_writea || do_precharge || do_load_mode有效時(shí),CM_ACK=1:

4fd4890c-ee93-11ef-9310-92fbcf53809c.png

而只有接收到WRITEA、READA、PRECHARGE、LOAD_MODE等命令時(shí)do_refresh 、 do_reada 、 do_writea 、do_precharge 、 do_load_mode這些信號會(huì)拉高:

4ff96006-ee93-11ef-9310-92fbcf53809c.png

500c6ba6-ee93-11ef-9310-92fbcf53809c.png

所以CM_ACK信號用于接收指令。它主要指示預(yù)充電指令、初始化狀態(tài)下的自動(dòng)更新命令、加載模式寄存器指令和讀寫指令的接收。

因?yàn)榻邮罩噶畈灰欢〞?huì)執(zhí)行,CMD_ACK用于判斷接收到的指令是否執(zhí)行。所以當(dāng)CM_ACK有效(接收到了指令),CMD_ACK無效(無效說明當(dāng)前沒有別的指令在執(zhí)行)時(shí),才令CMD_ACK有效。

CM_ACK與CMD_ACK信號波形參考下圖:

5033c5fc-ee93-11ef-9310-92fbcf53809c.png

PS:本文的波形圖來自文件~sdramcontroloutput_filesinterface.stp

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

    關(guān)注

    114

    文章

    17113

    瀏覽量

    184324
  • SDRAM
    +關(guān)注

    關(guān)注

    7

    文章

    442

    瀏覽量

    56318
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    9005

    瀏覽量

    153763
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4900

    瀏覽量

    70751

原文標(biāo)題:04-SDRAM控制器的設(shè)計(jì)——control_interface.v代碼解析

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

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

    的設(shè)計(jì)——control_interface.v代碼解析; http://www.www27dydycom.cn/d/6458523.html ? SDRAM指令執(zhí)行模塊解讀參考:04-
    的頭像 發(fā)表于 03-04 10:49 ?1543次閱讀
    <b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>的設(shè)計(jì)——<b class='flag-5'>Sdram_Control.v</b><b class='flag-5'>代碼</b><b class='flag-5'>解析</b>(異步FIFO讀寫模塊、讀寫<b class='flag-5'>SDRAM</b>過程)

    DDR_SDRAM控制器的VHDL代碼已經(jīng)測試

    DDR_SDRAM控制器的VHDL代碼已經(jīng)測試
    發(fā)表于 08-24 16:49

    【開源騷客】《輕松設(shè)計(jì)SDRAM控制器》第八講—命令解析模塊講解

    的哦,哈哈,大家先別急。在這一講中,我們就來完成讀模塊,然后對這個(gè)SDRAM控制器稍加完善就可以應(yīng)用到項(xiàng)目中了。本講主要內(nèi)容如下:命令解析模塊的作用詳細(xì)介紹;命令解析模塊時(shí)序設(shè)計(jì);命令
    發(fā)表于 05-08 22:31

    SDRAM控制器參考設(shè)計(jì),Lattice提供的VHDL源代碼

    SDRAM控制器參考設(shè)計(jì),Lattice提供的VHDL源代碼 -- Permission: --   Lattice Semiconductor grants
    發(fā)表于 06-14 08:54 ?93次下載

    使用Verilog實(shí)現(xiàn)基于FPGA的SDRAM控制器

    摘 要:介紹了SDRAM的特點(diǎn)和工作原理,提出了一種基于FPGA的SDRAM控制器的設(shè)計(jì)方法,使用該方法實(shí)現(xiàn)的控制器可非常方便地對SDRAM
    發(fā)表于 06-20 13:04 ?2371次閱讀

    SDRAM控制器簡易化設(shè)計(jì)

    SDRAM存儲(chǔ)芯片擁有快速讀寫的性能,可以應(yīng)用以回波模擬系統(tǒng)作為數(shù)據(jù)高速緩存。SDRAM芯片是由SDRAM控制器
    發(fā)表于 10-24 15:08 ?0次下載
    <b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>簡易化設(shè)計(jì)

    DDR SDRAM控制器參考設(shè)計(jì)VHDL代碼

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

    DDR SDRAM控制器verilog代碼

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

    EPM1240的SDRAM控制器的設(shè)計(jì)

    EPM1240的SDRAM控制器的設(shè)計(jì)
    發(fā)表于 10-31 08:24 ?21次下載
    EPM1240的<b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>的設(shè)計(jì)

    SDRAM控制器的設(shè)計(jì)

    邏輯復(fù)雜,接口方式與普通的存儲(chǔ)差異很大。為了解決這個(gè)矛盾,需要設(shè)計(jì)專用的SDRAM控制器,使用戶像使用SRAM -樣方便的使用SDRAM??紤]到
    發(fā)表于 11-28 19:51 ?5次下載
    <b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>的設(shè)計(jì)

    FPGA讀寫SDRAM的實(shí)例和SDRAM的相關(guān)文章及一些SDRAM控制器設(shè)計(jì)論文

    本文檔的主要內(nèi)容詳細(xì)介紹的是FPGA讀寫SDRAM的實(shí)例和SDRAM的相關(guān)文章及一些SDRAM控制器設(shè)計(jì)論文主要包括了:FPGA讀寫SDRAM
    發(fā)表于 12-25 08:00 ?57次下載
    FPGA讀寫<b class='flag-5'>SDRAM</b>的實(shí)例和<b class='flag-5'>SDRAM</b>的相關(guān)文章及一些<b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>設(shè)計(jì)論文

    如何使用FPGA設(shè)計(jì)SDRAM控制器

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

    基于SDRAM控制器軟核的Verilog設(shè)計(jì)

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

    PIC32系列參考手冊DDR SDRAM控制器

    電子發(fā)燒友網(wǎng)站提供《PIC32系列參考手冊DDR SDRAM控制器.pdf》資料免費(fèi)下載
    發(fā)表于 09-25 11:39 ?0次下載
    PIC32系列參考手冊<b class='flag-5'>之</b>DDR <b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>

    SDRAM控制器設(shè)計(jì)command.v代碼解析

    command.v文件對應(yīng)圖中SDRAM指令執(zhí)行模塊,它會(huì)從SDRAM接口控制模塊接收指令,然后產(chǎn)生控制信號直接輸出到
    的頭像 發(fā)表于 02-25 10:32 ?521次閱讀
    <b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>設(shè)計(jì)<b class='flag-5'>之</b>command.<b class='flag-5'>v</b><b class='flag-5'>代碼</b><b class='flag-5'>解析</b>