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

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

3天内不再提示

为了方便仿真这样写个ROM

ruikundianzi 来源:IP与SoC设计 作者:IP与SoC设计 2022-12-21 14:26 次阅读
FPGA中有专门的ROM IP Core,如果按照规范用Verilog编写的ROM文件可以被工具综合成RAM资源,而ASIC在需要后端去做专门Memory,前端仿真可以自己编写RAM/ROM/FIFO/RegFile IP。为了方便仿真这样写个ROM,方便初始化。
module single_port_rom(/*autoarg*/
   // Outputs
   q,
   // Inputs
   addr, clk
   );


parameter DATA_WIDTH = 8;
parameter ADDR_WIDTH = 8;


input   [ADDR_WIDTH-1:0] addr;
input   clk;
output reg [DATA_WIDTH-1:0] q;


reg [DATA_WIDTH-1:0] rom[2**ADDR_WIDTH-1:0];


initial begins
    $readmemh("/home/IC/Digital_Front_End_Verilog/ip_lib/rtl/DDS/triangular.txt", rom);
  //$readmemb("sin.txt", rom);
end


always @ (posedge clk)begin
   q <= rom[addr];
end


endmodule
系统函数$readmemh和$readmemb分别用来读取十六进制文件和二进制文件。貌似没有读十进制的。txt中的数据每行一个不需要逗号和最后一个数据后面的分号,数据格式对应。更多使用可以查询IEEE的Verilog语法手册。例化方式和rom IP一样可参数化配置任意大小
single_port_rom 
#(
        .DATA_WIDTH(DATA_WIDTH),
        .ADDR_WIDTH(ADDR_WIDTH)
)
u_sin(/*autoinst*/
      // Outputs
      .q                                (dout[DATA_WIDTH-1:0]),
      // Inputs
      .addr                             (addra[ADDR_WIDTH-1:0]),
      .clk                              (clk));
整了三个波形,仿真能跑起来。 36bf3126-80ed-11ed-8abf-dac502259ad0.png36df6e46-80ed-11ed-8abf-dac502259ad0.png37024c18-80ed-11ed-8abf-dac502259ad0.png          将设计电路参数化可重复使用,构建自己的代码库,搭建起你的数字积木。

审核编辑 :李倩


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

    关注

    34

    文章

    1158

    浏览量

    119264
  • ROM
    ROM
    +关注

    关注

    4

    文章

    525

    浏览量

    84817
  • Verilog
    +关注

    关注

    28

    文章

    1327

    浏览量

    109302

原文标题:为了方便仿真这样写个ROM

文章出处:【微信号:IP与SoC设计,微信公众号:IP与SoC设计】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    利用ISE与Matlab创建并仿真FPGA设计中的ROM IP核

    一般都是先创建MIF文件,将图像中的像素信息用一个ROM储存起来,然后调用ROM里面的地址进行处理,相当于制作了一个ROM查找表。
    发表于 04-16 11:49 70次阅读
    利用ISE与Matlab创建并<b class='flag-5'>仿真</b>FPGA设计中的<b class='flag-5'>ROM</b> IP核

    rom断电后数据会丢失吗

    ROM的内容通常是在制造过程中被编程的,而且其内容在正常操作期间是只读的,用户无法对其进行改写。因此,ROM非常适用于存储固定的操作系统、固件、BIOS固件和其他嵌入式设备所需的固定数据和指令。
    的头像 发表于 02-09 07:38 3017次阅读

    rom是什么存储器是内存还是外存

    ROM(Read-Only Memory)是一种只读存储器,用于存储计算机程序和数据,它在计算机系统中扮演着非常重要的角色。ROM的存储内容在制造时就被写入,并且在计算机运行过程中不能被改变。ROM
    的头像 发表于 02-05 10:05 1520次阅读

    rom与ram的主要区别 rom断电后数据会丢失吗

    ROM(Read-Only Memory)是只读存储器,而RAM(Random Access Memory)是随机存取存储器。它们在计算机系统中扮演着不同的角色和功能。 ROM是一种非易失性存储器
    的头像 发表于 01-25 10:46 909次阅读

    芯片设计中ROM的概念、分类、设计流程

    在芯片设计中,ROM(只读存储器)是一个非常重要的存储元件。
    的头像 发表于 10-29 10:17 741次阅读

    巧言单片机RAM及ROM

    巧言单片机RAM及ROM
    的头像 发表于 10-17 15:45 496次阅读

    单片机中的RAM vs ROM

    单片机中的RAM vs ROM
    的头像 发表于 09-28 17:57 695次阅读

    ch32v307的rom和ram参数

    ch32v307的rom和ram参数 在计算机系统中,RAM和ROM都是常见的存储设备。不同之处在于它们的运行方式和连续性。在本文中,我们将详细介绍ch32v307的ROM和RAM参数,并比较它们
    的头像 发表于 08-22 15:53 898次阅读

    0724_03 FPGA设计中ROM使用和调试讲解 - 第4节

    fpgaROM
    充八万
    发布于 :2023年08月20日 01:50:58

    0724_03 FPGA设计中ROM使用和调试讲解 - 第1节 #硬声创作季

    fpgaROM
    充八万
    发布于 :2023年08月20日 01:48:25

    vivado仿真流程

    vivado开发软件自带了仿真工具,下面将介绍vivado的仿真流程,方便初学者进行仿真实验。
    的头像 发表于 07-18 09:06 2563次阅读
    vivado<b class='flag-5'>仿真</b>流程

    Mask ROM存储单元构成

    MASK ROM:是制造商为了要大量生产,事先制作一颗有原始数据的ROM或EPROM当作样本,然后再大量生产与样本一样的 ROM,这一种做为大量生产的ROM样本就是MASK
    的头像 发表于 07-12 17:35 797次阅读
    Mask <b class='flag-5'>ROM</b>存储单元构成

    RH850コンパイラ CC-RH ROM

    RH850コンパイラ CC-RH ROM
    发表于 07-06 20:22 1次下载
    RH850コンパイラ CC-RH <b class='flag-5'>ROM</b>化

    FPGA零基础学习之Vivado-ROM使用教程

    及打算进阶提升的职业开发者都可以有系统性学习的机会。 系统性的掌握技术开发以及相关要求,对个人就业以及职业发展都有着潜在的帮助,希望对大家有所帮助。本次带来Vivado系列,ROM使用教程。话不多
    发表于 06-15 16:57

    ROM加载初始扇区0的flash_mode和时钟频率?

    中搜索其他有效代码,这些地址是如何确定的? 4)我相信闪存的大小很重要,因为 ROM 可以确定代码预期的地址。如果是这样,闪存的大小是由扇区 0 中的闪存大小(字节 3)确定的,还是 ROM
    发表于 06-09 09:03