0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA学习系列:20. ram控制器的设计(调用IP核)

FPGA学习交流 2018-06-18 19:24 次阅读

设计背景:

随机存取存储器(random access memory,RAM)又称作"随机存储器",是与CPU直接交换数据的内部存储器,也叫主存(内存)。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。

存储单元的内容可按需随意取出或存入,且存取的速度与存储单元的位置无关的存储器。这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序。 按照存储单元的工作原理,随机存储器又分为静态随机存储器(英文:Static RAM,SRAM)和动态随机存储器(英文Dynamic RAM,DRAM)。

设计原理:

本次设计我们通过调用我们的RAM的IP核来给它写我们的控制器,来实现RAM的可读可写的特点。

我们设计的是RAM的深度为256,我们先写256个数,然后再读出我们写的256个数。值得一说的是,我们的读写标志是高位为写标志,低位为读标志。

设计步骤,打开我么的调用IP核的界面,然后下一步:

image.png

在下面的选项中选出我们RAM,如图所示,然后起一个我们的输出名,然后下一步:

image.png

在下面的页面中我们设置我们的位宽和深度,然后设置如下,下一步:

image.png

下面的页面中,问我们设置不设置我们的输出寄存器,我们不要设置,如下,然后下一步:

image.png

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

image.png

设计架构图:

image.png

设计代码:

顶层模块

0moduleram(clk ,rst_n ,q); //输入输出端口设置

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

设计模块

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; //打开写使能,写我们的数据

22 if(address <255)

23 begin

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

25 data <=data +1'b1;//数据加一

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) //读出我们的数据

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

测试模块

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

仿真:

在图中我们可以看到,我们写入的数据,和我们读出的数据是相同的。

image.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1625

    文章

    21619

    浏览量

    601157
收藏 人收藏

    评论

    相关推荐

    关于FPGA IP

    对于深入学习使用FPGA的小伙伴们,特别是一些复杂的、大规模的设计应用,适宜的IP核对开发能起到事半功倍的作用。IP的概念与我们sdk里库
    发表于 04-29 21:01

    FPGAIP使用技巧

    IP : 根据项目需求选择合适的IP,如FIFO、RAM、FIR滤波、SDRAM
    发表于 05-27 16:13

    FPGA IP的相关问题

    我用的是xinlinx spartan6 FPGA,我想知道它的IPRAM是与FPGA独立的,只是集成在了一起呢,还是占用了
    发表于 01-10 17:19

    xilinx FPGA的FFT IP调用

    有没有大神可以提供xilinx FPGA的FFT IP调用的verilog 的参考程序,最近在学习FFT的
    发表于 12-25 17:05

    基于FPGA的数据采集控制器IP的设计方案和实现方法研究

    此提供了新的解决方案。IP(IP Core)是具有特定电路功能的硬件描述语言程序,可较方便地进行修改和定制,以提高设计效率[3]。本文研究了基于FPGA的数据采集
    发表于 07-09 07:23

    基于Avalon总线的可配置LCD控制器IP的设计

    基于Avalon总线的可配置LCD 控制器IP的设计 本文讨论了基于Avalon 总线流传输的配置LCD 显示控制器IP
    发表于 02-09 09:34 27次下载

    IIC总线控制器IP设计

    本文详述了一种基于AMBA总线接口的IIC总线控制器IP设计,给出了该IP的系统结构以及各个子模块的详细设计方法,并对该
    发表于 07-17 16:20 21次下载

    基于FPGA的SOC外部组件控制器IP的设计

    本文侧重于介绍IP 模块中组件控制器的设计和实现。一个基于FPGA 的LCD 控制器设计作为例子被介绍。这个组件控制器设计属于固
    发表于 12-22 14:00 1304次阅读
    基于<b class='flag-5'>FPGA</b>的SOC外部组件<b class='flag-5'>控制器</b><b class='flag-5'>IP</b>的设计

    基于FPGA的SD卡控制器IP

    基于FPGA的SD卡控制器IP,以验证可用。
    发表于 11-06 09:50 10次下载

    vivado调用IP详细介绍

    大家好,又到了每日学习的时间了,今天咱们来聊一聊vivado 调用IP。 首先咱们来了解一下vivado的IP
    的头像 发表于 05-28 11:42 3.7w次阅读

    学习SDRAM控制器设计 能让你掌握很多FPGA知识

    学习FPGA的过程中,注意是在学习过程中,联系FPGA的使用技巧,强烈建议尝试设计一个SDRAM控制器,不要使用
    发表于 02-15 15:04 852次阅读

    FPGA实现基于Vivado的BRAM IP的使用

      Xilinx公司的FPGA中有着很多的有用且对整个工程很有益处的IP,比如数学类的IP,数字信号处理使用的
    的头像 发表于 12-29 15:59 1.1w次阅读

    FPGA学习笔记:PLL IP的使用方法

    滤波、SDRAM控制器、PCIE接口等),不可能每次使用都要用户自行设计,所以可以将其设计成 参数可修改的模块 ,其他用户可以直接调用。具有复杂功能和商业价值的IP
    的头像 发表于 08-22 15:04 4355次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>学习</b>笔记:PLL <b class='flag-5'>IP</b><b class='flag-5'>核</b>的使用方法

    FPGA学习笔记:RAM IP的使用方法

    我们知道除了只读存储外还有随机存取存储,这一篇将介绍另一种 存储类IP ——RAM的使用方法。RA
    的头像 发表于 08-29 16:46 3359次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>学习</b>笔记:<b class='flag-5'>RAM</b> <b class='flag-5'>IP</b><b class='flag-5'>核</b>的使用方法

    FPGA实现基于Vivado的BRAM IP的使用

    Xilinx公司的FPGA中有着很多的有用且对整个工程很有益处的IP,比如数学类的IP,数字信号处理使用的
    的头像 发表于 12-05 15:05 1456次阅读