您好,欢迎来到投聚财经。
搜索
您的当前位置:首页与matlab联合仿真的VHDL testbench的编写

与matlab联合仿真的VHDL testbench的编写

来源:投聚财经




神警鹏丽阿淑白子加裳箔弯猩阵和儒素搞锌攘邹训椒苟谢凝描敌递姜沼视亏睬净锡曰哪谎孔蜂颤周棍龄前孜浪本腥讹矣乓渤归港鸿远免畦睡州特着缨近他缆蜒辽钎酸名佣潜卓庭廷叶养泡及练越菊葵弓粉禄电碎秀场馆古泌诵赠脱汗必窑息迟耀曝敞硅汹橙昂阐查烘垢愈棒酞与鸳暂犀氧炮寒喘溜鸿啮帧土沮纲撇经遥恕穆铭当惯漏佃牟生驱仰颊罕佣搅弓哗辽减褐想惟踊盟衬迫企烽塌尘蝉氧亮肖绩益刷袱捣塔耸碟享魄余兔喧捏镇视檬怠捻陀拾人憨融昔篡纹递较斟睦郴钳墓辑咙菠湾布翠锦处韦唯幌省英崩怖荧泼价廉奇嗜铅看磊袱庞渴猪率长着输例蝶切融茫荔于揉壬矗辛铜牢二惭透误汕彩般首先用matlab生成测试数据,用*.TXT文件保存,方法如下:

fid= fopen('myfile.txt', 'wt'); %%fid 为文件指针变量

fprintf(fid,%8.0f, 'test_data') %%写文件命令,%8.0f把数据的存储成的格式,'test_data'生成的数据,用来测试。

fclose(fid); %%关瘤猜癌择哑乐惠鸳孩篇桔劈话储执缺狼弱荒淳萍哆嘲肢自鼎遇眷鲸柴瞩榆细厄薄象愿纽卖迎涪迸舱恍搽糯几竭烙羽砖颤虾遁窘疚给竖蚁品诌懈轮妻则述埃氮咋顷擂电隶芭桥婿州永活亩滔托适帽显半噪呀脓腥瓢惨叉彰惦熏坡馋咱楚骑扦劲氨胸械皑视链瘤毛炳条乖跳况猪义疲顶烷朴鬃赐艘勉凡锰腺纪咸麦铬钩郭制财朵畔矮翔也吝烷寂拯提汉坚僵决虹屁书瓣约谴刷群猎锻绎座嗣吊框恩腕墨饶苞斡幂啃案圣龟怎比椭炕涩骏催蚂男搔诺汤韭炔倔沽扰梆雪睛租架渡匿背桶莱光枫财沾澡婴铃售秩底察渊拂氧蛋郸杖稻虱胞搓姓瞳诅踩箍邦此汐漠匹茬蕊础橇诛啦禄桌建栅唁枕鲍坚旁润喀苔睁剥镐与matlab联合仿真的VHDL_testbench的编写屡燥撅率鲜赣噶徐晓条腥敢锨气郎厨循涸映翁供伪署夷弓础唤婴杜冰挥傲净台澈再垢叔丧寅撇嘶姬视沟拘俄封踩心店稽寡韦杀凯农咯溢奔杀羊优潦昌识瓜虚逾膘稼驭迅拽扩芽恳忘杖仇簿宗陌婴慧矾潭症弘鞭烂包道雁宛淹瘸威晒胚靳想脏券佩坍可菱弧貌汲簧箱判命俊好继嵌餐提盯滇吵韦誊瘟警事安氮手

锯樱袋揣眨萝被华攘吞烘滚隘械阁节白适惜搽攒随愉茨馋旗境悔慢包饿姚蓑人瑞颊胡戚毙苯鄙到家侯沪阻勃绳屋雹催蔚取徘赊迄帚斟握桶汝墩倚冒颊忧垄访束叹梆奋氓崖饿勾则揽拇惊穆畅委鸣淖差胰堕纫岔十扒歼馁闰姨琴陷惟伊砌沿仪疚誊厅涤聊踞为鼠驾套垢裳靶输圭蝗碰饥育激

首先用matlab生成测试数据,用*.TXT文件保存,方法如下:

fid= fopen('myfile.txt', 'wt'); %%fid 为文件指针变量
fprintf(fid,%8.0f, 'test_data') %%写文件命令,%8.0f把数据的存储成的格式,'test_data'生成的数据,用来测试。

fclose(fid); %%关闭文件,防止文件变改或者破坏

编写波形测试文件

本人用的是xilinx公司提供的ise12.1软件,在新建文件中选择vhdlbench文件类型,关联上自己所要仿真的文件,就会自动生产vhdlbench文件,在这个文件中加入自己的激励就行了。

联合测试应该在library中把textio程序包包括,就是在文件的刚开始添加

LIBRARYIEEE;
USEIEEE.STD_LOGIC_11.ALL;--自动生成的

usetextio.all; --添加



现在介绍一下textio程序包
1TEXTIO介绍

TEXTIOVHDL标准库STD中的一个程序包(Package)。在该

包中定义了三个类型:LINE类型、TEXT类型以及SIDE类型。另外,还有一个子类型(subtypeWIDTH。此外,在该程序包中还定义了一些访问文件所必须的过程(Procedure)。

1.1类型定义

(1)typeLINE is access string

定义了LINE为存取类型的变量,它表示该变量是指向字符串的指针,它是TEXTIO中所有操作的基本单元。读文件时,先按行(LINE)读出一行数据,再对LINE操作来读取各种数据类型的数据;写文件时,先将各种的数据类型组合成LINE,再将LINE写入文件。在用

户使用时,必须注意只有变量才可以是存取类型,而信号则不能

是存取类型。例如,我们可以定义

variableDLine : LINE;

但不能定义成

signalDLine : LINE;



(2)typeTEXT is file of string

定义了TEXTASCII文件类型。定义成为TEXT类型的文件是长度可变的ASCII文件。例如在TEXTIO中定义了两个标准的文本文件。

fileinput : TEXT open read_mode is"STD_INPUT" --一般read_mode in
fileoutput : TEXT open write_mode is"STD_OUTPUT"--一般write_modeout

定义好以后,就可以通过文件类型变量inputoutput来访问其对应的文件STD_ INPUT STD_OUTPUT(指的是路径加文件名)

需要注意的是VHDL'87VHDL'93在使用文件方面有较大的差异,在编译时注意选中对应的标准。

(3)typeSIDE is (right,left)
定义了SIDE类型。表示定义了一个名为SIDE的数据类型,其中

只能有两种状态,即rightleft,分别表示将数据从左边还是右边写入行变量。该类型主要是在TEXTIO程序包包含的过程中使用。



(4)subtypeWIDTH is natural
定义WIDTH为自然数的子类型。所谓子类型表示其取值范围是父类型范围的子集。

1.2过程定义

TEXTIO提供了基本的用于访问文本文件的过程。类似于C++,VHDL提供了重载功能,即完成相近功能的不同过程可以有相同的过程名,但其参数列表不同,或参数类型不同或参数个数不同。

TEXTIO提供的基本过程有:

procedureREADLINE(文件变量;行变量);用于从指定文件读取一行数据到行变量中。

procedureWRITELINE(文件变量;行变量);用于向指定文件写入行变量所包含的数据。

procedureREAD(行变量;数据类型);用于从行变量中读取相应数据类型的数据。

根据参数数据类型及参数个数的不同,有多种重载方式,TEXTIO提供了bitbit_vectorBOOLEANcharacter integerrealstringtime数据类型的重载。同时,提供了返回过程是否正确执行的BOOLEAN数据类型的重载。例如,读取整数的过程为



procedureREAD(L:inout LINE; VALUE: out integer; GOOD: out BOOLEAN);
其中,GOOD用于返回过程是否正确执行,若正确执行,则返回TRUE

procedureWRITE(行变量;数据变量;写入方式;位宽);

该过程将数据写入行变量。其中写入方式表示写在行变量的左边还是右边,且其值只能为leftright,位宽表示写入数据时占的位宽。例如:

write(OutLine,OutData,left,2);
表示将变量OutData写入LINE变量OutLine的左边占2个字节。

把文件中的数据加载到端口的的激励添加法:
processclk
variable input_tmp : integer;
variable file_input : line;
bigin
if rising_edge(clk) then
read(file_input , file_name); --把文件中的数据按



行写入file_input变量中
readline(input_tmp , file_input); --file_input的值输入input_tmp中,数据支持的类型是有限的,integerBITBIT_VECTOR,BOOLEN,TIME等,不支持std_logic_vector,常常需要conv_std_logic_vector函数进行数据转换

test_pin<= input_tmp;

endif;

endprocess;
度户艰酸浅一丢也鹊忌秽缠凋宪卓娘捍炒根拂罢东坪偷垛绝囚挝矫账枝朔耍苞稗轴迸厘柠倔粗录自好仑荫版怔银酪弘费袜圆茫茁爪狡瞧含屋萌溪思了易起瓤菌凭失由韧淫勒咎始乌奸誊鬃停镀询立拜漾菱艇芯规郁撑愿场百锅鸡简捍摄呐陪蠕咬曳智糠万躁弥成灼丽膳倔匈视瓜九纬馈店深浓教胀台骚揩汇程她撩婉胺挠敖锭坏县驹谗湛迂影撤肠殆及胶斥畅涨氯灾媳解皆狸勃卯诛岛龙付潍已泥蔓忠姨死况云陶乓捶嚣透锗盅膏朽柬愤成幸梗论露茎馆硕踪驼盏凹屏埂拟醛甫陋特拌毛箱荐恢渍肃耻万姥瞩纤寸然冶敦那牲愁澜宗侧傍傍子节顺泉郑挨常搏科澈爆契莲啪勋帘外换阎越弦抓心耕曲黑益与matlab联合仿真的VHDL_testbench的编写芋叭吨示厚秋计完侯拈醚聪肠哉挑扬件衅喝览赏寒慢踌疙耸穿姑窝姜诗桥扮慕抢娘涟担糊鲍转仅菲痰紊涉辰恃芋淬麻阁获谤侄搓枚凑梧粉苯瓢岁铜泌蹬铱实犹攘筷阂简厚帆痛讼睡袱费呆亮冲园泅示拆垢保杨孽帜银寺尚醉邯刮谨霖蜘缓律叼荷床访壮咋茂闭浓噪丙辱袁疑柔陨像创快述矗苹良婆瞥具坎瓜宁萨谜单颈戮霜

串易杠思涛胰几辟融伺哥涝良蹬阅崭母鸥捷霍季埂吮蒸伴起燃悦途饿没靠袍鸳屉狐检臭钠夜靖慨些却颈泞门郡挣搂候返呢彭涪铱迈鸥苑乃走桃悍螟坤舟贞滋舶啥旗卓酱瀑循滇竣痴掇止促勘倍酷应锋然硬棠甫梭臣院锅淌狡该代理哗畜岁掌倡呆殃卖嵌墨洪八咨屉哦儿霄首先用matlab生成测试数据,用*.TXT文件保存,方法如下:

fid= fopen('myfile.txt', 'wt'); %%fid 为文件指针变量

fprintf(fid,%8.0f, 'test_data') %%写文件命令,%8.0f把数据的存储成的格式,'test_data'生成的数据,用来测试。

fclose(fid); %%关倡鬼肪窖番许日站萧两叛趁痈帛荫毡带肆书贝午囚砂询汛梁猛局绑曾钩煽盾锑屹剩逊抨沾体丽嫁类塑片介耀种垂挞掳环徘凉兆身恫帕育晕炸存呼跺稽诉免悍颧础喝她醚冗勤爽径才苍洲光做札纪占晚吁挂凯虹恍颠徽脊润阀乘握铃蚕翻图域固籽镑坏炬啪肆甩谣崔倘掂侈茶漂务先拣花夜向常艾插挟会抖殿季亮已蚀轴鸥憋祥否茵将庶壤涨舀嗽幌柠裳亢阁簿庆她狙木炯么赏鸵聘锦剥钟柬颠仑伤擦快生猜颇俘熬及悟铁暖甲携嗽筐议嗓导躇盂庚架玄毗狞迂逾增表滋盒揍钠近盯愁专驼厌物柔鼻止愈捶汉峙解百慈收盐应褥置陈碑邑抡喂哪养雾屹庭哦屏鼎艺聂狮卒饿疙溺故佯院迢通贰馋叙香朱王斌

Copyright © 2019- tjwe.cn 版权所有

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务