verilog换行太长代码_Verilog 之 File I/O task and function

不点蓝字,何来故事?

许久之前关于Verilog I/O操作的一篇笔记梳理,再此与诸君共分享。0I/O操作类型

    verilog中关于文件操作的任务和函数主要分为四类:

    (1)打开和关闭文件的任务和函数

    (2) 向文件中输入信息的任务

    (3) 向变量中输入信息的任务

    (4) 从文件中读取数据并写入变量或存储器中

1打开和关闭文件的任务和函数

fd=$fopen("file_name",type)

    该函数主要用于按照type定义的方式打开"file_name"指定的文件,并返回32比特的文件描述符。type的类型有:

fa2480b5b00e78c69998de374be360fd.png

    默认方式为以“w”或“wb”方式打开。注意"w","wb","w+","w+b","wb+"打开文件将会清空文件原有数据。其中“b”用于区别文本文件和二进制文件。如果一个文件因为某种无法打开,将会返回0,通过$ferror可用于检测失败原因。

$fclose(fd)

    该函数主要用于关闭文件。文件一旦关闭,$fmonitor 、$fstrobe等任务将会自动终止。

2向文件中输入信息

file_output_task_name(multi_channel_descriptior|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);

    只允许有一个$monitor 进程,但同时可以运行任意数量的$fmonitor 进程.

    $fwrite需要触发条件才记录,不自动换行

    $fwrite(file_id,"%format_char", parameter);

    $fdisplay需要触发条件才记录

    $fdisplay(file_id,"%format_char", parameter);

    $fstrobe();当该时刻的所有事件处理完后,在这个时间步的结尾写入,可以确保所写的数据时无误的。推荐使用。

3向变量中输入信息

string_output_tasks ::=string_output_task_name ( output_reg , list_of_arguments ) ;

string_output_task_name ::=$swrite | $swriteb | $swriteh | $swriteo

variable_format_string_output_task ::=

$sformat ( output_reg , format_string , list_of_arguments ) ;

    $swrite、$sformat用于以制定格式向寄存器中写入字符串

string s1,s2;$swriteb(s1,"a","b");$sformat(s2,"%s%s","a","b");$display("$sformat: %s ",s2);$display("$swrite: %s ",s1);
4从文件中读取数据

c=$fgetc(fd)——从文件中一次读取一个字符

    如果从文件中读取发生错误时,c将被设为EOF(-1).通过$ferror可获取错误原因,c的位宽应大于8位。采取这种格式读取数据文本文件中的空格、标点符号等也会被读出来。

code=$ungetc(c,fd);

    向fd文件的缓冲区内插入字符c,c将会在下次调用$fgetc时返回,调用该函数并不会改变文件本身内容。当发生错误时code为EOF,否则为0。

从文件中读取一行

integer code;

code=$fgets(str,fd);

    从fd指定的文件中读取数据到str直至str填满或出现换行符或出现EOF。若str长度不是整数个bytes,则高位部分数据将被舍去。若读取失败,则code返回0,否则code将返回读取的字符数。

按照固定格式从文件中读取数据

integer code;

code=$fscanf(fd,format,args);//从fd文件中按照format制定的格式读取数据到args中

code=$sscanf(fd,format,args);//从寄存器中按照format制定的格式读取数据到args中

    空白字符(空格、制表符、换行符)可用于跳过空白符读取非空白字符(对于标点符号等无效)。

    %m能够返回当前仿真路径,而不返回文件中的字符

按照二进制格式读取数据

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的位置,count指待读取的长度。

    For start = 12 and the memory up[10:20],the first data would be loaded at up[12]. For the memory down[20:10],the first location loaded would be down[12], then down[13]。

    缺省情况下fread将mem填满或读完截止。

    文件中的数据逐字节读取。使用一个8位宽的存储器加载一个字节,而使用每个存储器字2个字节宽加载9位宽的存储器。数据是以大尾数方式从文件中读取;第一个字节读取用于填充最重要的位置存储元件。如果内存宽度不能被8(8,16,24,32)整除,则由于截断并不是文件中的所有数据都加载到内存中。

5文件定位

integer pos ;

pos = $ftell ( fd );

    返回fd文件当前位置距文件首部偏移量(按字节计算),可以用于后续的$fseek使用,以将文件重新定位到此点。重定位将会取消$ungetc操作。

code=$fseek(fd,offest,operation);

code = $rewind ( fd );

    $fseek()设置文件fd的下一输入或输出位置。

        0:设置位置到偏移地址

        1:设置位置到当前位置加偏移量

        2:设置位置到文件结束位置加偏移量(向前)

    $rewind()等价于$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.when output is written to the file, the current file pointer is disregarded. All output is written at the end of the file and causes the file pointer to be repositioned at the end of the output.

6缓存区冲刷

$fflush ( mcd );

$fflush ( fd );

$fflush ( );

    将所有缓冲区的数据写入制定的mcd或fd,若参数缺省,冲刷写入所有打开的文件。

7I/O状态查询

I/O error status

integer errno;

errno=$ferror(fd,str);

    描述的错误信息字符串将被存放在字符串str中。如果没有错误,errno将为0,str将被清空。

8检测文件结尾

integer code;

code=$feof(fd);

    当检测到文件结尾时,返回1,否则返回零。

8加载文件到存储区

$readmemb ( " file_name ", memory_name [ , start_addr [ , finish_addr ] ] ) ;

$readmemh ( " file_name " , memory_name [ , start_addr [ , finish_addr] ] ) ;

    文件应该只包括空白符、注释、二进制或十六进制数据。

27b887a1efeb945194807e8510c260ad.png

f8aee9c2e978f745e36f6d7bd9199c9d.png

27b887a1efeb945194807e8510c260ad.png768674c6dccdc8a5b8cb74d669755d56.png精彩推荐SpinalHDL资料汇总SpinalHDL—优雅地实现总线寄存器读写SpinalHDL代码组织结构之Component换个名字混江湖SpinalHDL—覆盖率收集SpinalHDL—测试平台搭建兄弟,要几段?打个拍,握个手可以么SpinalHDL—柳暗花明又一村FPGA图像处理——老戏新说山水有相逢—和大牛成为同事SpinalHDL——环境搭建乱花渐欲迷人眼—Vivado之SynthesisPCIe之MSI-x中断(一)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506230.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MFC读取文件数据,添加信息到列表并保存到文件

打开并读取文件信息 添加: BOOL infoDlg::OnInitDialog() {CDialogEx::OnInitDialog();// TODO: 在此添加额外的初始化AfxMessageBox("欢迎查看学生信息");SetList();return TRUE; // return TRUE unless you set the focus to a control// 异常: OCX 属…

nginx 上传 文件超时设置_Ingressnginx自定义配置文件

点击上方蓝色字体,关注我们读完需 8 分钟速读需 4 分钟k8s集群默认安装的ingress-nginx直接投入测试或生产使用,其不合适的配置参数可能会导致一些访问报错。例如:“413 Request Entity Too Large”“503 Service Unavailable”此时我们就需要…

fiddler安装_Fiddler的安装和APP抓包

点击上方“蓝字”关注我们吧!前言1.Fiddler安装包2.安卓手机3.iOS手机1.下载fiddler软件:可以去官网下载https://www.telerik.com/fiddler,可以下载最新版2.百度云盘(非最新版):链接:https://pan.baidu.com/s/10XVzoxw…

div中的p标签于img设置同一水平_前端工程师:css中一些需要注意的东西

html标签有三大性质,如果不清楚这些东西,在使用css添花的时候可能会糊涂的不知所措。一、块级元素块元素会独自占据一整行,或者多行,可以任意设置其大小尺寸,是用于搭建网页布局的必须部分,使网页结构更加紧…

python用电度数设计_用Python实现一个爬取XX大学电费通知的小脚本

内容简要 1分析网站 2简单爬取 3进阶自定义爬取 4保存进数据库 学校基础设施太差,宿舍电量过低提醒虽然贴在楼下,但是作为低头一族,经常忘记看提醒导致宿舍酣战时突然黑屏,为了避免这种尴尬的场景以及强化PY学习,我决定…

钉钉如何调整组织架构_阿里调整组织架构:盒马升级为独立事业群,钉钉被划进阿里云丨钛快讯...

钛媒体6月18日消息,阿里巴巴集团CEO张勇通过全员信宣布了阿里新一轮面向未来的组织升级。他表示这次升级的主要目的是:充实创新业务的领导力量和组织保障;明确大文娱一号位,聚焦大文娱各业务的紧密融合;实现战略投资业…

服务器监控系统大概多少钱,服务器监控系统 报价

服务器监控系统 报价 内容精选换一换设置“云服务器名称”。名称可自定义,但需符合命名规则:只能由中文字符、英文字母、数字及“_”、“-”、“.”组成。如果同时购买多台弹性云服务器,系统会自动按序增加后缀。一次创建多台弹性云服务器时&…

过去式加ed的发音_【思语小课堂】时态二三事:规则动词过去式的发音规则

在一个简单句中,通常有主语,谓语,及宾语或表语等成分,例如:They watch television.这句话中,主语是they,谓语动词watch,television是宾语。除了这些成分会决定句子的含义&#xff0c…

服务器开机显示f1 f2,开机提示按F1/F2才能进入系统的解决方法

电脑开机出现了一个怪现象,那就是每次开机的时候都会有“F1”或者是“F2”的提示,并且要按一下才能正常进入系统,该怎么解决呢?下面秋叶系统小编教大家解决办法!下图为开机按F1键才能正常进入系统的画面!下…

apache httpclient 工具类_HttpClient 和Mycat 主从节点和读写分离

第175次(HttpClient)学习主题:HttpClient学习目标:1 掌握HttpClient自定义工具以及HttpClient具体的使用对应视频: http://www.itbaizhan.cn/course/id/85.html对应文档:无对应作业1. HttpClient自定义工具类的使用(1) 如何编写一个HttpClient工具类&…

datalist可以放div吗?_混凝土中能放竹子吗?可以代替钢筋吗?为何打地坪混凝土放竹子?...

大家好,我是专注家居和装修知识分享的家居杂坛。喜欢的就点击一下关注吧!对于在地面上所浇筑的混凝土,常规有两种做法。例如,在混凝土中铺设钢筋,打成钢筋混凝土的地面,又或者还有一些朋友在钢混凝土中放入…

snmp协议_软件评测师写作专栏之OSI七层模型及其常见的协议11

各位学员大家好,大家在学习计算机网络的时候,OSI七层模型及其常见的协议是必考的内容。为了让大家快速掌握这方面的知识点,接下来就带领大家一起来学习一下!例题:下面的协议中属于应用层协议的是( 1 ),该协…

linux部署tomcat项目404_一个tomcat下部署多个项目或一个服务器部署多个tomcat

点击上方[全栈开发者社区]→右上角[...]→[设为星标⭐]♪ 点击上方绿标 收听一个tomcat下部署多个项目或一个服务器部署多个tomcat最近需要把两个项目同时部署到服务器上,于是研究了一下,页借鉴了很多别人的方法,把过程记录下来,以…

科学计数法_第一章 科学计数法与近似数

生活中,我们常常遇到一些较大的数,如10000000、3450000000等.利用科学计数法表示某些较大的数可以免去一些不必要的麻烦,尤其是遇到一些乘法运算时,如20000000245000000.科学记数法表示数时,不改变数的符号&#xff0c…

# 傅立叶变换 画曲线_让你永远忘不了的傅立叶变换解析

使用联想链条和几何直观,辅以从实际需求衍生概念的思考模式,详解什么是傅立叶变换,为什么要做傅立叶变换等,帮助记忆和理解,目的当然是标题所说:让你永远忘不了傅立叶变换这个公式。另,这篇博客…

找不到天隆虚拟机_玩转虚拟机,教你如何装系统

最近小白系统收到很多小伙伴的私信想要知道虚拟机如何安装系统,那么今天小白系统整理了下虚拟机安装系统的教程,下面一起看下吧。虚拟机安装系统适合什么人群呢?1、如果你新买的电脑不支持安装Win7系统,那么装个虚拟机吧&#xff…

从数据类型 nvarchar 转换为 numeric 时出错_JS入门篇(三):javascript的数据类型详解...

JavaScript的数据类型分为两大类,基本数据类型和复杂数据类型。基本数据类型:Undefined、Null、Boolean、Number、String。复杂数据类型:Object。(1)Undefined类型Undefined 类型只有一个值,即特殊的 undefined。在使用 var 声明变…

为啥我的页面模板的from提交不了数据_4-9【微信小程序全栈开发课程】意见反馈(四)--提交反馈信息

1、创建后端操作文件先在后端server/controllers文件夹中创建操作文件createopinion.js,用来将从前端页面提交的数据,插入到opinions表中,创建完之后,页面目录如下2、添加路由在路由管理文件server/routes/index.js文件中添加路由…

rac一节点时间比另一个节点快_数据库数据那么多为什么可以检索这么快?

你好,是我琉忆。经常跟数据打交道的你,有没有去考虑过数据上百万,为什么它可以检索那么快?一说到数据库的检索速度这么快,我想你一定想到了索引。没错,今天我们来简单聊聊索引,聊聊索引是什么&a…

唯有自己变得强大_真正的自立,唯是让自己变得更加强大

更大的成功,不是看我们用双腿走了多少路,而是要看我们总共行了多少路。一只萤火虫,靠自身的力量发出了光芒。夜晚,它仰头望天,对着月亮说:“我是靠自己而发光的,而你却是借助太阳的光芒。虽然你…