PLL的modelsim仿真

看了好久的modelsim学习资料,写了一个简单的PLL仿真实验,该实验是仿真DE2板子上50MHz时钟输入,经PLL之后输出100MHz的时钟。

同时用.do文件来代替烦躁的鼠标操作。

首先在Quartus里面例化一个PLL模块,输入为clk,50MHz,输出为clk_100。

打开pll.v文件,

// ============================================================
// File Name: pll.v
// Megafunction Name(s):
// 			altpll
//
// Simulation Library Files(s):
// 			altera_mf
// ============================================================

 这个头文件告诉我们,pll需要用到一个库文件名为:altera_mf。

在quartus的安装目录下的eda/sim_lib文件夹下面找到这个文件。

下面就开始编写仿真文件盒.do文件:

建立个工程文件夹,取名为pll,在里面建立两个文件夹,src和modelsim,src存放源文件和仿真文件,modelsim存放.do文件。

src中共有四个文件:

pll_module:

 1 //`timescale 1 ps / 1 ps
2 module pll_module(
3 clk,
4 clk_100m
5 );
6
7 input clk;
8 output clk_100m;
9
10 pll pll_u1(
11 .inclk0 (clk),
12 .c0 (clk_100m)
13 );
14
15 endmodule

pll_module_tb:

 1 `timescale 1 ps / 1 ps
2 module pll_module_tb;
3
4 reg clk;
5 wire clk_100m;
6
7 pll_module u1(
8 .clk (clk),
9 .clk_100m (clk_100m)
10 );
11
12 initial
13 begin
14 clk = 0;
15 end
16
17 always #10000 clk = ~clk;
18
19
20 endmodule

然后在modelsim文件夹中假如pll.do文件。

pll.do:

 1 #Creat a work lib
2 vlib work
3
4 #Map the work lib to current lib
5 vmap work work
6
7 #Compile the source files
8 vlog D:/test/pll/src/altera_mf.v
9 vlog D:/test/pll/src/pll.v
10 vlog D:/test/pll/src/pll_module.v
11 vlog D:/test/pll/src/pll_module_tb.v
12
13 #Start simulation
14 vsim -novopt work.pll_module_tb
15
16 #add wave
17 add wave -hex /*
18
19 run 500000000


该文件包括4个部分:

1-2行位创建一个工作库为work,注意#为注释。

4-5行位把刚建立的工作库映射到modelsim中work工作库中。

8-11行为编译上述的4个源文件。

14行为仿真work库中的pll_modelsim_tb文件,novopt为禁止优化的意思。

17行为添加波形,hex为16进制表示,/*表示为所有的波形。这里也可以添加自己想要看到的波形。

19行为开始仿真。

然后在modelsim的命令行输入:do pll.do  命令就开始仿真的,省去了鼠标操作的过程。

仿真结果:

  

原文地址:https://www.cnblogs.com/tony1224/p/2371530.html