安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

SystemVerilogVerilog的testbench

6月2日 无镇楼投稿
  在Testbench中很可能需要文件的读写操作,在可综合的设计中也可能会用到文件写入。SystemVerilogVerilog提供的文件写入读取方法并不多,主要有两类。
  第一类是writemembwritememhreadmembreadmemh,第二类是fscanffwrite。第一类用法简单,但是功能弱,文件读取也不支持多维数组;第二类用法复杂一点,功能相对强大,配合循环语句可以处理多维数组。1。writemem〔bh〕readmem〔bh〕
  writemem〔bh〕主要有以下用法:
  (1)readmemb(数据文件名,存储器名);
  (2)readmemb(数据文件名,存储器名,起始地址);
  (3)readmemb(数据文件名,存储器名,起始地址,终止地址);
  其中起始地址和终止地址都是相对于存储器名指定的数据而言,而不是指写入文件时的位置。参考以下代码。parameterWIDTH8;parameterINDEX016;parameterFILEPATHBE:FPGAPRACTICEFileReadWritefilesfileb。parameterFILEPATHHE:FPGAPRACTICEFileReadWritefilesfileh。parameterFILEPATHFE:FPGAPRACTICEFileReadWritefilesfilef。parameterFILEPATHHALFE:FPGAPRACTICEFileReadWritefilesfilehalf。reg〔WIDTH1:0〕dat0〔INDEX01:0〕,dat1〔INDEX01:0〕;wire〔WIDTH1:0〕dat1comp〔INDEX01:0〕;reg〔WIDTH1:0〕dat0read〔INDEX01:0〕;integeri,j;initialbeginfor(i0;iINDEX0;i)dat0〔i〕i1;writememb(FILEPATHB,dat0,0);writememh(FILEPATHH,dat0,0);writememh(FILEPATHHALF,dat0,INDEX02);readmemh(FILEPATHH,dat0read,INDEX02);for(i0;iINDEX0;i)display(d,dat0read〔i〕);end
  writememb(FILEPATHB,dat0,0)将以二进制的格式写入数据,如下图所示。每个数据占据一行。注意,使用writememb写入的文件也要通过readmemb读出,否则数据可能是错误的。
  writememb(FILEPATHB,dat0,0)将以二进制的格式写入数据。
  writememh(FILEPATHHALF,dat0,INDEX02)将从dat0〔8〕开始按照十六进制写入数据,如下图所示。
  readmemb和reamdmemh可以从文件中读取数据,其用法如下。
  (1)readmem〔bh〕(数据文件名,存储器名);
  (2)readmem〔bh〕(数据文件名,存储器名,起始地址);
  (3)readmem〔bh〕(数据文件名,存储器名,起始地址,终止地址);
  其中起始地址是指从数据文件中读取的数据将从存储器名的指定地址开始填充,参考上文程序中的以下语句。
  readmemh(FILEPATHH,dat0read,INDEX02);
  for(i0;iINDEX0;i)display(d,dat0read〔i〕);
  从FILEPATHH中读取的数据将从dat0read的地址INDEX02的位置开始填充,而dat0read中未初始化且未填充的数据为x,如下图所示。
  注意,readmem〔bh〕是将数据放在存储器中,所以dat0read应该定义为reg型,而不是wire。
  此外,readmem〔bh〕是不能填充二维数据的。比如reg〔M:N〕dat〔X:Y〕是可以使用readmem〔bh〕填充的,而reg〔M:N〕dat〔X:Y〕〔A:B〕是不可以用作readmem〔bh〕的操作对象的。2。fwrite和fscanf2。1基本用法
  这两个系统函数的功能更强大,参考以下代码。initialbeginfor(i0;iINDEX01;i)dat1〔i〕i1;dat1〔INDEX01〕b000x0001;fidfopen(FILEPATHF,w);for(i0;iINDEX02;i)beginfwrite(fid,dd,dat1〔i2〕,dat1〔i21〕);endfclose(fid);fidfopen(FILEPATHF,r);for(i0;iINDEX0;i)beginfscanf(fid,d,dat1comp〔i〕);display(Readdatais:b,Origindatais:b。,dat1comp〔i〕,dat1〔i〕);if(dat1comp〔i〕!dat1〔i〕)begindisplay(Datanotidentical!Indexd。,i);endendend
  上述代码首先对dat1进行赋值,注意dat1〔INDEX01〕被单独赋值,且其值包括x。通过fopen打开或新建一个可写的文本文件,将每两个连续的数据写入文件。如下图所示。
  通过fwrite(fid,dd,dat1〔i2〕,dat1〔i21〕)将dat1按照十进制的格式写入文件,每两个数据为一行。fwrite函数会自动换行,所以上述代码中的是多余的。后续代码通过fscanf将数据从文件中读出,可以每次读出一个数据,也可以每次读出多个数据。
  注意,写入文件格式和读出格式必须匹配,否则读出数据出错。比如按照十进制写入,就需要按照十进制读出。
  fscanf和c语言中的printf的使用方法基本一致。
  dat1〔INDEX01〕中的一个bit包含x,所以整个数据存储为x。2。2多维数据读写
  fwrite和fscanf可以支持多维数组读写。写入函数不再赘述,主要描述读出操作,参考以下代码。parameterINDEX14;parameterINDEX24;parameterFILEPATH2DBE:FPGAPRACTICEFileReadWritefilesfile2Db。parameterFILEPATH2DHE:FPGAPRACTICEFileReadWritefilesfile2Dh。reg〔WIDTH1:0〕dat2〔INDEX11:0〕〔INDEX21:0〕;wire〔WIDTH1:0〕dat2comp〔INDEX11:0〕〔INDEX21:0〕;initialbeginfor(i0;iINDEX1;i)beginfor(j0;jINDEX2;j)begindat2〔i〕〔j〕iINDEX1j;endendwritememb(FILEPATH2DB,dat2,0);writememh(FILEPATH2DH,dat2,0);readmemb(FILEPATH2DB,dat2comp);fidfopen(FILEPATH2DB,r);for(i0;iINDEX1;i)beginfor(j0;jINDEX2;j)beginfscanf(fid,b,dat2comp〔i〕〔j〕);display(data〔。2d〕〔。2d〕is:d,i,j,dat2comp〔i〕〔j〕);endendfclose(fid);fidfopen(FILEPATH2DH,r);for(i0;iINDEX1;i)beginfor(j0;jINDEX22;j)beginfscanf(fid,hh,dat2comp〔i〕〔j2〕,dat2comp〔i〕〔j21〕);display(data〔。2d〕〔。2d〕is:ddata〔。2d〕〔。2d〕is:d,i,j2,dat2comp〔i〕〔j2〕,i,j21,dat2comp〔i〕〔j21〕);endendend
  上述代码展示了如何通过for循环从文件中读出数据并填充多维数组的,可以一次读出一个数据,也可以读出多个,比如fscanf(fid,hh,dat2comp〔i〕〔j2〕,dat2comp〔i〕〔j21〕)。下一句将读出数据打印出来。注意文件数据类型要和读出类型一致。
  版权声明:本文为CSDN博主小苍蝇别闹的原创文章,遵循CC4。0BYSA版权协议,转载请附上原文出处链接及本声明。
  原文链接:https:blog。csdn。netyinyeyyarticledetails112499675
投诉 评论 转载

库克苹果的目标是不再消耗地球上的任何资源26日,苹果现任CEO库克在接受媒体采访时提到,苹果的长期目标是不用地球上的任何资源来制造产品。为此,现阶段类似Mac、iPhone等产品中部分的铝和稀土等都是回收再利用的,且……SystemVerilogVerilog的testbench在Testbench中很可能需要文件的读写操作,在可综合的设计中也可能会用到文件写入。SystemVerilogVerilog提供的文件写入读取方法并不多,主要有两类。第……盘点4款3000元档国产手机,款款都是高性价比,网友坐等612022年以来,手机市场愈发激烈,手机厂商都纷纷发布新一代旗舰。但不少业内人士分析,在较为低迷的智能手机市场,3000元左右的中端市场韧性会更强、需求更旺。618即将到来,今天……当代散文新疆的秋天文杨建军有人说;秋天是一首歌、秋天是一幅画、秋天是一首诗可我觉得,秋天就是每个人心底个故事,人生的点滴成长都会在秋天收获。秋天是铺满大地的辣椒,红红火火,秋天是洁白如雪的……阿德勒自卑与超越8自卑情节三个孩子跟妈妈一起去动物园,看到关在笼子里的狮子后,孩子们有了不同的反应。第一个躲在妈妈后面,不断往后退缩,对妈妈说:我想回家,第二个脸色苍白,身体颤抖着说:我一点也不害怕,第……染发对头皮的伤害有多严重一般情况下可以染发但需要根据自己本身的情况。如果属于敏感体质建议少染,以免引起过敏的情况。头皮过敏可能会引起糜烂,流水。不是过敏体质也建议不要经常染发染发剂中会含有许多化……下周一,油价有变!下周一(10月10日)24时油价又要变了本轮油价预测要下降!9月美油累计下跌约11,布油累跌约8。8,均为连续第四个月下跌。三季度跌超20,而10月开市第一日……76人4换2新方案!哈里斯联手三球,恩比德哈登喜迎2大帮手北京时间9月2日,NBA自由市场最大牌米切尔交易尘埃落定,1换8加盟骑士,这也让东部的竞争变得更加激烈。而一些东部球队并未停下补强的步伐,这当中就包括76人,美媒NBAAnal……硒是长寿元素,建议中老年宁可不吃肉,也要吃这3种高硒菜大家好,我是桃子姐!健康长寿是每个人的梦想,即使再平凡的人,活着都会有他自身的价值,无论是社会价值,还是家庭价值,老话说的好死不如赖活着,也正是这个道理。想长寿必须得先学……信用卡新规定出台,这些消息你看明白了吗?近日,中国银保监会、中国人民银行发布《关于进一步促进信用卡业务规范健康发展的通知》。而这次的规定将会对信用卡用户带来怎样的影响呢?数据表明,随着信用卡业务的不断增长……石墨烯氮微谐振器中的栅极可调谐频梳光学频率梳以不连续的等间隔频率发射光脉冲,是现代频率计量学、精密光谱学、天文观测、超快光学和量子信息的基础。石墨烯由于具有出色的费米狄拉克可调性和超快的载流子迁移率,其光……价格大幅下调!苹果MacBookProM1直降1500元随着M2芯片机型的逐渐上市,苹果目前对部分M1芯片机型进行了价格调整。目前在京东商城自营上面,苹果MacBookProM1机型(8G256G)直降1500元,注重价格因素的用户……
重病要用猛药,央行和银保监会为什么给楼市用16条猛药?适合多数人审美的百搭复古球鞋adidasOriginalsF元宇宙体育创世经典世界杯NFT公开发行假如男士护肤有段位,快来对号入座中国女篮再冲顶麻麻花的山坡,享受惬意慢时光1分钟教会!如何挑选一把靠谱的智能锁?王者荣耀S26赛季游戏内调整一览,让你的新赛季上分之路少走弯秋已立要忌嘴,记得少吃2红,多饮3黄,滋补润燥好度秋价格实惠!俄罗斯人需求增加精挑细选的好玩的冷知识除了屏下摄像,Axon40Ultra还给我们带来了什么?剖腹产只是挨一刀吗?需要经历多少个难熬过程,术后恢复期有哪些远足感悟平日里造句用平日里造句大全周生如故3个全员悲剧细节!一生一世机场再见幼学琼林《武职》原文及翻译苏炳添跟夫人从校服到婚纱网友他们的爱情就是一部偶像剧吴忠的夜长方体和正方体的表面积说课拔牙后要注意这些事项,恢复得快realme真我q3pro和真我v15哪个好区别是什么参数对散文春天里的白玉兰六年级工作计划

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利