PLL实验

该博客介绍了如何在FPGA开发中利用PLL(锁相环)IP核来生成不同频率的时钟。通过配置ClockingWizard,设置ClockingOptions和OutputClocks,实现从200MHz时钟输入生成其他所需频率的时钟。实验内容包括创建工程,添加clk_wiz_0 IP,约束管脚,并通过仿真验证时钟输出。
摘要由CSDN通过智能技术生成

PLL实验

开发板上面只有一个200MHz时钟输入,对于其它频率的时钟怎么办?

介绍

其实在很多 FPGA 芯片内部都集成了 PLL ,其他厂商可能不叫 PLL ,但是也有类似的功能模块,通过 PLL 可以倍频分频,产生其他很多时钟。
PLL(phase locked loop) ,即锁相环。

Clock Management Tiles(CMT) 提供了时钟合成 (Clock frequency),
倾斜矫正 ( deskew),过滤抖动 (jitter filtering) 功能。
每个 CMTs 包含一个 MMCM (mixed mode clock manager) 和一个 PLL 。

实验内容

本实验将通过使用PLL, 输出一个方波到开发板上的扩展口(接到一个LED灯)。

实验步骤

主要是使用PLL IP核来产生不同频率的时钟。

  1. 新建一个 pll_test 的工程,点击 Project Manager 界面下的 IP Catalog 。
  2. 再在 IP Catalog 界面里选择 FPGA Features and Design Clocking 下面的 Clocking Wizard ,双击打开配置界面。
  3. 配置时钟,Clocking Options和Output Clocks。
  4. 生成
  5. clk_wiz_0.xci 的 IP 会自动添加到我们的 pll_test 项目中 , 用户可以双击它来修改这个 IP 的配置。选择 IP Sources 这页,然后双击打开 clk_wiz_0.veo 文件,这个文件里提供了这个 IP 的 实例化模板 。
`timescale 1ns / 1ps 
module pll_test( 
    input sys_clk_p, //system clock 200Mhz on board 
    input sys_clk_n, //system clock 200Mhz on board 
    input rst_n, //reset ,low active 
    output reg led //led output
); 
wire locked; 
wire sys_clk ; 
reg[31:0] timer_cnt; 

clk_wiz_0 clk_wiz_0_inst ( 
    // Clock out ports 
    .clk_out1(), // output clk_out1 
    .clk_out2(sys_clk), // output clk_out2 
    .clk_out3(), // output clk_out3 
    .clk_out4(), // output clk_out4 
    // Status and control signals 
    .reset(~rst_n), // input reset 
    .locked(locked), // output locked 
    // Clock in ports 
    .clk_in1_p(sys_clk_p), // input clk_in1_p 
    .clk_in1_n(sys_clk_n)); // input clk_in1_n
always@(posedge sys_clk)
begin 
    if (!locked) 
    begin 
        led <= 1'b0 ; 
        timer_cnt <= 32'd0 ; 
    end 
    else if(timer_cnt >= 32'd99_999_999) //1 second counter, 100M-1=99999999 
    begin 
        led <= ~led; 
        timer_cnt <= 32'd0; 
    end 
    else 
    begin 
        led <= led; 
        timer_cnt <= timer_cnt + 32'd1; 
    end 
end 
endmodule

xdc 管脚约束文件

##################Compress Bitstream############################
set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]
set_property PACKAGE_PIN AE5 [get_ports sys_clk_p]
set_property PACKAGE_PIN AE14 [get_ports rst_n]
set_property PACKAGE_PIN AE15 [get_ports led]
set_property IOSTANDARD LVCMOS33 [get_ports led]
set_property IOSTANDARD LVCMOS33 [get_ports rst_n]
set_property IOSTANDARD DIFF_SSTL12 [get_ports sys_clk_p]
create_clock -period 5.000 -name sys_clk_p -waveform {0.000 2.500} [get_ports sys_clk_p]

仿真

`timescale 1ns / 1ps 
// 
// Module Name: vtf_pll_test 
// 
module vtf_pll_test; 
// Inputs 
reg sys_clk_p; 
reg rst_n ; 
wire sys_clk_n; 
// Outputs 
wire led; 
// Instantiate the Unit Under Test (UUT) 
pll_test uut ( 
    .sys_clk_p(sys_clk_p), 
    .sys_clk_n(sys_clk_n), 
    .rst_n(rst_n), 
    .led(led) 
); 
initial 
begin 
// Initialize Inputs 
sys_clk_p = 0; 
rst_n = 0; 
// Wait for global reset to finish 
#1000; 
rst_n = 1; 
end
//Create clock 
always #2.5 sys_clk_p = ~ sys_clk_p; 
assign sys_clk_n = ~sys_clk_p ; 
endmodule

在这里插入图片描述

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值