Verilog 文件操作:$readmemh和$readmemb的使用

news/2024/4/20 0:59:08

文章目录

  • 简介
  • 三种使用格式解读
    • 1、不指定变量地址
    • 2、只指定变量起始地址
    • 3、同时指定变量的起始地址和结束地址
  • 参考资料
  • 补充:什么是数组和存储器变量

简介

$readmemh和$readmemb是两个系统,被用来从指定文件中读取数据到寄存器数组或者RAM、ROM中。除了可以在仿真的任何时刻被执行使用外,根据综合工具的不同,也可以用来对RAM或者ROM进行初始化(Vivado支持)。

$readmemh中的h表示十六进制。

$readmemb中的b表示二进制。

使用格式如下,以$readmemb为例,$readmemh相同:

  • $readmemb(“数据文件名”,数组型/存储器型变量)

  • $readmemb (“数据文件名”,数组型/存储器型变量,变量的起始地址

  • $readmemb (“数据文件名”,数组型/存储器型变量,变量的起始地址,变量的结束地址)

    数据文件名:

    可以读取txt、v等格式文件。文件的数据必须是二进制和十六进制,而不是说会将文件里的数据转换成二进制和十六进制。

    地址写相对地址或绝对地址。但一定注意地址需要使用反斜杠 / 来表示层级。

    例如绝对路径: **$readmemh(“F:/test/data.txt”,mem_test); **

    相对地址是相对与工程位置的XX.sim\sim_1\behav\xsim‪的文件夹位置。直接将数据文件放入该文件夹地址内则 **$readmemh(“data.txt”,mem_test); **

三种使用格式解读

1、不指定变量地址

即:$readmemh(“F:/test/data.txt”,mem_test);

设reg [7:0] mem_test [9:0]; 数据被依次对应变量的最小地址开始填写,即第一个数据放入mem_test[0],第二个数据放入mem_test[1]直到放到mem_test[9],如果文件中没有十个数则后面的不被赋值。

设reg [7:0] mem_test [9:1]; 数据被依次对应变量的最小地址开始填写,即第一个数据放入mem_test[1],第二个数据放入mem_test[2]直到放到mem_test[9],如果文件中没有九个数则后面的不被赋值。

若reg [7:0] mem_test [9:0];和reg [7:0] mem_test [0:9];中9和0的书写顺序不一样,但读文件的顺序仍是先放入mem_test[0]的顺序。即[9:0]和 [0:9]不影响每个mem_test 的值,其他使用格式同样遵循。

2、只指定变量起始地址

即:$readmemh(“F:/test/data.txt”,mem_test,3);

设reg [7:0] mem_test [9:0]; 则前面0,1,2不被赋值,第一个数据放入mem_test[3],依次类推。

3、同时指定变量的起始地址和结束地址

即:$readmemh(“F:/test/data.txt”,mem_test,3,8);

设reg [7:0] mem_test [9:0]; 则前面0,1,2,9不被赋值,第一个数据放入mem_test[3],依次类推到mem_test[8]。

参考资料

本文大部分总结于前辈博客,只给出结论,若要代码验证请参看http://t.csdn.cn/R5smI。

补充:什么是数组和存储器变量

什么是数组和存储器变量

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.tangninghui.cn.cn/item-137.htm

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode算法心得——和可被 K 整除的子数组(前缀和+HashMap)

大家好,我是晴天学长,同余定理的应用,需要的小伙伴可以关注支持一下哦!后续会继续更新的。 1) .和可被 K 整除的子数组 题目描述 给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空&#xff0…

每日一题(两数相加)

每日一题(两数相加) 2. 两数相加 - 力扣(LeetCode) 思路 思路: 由于链表从头开始向后存储的是低权值位的数据,所以只需要两个指针p1和p2,分别从链表的头节点开始遍历。同时创建一个新的指针new…

9.14 C++作业

仿照vector手动实现自己的myVector&#xff0c;最主要实现二倍扩容功能 #include <iostream>using namespace std;template <typename T> class Myvector {T *data; //存储数据的数组int len; //当前数组的长度int mycapa; //容纳数据的总容量public://…

Python第一次作业练习

题目分析&#xff1a; """ 参考学校的相关规定。 对于四分制&#xff0c;百分制中的90分及以上可视为绩点中的4分&#xff0c;80 分及以上为3分&#xff0c;70 分以上为2分&#xff0c;60 分以上为1分; 五分制中的5分为四分制中的4分&#xff0c;4分为3分&#…

JAVASE 游戏

朴素的拼图游戏&#xff0c;通过WASD移动&#xff0c;我自己都不太会&#xff0c;可以通过篡改内部代码来取得想要的成功彩蛋 代码&#xff1a; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.…

竞赛 基于机器视觉的行人口罩佩戴检测

简介 2020新冠爆发以来&#xff0c;疫情牵动着全国人民的心&#xff0c;一线医护工作者在最前线抗击疫情的同时&#xff0c;我们也可以看到很多科技行业和人工智能领域的从业者&#xff0c;也在贡献着他们的力量。近些天来&#xff0c;旷视、商汤、海康、百度都多家科技公司研…