verilog中函数用法

读写文件常用

1.1打开文件

$fopen打开文件,用法如下:
1. $fopen("<文件名>");
2. <句柄>=$fopen(“<文件名>”);

用法1自然无须多解释,对于用法2,句柄就是任务$fopen返回的多通道描述符,默认为32位,最低位(第0位)默认被设置1,默认开放标准输出通道,即transcript窗口。

注意:用 f o p e n 打 开 文 件 会 将 原 来 的 文 件 清 空 , 若 要 读 数 据 就 用 fopen打开文件会将原来的文件清空,若要读数据就用 fopenreadmemb, r e a d m e m h 就 可 以 了 , 这 个 语 句 不 会 清 空 原 来 文 件 中 的 数 据 。 用 readmemh就可以了,这个语句不会清空原来文件中的数据。 用 readmemhfopen的情况是为了取得句柄,即文件地址,也就是写文件时用$fdisplay(desc,“display1”);时才用。

  integer handle1;
  handle1=$fopen("file1.dat",wb);

1.2读写文件

写文件我们用到系统任务 $fdisplay, $fwrite.
两者用法相似,前者写完就会自动换行,后者不会换行。

interger handle1;
handle1 = $fopen("file1.dat","wb");
#可以用$fdisplay
$fdisplay (handle1,"write name here ");
#也可以用$fwrite
$fwrite(handle1,"write name here");
$fwrite(handle1,"/n");

读文件使用$fread。

interger code;
reg [7:0] mem[4:0];
interger fd;
fd = $fopen("test.bin","rb");

code = $fread(mem,fd);
$fread(mem,fd);

2执行系统命令

在$system(" ") " "中的命令只能是命令字符串本身或者是linux的环境变量,是不认识sv中定义的string的。

string output_sim_yuv = "a0.log";
string output_ref_yuv = "b0.log";
$system("cmp output_sim_yuv output_ref_yuv > cmpjpgdec");

这时候就可以使用$sformat().

$sformat(output_sim_yuv,"a0.log");
$sformat(output_ref_yuv,"b0.log");
$system("cmp output_sim_yuv output_ref_yuv > cmpjpgdec");
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值