verilog 文件操作


在Verilog仿真工程中,有时我们需要从系统上得到相关的数据,有时需要将仿真数据保存到操作系统中,由于台式机可以读取或存储数据到本地硬盘。由于操作系统上的数据都是以文件方式保存,这就需要利用Verilog仿真系统函数来完成相应的操作。
本文我们主要讨论Verilog仿真文件操作中的常用操作。关于Verilog仿真中的文件操作,只能在仿真中使用,不能用于FPGA的综合,因此一般用于testbench文件中。
Verilog文件操作具体用法见菜鸟教程,点击本字段即可

$fopen

语法:

integer <file_desc>;	//integer变量,用于存储文件打开后的整数值,用于操作文件的句柄
<file_desc> = $fopen("<file_name>", "<file_mode>");
  • file_desc:文件的句柄,反应文件打开是否成功,如果file_desc==0,文件打开失败;如果file!=0,文件打开成功
  • file_name:要打开的文件名
  • file_mode:指定以什么样的方式打开

file_mode列表
在这里插入图片描述

注意:
1.使用方式中"b"后缀表示进行操作的对象为二进制文件,但是在很多系统中对二进制并不去做区分
2.如果$fopen()中未指定文件访问方式,那么该文件将默认为以可写方式被打开

$fclose

语法:

task $fclose(integer file_descriptor)
 如果使用$fopen打开文件后程序中并没有执行$fclose的话(特别是对文件的写操作),
 那么只有在仿真器关闭后,相应的内容才会更新至对应的文件中,因为,
 建议在编写程序时,$fopen和$pclose成对出现。

$feof

feof是检测流上的文件结束符的函数,如果文件结束,则返回非0值,否则返回0
一般在文件操作中经常使用feof()判断文件是否结束

integer file_conf;
file_conf = $fopen(filename, "r");
while(!$feof(file_conf))begin
	...
end

$fgets

<integer> = $fgets(<string_reg>, <file_desc>)
integer c;
reg [*:0] line
c = $fgets(line, file_conf)
  • integer:定义一个整型数值,用来保存读取文件的当前行有多少个字节。如果读出的字节为0,表示文件读取结束或者读取错误(空行也能读取到一个字节)
  • string_reg:声明字符串变量,用来保存从文件中读取的数据
  • file_desc:为打开的文件句柄

$sscanf

将字符串按照某个模板格式进行扫描,其字符串格式和C语言中的printf()函数类似
$sccanf的三个参数,第一个是扫描对象,第二个是扫描格式,第三个是提取出来的参数。它是具有返回值的,如果扫描不成功则返回0,如果扫描成功,每提取一个数据(即args的个数),则返回值加1。提取不会改变str值,除非将str作为args。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值