Verilog——文件读写
1. 读取文件
读取文件是之前在CSDN中整理的,链接
$readmemb和$readmemh用来从文件中读取数据到存储器中。
读取的内容只包括:空白位置(空格、换行、制表格(tab和form-feeds),注释行、二进制或十六进制的数字。
数字中不能包含位宽说明和格式说明,其中readmemb要求每个数字是二进制数,readmemh要求每个数字必须是十六进制数字。数字中不定值x或X,高阻值z或Z,和下划线(_)的使用方法和代表意义与一般Verilog HDL程序中的用法一致。
在Verilog语法中,一共有以下六种用法:
(1)$readmemb(“<数据文件名>”,<存储器名>);
(2)$readmemb(“<数据文件名>”,<存储器名>,<起始地址>);
(3)$readmemb(“<数据文件名>”,<存储器名>,<起始地址>,<终止地址>);
(4)$readmemh(“<数据文件名>”,<存储器名>);
(5)$readmemh(“<数据文件名>”,<存储器名>,<起始地址>);
(6)$readmemh(“<数据文件名>”,<存储器名>,<起始地址>,<终止地址>);
(1)$readmemb的使用
先在Verilog代码目录下准备一个文件file1.txt,存入数据:
1111 1010 0101 1x1z 1_1_ 1_111
或者
1111
1010
0101
1x1z
1_1_
1_111
存在一行每个用空格隔开,跟分行存,输出结果是一样的,但是若在一行中不用空格隔开会出错,编译器会试图把一整行数据存在一个存储单元(下面程序中,4bit为一个存储单元)中。
1 |
|
输出结果:
1 |
|
(2)$readmemh的使用
准一个文件file2.txt,存入:
1234 5678 9012
1 |
|
输出:
1 |
|
2. 写入文件
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!