matlab和verilog文件的读写

上传人:第*** 文档编号:48811517 上传时间:2018-07-20 格式:PPTX 页数:39 大小:295.51KB
返回 下载 相关 举报
matlab和verilog文件的读写_第1页
第1页 / 共39页
matlab和verilog文件的读写_第2页
第2页 / 共39页
matlab和verilog文件的读写_第3页
第3页 / 共39页
matlab和verilog文件的读写_第4页
第4页 / 共39页
matlab和verilog文件的读写_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《matlab和verilog文件的读写》由会员分享,可在线阅读,更多相关《matlab和verilog文件的读写(39页珍藏版)》请在金锄头文库上搜索。

1、matlab和verilog文件的读写Part I:matlab文件的读写matlab读写文件的过程打开读读写操 作关闭闭3matlab文件的打开和关闭二进制文件(.bin)的读写文本文件(.txt)的读写读写的定位*MAT文件的读写几个有用的函数4文件的打开fopen函数调用格式:fid=fid=fopenfopen( (文件名,文件名, 打开方式打开方式) )fid存储文件句柄值,0说明成功打开。5常见的打开方式 r r :只读方式打开文件(默认的方式),该文件必须:只读方式打开文件(默认的方式),该文件必须已存在已存在。r+ :读写方式打开文件,打开后先读后写。该文件必须已存在。 w w

2、 :打开后写入数据。该文件已存在:打开后写入数据。该文件已存在则则更新更新(如果只打开则清空文件(如果只打开则清空文件 );不存在则创建。不存在则创建。w+:读写方式打开文件。先读后写。该文件已存在则更新;不存在则 创建。a :在打开的文件末端添加数据。文件不存在则创建。a+:打开文件后,先读入数据再添加数据。文件不存在则创建。另外,在这些字符串后添加一个“t”,如rt或wt+,则将该文件以文本 方式打开;如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开 方式。6例子(testbench中)stdFid = fopen( stdFileName, r );testFid

3、= fopen( testFileName, r );7文件的关闭文件在进行完读、写等操作后,应及时关闭,以免 数据丢失。fclose函数stastafclosefclose(fid)(fid)说明:该函数关闭fid 所表示的文件。sta 表示关闭 文件操作的返回代码,若关闭成功,返回0,否则 返回-1。关闭所有已打开的文件用fclose(all)。8二进制文件写操作fwrite 函数按照指定的数据精度将矩阵中的元素写入到文件调用格式: COUNTCOUNTfwritefwrite(fidfid,A A,precisionprecision) COUNT :返回所写的数据元素个数(可缺省)fi

4、d :文件句柄A :写入文件的数据precision :数据精度,常用的数据精度有:char 、uchar、int、long、float、double 等。缺省数据 精度为uchar,即无符号字符格式。9二进制文件读操作fread 函数读取二进制文件的数据,并将数据存入矩阵。调用格式: AA,COUNT=COUNT=freadfread(fid(fid,sizesize,precision)precision)A :用于存放读取数据的矩阵COUNT :返回所读取的数据元素个数fid :文件句柄size :可选项10size参数N(读取N 个元素到一个列向量)inf(读取整个文件)M,N(读数据

5、到MN 的矩阵中,数据按列存放 )11文本文件读操作fscanf 函数读取文本文件的内容,并按指定格式存入矩阵调用格式: A,COUNT=fscanf(fid,format,size)A :存放读取的数据COUNT :返回所读取的数据元素个数fid :文件句柄format :控制读取的数据格式,由%加上格式符组 成 size :可选项,决定矩阵A 中数据的排列形式12format参数控制读取的数据格式由%加上格式符组成常见的格式符有:%和格式符之间可以插入数据宽度,如%16d%16dc字符型g浮点数(自动) d十进制整数o八进制 e浮点数(科学计数法 )s字符串f浮点数(小数形式)x十六进制1

6、3文本文件写操作fprintf 函数调用格式:fprintf(fid,format,A)fid :文件句柄,指定要写入数据的文件format :用来控制所写数据格式的格式符,与 fscanf 函数相同A 是用来存放数据的矩阵。省略fid,则在屏幕上输出14format参数n flags (optional)n Width and precision fields (optional)n Conversion character (required) 15format中还可以使用的特殊字符b退后一格t水平制表符f换页反斜杠n换行单引号r回车%百分号16fprintf 举例fprintf(a= %

7、-12.5f n,123.456)format 以 % 开头flagfield width precision格式说明符- :左对齐 + :输出符号 0 :空白处添 0 空格:前面加一空格字段宽度小数点后 输出位数17例子创建一个字符矩阵并存入磁盘,再读出赋值给另一个矩 阵。 a=string; fid=fopen(d:char1.txt,w); %打开文件,写方式 fprintf(fid,%s,a); %a的值写入文件,字符 串型 fclose(fid); %关闭文件 fid1=fopen(d:char1.txt,rt); %打开文件,文本方 式 b=fscanf(fid1,%s) %读出数

8、据字符串方式 写入bb =string18读写的定位打开文件读写数据时,需要判断和控制文件的读写位置 ,如数据是否读完,或者需要读写指定位置上的数据 等。 在读写文件时,matlab 自动创建一个文件位置指针来 管理和维护文件读写数据的起始位置。matlab 提供了几个文件位置指针定位操作函数:fseek、ftell 、 frewind 和 feof19fseekstatus=fseek(fid,offset,origin)u fid 为文件句柄 u offset 表示位置指针相对偏移的字节数,若为正表示向文件尾方偏移,若 为负表示向文件头方向偏移n cof 表示当前位置,n bof 表示文件

9、的开始位置,n eof 表示文件末尾;u 若定位成功,status 返回值为 0,否则返回 -1u origin 表示位置指针移动的参照位置,有三种取值:20ftell、frewind 和 feoffrewind(fid)eofstat=feof(fid)l 判断文件位置指针是否达到文件结束位置,若文件位置指针已在文件末 尾,则返回 1,否则返回 0position=ftell(fid)l 返回值为从文件开始到指针当前位置的字节数l 将位置指针返回到文件的起始位置21feof的例子22fgetl:从文件中读一行,参数为文件标识符MAT 文件MATLAB 使用的一种特有的二进制数据文件在MAT

10、文件中不仅保存各变量数据本身,而且同 时保存变量名以及数据类型等载入某个MAT 文件后,可以在当前MATLAB 工作 空间完全再现当初保存该MAT 文件时的那些变量 ,这是其他文件格式不能完成的load 和save 两个命令进行 MAT 文件的读和写。23load函数命令中的文件名可以包含单引号,也可以不包含如: load mymat.mat 或 load mymat.matload 函数还可以指定只读取文件中的某几个变量 ,只需在文件名之后列出想要读取的变量的变量名 就可以了,变量名也可以使用通配符。如:load mymat.mat y*执行结果:将文件中所有以y开头的变量读取出 来。24s

11、ave 函数可直接调用(不带任何参数)将MATLAB 工作空间的所有变量保存到系统默认的 matlab.mat 文件如果用户需要保存指定的某几个变量,只需在文件 名参数后,列出要保存的文件名即可。如:save mymat.mat x,y,z 将当前工作空间中的变量 x,y,z 保存到mymat.mat 文 件中,要求x,y,z 是当前工作空间中已经存在的变 量。25几个有用的函数26str2num:将数字字符串转为数字,若字符串中有 不是数字的,则返回零维矩阵例如:x = str2num(1234); 则x=1234num2str:和上一个函数相反strcmp:比较两个字符串,若完全相等返回1

12、,否 则返回0find:找到矩阵中的非零元素,并返回其所在位置 的矩阵(列向量,位置是矩阵按列整理成列向量后 对应的位置)可以配合length得出非零元素的个数find的例子27Part II:verilog文件的读写verilogverilog任务(task)和函数(function)和文件操作有关的verilog任务29verilog任务和函数任务和函数有些不同,主要的不同有以下四点:1) 函数只能与主模块共用同一个仿真时间单位,而任 务可以定义自己的仿真时间单位。2) 函数不能启动任务,而任务能启动其它任务和函 数。3) 函数至少要有一个输入变量,而任务可以没有或有 多个任何类型的变量。

13、4) 函数返回一个值,而任务则不返回值。函数的目的是通过返回一个值来响应输入信号的值。任 务却能支持多种目的,能计算多个结果值,这些结果值 只能通过被调用的任务的输出或总线端口送出30例子31完成16位的字操作,让高字节与低字节互换任务或函数名都为switch_bytes不考虑标识符$任务写法new_word作为输出:switch_bytes(old_word,new_word);函数写法作为返回值new_word = switch_bytes(old_word);$display和$write任务32用$display和$write任务的格式为:$display (格式控制参数,参数1,参数

14、2,);$write (格式控制参数,参数1,参数2,);$display任务自动在输出后换行$write任务没有自动换行常见的格式控制字符33转义字符34verilog的文件操作任务35在对任务文件进行读写操作时,都必须先将文件打 开,并且获取一个文件描述符与C语言编程时的情况相同$fopen和$fclose任务分别用来打开和关闭某个文件 ,其语法格式如下多通道描述符 = $fopen();文件描述符 = $fopen(, );$fclose(多通道描述符);$fclose(文件描述符);$fopen文件打开方式36文件输出37$fopen打开一个文件并返回一个多通道描述符(MCD)。 MC

15、D是与文件唯一对应的32位无符号整数。 如果文件不能打开并进行写操作,MCD将等于0。 如果文件成功打开,MCD中的一位(仅一位)将被置位。 以$f开始的显示系统任务将输出写入与MCD相对应的文件中。. . . integer MCD1;MCD1 = $fopen(“);$fdisplay( MCD1, P1, P2, , Pn);$fwrite( MCD1, P1, P2, , Pn);$fclose( MCD1); . . .$fdisplay和$fwrite38与$display和$write相似唯一不同:第一个参数必须为一个指定向何哪个文 件输出的MCD。MCD可以是一个表达式,但其值 必须是一个32位的无符号整数。这个值决定了该任 务向哪个打开的文件写入。MCD可以看作由32个标志构成的组,每个标志代 表一个单一的输出通道。例子(testbench中)39

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 外语文库 > 英语学习

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号