Altera MAX 10 的PLL的modelsim仿真

作者: 6100308094
上传时间为: 2015-01-13 05:09 PM
2015-01-13
阅读:

小马哈在之前做过一个PLL的测试和cyclone的一个对比,我这里只做一下PLL的仿真测试。

首先,我们必须要编译altera的仿真库,我是在SE版本上仿真的。

建立一个max_pll的工程,这里我们以产生一个80MHz和25MHz的clk

1。添加PLL的IP核

2。Next,保持默认的。

3。这样就来到了output clocks 这一栏,我们自己输入要产生的时钟,80MHz

4。继续,输入25MHz的时钟

5。后面一路next,就这样finish,添加到工程。

6。然后在顶层文件中例化

module max_pll(clk,rst_n,locked,clk_c0,clk_c1);
input clk,rst_n;
output locked,clk_c0,clk_c1;
pll	pll_inst (
	.areset ( !rst_n ),
	.inclk0 ( clk ),
	.c0 ( clk_c0 ),
	.c1 ( clk_c1 ),
	.locked ( locked )
	);

7。编写

`timescale 1ns/1ns
module max_pll_TB;
//------------------------------------------
//clock generate module
reg	clk;  
reg	rst_n;
localparam PERIOD = 20;	//50MHz
initial	
begin
	clk = 0;
	forever	#(PERIOD/2)	
	clk = ~clk;
end
task task_reset;
begin
	rst_n = 0;
	repeat(2) @(negedge clk);
	rst_n = 1;
end
endtask
//----------------------------------------------
//the target component instantiation
wire	locked,clk_c0,clk_c1;
max_pll	u_max_pll
(
	//globol clock
	.clk	(clk),     //48mhz
	.rst_n	(rst_n),
	.locked (locked),
	.clk_c0 (clk_c0),
	.clk_c1 (clk_c1)
);
//---------------------------------------
//system initialization
task task_sysinit;
begin
end
endtask
//----------------------------------------
//testbench of the RTL
initial
begin
	task_sysinit;
	task_reset;
	rst_n = 0;
	#896;
	rst_n = 1;
	#1911;
	rst_n = 0;
	#853;
	rst_n = 1;
	#3999;
	rst_n = 0;
	#136;
	rst_n = 1;
end
endmodule
	

然后就是建立modelsim工程了,出现了如下错误

记起来了,是13.1的时候编译的altera的仿真库,现在是max10的PLL,肯定要重新编译仿真库了,编译完仿真库后,就继续,当然要指定一下lib的路径。

然后就可以看到PLL的仿真结果了。

全部评论 ()
条评论
写评论

创建讨论帖子

登录 后参与评论
系统提示