好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

第讲基本输入输出函数.ppt

37页
  • 卖家[上传人]:s9****2
  • 文档编号:584418891
  • 上传时间:2024-08-31
  • 文档格式:PPT
  • 文档大小:820.02KB
  • / 37 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第九讲第九讲 基本的输入和输出基本的输入和输出 提纲提纲l基本input/output文件l测试程序(Testbenches)lASSERT语句 文件对象文件对象lVHDL的对象包括–信号–变量–常量–文件l通过引入文件类型,使得我们可以定义和使用文件对象 文件定义文件定义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_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直接和间接的文件打开操作; 文件定义:二进制文件定义:二进制I/O文件(文件(VHDL 1987)) 文件定义:二进制文件定义:二进制I/O文件(文件(VHDL 1987))lVHDL1987支持read(f,value), write(f, value)和 endfile(f)操作;l通过文件声明来间接地进行文件打开操作; 文件定义:文件定义:TEXTIO包包 文件定义:文件定义:TEXTIO包包l文件是按行(lines)来组织的;lRead()和write()子程序对line数据结构进行操作;lReadline()和writeline()子程序和文件进行数据交换;l基于Text的 I/O操作;l在STD 库的TEXTIO包中封装了全部的操作子程序–从行( lines )中读取和写入预定义类型数据的子程序;–针对std_input and std_output的预定义访问操作;–子程序名的重载(Overloaded); 文件定义:文件定义:TEXTIO包的使用包的使用 文件定义:文件定义:TEXTIO包的使用包的使用 文件定义:文件定义:TEXTIO包的使用包的使用 文件定义:扩展文件定义:扩展TEXTIO支持支持其他数据类型其他数据类型l对用户隐藏TEXTIO的ASCII格式;l针对所希望的数据类型的读和写,如, std_logic_vector ,提供类型转换子程序;l将子程序封装在包中;l将包( package)安装在库( library)中,然后通过use 子句使库中的内容可见; 代码示例:类型转换代码示例:类型转换 代码示例:类型转换代码示例:类型转换 代码示例:(代码示例:(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 代码示例:(代码示例:(Bhasker95))l读入的格式化输入行: 代码示例:(代码示例:(Bhasker95))l读入该格式化输入行的程序: 代码示例:文件名的处理代码示例:文件名的处理 代码示例:文件名的处理代码示例:文件名的处理l在上面的代码中假定“input”映射到模拟器的控制台–通常“input”和 “output”分别映射到标准输入和标准输出 代码示例:测试模块代码示例:测试模块 代码示例:测试模块代码示例:测试模块 代码示例:测试程序(代码示例:测试程序(Testbenches)• 测试程序具有一定的通用性• 基本策略是:施加测试激励,测量和记录响应矢量 代码示例:测试程序(代码示例:测试程序(Testbenches)•测试程序产生周期性的时钟信号并施加测矢量 代码示例:测试程序(代码示例:测试程序(Testbenches) 代码示例:结构化测试模块代码示例:结构化测试模块 测试激励的生成测试激励的生成l定义功能测试所需的激励矢量和参考矢量l激励源–局部常数阵列–I/O文件l时钟和复位信号的生成–通常与激励矢量相隔离–实现周期性的激励 测试激励的生成:示例(测试激励的生成:示例(Smith96)) 测试激励的生成:示例(测试激励的生成:示例(Smith96)) 测试结果的确认(测试结果的确认(Validation))l将测试响应矢量与参考矢量相比较,并在外部文件中记录其中不匹配的部分(出错点);l同时需要记录出错点所对应的仿真时间点;l可能需要记录仿真状态。

      断言(断言(ASSERT))l将测试响应矢量与参考矢量相比较,并在外部文件中记录其中不匹配的部分(出错点);l同时需要记录出错点所对应的仿真时间点;l可能需要记录仿真状态 断言(断言(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 : Time: 100 ns, Iteration: 0, Instance: /T1. 断言(断言(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 : Time: 100 ns, Iteration: 0, Instance: /T1. 断言(断言(ASSERT))l设计者可以在预定义的级别上报告出错情况:NOTE,WARNING, ERROR and FAILURE (枚举类型)l报告的参数是一个字符串,该字符串会写到仿真输出l断言所对应的操作是仿真器相关的l并行 vs. 串行断言语句l在不中断仿真的情况下TEXTIO比 ASSERT快 断言(断言(ASSERT):示例():示例(Bhaskar 95))larchitecture check_times of DFF islconstant hold_time: time:=5 ns;lconstant setup_time : time:= 2 ns;lbeginlprocesslvariable lastevent: time;lbeginlif d’event thenlassert NOW = 0 ns or (NOW - lastevent) >=hold_timelreport “Hold time too short”lseverity FAILURE;llastevent := NOW;lend if;l-- check setup timel-- D flip flop behavioral modellend process;lend architecture check_times 总结总结l基本input/output–ASCII I/O和 TEXTIO package–binary I/O–VHDL 87 vs. VHDL 93l测试程序(Testbenches)lASSERT语句 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.