matlab和verilog文件的读写_第1页
matlab和verilog文件的读写_第2页
matlab和verilog文件的读写_第3页
matlab和verilog文件的读写_第4页
matlab和verilog文件的读写_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、matlab和verilog文件的读写Part I:matlab文件的读写matlab读写文件的过程打开打开读写操作读写操作关闭关闭3matlab文件的打开和关闭二进制文件(.bin)的读写文本文件(.txt)的读写读写的定位*MAT文件的读写几个有用的函数4文件的打开fopen函数调用格式:fid存储文件句柄值,0说明成功打开。5常见的打开方式r+ :读写方式打开文件,打开后先读后写。该文件必须已已存在存在。w+:读写方式打开文件。先读后写。该文件已存在则更新;不存在则创建。a :在打开的文件末端添加数据。文件不存在则创建。a+:打开文件后,先读入数据再添加数据。文件不存在则创建。另外,在这

2、些字符串后添加一个“t”,如rt或wt+,则将该文件以文本方式打开;如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开方式。6例子(testbench中)stdFid = fopen( stdFileName, r );testFid = fopen( testFileName, r );7文件的关闭文件在进行完读、写等操作后,应及时关闭,以免数据丢失。fclose函数 说明:该函数关闭fid 所表示的文件。sta 表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回-1。关闭所有已打开的文件用fclose(all)。8二进制文件写操作fwrite 函数按照指定的数据精

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

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

5、制十六进制13文本文件写操作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回车回车%百

6、分号百分号16fprintf 举例fprintf(a= %-12.5f n,123.456)format以 % 开头flagfield widthprecision格式说明符- :左对齐+ :输出符号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=

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

8、当前位置,n bof 表示文件的开始位置,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 使用的一种特

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

10、读取出来。24save 函数可直接调用(不带任何参数)将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:比较两个字符串,若完全相等

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

12、函数返回一个值,而任务则不返回值。函数的目的是通过返回一个值来响应输入信号的值。任务却能支持多种目的,能计算多个结果值,这些结果值只能通过被调用的任务的输出或总线端口送出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,参数2,);$

13、write (格式控制参数,参数1,参数2,);$display任务自动在输出后换行$write任务没有自动换行常见的格式控制字符33转义字符34verilog的文件操作任务35在对任务文件进行读写操作时,都必须先将文件打开,并且获取一个文件描述符与C语言编程时的情况相同$fopen和$fclose任务分别用来打开和关闭某个文件,其语法格式如下多通道描述符 = $fopen();文件描述符 = $fopen(, );$fclose(多通道描述符);$fclose(文件描述符);$fopen文件打开方式36文件输出37$fopen打开一个文件并返回一个多通道描述符(MCD)。MCD是与文件唯一对应的32位无符号整数。如果文件不能打开并进行写操作,MCD将等于0。如果文件成功打开,MCD中的一位(仅一位)将被置位。以$f开始的显示系统任务将输出写入与MCD相对应的文件中。. . .integer MCD1; MCD1 = $fopen(); $fdisplay( MCD1, P1, P2, ., Pn); $fwri

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论