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

    文章

    1285

    浏览量

    125202
  • ROM
    ROM
    +关注

    关注

    4

    文章

    581

    浏览量

    89596
  • Verilog
    +关注

    关注

    31

    文章

    1375

    浏览量

    114985

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何使用.mem文件初始化ROM并从PS-APU读取内容

    本篇博文旨在演示如何使用 .mem 文件来初始化 ROM 并从 PS-APU 读取内容。
    的头像 发表于 05-30 09:35 4617次阅读
    如何使用.mem文件初始化<b class='flag-5'>ROM</b>并从PS-APU读取内容

    从实验室到量产:3D高斯泼溅仿真还缺什么?

    一、引言在一线从事高阶ADAS仿真测试的工程师,大概率都经历过这样的困境:在CARLA等传统仿真器中表现良好的感知算法,一旦部署到实车上,就会出现漏检和误触发。根本原因在于,传统图形学仿真
    的头像 发表于 05-29 17:33 1w次阅读
    从实验室到量产:3D高斯泼溅<b class='flag-5'>仿真</b>还缺什么?

    干涉测量的非序列仿真

    Mirau干涉测量法是一种众所周知的技术,它可以以高达所用波长的百分之一的精度测量表面。为了充分研究和设计这样的系统,非顺序仿真方法很有帮助,因为它会自动将系统内部反射产生的干涉效应考虑在内。 因此
    发表于 05-27 08:21

    几个常见机器人仿真软件的比较(详细版)

    写在前面:本文是一篇关于CoppeliaSim与其他主流仿真工具(如MuJoCo、Gazebo、Webots等)的详细对比分析,内容全面、观点清晰。康谋作为CoppeliaSim的合作伙伴,看到这样
    的头像 发表于 05-26 17:55 308次阅读
    几个常见机器人<b class='flag-5'>仿真</b>软件的比较(详细版)

    【SOA仿真7】多层膜仿真练习

    本文摘选自ETOP 2009 会议论文 原作者:Daniela M. Topasna、Gregory A. Topasna 摘要 为了更好的理解多层膜仿真,本文选了几个多层膜仿真练习案例,理论公式
    的头像 发表于 05-08 15:52 196次阅读
    【SOA<b class='flag-5'>仿真</b>7】多层膜<b class='flag-5'>仿真</b>练习

    深度解析Z90255 ROM与Z90251 OTP电视控制器:功能、特性与应用

    深度解析Z90255 ROM与Z90251 OTP电视控制器:功能、特性与应用 在电视控制领域,Z90255 ROM和Z90251 OTP这两款32 KB电视控制器凭借其丰富的功能和出色的性能,成为
    的头像 发表于 04-04 14:05 690次阅读

    Z86C02/E02/L02微控制器:高性价比的512字节ROM CMOS解决方案

    Z86C02/E02/L02微控制器:高性价比的512字节ROM CMOS解决方案 在电子设计领域,寻找一款既经济实惠又功能强大的微控制器是许多工程师的追求。Zilog的Z86C02/E02/L02
    的头像 发表于 04-04 14:05 1128次阅读

    Hummingbirdv2 E203 仿真排坑之路

    仿真时读入rom,判断功能是否正确。 3.1编译工具 编译需要用riscv的GNU工具,可以在[官网下载](https://nucleisys.com/download.php
    发表于 10-31 09:22

    Nucleistudio+Vivado协同仿真教程

    内部ROM启动,故需要修改 .cfg 配置文件,位置如下? 双击打开后,将划线的flash启动部分注释掉 然后修改Build选项,使反汇编生成机器指令文件:右键工程,点击properties 在
    发表于 10-23 06:22

    RISCV指令二进制编码利用matlab生成E203仿真可用文件

    鉴于nuclei studio IDE生成的.verilog难懂,为了方便对单条或者几条指令进行测试,我们队伍编写了matlab代码来实现E203仿真可以识别到的文件。 matlab代码如下
    发表于 10-22 07:06

    请问谁家串口屏屏幕支持在线仿真功能,这样我们做界面更加方便

    发表于 10-13 09:06

    胡言乱语:Multisim仿真准不准?偏置电流错的离谱?

    这是很多同学都会问到的一个问题,Multisim仿真究竟准不准?很多同学在仿真时发现Multisim仿真结果和手册的差距太大,然后说是Multisim这个软件不行,其实不是这样的,不管
    的头像 发表于 07-29 11:28 3203次阅读
    胡言乱语:Multisim<b class='flag-5'>仿真</b>准不准?偏置电流错的离谱?

    【RK3568+PG2L50H开发板实验例程】FPGA部分 | ROM、RAM、FIFO 的使用

    接口列表 该部分介绍每个顶层模块的接口。 ram_test_top.v ​ rom_test_top.v ​ fifo_test_top.v ​ 3.代码仿真说明 本次的顶层模块实际就是例化 IP
    发表于 07-10 10:37

    Simcenter FLOEFD BCI-ROM和Package Creator模块

    优势采用独立于边界条件的降阶模型(BCI-ROM)加速执行瞬态热仿真,同时采用PackageCreator轻松创建电子封装热模型。求解速度比完整的3D详细模型快40,000倍,且不折损精度有效保持
    的头像 发表于 07-08 10:32 948次阅读
    Simcenter FLOEFD BCI-<b class='flag-5'>ROM</b>和Package Creator模块

    LMK03318如何使用TICS将程序烧录进ROM

    请问 LMK03318芯片如何用TICS PRO烧录进芯片内部ROM?并且上电时钟就工作,有输出(就是上电程序自启动),急!!!
    发表于 07-07 14:35