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
    +关注

    关注

    1664

    文章

    22502

    浏览量

    639128
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

    基于FPGA的LCD控制器设计

    基于 FPGA的LCD控制器设计的论文。
    发表于 10-29 14:05 19次下载

    基于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 60次下载

    华清远见FPGA代码-交通灯控制器

    FPGA学习资料教程——华清远见FPGA代码-交通灯控制器
    发表于 10-27 18:07 28次下载

    高性能16位XA微控制器系列

      飞利浦半导体日前宣布推出高性能16位XA微控制器系列的新成员XA-C3,专门用于“控制器区域网路(CAN)”应用,如高性能工业和汽车系统。
    发表于 09-20 12:21 5次下载

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

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

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

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

    探索Microchip PIC16C5X系列8位微控制器的魅力

    探索Microchip PIC16C5X系列8位微控制器的魅力 在电子工程领域,选择一款合适的微控制器对于项目的成功至关重要。Microchip的PIC
    的头像 发表于 02-09 16:20 659次阅读

    PIC16C62X系列控制器:特性、应用及使用要点

    PIC16C62X系列控制器:特性、应用及使用要点 在电子产品设计的领域中,微控制器如同产品的核心大脑,决定着产品的功能与性能。PIC16
    的头像 发表于 03-25 15:10 535次阅读

    PIC16C62X系列控制器:设计与应用详解

    、PIC16C62X系列概述 PIC16C62X系列是18和20引脚的ROM/EPROM型8位CMOS微
    的头像 发表于 03-25 17:10 601次阅读

    深入解析Microchip PIC16C62X系列控制器:特性、应用与开发支持

    深入解析Microchip PIC16C62X系列控制器:特性、应用与开发支持 在电子工程领域,微控制器是各类电子设备的核心控制单元,其性
    的头像 发表于 03-31 16:10 255次阅读

    探索PIC16CR7X系列控制器:功能特性与应用指南

    探索PIC16CR7X系列控制器:功能特性与应用指南 在电子设计领域,选择一款合适的微控制器对于项目的成功至关重要。Microchip的PIC16
    的头像 发表于 04-07 15:30 153次阅读

    深度剖析Microchip PIC16C72系列8位CMOS微控制器

    深度剖析Microchip PIC16C72系列8位CMOS微控制器 在嵌入式系统的设计领域,微控制器扮演着至关重要的角色。今天,我们就来深入探讨一下Microchip的PIC
    的头像 发表于 04-07 16:20 178次阅读

    深入解析 dsPIC33FJ 系列 16 位微控制器与数字信号控制器

    深入解析 dsPIC33FJ 系列 16 位微控制器与数字信号控制器 在电子工程领域,微控制器和数字信号
    的头像 发表于 04-08 18:35 1102次阅读