基于ISE的仿真(波形图法&V文件法)

在代码编写完毕后,需要借助于测试平台来验证所设计的模块是否满足要求。ISE提供了两种测试平台的建立方法,一种是使用HDL Bencher的图形化波形编辑功能编写,另一种就是利用HDL语言。由于后者使用简单、功能强大,所以本节主要介绍基于Verolog语言的测试平台建立方法。 


1.测试波形法 

在ISE中创建testbench波形,可通过HDL Bencher修改,再将其和仿真器连接起来,再验证设计功能是否正确。首先在工程管理区将Sources for设置为Behavioral Simulation,然后在任意位置单击鼠标右键,在弹出的菜单中选择“New Source”命令,然后选中“Test Bench WaveForm”类型,输入文件名为“test_bench”,点击Next进入下一页。这时,工程中所有Verilog Module的名称都会显示出来,设计人员需要选择要进行测试的模块。由于本工程只有一个模块,所以只列出了test,如图4-30所示。

图4-30 选择待测模块对话框


用鼠标选中test,点击“Next”后进入下一页,直接点击“Finish”按键。此时HDL Bencher程序自动启动,等待用户输入所需的时序要求,如图4-31所示。

图4-31 时序初始化窗口


时钟高电平时间和时钟低电平时间一起定义了设计操作必须达到的时钟周期,输入建立时间定义了输入在什么时候必须有效,输出有效延时定义了有效时钟延时到达后多久必须输出有效数据。默认的初始化时间设置如下:

·   时钟高电平时间(Clock High Time):100ns

·    时钟低电平时间(Clock Low Time):100ns

·   输入建立时间(Input Setup):15ns

·   输出有效时间(Output Valid):15ns

·   偏移时间(Offset):100ns

单击“OK”按钮,接受默认的时间设定。测试矢量波形显示如图4-32所示。

图4-32 测试矢量波形


接下来,初始化输入(注:灰色的部分不允许用户修改),修改的方法为:选中信号,在其波形上单击,从该点击所在周期开始,在往后所有的时间单元内该信号电平反相。点击din信号前面的“+”号,在din[7]的第2个时钟周期内单击,使其变高;在din[6]的第3个时钟周期内单击,使其变高;同样的方法修改din[5]~din[0]信号,使其如图4-33所示。

图4-33 初始化输入


然后将testbench文件存盘,则ISE会自动将其加入到仿真的分层结构中,在代码管理区会列出刚生成的测试文件test_bench.tbw,如图4-34所示。

图4-34 测试文件列表


选中test_bench.tbw文件,然后双击过程管理区的“Simulate Behavioral Model”,即可完成功能仿真。同样,可在“Simulate Behavioral Model”选项上单击右键,设置仿真时间等。例4-3的仿真结果如图4-35所示。从中,可以看出,dout信号等于din信号加1,功能正确。

 

图4-35 功能仿真结果


2.测试代码法 

下面介绍基于Verilog语言建立测试平台的方法。首先在工程管理区将“Sources for”设置为Behavioral Simulation,在任意位置单击鼠标右键,并在弹出的菜单中选择“New Source”命令,然后选中“Verilog Test Fixture”类型,输入文件名为“test_test”,再点击“Next”进入下一页。这时,工程中所有Verilog Module的名称都会显示出来,设计人员需要选择要进行测试的模块。 

用鼠标选中test,点击“Next”后进入下一页,直接点击“Finish”按键,ISE会在源代码编辑区自动显示测试模块的代码: 

`timescale 1ns / 1ps 
module test_test_v;

// Inputs 
reg clk; 
reg [7:0] din; 
// Outputs 
wire [7:0] dout; 

// Instantiate the Unit Under Test (UUT) 
test uut ( 
         .clk(clk), 
         .din(din), 
         .dout(dout) 
); 

initial begin 
         // Initialize Inputs 
        clk = 0; 
        din = 0; 
        // Wait 100 ns for global reset to finish 
       #100; 
       // Add stimulus here 
end

endmodule

由此可见,ISE自动生成了测试平台的完整架构,包括所需信号、端口声明以及模块调用的完成。所需的工作就是在initial…end模块中的“// Add stimulus here”后面添加测试向量生成代码。添加的测试代码如下: 

forever begin

#5; 
clk = !clk; 
if(clk == 1) 
         din = din + 1; 
else 
         din = din;

end

完成测试平台后。在工程管理区将“Sources for”选项设置为Behavioral Simulation,这时在过程管理区会显示与仿真有关的进程,如图4-36所示。

图4-36 选择待测模块对话框

选中图4-36中Xilinx ISE Simulator下的Simulate Behavioral Model项,点击鼠标右键,选择弹出菜单的Properties项,会弹出如图4-37所示的属性设置对话框,最后一行的Simulation Run Time就是仿真时间的设置,可将其修改为任意时长,本例采用默认值。

图4-37 仿真过程示意图

仿真参数设置完后,就可以进行仿真了,直接双击ISE Simulator软件中的Simulate Behavioral Model,则ISE会自动启动ISE Simulator软件,并得到如图4-38所示的仿真结果,从中可以看到设计达到了预计目标。

图4-38 test模块的仿真结果

你可能感兴趣的:(FPGA)