当前位置:   article > 正文

20220407——3-8线译码器:quartersⅡ和 modelsim 联合仿真 原理_quartus ii仿真3-8

quartus ii仿真3-8

Testbench仿真文件编写

  Testbench是一种验证手段,从软件层面对设计的硬件电路进行仿真。在仿真文件里产生的激励信号,作用于被仿真设计文件DUT(Design Under Test) ,产生相应输出,然后根据输出信号检验设计的电路是否存在问题或存在哪些问题。     

Verilog包含: 1)模块声明   2)信号声明   3)顶层设计实例化  4)提供激励  5)进行测试

testbench的一般结构:

  1. module Test_Bench();//通常无输入输出
  2. 信号或变量声明定义 //1
  3. 逻辑设计中输入对应的reg型 //2
  4. 逻辑设计中输出对应的wire型 //3
  5. 使用 initial 或 always 语句产生激励 //4 initial产生测试信号 ,发送到待测模块(相当于一个信号源);always语句反馈回来(相当于一个示波器)(不一定有)
  6. 例化待测试模块DUT //5 个人完成部分
  7. 监控和比较输出响应 //6 (不一定有)
  8. endmodule

操作:1.设置好仿真文件         

           2.通过quartus 自动生成testbench模板,选择 processing→start→start testbench template writer,默认在 simulation\modelsim文件夹下生成一个 Testbench.vt 格式文件

           3.设置时间刻度, 'timescale 时间单位/时间精确 

               例:'timescale 1ns/1ps 表示仿真的时间单位为1ns,精度为1ps

           4.编写测试模块

              initial:主动产生激励;只执行一次

              always:被动;重复

               需要在initial里多次运行一个语句块,嵌入循环(while,repeat,for,forever等),如:

  1. initial
  2. begin
  3. forever/*无条件连续执行*/
  4. begin
  5. ……
  6. end
  7. end

            5.激励产生

              1)

  1. parameter ClockPerilod=10
  2. initial
  3. begin
  4. clk_i=0;
  5. forever
  6. #(ClockPerilod/2)clk_i=~clk_i;//最常用的产生方式
  7. end

                   10是时间精度的10倍,clockperiod是时间精度的倍数;#是延迟多少时间5ps,取反

              2)

  1. parameter ClockPerilod=10
  2. initial
  3. begin
  4. clk_i=0;
  5. #(ClockPerilod/2)clk_i=~clk_i;
  6. end

                      1个

             3)固定数量的时钟脉冲

  1. parameter ClockPerilod=10
  2. initial
  3. begin
  4. clk_i=0;
  5. repeat(6
  6. #(ClockPerilod/2)clk_i=~clk_i;
  7. end

                 重复6次,周期为3

  1. 'timescale 1 ns/10ps
  2. module decoder38_vg_tst();
  3. reg clk; //test vector input registers*******输入激励设置为reg型
  4. reg[2:0]keyin;
  5. wire[7:0]led //tset vecoder output wires*******输出相性设置为wire类型
  6. decoder38 i1(.clk(clk)), .keyin(keyin), .led(led);//******例化待测模块
  7. initial
  8. begin //*******initial产生激励
  9. keyin=0;
  10. clk=0;
  11. repeat(20)
  12. begin
  13. #1
  14. clk=~clk;
  15. keyin=keyin+1
  16. end
  17. end
  18. endmodule
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号