您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 数字系统设计与VHDL10 VHDL数字电路的仿真
第10章VHDL数字电路的仿真10.1VHDL仿真概述仿真(Simulation)也称为模拟,是对所设计电路的功能的验证,设计者可以对整个系统或者各个模块进行仿真,即用计算机软件验证功能是否正确,各个部分的时序是否准确和符合要求。如果仿真时发现问题可以随时修改,从而避免设计的错误。高级的仿真软件还可对设计的性能进行评估。越大规模的设计越需要进行仿真,否则设计的正确性无从得到验证,可以说仿真是VHDL数字电路设计不可或缺的重要部分。目前,基于FPGA/CPLD的设计越来越复杂,设计的仿真验证比从前显得更加重要。在一个使用IP核的百万级SOC(片上系统)设计中,花费在仿真验证上的时间将占整个设计周期的70%以上,测试平台的代码数量将占整个设计代码总量的80%左右。10.1VHDL仿真概述仿真的分类:功能仿真不考虑信号时延特性的仿真,称为功能仿真,又叫前仿真。时序仿真时序仿真又称为后仿真,它是在选择了对应的FPGA器件并完成了布局布线后进行的包含时延特性的仿真。10.2VHDL测试平台10.2VHDL测试平台10.2.1用VHDL描述仿真激励信号【例10.1】复位信号ENTITYreset_signalISENDENTITY;ARCHITECTUREarchOFreset_signalISSIGNALreset:BIT;BEGINreset='0','1'AFTER50ns,'0'AFTER100ns;ENDarch;10.2VHDL测试平台【例10.2】占空比50%的时钟信号ENTITYclk_signalISENDENTITY;ARCHITECTUREarchOFclk_signalISSIGNALclk:BIT;BEGINclk=NOTclkAFTER40ns;ENDarch;clk04080120……10.2VHDL测试平台【例10.3】占空比为1/3时钟信号LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYclk_geneISENDclk_gene;ARCHITECTUREoneOFclk_geneISSIGNALclk:STD_LOGIC;CONSTANTclk_period:TIME:=30ns;BEGINPROCESSBEGINclk='1';WAITFORclk_period/3;clk='0';WAITFOR2*clk_period/3;ENDPROCESS;ENDone;10.2VHDL测试平台【例10.4】一般的激励信号的例子LIBRARYIEEE;USEIEEE.std_logic_1164.all;ENTITYgeneral_signalISENDgeneral_signal;ARCHITECTUREarchOFgeneral_signalISSIGNALtest_in:STD_LOGIC_VECTOR(2DOWNTO0);PROCESSBEGINtest_in=000;WAITFOR200ns;test_in=001;WAITFOR200ns;test_in=010;WAITFOR200ns;test_in=011;WAITFOR200ns;test_in=100;WAITFOR200ns;test_in=101;WAITFOR200ns;test_in=110;WAITFOR200ns;test_in=111;WAITFOR200ns;ENDPROCESS;ENDarch;10.2VHDL测试平台【例10.5】周期脉冲信号LIBRARYIEEE;USEIEEE.std_logic_1164.all;ENTITYwave_gen1ISPORT(clk:INBIT);ENDwave_gen1;ARCHITECTUREarchOFwave_gen1ISBEGINPROCESSVARIABLEcount:INTEGERRANGE0TO7;BEGINWAITUNTIL(clk'EVENTANDclk='1');CASEcountISWHEN0=wave='0';WHEN1=wave='1';WHEN2=wave='0';WHEN3=wave='1';WHEN4=wave='1';WHEN5=wave='1';WHEN6=wave='0';WHEN7=wave='0';ENDCASE;count:=count+1;ENDPROCESS;ENDarch;10.2VHDL测试平台10.2.2用TEXTIO进行仿真1.TEXTIO文件产生激励的方法TEXTIO提供了VHDL仿真时与磁盘文件的交互。在验证一个VHDL设计时,可以将所有的输入保存在一个文本文件中,将计算的结果保存在另外的文件中。在VHDL仿真时,可以直接读取输入文件作为设计的输入,并自动将结果与事先保存的文件相比较,给出一定的信息来确定结果的正确与否。TEXTIO文件主要用于仿真,综合工具并不支持TEXTIO文件。10.2VHDL测试平台10.2.2用TEXTIO进行仿真2.输出错误信息在仿真的过程中可以对波形和逻辑关系进行检查,如果不满足设计的要求就会输出仿真的错误信息,这有利于设计人员发现和排查错误。在VHDL语言中的ASSERT(断言)语句可以事先错误检查和错误信息的输出。10.3ModelSim仿真概述ModelSim仿真的流程10.3ModelSim仿真概述ModelSim仿真的步骤步骤主要的仿真命令图形界面菜单工具栏按钮步骤1:映射设计库vliblibrary_namevmapworklibrary_name①FileNewProject②输入库名称③添加设计文件到工程无步骤2:编译vlogfile1.vfile2.v...(Verilog)vcomfile1.vhdfile2.vhd...(VHDL)CompileCompile或CompileAll编译按钮步骤3:加载设计到仿真器vsimtop或vsimopt_name①SimulateStartSimulation②点击选择设计顶层模块③点击OK仿真按钮步骤4:开始仿真runstepSimulateRunRun,Runcontinue,Run–all步骤5:调试常用的调试命令:bpdescribedriversexamineforcelogshow无无10.3ModelSim仿真概述ModelSim窗口概览10.4ModelSim仿真实例【例10.8】奇偶检测电路VHDL源代码(被测设计)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYeven_detectorISPORT(a:INSTD_LOGIC_VECTOR(2DOWNTO0);even:OUTSTD_LOGIC);ENDENTITY;ARCHITECTURErtlOFeven_detectorISBEGINPROCESS(a)VARIABLEsum,r:INTEGER;BEGINsum:=0;FORiIN2DOWNTO0LOOPIFa(i)='1'THENsum:=sum+1;ENDIF;ENDLOOP;r:=summod2;IF(r=0)THENeven='1';ELSEeven='0';ENDIF;ENDPROCESS;ENDrtl;10.4ModelSim仿真实例10.4.1图形界面仿真方式1.编译测试平台和设计文件到工作库转换目录建立工作库和编译源文件10.4ModelSim仿真实例10.4.1图形界面仿真方式2.加载设计开始仿真菜单和对话框10.4ModelSim仿真实例10.4.1图形界面仿真方式3.开始仿真调试工具栏仿真波形10.4ModelSim仿真实例10.4.2命令行仿真方式1.编译测试平台和设计文件到工作库ModelSim命令行窗口下面的命令将ModelSim的工作目录转换到设计文件所在的目录,“cd”是转换目录的命令,“”表示回车:cde:/myapps/fpga/vhdl_sim_book/even_detector建立“work”工作库要输入下面的命令:vlibworkvmapworkwork最后是编译命令:vcom-workworkeven_detector_testbench.vhdeven_detector.vhd10.4ModelSim仿真实例10.4.2命令行仿真方式2.加载设计加载设计需要执行下面的命令,“vsim”是加载仿真设计的命令,“-tps”表示仿真的时间分辨率,其中altera_mf和lpm是两个常用的预编译库,“work.even_detector_testbench”是待执行的仿真实体:vsim-tps-Laltera_mf-Llpmwork.even_detector_testbench10.4ModelSim仿真实例10.4.2命令行仿真方式3.开始仿真开始仿真执行下面几个命令,“addwave”添加仿真的对象:addwavetest_inaddwavetest_out如果添加所有的对象可以输入:addwave*开始仿真用“run”命令,后面跟着需要仿真的时间长度:run2000ns习题1010.1什么是仿真?仿真一般分为哪几种?10.2测试平台是什么?测试平台有哪几个组成部分?10.3写出占空比为1/4的时钟信号的VHDL程序。10.4写出VHDL’02中TEXTIO调用一个文件的VHDL语句。10.5写出ModelSim仿真的五个步骤。10.6试写出ModelSim仿真加载设计的命令行语句。
本文标题:数字系统设计与VHDL10 VHDL数字电路的仿真
链接地址:https://www.777doc.com/doc-3173738 .html