pll锁相环(可以根据系统时钟进行倍频、分频、相位偏移等等,而普通的计数器只能分频)

1.PLL是一种反馈控制电路,其特点是利用外部输入的参考信号控制环路内部震荡信号的频率和相位。pll锁相环(可以根据系统时钟进行倍频、分频、相位偏移等等,而普通的计数器只能分频)

2. Quartus II软件提供了锁相环PLL的IP核,对时钟网络进行系统级的时钟管理和偏移控制,具有时钟倍频、分频、相位偏移(就相当于时钟的上升沿和下降沿可以移动,换位置等)和可编程占空比(一般是50%)的功能。

3.  PLL IP核的使用

在ip catalog中搜索altpll,然后双击第一个

pll锁相环(可以根据系统时钟进行倍频、分频、相位偏移等等,而普通的计数器只能分频)

 pll锁相环(可以根据系统时钟进行倍频、分频、相位偏移等等,而普通的计数器只能分频)

然后点击...在文件夹中新建ipcore文件夹

pll锁相环(可以根据系统时钟进行倍频、分频、相位偏移等等,而普通的计数器只能分频)

 然后命名为pll_clk

pll锁相环(可以根据系统时钟进行倍频、分频、相位偏移等等,而普通的计数器只能分频)

然后在弹出来的框当中,把晶振频率改为板子的50MHZ,然后点击next

pll锁相环(可以根据系统时钟进行倍频、分频、相位偏移等等,而普通的计数器只能分频)

 下面四步不用更改,都为默认值,然后点击nextpll锁相环(可以根据系统时钟进行倍频、分频、相位偏移等等,而普通的计数器只能分频)

 pll锁相环(可以根据系统时钟进行倍频、分频、相位偏移等等,而普通的计数器只能分频)

 pll锁相环(可以根据系统时钟进行倍频、分频、相位偏移等等,而普通的计数器只能分频)

 pll锁相环(可以根据系统时钟进行倍频、分频、相位偏移等等,而普通的计数器只能分频)

 第一时钟更改为100mhz

pll锁相环(可以根据系统时钟进行倍频、分频、相位偏移等等,而普通的计数器只能分频)

 

 第二个时钟可以打开,然后相位转变180

pll锁相环(可以根据系统时钟进行倍频、分频、相位偏移等等,而普通的计数器只能分频)

 第三个时钟设为25MHZ

pll锁相环(可以根据系统时钟进行倍频、分频、相位偏移等等,而普通的计数器只能分频)

 然后一直点击next到最后,点击finish,完成创建

pll锁相环(可以根据系统时钟进行倍频、分频、相位偏移等等,而普通的计数器只能分频)

在弹出的界面中,点击yes,将创建的ip核加入工程中

pll锁相环(可以根据系统时钟进行倍频、分频、相位偏移等等,而普通的计数器只能分频) 

 就可以看到生成的文件

pll锁相环(可以根据系统时钟进行倍频、分频、相位偏移等等,而普通的计数器只能分频)

在 该工程的文件夹中可以看到pll_clk.v文件

pll锁相环(可以根据系统时钟进行倍频、分频、相位偏移等等,而普通的计数器只能分频) 

 然后在工程中新建ip_pll.v文件

pll锁相环(可以根据系统时钟进行倍频、分频、相位偏移等等,而普通的计数器只能分频)

module ip_pll(
    input sys_clk,            //系统时钟
    input sys_rst_n,      //系统复位信号
    
    output clk_100m,            //输出100mhz时钟
    output clk_100m_180deg,       //输出100mhz时钟相位偏转180
    output clk_25m            //输出25mhz时钟
    
);

wire locked;
wire rst_n;

assign rst_n = sys_rst_n & locked;    //当sys_rst_n和locked都为1时,rst_n才为高电平,
                                     //所以只有系统稳定时,这个可以用于其他模块的复位状态
                                      

pll_clk   u_pll_clk(
    .areset   (~sys_rst_n),    //复位信号和按键复位相连,但锁相环是高电平复位,所以要取反     
	.inclk0   (sys_clk)  ,
	.c0       (clk_100m),
	.c1       (clk_100m_180deg),
	.c2       (clk_25m),
	.locked   (locked)         //标志输出稳定
);

endmodule

 4.分配引脚

在芯片设置中 点击device and options

pll锁相环(可以根据系统时钟进行倍频、分频、相位偏移等等,而普通的计数器只能分频)

 然后在dual purpose pins中把最后一个改为io口映射

pll锁相环(可以根据系统时钟进行倍频、分频、相位偏移等等,而普通的计数器只能分频)

 然后输入引脚 输出为扩展口

pll锁相环(可以根据系统时钟进行倍频、分频、相位偏移等等,而普通的计数器只能分频)

 然后进行编译

ps:如果需要修改ip核,可以在下图中展开工程,然后双击ip_pll就会出现重新设置ip内容

pll锁相环(可以根据系统时钟进行倍频、分频、相位偏移等等,而普通的计数器只能分频)

 编译成功之后就可以进行下载,然后把引脚接出来,在示波器中可以看到结果

点击programer图标,然后添加sof文件

pll锁相环(可以根据系统时钟进行倍频、分频、相位偏移等等,而普通的计数器只能分频)

 就可以看到下载成功

pll锁相环(可以根据系统时钟进行倍频、分频、相位偏移等等,而普通的计数器只能分频)

 5.也可以进行modelsim仿真

在quartus文件夹中搜索altera_mf.v文件,将它复制到ip_pll文件的sim的tb文件下pll锁相环(可以根据系统时钟进行倍频、分频、相位偏移等等,而普通的计数器只能分频)

 pll锁相环(可以根据系统时钟进行倍频、分频、相位偏移等等,而普通的计数器只能分频)

 在工程中编写tb文件

pll锁相环(可以根据系统时钟进行倍频、分频、相位偏移等等,而普通的计数器只能分频)

 

`timescale  1ns/1ns

module        tb_ip_pll      ;

parameter     SYS_PERIOD = 20;  //定义系统时钟周期

reg           clk            ;
reg           rst_n          ;  

wire          clk_100m        ; 
wire          clk_100m_180deg ;
wire          clk_25m         ;

always #(SYS_PERIOD/2) clk <= ~clk ;

initial begin
            clk <= 1'b0 ;
            rst_n <= 1'b0 ;
          #(20*SYS_PERIOD)
            rst_n <= 1'b1 ;
          end

//例化ip_pll模块          
ip_pll    u_ip_pll(
    .sys_clk           (clk),
    .sys_rst_n         (rst_n),      
    .clk_100m          (clk_100m       ),
    .clk_100m_180deg   (clk_100m_180deg),
    .clk_25m           (clk_25m        )
    );          

endmodule      

仿真结果如下:pll锁相环(可以根据系统时钟进行倍频、分频、相位偏移等等,而普通的计数器只能分频)

 

 

上一篇:异步复位同步释放原理


下一篇:jsp实现计算器功能