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

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

3天内不再提示

FPGA学习系列:16. rom控制器设计

FPGA学习交流 来源:互联网 作者:佚名 2018-06-13 11:21 次阅读

设计背景:

ROM是只读存储器(Read-Only Memory)的简称,是一种只能读出事先所存数据的固态半导体存储器。其特性是一旦储存资料就无法再将之改变或删除。通常用在不需经常变更资料的电子电脑系统中,并且资料不会因为电源关闭而消失。

ROM是由英文Read only Memory的首字母构成的,意为只读存储器。顾名思义,就是这样的存储器只能读,不能像RAM一样可以随时读和写。它只允许在生产出来之后有一次写的机会,数据一旦写入则不可更改。它另外一个特点是存储器掉电后里面的数据不丢失,可以存放成百上千年。此类存储器多用来存放固件,比如计算机启动的引导程序,手机、MP3、MP4、数码相机等一些电子产品的相应的程序代码

设计原理:

我们的设计是读ROM的数据,然后读到最后一个数据的时候,然后又从最后的地址往回读数据,来实现循环读数。

首先我们先创建一个.mif文件,然后给对应的地址中写如数据,然后设计一个IP核,之后通过读ROM的地址,来读出ROM中存在的数据,具体的操作如下面的操作。

下一步,建立一个深度256,位宽为8的 .mif。

然后在第一个地址右键。

填写开始地址以及结束地址,我们给每一位的地址位写上和地址一样的数据,那么就是数据从0开始,步进为1,如下,然后然后完成,保存。

这样我们写好我们.mif文件,然后进行下面的步骤。

选择我们所选的硬件描述语言,我们都是verilog HDL,然后选择我们文件生成的路径,下一步。

设置我们的输出的位宽,和深度,我们的深度256,位宽8,下一步。

去掉输出是否有寄存器的对勾,如果选了输出会晚一拍,因为加了一个输出寄存器。

然后出现下面的界面,点击,选择我们生成的.mif文件,添加进来,然后下一步,下一步完成。

设计架构图:

设计代码:

顶层模块

0modulerom(clk,rst_n,data);

1 inputclk;

2 inputrst_n;

3

4 output[7:0]data;

5

6 wire[7:0]address;

7

8 rom_r rom_r ( //例化ROM控制器模块

9 .clk(clk),

10 .rst_n(rst_n),

11 .address(address)

12 );

13

14 my_rom my_rom_inst (//例化IP核模块

15 .address (address ),

16 .clock (clk ),

17 .q (data )

18 );

19

20endmodule

设计模块

0modulerom_r(clk,rst_n,address);

1

2 inputclk;

3 inputrst_n;

4

5 outputreg[7:0]address;

6

7 reg[1:0]state;

8 always@(posedgeclk ornegedgerst_n)

9 if(!rst_n)

10 begin

11 address <= 1'b0;

12 state <= 1'b0;

13 end

14 else

15 begin

16 case(state)

17 0:begin

18 if(address < 255)    //判断地址

19 begin

20 address <= address + 1'b1; //地址激增

21 end

22 else

23 begin

24 if(address ==255)//判断是否读完

25 begin

26 address <= address - 1'b1; 

27 state <= 1;

28 end

29

30 end

31 end

32 1:begin

33 if(address >0)//读完就跳转一状态后让地址减1

34 begin

35 address <= address - 1'b1;

36 end

37 else

38 begin

39 address <= address + 1'b1;

40 state <= 0;

41 end

42 end

43 default:state <= 0;

44 endcase

45 end

46endmodule

测试模块

0`timescale1ns/1ps

1

2modulerom_tb();

3

4 regclk;

5 regrst_n;

6

7 wire[7:0]data;

8

9 initialbegin

10 clk =1'b1;

11 rst_n =1'b0;

12

13 #100.1rst_n =1'b1;

14

15 #20000$stop;//20000NS后停止仿真

16

17 end

18

19 always#10clk =~clk;//产生50M时钟

20

21 rom rom_dut ( //例化顶层模块

22 .clk(clk),

23 .rst_n(rst_n),

24 .data(data)

25 );

26endmodule

仿真图:

仿真中我们可以看到和我们的设计一样,我们先从0地址读数据,当读到最后一个数后,然后返回来从最后一个地址开始读数。

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

    关注

    1602

    文章

    21309

    浏览量

    593122
收藏 人收藏

    评论

    相关推荐

    FPGA学习系列:19. rom到数码管显示设计

    设计背景: rom是读写的的静态存储单元,在我们的设计中我们会经常用到,数码管模块同样的大大小小的设计还是工程应用中都有这至关重要的作用。 设计原理 : 前几节我们学习rom存储器的设计,还有
    的头像 发表于 06-18 19:24 6352次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>学习</b><b class='flag-5'>系列</b>:19. <b class='flag-5'>rom</b>到数码管显示设计

    基于DSP与FPGA的运动控制器设计

    的精确定位。2.4 数字量输入输出接口模块  考虑到系统的可扩展性和DSP的GPIO口的数量,此运动控制器在DSP与FPGA上分别设计8路,共16路数字量输入输出。运动控制器的所有数字
    发表于 09-19 09:43

    FPGA实现的SATA控制器

    FPGA实现的SATA控制器FPGA实现的SATA控制器
    发表于 08-11 18:08

    至芯昭哥带你学FPGAFPGA_100天之旅_rom控制器的设计

    至芯昭哥带你学FPGAFPGA_100天之旅_rom控制器的设计
    发表于 08-23 11:14

    PIC 16位和32位作为ARM控制器好吗?

    海都。不知何故,我知道PIC16F87A(8位微控制器)…现在我想学习和工作16位和32位微控制器。如PIC
    发表于 03-05 09:08

    FPGA零基础学习:IP CORE 之 ROM设计

    系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把手的“傻瓜式”讲解,让电子、信息、通信类专业学生、初入职场小白及打算进阶提升的职业开发者都可以有
    发表于 03-13 15:46

    FPGAROM初始化问题讨论

    本文讨论FPGAROM初始化问题,详细介绍mit文件的创建与使用。利用FPGA实现的ROM只能认为器件处于用户状态时具备ROM功能。使用时
    发表于 02-08 14:24 5275次阅读
    <b class='flag-5'>FPGA</b>的<b class='flag-5'>ROM</b>初始化问题讨论

    基于XILINX的XC3系列FPGA的VGA控制器的VHDL源程

    Xilinx FPGA工程例子源码:基于XILINX的XC3系列FPGA的VGA控制器的VHDL源程序
    发表于 06-07 15:07 12次下载

    基于FPGA的LED屏控制器设计

    基于FPGA的LED屏控制器设计基于FPGA的LED屏控制器设计
    发表于 06-21 17:56 58次下载

    F2产品技术培训_16.看门狗

    F2产品技术培训_16.看门狗
    发表于 03-15 14:36 2次下载

    Virtex-7 FPGA系列的内存控制器介绍

    本视频介绍了可用于构建7系列FPGA内存控制器的软IP。 这些模块讨论了如何使用Xilinx存储器接口生成器构建存储器控制器以及MIG如何构建存储器
    的头像 发表于 11-22 06:05 4304次阅读

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

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

    如何使用FPGA内部的ROM以及程序对该ROM的数据读操作

    FPGA本身是SRAM架构的,断电之后,程序就消失,那么如何利用FPGA实现一个ROM呢,我们可以利用FPGA内部的RAM资源实现ROM,但
    的头像 发表于 02-08 16:30 1w次阅读
    如何使用<b class='flag-5'>FPGA</b>内部的<b class='flag-5'>ROM</b>以及程序对该<b class='flag-5'>ROM</b>的数据读操作

    FPGAROM实现

    FPGAROM实现(qt嵌入式开发编程)-该文档为FPGAROM实现简介资料,讲解的还不错,感兴趣的可以下载看看…………………………
    发表于 07-30 08:58 4次下载
    <b class='flag-5'>FPGA</b>的<b class='flag-5'>ROM</b>实现

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

    ,一旦写入不能再修改或删除,断电不丢失。我们知道FPGA只有RAM,因此事实上在 FPGA 中通过 IP 核生成的 ROM 或 RAM掉电内容都会丢失。用 IP 核生成的 ROM 模块
    的头像 发表于 08-22 15:06 2076次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>学习</b>笔记:<b class='flag-5'>ROM</b> IP核的使用方法