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”此时我们就需要…

在 sysservers 中找不到服务器,在 sys.servers 中找不到服务器的解决办法,自己解决的...

一开始提示,在服务器中找不到在 sys.servers 中找不到服务器 QPAccountsDBLink,先用select * from sys.servers ,发现只能查到一个服务器名称,后来自己电脑里保存了一些链接脚本,只需改几个地方-- 变量定义DECLARE DB…

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添花的时候可能会糊涂的不知所措。一、块级元素块元素会独自占据一整行,或者多行,可以任意设置其大小尺寸,是用于搭建网页布局的必须部分,使网页结构更加紧…

计算机在运行 显示器出现黑屏,显示器黑屏但电脑一直在运行是什么原因

大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。显示器黑屏但电脑一直在运行的原因是:1、可能是主机和显示器的连线接触不良(特别是接口处没有插好或者松动),还有可能连接的数据线出现问题,所以才…

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

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

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

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

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

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

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

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

python数据挖掘分析案例python_Python 数据挖掘实例 决策树分析

友情提示:此篇文章大约需要阅读 7分钟57秒,不足之处请多指教,感谢你的阅读。安装Anaconda Python集成环境下载环境anaconda下载选择安装环境下载过程中使用默认,但有一个页面需要确认,如下图。anaconda选择页面第一个勾…

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

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

mysql日志监控 zabbix_zabbix监控mysql哪些性能

匿名用户1级2017-09-27 回答一、从网上下载相应脚本与XML定义文件。extensive_mysql_monitoring_including_replication1.   Template_MySQL_Server.xml2.   Template_MySQL_Replication_Master.xml3.   Template_MySQL_Replication_Slave&#xf…

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

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

已通过os信号请求关闭服务器,redis(一)内部机制的介绍和启动过程

redis(一)内部机制的介绍和启动过程redis的基本介绍redis服务端redis客户端redis的持久化redis中的文件事件和时间时间redis的启动过程redis的基本介绍redis是一种非关系型数据库,采用key,value的形式来存储数据。key是二进制数据,对于value的…

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

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

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

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

nginx文件服务器密码登录,风的方向

说明很多时候我们服务器上的页面或者服务可能没有安全配置,使得服务开放的暴露在互联网中,很不安全。nginx可以给我们提供密码配置,来保护我们的服务器上的服务的安全性。配置nginx配置文件在需要配置密码的服务的相关nginx配置文件中的locat…

selenium python下载_使用Selenium、Chrome和Python下载PDF

我试着按照前面关于这个主题的文章来写,比如这些(post 1,post 2),但是我还是被卡住了。我的脚本必须使用一组凭据登录到站点,然后通过一些下拉菜单导航以选择报表。选择报表后,将弹出一个新窗口,在该窗口中…

劲乐团u显示服务器维护,劲乐团9YOU原版服务端架设教程

我来做一个o2jam的服务端架设教程,希望新手能有点帮助相信你已经全的数据库文件了,其实只要里面的三个就可以了test2...o2jamtrade---onlinereport那么GO了.首先确定你已经安装好了MSSQL.如果没有.........那就先安装下......企业版安装在SQL服务器的安装盘中找到MS…