概述
系统函数$
fopen
用于打开一个文件,并还回一个整数指针.然后,$
fdisplay
就可以使用
这个文件指针在文件中写入信息,写完后,则可以使用$
fclose
系统关闭这个文件
例如:
integer write_out_file;
//定义一个文件指针
integer write_out_file=$fopen("write_out_file.txt");
$fdisplay(write_out_file,"@%hn
%
h"
,
addr
,
data)
;
$
fclose("write_out_file");
以
上
语
法
是
将
addr
,
data
分
别
显
示
在
”@%h
n
%
h”
中
的
2
个
%
h
的
位
置,
并
写
入
write_out_file
文件指针所指向的
write_out_file.txt
中.
从文件中读取数据,可以用
$readmemb $readmemh
从文件中读入数据,该文件格式是一
定的.
reg
〔7:0〕
data
〔47:0〕
;
$readmemh
(
"file_name
.
txt",data
)
;
就是将
file_name
.
txt
中的数据读入到
data
数组中,然后就可以使用这些数据了.
还有一种方式可以把指定的数据放入指定的存储器地址单元内,就是在存放数据的文本文
件内,给相应的数据规定其内存地址,形式如下:
@address_in_hexadecimal
data
@
2f
20
两个系统任务可以在仿真的任何时刻被执行使用,其使用格式共有以下六种:
1) $readmemb("<
数据文件名
>",<
存贮器名
>);
2) $readmemb("<
数据文件名
>",<
存贮器名
>,<
起始地址
>);
3) $readmemb("<
数据文件名
>",<
存贮器名
>,<
起始地址
>,<
结束地址
>);
4) $readmemh("<
数据文件名
>",<
存贮器名
>);
5) $readmemh("<
数据文件名
>",<
存贮器名
>,<
起始地址
>);
6) $readmemh("<
数据文件名
>",<
存贮器名
>,<
起始地址
>,<
结束地址
>);
在这两个系统任务中,被读取的数据文件的内容只能包含:空白位置
(
空格,换行,制表格
(tab)
和
form-feeds)
,
注释行
(//
形式的和
/*...*/
形式的都允许
)
,
二进制或十六进制的数字。
数
字中不能包含位宽说明和格式说明,对于
$readmemb
系统任务,每个数字必须是二进制数
字,对于
$readmemh
系统任务,每个数字必须是十六进制数字。数字中不定值
x
或
X
,高
阻值
z
或
Z
,和下划线
(_)
的使用方法及代表的意义与一般
V
erilog
HDL
程序中的用法及意
义是一样的。另外数字必须用空白位置或注释行来分隔开。
在下面的讨论中,地址一词指对存贮器
(memory)
建模的数组的寻址指针。当数据文件被读
取时,每一个被读取的数字都被存放到地址连续的存贮器单元中去。存贮器单元的存放地
址范围由系统任务声明语句中的起始地址和结束地址来说明,每个数据的存放地址在数据
文件中进行说明。当地址出现在数据文件中,其格式为字符
“@”
后跟上十六进制数。如:
@hh...h
对于这个十六进制的地址数中,允许大写和小写的数字。在字符
“@”
和数字之间不允许存
在空白位置。可以在数据文件里出现多个地址。当系统任务遇到一个地址说明时,系统任
最后
以上就是飞快大叔为你收集整理的verilog从txt中读取_verilog读写文件的全部内容,希望文章能够帮你解决verilog从txt中读取_verilog读写文件所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复