modelsim软件使用

modelsim软件使用

ID:36302430

大小:935.50 KB

页数:69页

时间:2019-05-08

modelsim软件使用_第1页
modelsim软件使用_第2页
modelsim软件使用_第3页
modelsim软件使用_第4页
modelsim软件使用_第5页
资源描述:

《modelsim软件使用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、逻辑设计与FPGA仿真软件Modelsim的基本知识福州大学微电子系仿真与验证1、编写测试验证程序1.1、测试验证程序有三个主要目的1.2、典型的测试验证程序形式2、激励波形产生2.1、值序列2.2、重复模式3、测试验证程序实例3.1、解码器3.2、触发器Verilog模块的测试目的:如何编写的测试文件,对所做的设计进行完整的测试和验证。掌握组织模块测试的常用方法学会编写常用的测试代码。模块的测试被测模块激励和控制信号输出响应和验证1、编写测试验证程序测试验证程序用于测试和验证设计的正确性。VerilogHDL提供强有力的结构来编写测试验证程序。1、编写测试验证程序1

2、.1、测试验证程序有三个主要目的:1)产生模拟激励(波形);2)将输入激励加入到测试模块并收集其输出响应;3)将响应输出与期望值进行比较。1.2、典型的测试验证程序形式moduleTest_Bench;(不做端口声明)//通常测试验证程序没有输入和输出端口。Local_reg_and_net_declarations(端口声明)Generate_waveforms_using_initial_&_always_statemen(产生激励波形)Instantiate_module_under_test(例化被测模块)Monitor_output_and_compare_

3、with_expected_values(输出监控或直接波形输出)endmodule测试时,通过在测试验证程序中进行实例化,将激励自动加载于测试模块。1.2、典型的测试验证程序形式测试模块常见的形式:moduleXX_tb;reg…;//被测模块输入变量类型定义wire…;//被测模块输出变量类型定义initialbegin…;end……//产生测试信号alwaysbegin…;end//产生测试信号tsintm(.in1(ina),.in2(inb),.out1(outa),.out2(outb));//被测模块的实例引用initialbegin….;….;end/

4、/记录输出和响应endmodule1.2、典型的测试验证程序形式测试模块中常用的过程块:initialalways所有的过程块都在0时刻同时启动;它们是并行的,在模块中不分前后。initial块只执行一次。always块只要符合触发条件可以循环执行。1.2、典型的测试验证程序形式如何描述激励信号:modulet;rega,b,sel;//被测模块的输入信号用寄存器赋值wireout;;//被测模块的输出信号//引用多路器实例mux2m(out,a,b,sel);//加入激励信号initialbegina=0;b=1;sel=0;#10b=0;#10b=1;sel=1;

5、#10a=1;#10$stop;end1.2、典型的测试验证程序形式如何观察被测模块的响应:在initial块中,用系统任务$time和$monitor$time返回当前的仿真时刻$monitor只要在其变量列表中有某一个或某几个变量值发生变化,便在仿真单位时间结束时显示其变量列表中所有变量的值。例:initialbegin$monitor($time,,“out=%ba=%bb=%bsel=%b”,out,a,b,sel);end2、激励波形产生有两种产生激励值的主要方法:产生值序列,即在确定的离散时间间隔加载激励。2)产生重复模式的波形。2.1、值序列A1、产生值

6、序列的最佳方法是使用initial语句。initialbeginReset=0;#100Reset=1;#80Reset=0;#30Reset=1;end产生的波形如图所示。Initial语句中的赋值语句用时延控制产生波形。此外,语句内时延也能够按如下实例所示产生波形。因为使用的是阻塞性过程赋值,上面语句中的时延是相对时延。2.1、值序列B、若要重复产生一个值序列,可以使用always语句替代initial语句。ParameterREPEAT_DELAY=35;IntegerCoinValue;alwaysbeginCoinValue=0;#7CoinValue=25

7、;#2CoinValue=5;#8CoinValue=10;#6CoinValue=5;#REPEAT_DELAY;end这是因为initial语句只执行一次而always语句会重复执行2.2、重复模式A、重复模式的生成通过使用如下的连续赋值形式加以简化:assign#(PERIOD/2)Clock=~Clock;但是这种做法并不完全正确。问题在于Clock是一个线网(只有线网能够在连续赋值中被赋值),它的初始值是z,并且,z等于x,~x等于x。因此Clock的值永远固定为值x。现在需要一种初始化Clock方法。可用initial语句实现。initi

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。