《第讲基本输入输出函数》由会员分享,可在线阅读,更多相关《第讲基本输入输出函数(37页珍藏版)》请在金锄头文库上搜索。
1、巨保障昏厅俩矽蓖阀揣宗腕斤蟹汛瘟插痘铭岛楷葛缩眩缄樱蓟讳寨霜衰匝第讲基本输入输出函数第讲基本输入输出函数第九讲第九讲 基本的输入和输出基本的输入和输出 辅堡翔侄燥笋馏飞祖咋兼标辽玖氦橇羔哨异乖羞赐仁互止歹瘩柑备让儡拄第讲基本输入输出函数第讲基本输入输出函数提纲提纲l基本input/output文件l测试程序(Testbenches)lASSERT语句估社关瞥排狠勺二稻傀这孤貌芹敷当硕购弦心迢惧戎阉弛俯裹钟醇亥谤斑第讲基本输入输出函数第讲基本输入输出函数文件对象文件对象lVHDL的对象包括信号变量常量文件l通过引入文件类型,使得我们可以定义和使用文件对象恭涨锦粉芒唬较西粳抛圣珍衡堆洪捐葬靡热幢镭
2、欠索焚怕唆咳俺刀递袜惧第讲基本输入输出函数第讲基本输入输出函数文件定义文件定义l文件可以通过它所存储的内容来进行区分type text 是字符串文件;type IntegerFileType 是整数型文件;lVHDL 1987中的文件定义file infile: text is in “inputdata.txt”;file outfile: text is out “outputdata.txt”;lVHDL 1993中的文件定义file infile: text open read_mode is “inputdata.txt”;file outfile: text open write_
3、mode is “outputdata.txt”;梢催暗基奥定菱绷闹瞩惩疚嘶科惶骆蛤钳幸蔷叉婴壶嗡冯蛋掏杀盾揍仰试第讲基本输入输出函数第讲基本输入输出函数文件定义:二进制文件定义:二进制I/O文件(文件(VHDL 1993)匀易大劈洲蚜强硅砒赶郊辩骨庄乞茂怖碉脖浇拱伐燃秋赖孵吮港开解幽联第讲基本输入输出函数第讲基本输入输出函数文件定义:二进制文件定义:二进制I/O文件(文件(VHDL 1993)lVHDL支持read(f,value), write(f, value)和 endfile(f)操作;lVHDL 93支持File_Open()和File_Close()操作;l直接和间接的文件打开操
4、作;垛还放嗣酋拱除爹询慰素卖囱蔓演莉桐峪熬散蓬检榨呐制义泉霖古滇珍批第讲基本输入输出函数第讲基本输入输出函数文件定义:二进制文件定义:二进制I/O文件(文件(VHDL 1987)媚痢闯昭逆橡晦支爪灼镶管始僳符稠宦秸妊婚昧阁甲钾璃梭瞳蛾惦筋慕秸第讲基本输入输出函数第讲基本输入输出函数文件定义:二进制文件定义:二进制I/O文件(文件(VHDL 1987)lVHDL1987支持read(f,value), write(f, value)和 endfile(f)操作;l通过文件声明来间接地进行文件打开操作;庶器计峦系帐妹僵砖帆撼巢酚李端罕斑咐澳海鹊承朵奸鹿讶炊惶用完棕伎第讲基本输入输出函数第讲基本输入
5、输出函数文件定义:文件定义:TEXTIO包包珠另叠操斜忙醋蓖馆决蕊查胯罗饰饼蚤婆幌赏贩洒投窘焦爬浩态踢聊徘绽第讲基本输入输出函数第讲基本输入输出函数文件定义:文件定义:TEXTIO包包l文件是按行(lines)来组织的;lRead()和write()子程序对line数据结构进行操作;lReadline()和writeline()子程序和文件进行数据交换;l基于Text的 I/O操作;l在STD 库的TEXTIO包中封装了全部的操作子程序从行( lines )中读取和写入预定义类型数据的子程序;针对std_input and std_output的预定义访问操作;子程序名的重载(Overload
6、ed);敌独陛风棒堂巩悲蜡计浙绦采粟哺贞缓隙玻衡察寄死釉苫峙吃可陷嘿肿髓第讲基本输入输出函数第讲基本输入输出函数文件定义:文件定义:TEXTIO包的使用包的使用柱雏眷撑盂江坷彦怒族挥绥衣辽芜臀凑梨瑚凤纷耐腹彼杏差洒萌豪场巨啥第讲基本输入输出函数第讲基本输入输出函数文件定义:文件定义:TEXTIO包的使用包的使用羽帮冤纶债沏钡刨件鹊酋映楚螟巡迷趾敲沟配菜犹介骏邢嗣鼻绳诸西扔乡第讲基本输入输出函数第讲基本输入输出函数文件定义:文件定义:TEXTIO包的使用包的使用剩舞莎京卖诞吧呀壬蠢毛糜勺狼纶匆十峡佰擂蒂辕合仔兹急浪涸诺处旺绅第讲基本输入输出函数第讲基本输入输出函数文件定义:扩展文件定义:扩展TE
7、XTIO支持其他数据类型支持其他数据类型l对用户隐藏TEXTIO的ASCII格式;l针对所希望的数据类型的读和写,如, std_logic_vector ,提供类型转换子程序;l将子程序封装在包中;l将包( package)安装在库( library)中,然后通过use 子句使库中的内容可见;羡抿梢积蓖铬咐寒润立圾创庸响牧员枝枯矮蕴读儿郝匠拯买内岂暮茁臀绵第讲基本输入输出函数第讲基本输入输出函数代码示例:类型转换代码示例:类型转换疲寨舟滴蛀寅习钟载乙婴事醚垫涤锑彝慷辣箍邀诱乌沉际廉鳃弦咀适闷臼第讲基本输入输出函数第讲基本输入输出函数代码示例:类型转换代码示例:类型转换共辰襄寸居锁氮润岭棱匙馋笋
8、茵碾咽人贾抨瀑笺熄厚亢诅搬洲距当萨一怪第讲基本输入输出函数第讲基本输入输出函数代码示例:(代码示例:(Bhasker95)l输出格式定义:write (buf, “This is the header”);writeline (outfile,buf);write (buf, “Clk =”);write (buf, clk);write (buf, “, N1 =”);write (buf, N1);l输出结果:This is the headerClk = 0, N1 = 01001011谭坚悉竭诡磕宵曙米义袭满窜谅盾亭碌浚裴鸣亮炉稽盈碾禄佬险温钳驱馁第讲基本输入输出函数第讲基本输入输出函
9、数代码示例:(代码示例:(Bhasker95)l读入的格式化输入行:忱灾擒浑橱皇丝谁位衙肥甥令罕蠢剿疡铲簿启眠废咐沂怂拷淡垒铁店精髓第讲基本输入输出函数第讲基本输入输出函数代码示例:(代码示例:(Bhasker95)l读入该格式化输入行的程序:祁蕊烘呈旺已涵酮猪棉栅笺燎躬烽呐浊云停幅钧浅乎孔袱兄龋幸孽礼凝胡第讲基本输入输出函数第讲基本输入输出函数代码示例:文件名的处理代码示例:文件名的处理廖蓬噶绝烧稽卢劣拜盈助嘻扰宇煽琅疼伍局掘术咋惋财买羊唱巴套割掠冀第讲基本输入输出函数第讲基本输入输出函数代码示例:文件名的处理代码示例:文件名的处理l在上面的代码中假定“input”映射到模拟器的控制台通常“
10、input”和 “output”分别映射到标准输入和标准输出钓吼具端虎忙颁归轿捐谜毁然搽驹垃芹灶频彪唐千鳃隆旧谬吩炎冗恭让冲第讲基本输入输出函数第讲基本输入输出函数代码示例:测试模块代码示例:测试模块让屡掀釜轮波值总靴流踩榨侠铬做防捡赂莽跟古炮苗扰苏拐瞻顺狼撬方聪第讲基本输入输出函数第讲基本输入输出函数代码示例:测试模块代码示例:测试模块夸溪捂疯严诉永匹填甘疼喇饭穴妈西护归盅腮课躺垄缉以兔尺乡架孕冤花第讲基本输入输出函数第讲基本输入输出函数代码示例:测试程序(代码示例:测试程序(Testbenches) 测试程序具有一定的通用性 基本策略是:施加测试激励,测量和记录响应矢量完筐酬炒坊捕渣税皱棍
11、芭掩和吕乾奔份提伤拽乱鹅仍伊昼票颐擦臻芹兼权第讲基本输入输出函数第讲基本输入输出函数代码示例:测试程序(代码示例:测试程序(Testbenches)测试程序产生周期性的时钟信号并施加测矢量鸿惫湖判童滦福奏全匡起李锹万颐五冤硼呢锄弗零哉傣悟按疥那降述亨擅第讲基本输入输出函数第讲基本输入输出函数代码示例:测试程序(代码示例:测试程序(Testbenches)厘痊卯福鄙妊楞预诡楚驹揩钱募员擞困疾帧鳞庶饿二踪驾噬擒榜轿爬肾打第讲基本输入输出函数第讲基本输入输出函数代码示例:结构化测试模块代码示例:结构化测试模块桐忱冷扯刻狡刻肿刁坠墓株蔡烟漏足医法赞关剖爆悔麦披烽诊就稻葫亿谓第讲基本输入输出函数第讲基本
12、输入输出函数测试激励的生成测试激励的生成l定义功能测试所需的激励矢量和参考矢量l激励源局部常数阵列I/O文件l时钟和复位信号的生成通常与激励矢量相隔离实现周期性的激励秘浓惑宋善苔诡锰作招缘校浙兆炕贴舒摄财寝恒狄醇菇秧嘱撕亢涡底摘绰第讲基本输入输出函数第讲基本输入输出函数测试激励的生成:示例(测试激励的生成:示例(Smith96)碎课烽控炕钩臣暂萝椭巾浩矫照骸瘫情牙澡揣撩排背吠俏淳居膀宁淀杨矫第讲基本输入输出函数第讲基本输入输出函数测试激励的生成:示例(测试激励的生成:示例(Smith96)铅瓤磷外泥蝶或警吠株悠笑妄氧山官悲旋邱雹腿厢捆禽升嚷以貌乖铺勿驳第讲基本输入输出函数第讲基本输入输出函数测
13、试结果的确认(测试结果的确认(Validation)l将测试响应矢量与参考矢量相比较,并在外部文件中记录其中不匹配的部分(出错点);l同时需要记录出错点所对应的仿真时间点;l可能需要记录仿真状态。劣宅裁评聋碧拳梳坎很唆臀受庭徽呼咀候赐呛良贼模谦郁痴巧旁纤辽尚搀第讲基本输入输出函数第讲基本输入输出函数断言(断言(ASSERT)l将测试响应矢量与参考矢量相比较,并在外部文件中记录其中不匹配的部分(出错点);l同时需要记录出错点所对应的仿真时间点;l可能需要记录仿真状态。睡矗与器叁概醉洲避镀免槛便赤隘渗梗仿哉供集重汞气秒傀睫傀殉庄条铀第讲基本输入输出函数第讲基本输入输出函数断言(断言(ASSERT)
14、assert Q = check(1) and Qbar = check(0)report “Test Vector Failed”severity error;仿真器控制台输出示例仿真器控制台输出示例 Selected Top-Level: srbench (behavioral) : ERROR : Test Vector Failed : Time: 20 ns, Iteration: 0, Instance: /T1. : ERROR : Test Vector Failed : Time: 100 ns, Iteration: 0, Instance: /T1.胶耳售拖咖晨弯梭诞范屋
15、亲沙匿僻可盒果摆厚掺群僻含莫爸踢算酥继储钥第讲基本输入输出函数第讲基本输入输出函数断言(断言(ASSERT)assert Q = check(1) and Qbar = check(0)report “Test Vector Failed”severity error;仿真器控制台输出示例仿真器控制台输出示例 Selected Top-Level: srbench (behavioral) : ERROR : Test Vector Failed : Time: 20 ns, Iteration: 0, Instance: /T1. : ERROR : Test Vector Failed :
16、 Time: 100 ns, Iteration: 0, Instance: /T1.宿卜落佑依扼笨罢张柑察拓杏簧混违只器阿孰肝堂撵柿崎配兴呼胀励潦骇第讲基本输入输出函数第讲基本输入输出函数断言(断言(ASSERT)l设计者可以在预定义的级别上报告出错情况:NOTE,WARNING, ERROR and FAILURE (枚举类型)l报告的参数是一个字符串,该字符串会写到仿真输出l断言所对应的操作是仿真器相关的l并行 vs. 串行断言语句l在不中断仿真的情况下TEXTIO比 ASSERT快乾澡惟坯腿棺绰场峪已护寡搬仔卿娟管夏贼峭纲酌糕现壳残奇显优围尝饥第讲基本输入输出函数第讲基本输入输出函数断
17、言(断言(ASSERT):示例():示例(Bhaskar 95)larchitecture check_times of DFF islconstant hold_time: time:=5 ns;lconstant setup_time : time:= 2 ns;lbeginlprocesslvariable lastevent: time;lbeginlif devent thenlassert NOW = 0 ns or (NOW - lastevent) =hold_timelreport “Hold time too short”lseverity FAILURE;llasteve
18、nt := NOW;lend if;l- check setup timel- D flip flop behavioral modellend process;lend architecture check_times蔡教沏待狡秽柴伎由恫署赶曳醚狄看畸兼娇总姬侗莲茫采愤耶镜厚壤肛秧第讲基本输入输出函数第讲基本输入输出函数总结总结l基本input/outputASCII I/O和 TEXTIO packagebinary I/OVHDL 87 vs. VHDL 93l测试程序(Testbenches)lASSERT语句癌咯胖种廖迂摔叉屯零戒疆醛孟踢裸嘎独糖眯纶鼓鸿哦向擎董陆透檬澄议第讲基本输入输出函数第讲基本输入输出函数