首页 Verilog中文件输入与输出任务实例解析

Verilog中文件输入与输出任务实例解析

举报
开通vip

Verilog中文件输入与输出任务实例解析1.文件打开和关闭:首先定义integer指针,然后调用$fopen(file_name,mode)任务,不需要文件时,调用$fopen(file_name)常用mode包括“w"打开文件并从文件头开始写,如果不存在就创建文件。“w+"打开文件并从文件头开始读写,如果不存在就创建文件"a"打开文件并从文件末尾开始写,如果不存在就创建文件“a+"打开文件并从文件末尾开始读写,如果不存在就创建文件2.输出到文件:显示任务前加f,调用格式:$fdisplay(文件指针,"显示内容",显示变量),再如$fmonitor(…...

Verilog中文件输入与输出任务实例解析
1.文件打开和关闭:首先定义integer指针,然后调用$fopen(file_name,mode)任务,不需要文件时,调用$fopen(file_name)常用mode包括“w"打开文件并从文件头开始写,如果不存在就创建文件。“w+"打开文件并从文件头开始读写,如果不存在就创建文件"a"打开文件并从文件末尾开始写,如果不存在就创建文件“a+"打开文件并从文件末尾开始读写,如果不存在就创建文件2.输出到文件:显示任务前加f,调用 格式 pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载 :$fdisplay(文件指针,"显示内容",显示变量),再如$fmonitor(…)除了多一个文件指针外,其他与在控制台输出的任务是用方法一致。3.从文件读取:3个任务$readmemb("文件名",存储单元,文件中要存入存储单元的起始地址,文件中要存入存储单元的终了地址)其中文本文件可以包含空格,换行,制 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 符、注释、二进制,下面例子中,在工程文件夹目录下,有一个meomoryb.txt的文本文件,文件内容如下:1010110100011101011011110110000100000001111111101111111111101110这个文件就符合要求,可以通过$readmemb读取。10101101第一个数据地址为0,向后以此类推。另外一个系统任务$readmemh与$readmemb区别就是识别十六进制,下面例子中,在工程文件夹目录下,有一个meomoryh.txt的文本文件,文件内容如下:efab3e4f举例:modulereadmem;reg[7:0]mem[7:0];reg[2:0]i;integerfile;initialbeginfile=$fopen("memory.txt","w");$readmemb("memoryb.txt",mem,4,0);//从文本的读取数据向mem[4]开始写入,直到写到mem[0]for(i=0;i<7;i=i+1)begin$display("mem[%d]=%b",i,mem[i]);$fdisplay(file,"mem[%d]=%b",i,mem[i]);end$readmemh("memoryh.txt",mem);//如果没有地址的限制,就默认从//mem[0]到mem定义的最大地址。for(i=0;i<7;i=i+1)begin$display("mem[%d]=%h",i,mem[i]);$fdisplay(file,"mem[%d]=%h",i,mem[i]);end$fclose(file);endendmodule控制台输出与生成的memory.txt中内容一致。mem[0]=00000001mem[1]=01100001mem[2]=01101111mem[3]=00011101mem[4]=10101101mem[5]=xxxxxxxxmem[6]=xxxxxxxxmem[0]=32mem[1]=36mem[2]=4fmem[3]=8amem[4]=admem[5]=xxmem[6]=xx结果分析:首先读取memoryb.txt中从地址4到地址0的数据写入mem[0]至mem[4],没有写入的存储器内容为xx,然后读取memoryh.txt从地址0到地址6的数据写入mem[0]至mem[6],由于memoryh.txt只有4个数据,mem[4]以后的数据就没有了,保持上一次写的内容,所以,mem[4]为ad(十六进制)即二进制10101101$fscanf(文件指针,读取格式,数组);返回值为1表示成功,读取格式可以为%b,%d,%h(注意,如果读取格式为二进制,则文件中只能识别01.)举例:在工程文件夹中新建一个data_in.txt的文件,文件内容为:0111e1e11e111ee23101011456789。通过下面的程序将文件中数据读取到data_in这个16*16的存储区内,然后通过$display任务函数在控制台上显示,通过$fdisplay输出到data_out.txt文件中。`defineNULL0modulefile_scanf;integerfp_r,fp_w;integerflag1,flag2;reg[3:0]bin;reg[15:0]data_in[15:0];reg[15:0]cnt=15;initialbegin:file_fscanffp_r=$fopen("data_in.txt","r");fp_w=$fopen("data_out.txt","w");if(fp_r==`NULL)$display("failturetoopendata_in.txt");if(fp_w==`NULL)$display("failturetoopendata_out.txt");//while(cnt>0)repeat(10)beginflag1=$fscanf(fp_r,"%h",data_in[cnt]);$display("data_in[%d]=%h",cnt,data_in[cnt]);$fdisplay(fp_w,"%h",data_in[cnt]);cnt=cnt-1;end$fclose(fp_w);$fclose(fp_r);endendmodule应用举例:从文本中读取预先设计好的向量reg[7:0]mem[7:0];//先定义一块存储区域$readmemb("memoryb.txt",mem);//读文件内容到存储区{a,b,c,d,e}<=mem[3];//将保存有向量的存储区数据赋值给测试输入信号
本文档为【Verilog中文件输入与输出任务实例解析】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: ¥14.0 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
绘画的问号
暂无简介~
格式:txt
大小:3KB
软件:记事本
页数:0
分类:
上传时间:2019-05-22
浏览量:0