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

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

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

FPGA學(xué)習(xí)系列:20. ram控制器的設(shè)計(jì)(調(diào)用IP核)

FPGA學(xué)習(xí)交流 ? 2018-06-18 19:24 ? 次閱讀

設(shè)計(jì)背景:

隨機(jī)存取存儲(chǔ)器(random access memory,RAM)又稱作"隨機(jī)存儲(chǔ)器",是與CPU直接交換數(shù)據(jù)的內(nèi)部存儲(chǔ)器,也叫主存(內(nèi)存)。它可以隨時(shí)讀寫,而且速度很快,通常作為操作系統(tǒng)或其他正在運(yùn)行中的程序的臨時(shí)數(shù)據(jù)存儲(chǔ)媒介。

存儲(chǔ)單元的內(nèi)容可按需隨意取出或存入,且存取的速度與存儲(chǔ)單元的位置無關(guān)的存儲(chǔ)器。這種存儲(chǔ)器在斷電時(shí)將丟失其存儲(chǔ)內(nèi)容,故主要用于存儲(chǔ)短時(shí)間使用的程序。 按照存儲(chǔ)單元的工作原理,隨機(jī)存儲(chǔ)器又分為靜態(tài)隨機(jī)存儲(chǔ)器(英文:Static RAM,SRAM)和動(dòng)態(tài)隨機(jī)存儲(chǔ)器(英文Dynamic RAM,DRAM)。

設(shè)計(jì)原理:

本次設(shè)計(jì)我們通過調(diào)用我們的RAM的IP核來給它寫我們的控制器,來實(shí)現(xiàn)RAM的可讀可寫的特點(diǎn)。

我們?cè)O(shè)計(jì)的是RAM的深度為256,我們先寫256個(gè)數(shù),然后再讀出我們寫的256個(gè)數(shù)。值得一說的是,我們的讀寫標(biāo)志是高位為寫標(biāo)志,低位為讀標(biāo)志。

設(shè)計(jì)步驟,打開我么的調(diào)用IP核的界面,然后下一步:

image.png

在下面的選項(xiàng)中選出我們RAM,如圖所示,然后起一個(gè)我們的輸出名,然后下一步:

image.png

在下面的頁面中我們?cè)O(shè)置我們的位寬和深度,然后設(shè)置如下,下一步:

image.png

下面的頁面中,問我們?cè)O(shè)置不設(shè)置我們的輸出寄存器,我們不要設(shè)置,如下,然后下一步:

image.png

然后下一步,下一步,直接到下面的界面,選擇生成.inst文件,然后完成。

image.png

設(shè)計(jì)架構(gòu)圖:

image.png

設(shè)計(jì)代碼:

頂層模塊

0moduleram(clk ,rst_n ,q); //輸入輸出端口設(shè)置

1 inputclk;

2 inputrst_n;

3

4 output[7:0]q;

5

6 wire[7:0]data;

7 wirewren;

8 wire[7:0]address;

9

10 ram_contl ram_contl( //例化我們的RAM控制器

11 .clk(clk),

12 .rst_n(rst_n),

13 .data(data),

14 .wren(wren),

15 .address(address)

16 );

17 my_ram my_ram_inst ( //例化ip

18 .address (address),

19 .clock (clk),

20 .data (data),

21 .wren (wren ),

22 .q (q)

23 );

24endmodule

設(shè)計(jì)模塊

0moduleram_contl(clk,rst_n,data,wren,address);

1 inputclk;

2 inputrst_n;

3

4 outputreg[7:0]data; //輸出

5 outputregwren; //讀寫位

6 outputreg[7:0]address; //地址位

7

8 regstate;

9 always@(posedgeclk ornegedgerst_n)

10 if(!rst_n)

11 begin

12 data <=8'b0;

13 wren <=1'b0;

14 address <=8'b0;

15 state <=1'b0;

16 end

17 else

18 begin

19 case(state)

20 0:begin

21 wren <=1'b1; //打開寫使能,寫我們的數(shù)據(jù)

22 if(address <255)

23 begin

24 address <=address +1'b1;//地址加一,

25 data <=data +1'b1;//數(shù)據(jù)加一

26 end

27 else

28 begin

29 address <=1'b0; //寫完后打開讀

30 data <=1'b0;

31 state <=1;

32 wren <=1'b0;

33 end

34 end

35 1:begin

36 if(address <255) //讀出我們的數(shù)據(jù)

37 begin

38 address <=address +1'b1;

39 end

40 else

41 begin

42 address <=1'b0;

43 state <=0;

44 end

45 end

46 default:state <=0;

47 endcase

48 end

49endmodule

測(cè)試模塊

0`timescale1ns/1ps

1

2moduleram_tb();

3 regclk;

4 regrst_n;

5

6 wire[7:0]q;

7

8 initialbegin

9 clk =1'b1;

10 rst_n =1'b0;

11

12 #100.1rst_n =1'b1;

13

14 #200000.1$stop;

15

16 end

17

18 always#10clk =~clk;

19

20ramram_dut (

21 .clk(clk),

22 .rst_n(rst_n),

23 .q(q)

24 );

25

26endmodule

仿真:

在圖中我們可以看到,我們寫入的數(shù)據(jù),和我們讀出的數(shù)據(jù)是相同的。

image.png

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

    關(guān)注

    1624

    文章

    21539

    瀏覽量

    600518
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    關(guān)于FPGA IP

    對(duì)于深入學(xué)習(xí)使用FPGA的小伙伴們,特別是一些復(fù)雜的、大規(guī)模的設(shè)計(jì)應(yīng)用,適宜的IP核對(duì)開發(fā)能起到事半功倍的作用。IP的概念與我們sdk里庫
    發(fā)表于 04-29 21:01

    FPGAIP使用技巧

    IP : 根據(jù)項(xiàng)目需求選擇合適的IP,如FIFO、RAM、FIR濾波、SDRAM
    發(fā)表于 05-27 16:13

    FPGA IP的相關(guān)問題

    我用的是xinlinx spartan6 FPGA,我想知道它的IPRAM是與FPGA獨(dú)立的,只是集成在了一起呢,還是占用了
    發(fā)表于 01-10 17:19

    xilinx FPGA的FFT IP調(diào)用

    有沒有大神可以提供xilinx FPGA的FFT IP調(diào)用的verilog 的參考程序,最近在學(xué)習(xí)FFT的
    發(fā)表于 12-25 17:05

    基于FPGA的數(shù)據(jù)采集控制器IP的設(shè)計(jì)方案和實(shí)現(xiàn)方法研究

    此提供了新的解決方案。IP(IP Core)是具有特定電路功能的硬件描述語言程序,可較方便地進(jìn)行修改和定制,以提高設(shè)計(jì)效率[3]。本文研究了基于FPGA的數(shù)據(jù)采集
    發(fā)表于 07-09 07:23

    基于Avalon總線的可配置LCD控制器IP的設(shè)計(jì)

    基于Avalon總線的可配置LCD 控制器IP的設(shè)計(jì) 本文討論了基于Avalon 總線流傳輸?shù)呐渲肔CD 顯示控制器IP
    發(fā)表于 02-09 09:34 ?27次下載

    IIC總線控制器IP設(shè)計(jì)

    本文詳述了一種基于AMBA總線接口的IIC總線控制器IP設(shè)計(jì),給出了該IP的系統(tǒng)結(jié)構(gòu)以及各個(gè)子模塊的詳細(xì)設(shè)計(jì)方法,并對(duì)該
    發(fā)表于 07-17 16:20 ?21次下載

    基于FPGA的SOC外部組件控制器IP的設(shè)計(jì)

    本文側(cè)重于介紹IP 模塊中組件控制器的設(shè)計(jì)和實(shí)現(xiàn)。一個(gè)基于FPGA 的LCD 控制器設(shè)計(jì)作為例子被介紹。這個(gè)組件控制器設(shè)計(jì)屬于固
    發(fā)表于 12-22 14:00 ?1287次閱讀
    基于<b class='flag-5'>FPGA</b>的SOC外部組件<b class='flag-5'>控制器</b><b class='flag-5'>IP</b>的設(shè)計(jì)

    基于FPGA的SD卡控制器IP

    基于FPGA的SD卡控制器IP,以驗(yàn)證可用。
    發(fā)表于 11-06 09:50 ?10次下載

    vivado調(diào)用IP詳細(xì)介紹

    大家好,又到了每日學(xué)習(xí)的時(shí)間了,今天咱們來聊一聊vivado 調(diào)用IP。 首先咱們來了解一下vivado的IP
    的頭像 發(fā)表于 05-28 11:42 ?3.7w次閱讀

    學(xué)習(xí)SDRAM控制器設(shè)計(jì) 能讓你掌握很多FPGA知識(shí)

    學(xué)習(xí)FPGA的過程中,注意是在學(xué)習(xí)過程中,聯(lián)系FPGA的使用技巧,強(qiáng)烈建議嘗試設(shè)計(jì)一個(gè)SDRAM控制器,不要使用
    發(fā)表于 02-15 15:04 ?845次閱讀

    FPGA實(shí)現(xiàn)基于Vivado的BRAM IP的使用

    ? Xilinx公司的FPGA中有著很多的有用且對(duì)整個(gè)工程很有益處的IP,比如數(shù)學(xué)類的IP,數(shù)字信號(hào)處理使用的
    的頭像 發(fā)表于 12-29 15:59 ?1.1w次閱讀

    FPGA學(xué)習(xí)筆記:PLL IP的使用方法

    濾波、SDRAM控制器、PCIE接口等),不可能每次使用都要用戶自行設(shè)計(jì),所以可以將其設(shè)計(jì)成 參數(shù)可修改的模塊 ,其他用戶可以直接調(diào)用。具有復(fù)雜功能和商業(yè)價(jià)值的IP
    的頭像 發(fā)表于 08-22 15:04 ?4216次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>學(xué)習(xí)</b>筆記:PLL <b class='flag-5'>IP</b><b class='flag-5'>核</b>的使用方法

    FPGA學(xué)習(xí)筆記:RAM IP的使用方法

    我們知道除了只讀存儲(chǔ)外還有隨機(jī)存取存儲(chǔ),這一篇將介紹另一種 存儲(chǔ)類IP ——RAM的使用方法。RA
    的頭像 發(fā)表于 08-29 16:46 ?3244次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>學(xué)習(xí)</b>筆記:<b class='flag-5'>RAM</b> <b class='flag-5'>IP</b><b class='flag-5'>核</b>的使用方法

    FPGA實(shí)現(xiàn)基于Vivado的BRAM IP的使用

    Xilinx公司的FPGA中有著很多的有用且對(duì)整個(gè)工程很有益處的IP,比如數(shù)學(xué)類的IP,數(shù)字信號(hào)處理使用的
    的頭像 發(fā)表于 12-05 15:05 ?1381次閱讀