TA的每日心情 | 开心 2018-7-3 21:49 |
---|
签到天数: 750 天 连续签到: 1 天 [LV.10]以坛为家III
|
小马哈在之前做过一个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/1nsmodule max_pll_TB;//------------------------------------------//clock generate modulereg clk; reg rst_n;localparam PERIOD = 20; //50MHzinitial begin clk = 0; forever #(PERIOD/2) clk = ~clk;endtask task_reset;begin rst_n = 0; repeat(2) @(negedge clk); rst_n = 1;endendtask//----------------------------------------------//the target component instantiationwire 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 initializationtask task_sysinit;beginendendtask//----------------------------------------//testbench of the RTLinitialbegin 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;endendmodule 然后就是建立modelsim工程了,出现了如下错误
记起来了,是13.1的时候编译的altera的仿真库,现在是max10的PLL,肯定要重新编译仿真库了,编译完仿真库后,就继续,当然要指定一下lib的路径。
然后就可以看到PLL的仿真结果了。
|
|