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

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

作者:互联网

1.PLL是一种反馈控制电路,其特点是利用外部输入的参考信号控制环路内部震荡信号的频率和相位。

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

3.  PLL IP核的使用

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

 

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

 然后命名为pll_clk

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

 下面四步不用更改,都为默认值,然后点击next

 

 

 

 第一时钟更改为100mhz

 

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

 第三个时钟设为25MHZ

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

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

 

 就可以看到生成的文件

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

 

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

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

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

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

 然后进行编译

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

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

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

 就可以看到下载成功

 5.也可以进行modelsim仿真

在quartus文件夹中搜索altera_mf.v文件,将它复制到ip_pll文件的sim的tb文件下

 

 在工程中编写tb文件

 

`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      

仿真结果如下:

 

 

标签:分频,clk,ip,然后,rst,pll,锁相环,时钟
来源: https://blog.csdn.net/qq_43811597/article/details/120821778