《基本输入输出函数 .ppt》由会员分享,可在线阅读,更多相关《基本输入输出函数 .ppt(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第九讲第九讲 基本的输入和输出基本的输入和输出 提纲提纲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
2、中的文件定义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文
3、件(文件(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)中读取
4、和写入预定义类型数据的子程序;针对std_input and std_output的预定义访问操作;子程序名的重载(Overloaded);文件定义:文件定义:TEXTIO包的使用包的使用文件定义:文件定义:TEXTIO包的使用包的使用文件定义:文件定义:TEXTIO包的使用包的使用文件定义:扩展文件定义:扩展TEXTIO支持其他数据类型支持其他数据类型l对用户隐藏TEXTIO的ASCII格式;l针对所希望的数据类型的读和写,如,std_logic_vector,提供类型转换子程序;l将子程序封装在包中;l将包(package)安装在库(library)中,然后通过use 子句使库中的内容可见
5、;代码示例:类型转换代码示例:类型转换代码示例:类型转换代码示例:类型转换代码示例:(代码示例:(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读入该格式化输入行的程序:代码示
6、例:文件名的处理代码示例:文件名的处理代码示例:文件名的处理代码示例:文件名的处理l在上面的代码中假定“input”映射到模拟器的控制台通常“input”和“output”分别映射到标准输入和标准输出代码示例:测试模块代码示例:测试模块代码示例:测试模块代码示例:测试模块代码示例:测试程序(代码示例:测试程序(Testbenches)测试程序具有一定的通用性 基本策略是:施加测试激励,测量和记录响应矢量代码示例:测试程序(代码示例:测试程序(Testbenches)测试程序产生周期性的时钟信号并施加测矢量代码示例:测试程序(代码示例:测试程序(Testbenches)代码示例:结构化测试模块代
7、码示例:结构化测试模块测试激励的生成测试激励的生成l定义功能测试所需的激励矢量和参考矢量l激励源局部常数阵列I/O文件l时钟和复位信号的生成通常与激励矢量相隔离实现周期性的激励测试激励的生成:示例(测试激励的生成:示例(Smith96)测试激励的生成:示例(测试激励的生成:示例(Smith96)测试结果的确认(测试结果的确认(Validation)l将测试响应矢量与参考矢量相比较,并在外部文件中记录其中不匹配的部分(出错点);l同时需要记录出错点所对应的仿真时间点;l可能需要记录仿真状态。断言(断言(ASSERT)l将测试响应矢量与参考矢量相比较,并在外部文件中记录其中不匹配的部分(出错点);
8、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,Instanc
9、e:/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设计者可以在
10、预定义的级别上报告出错情况: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;l
11、beginlif devent 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/outputASCII I/O和 TEXTIO packagebinary I/OVHDL 87 vs.VHDL 93l测试程序(Testbenches)lASSERT语句