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  命令就開始仿真的,省去了鼠標操作的過程。

仿真結果:

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM