verilog文件系统函数调用
来源:互联网 发布:软件评测师考试报名 编辑:程序博客网 时间:2024/06/16 22:19
1 $open
Integermulti_channel_descriptor= $fopen ( "file_name" );
返回文件的多通道描述符,只允许写数据,最多能打开31个文件,最高位保留。
注意:用$fopen打开文件会将原来的文件清空,若要读数据就用$readmemb,$readmemh就可以了,这个语句不会清空原来文件中的数据。integerfd = $fopen ( " file_name",type);
返回文件描述符
type枚举:
"r" or "rb"
"w" or "wb"
"a" or "ab"
"r+", "r+b", or "rb+"
"w+", "w+b", or "wb+"
"a+", "a+b", or "ab+"
以只读的方式打开
清除文件内容并以只写的方式打开
在文件末尾写数据
以可读写的方式打开文件
读写打开或建立一个文件,允许读写
读写打开或建立一个文本文件,允许读,或在末尾追加信息
打开失败可调用$ferror
2 $close
关闭文件,同时隐式终结$fmonitor、$fstrobe等任务
3 文件写入指令
file_output_task_name (multi_channel_descriptor , list_of_arguments ) ;
file_output_task_name ( fd , list_of_arguments ) ;
file_output_task_name ::=
$fdisplay | $fdisplayb | $fdisplayh | $fdisplayo
| $fwrite | $fwriteb | $fwriteh | $fwriteo
| $fstrobe | $fstrobeb | $fstrobeh | $fstrobeo
| $fmonitor | $fmonitorb | $fmonitorh | $fmonitoro
//$fmonitor只要有变化就一直记录
$fmonitor(file_id,"%format_char", parameter);
$fmonitor(file_id, "%m:%t in1=%d o1=%h", $time, in1, o1);
//$fwrite需要触发条件才记录,不自动换行
$fwrite(file_id,"%format_char", parameter);
//$fdisplay需要触发条件才记录
$fdisplay(file_id,"%format_char", parameter);
$fstrobe();当该时刻的所有事件处理完后,在这个时间步的结尾写入。推荐使用。
4 文本格式化
$sformat ( output_reg, format, list_of_arguments );
example
integer file, r, a, b;
reg [80*8:1] string;
file = $fopenw("output.log");
r = $sformat(string, "Formatted %d %x", a, b);
r = $sprintf(string, "Formatted %d %x", a, b);
r = $fprintf(file, "Formatted %d %x", a, b);
5 从文件中读取数据
c = $fgetc ( fd )
从文件中读取一个byte,若发声错误或读完,返回eof(-1),宽度位8位
code = $ungetc ( c, fd );
将由c指定的字符插入到由文件描述符fd指定的缓冲区中。字符c应为
由该文件描述符的下一个$ fgetc调用返回。文件本身不变。
integer code = $fgets ( str,fd );
从由fd指定的文件中读取字符到str,直到str被填满,或换行符被读取并传输到str,或遇到文件结束条件。如果str的长度不是byte的倍数,则部分最高位将舍弃不用保证填满整数个字节。
integer code = $fscanf ( fd,format, args );
按照固定格式从fd制定的文件中读取数据,args为读取的位置
integer code = $sscanf ( str,format, args );
$sscanf reads from the reg str
integer code = $fread( myreg,fd);
integer code = $fread( mem, fd);
integer code = $fread( mem, fd, start);
integer code = $fread( mem, fd, start, count);
integer code = $fread( mem, fd, , count);
读取二进制流,将数据从fd读向myreg或mem,不可读x,z.start是指mem的位置,
For start = 12 and the memory up[10:20],the first data would be loaded atup[12]. For the memory down[20:10],the first location loaded would bedown[12], then down[13]。
缺省情况下myreg将mem填满或自身读完截至。
文件中的数据逐字节读取。使用一个8位宽的存储器加载一个字节,而使用每个存储器字2个字节宽加载9位宽的存储器。数据是以大尾数方式从文件中读取;第一个字节读取用于填充最重要的位置存储元件。如果内存宽度不能被8(8,16,24,32)整除,则由于截断并不是文件中的所有数据都加载到内存中。
6 定位
integerpos = $ftell ( fd );
返回fd当前字节与fd文件开头的偏移至pos,可以用于后续的$fseek使用,以将文件重新定位到此点。
code= $fseek ( fd, offset, operation );
code = $rewind ( fd );
operation:
0:设置位置到偏移地址
1:设置位置到当前位置加偏移量
2:设置位置到文件结束位置$fseek(fd,0,0)
When a file is opened forappend (that is, when type is "a", or "a+"), it isimpossible to overwrite information already in the file.
7 文件冲洗
$fflush ( mcd );
$fflush ( fd );
$fflush ( );
将所有缓冲区的数据写入制定的mcd或fd,若参数缺省,冲写所有打开的文件
8 加载文件到存储区
$readmemb ( " file_name ", memory_name [ , start_addr [ , finish_addr ] ] ) ;
| $readmemh ( " file_name " , memory_name [ , start_addr [ , finish_addr] ] ) ;
- verilog文件系统函数调用
- Linux文件系统函数调用案例
- wince文件系统函数的调用过程
- verilog 层次调用
- Verilog模块调用
- Verilog中的函数
- verilog 与 vhdl相互调用
- Linux 文件系统调用函数open close read write lseek perror
- 文件系统函数
- Verilog中的函数和任务
- verilog quartus function 函数例子
- 在handelc中直接调用verilog模块
- VHDL顶层调用Verilog模块(转)
- Linux常见文件系统操作命令、进程调用命令、进程控制C函数、时间函数
- 文件系统--mknod系统调用
- 文件系统、系统调用
- QT调用Linux文件系统
- verilog
- sql INNER JOIN 取得两个表中存在连接匹配关系的记录(mysql)
- Raspberry从零开始玩
- ConcurrentHashMap原理分析
- HDUOJ-1702 ACboy needs your help again!
- 服务器为什么用linux而非windows
- verilog文件系统函数调用
- 巧用RAND()提取随机行
- React Native之Picker组件详解
- 如何让字典保持有序
- 前端面试题
- libevent:一个在网络服务器中事件驱动开发库
- RMySQL函数使用
- Linux ALSA 音频系统:逻辑设备篇
- 为什么服务器大多使用Linux系统?