FPGA学习笔记(三):PLL 锁相环

这篇具有很好参考价值的文章主要介绍了FPGA学习笔记(三):PLL 锁相环。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在 FPGA 芯片内部集成了 PLL(phase-locked loop,锁相环),可以倍频分频,产生其它时钟类型。PLL 是 FPGA 中的重要资源,因为一个复杂的 FPGA 系统需要不同频率、相位的时钟信号,一个 FPGA 芯片中 PLL 的数量是衡量 FPGA 芯片能力的重要指标。

Ultrascale+ 系列的 FPGA 使用了专用的全局(Global)和区域(Regional)IO和时钟资源来管理设计中各种时钟需求。Clock Management Tiles(CMT) 提供了时钟合成(Clock frequency synthesis)、倾斜校正(deskew)、过滤抖动(jitter filtering)功能。

每个 CMT 包含一个 MMCM(Mixed-mode clock manager,混合模式时钟管理器,根据一定的相位和频率产生不同的时钟信号) 和一个 PLL(可以从一个输入信号产生多个时钟信号,不能进行时钟倾斜校正,不具备高级相位调整、倍频器和分频器可调范围较小),CMT 的输入可以是 BUFR、IBUFG、BUFG、GT、BUFH、本地布线,输出需要接到 BUFG、BUFH 后再使用。

更多的时钟资源帮助文档:https://docs.xilinx.com/v/u/en-US/ug472_7Series_Clocking

使用 Xilinx 提供的 PLL IP 核产生不同频率的时钟。

在 Project Manager 界面下的 IP Catalog。

FPGA学习笔记(三):PLL 锁相环,Xilinx FGPA 学习,fpga开发

FPGA学习笔记(三):PLL 锁相环,Xilinx FGPA 学习,fpga开发
双击 Clocking Wizard

FPGA学习笔记(三):PLL 锁相环,Xilinx FGPA 学习,fpga开发
默认的时钟约束名称是 clk_wiz_0,在 Clocking Options 中,输入的时钟频率为 200MHz,并选择 Differential clock capable pin。

FPGA学习笔记(三):PLL 锁相环,Xilinx FGPA 学习,fpga开发
在 Output Clocks 界面里选择 clk_out1~clk_out4 四个时钟的输出,频率分别为 200MHz、100MHz、50MHz、25MHz,这里还可以设置时钟输出的相位,点击 OK 完成。
FPGA学习笔记(三):PLL 锁相环,Xilinx FGPA 学习,fpga开发
在弹出的对话框中点击 Generate 按钮生成 PLL IP 的设计文件。
FPGA学习笔记(三):PLL 锁相环,Xilinx FGPA 学习,fpga开发
选择 IP Sources 页,然后双击打开 clk_wiz_0.veo 文件 —— 提供了该 IP 的实例化模板。我们需要编写一个顶层设计文件来实例化这个 PLL IP,编写 pll_test.v 代码。

PLL的复位是高电平有效,复位一直为高电平,PLL 就不会工作。
FPGA学习笔记(三):PLL 锁相环,Xilinx FGPA 学习,fpga开发
创建 pll_test.v。

`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      clk_out           //pll clock output 

    );
    
wire        locked;
    
clk_wiz_0 clk_wiz_0_inst
       (
        // Clock out ports
        .clk_out1(),     // output clk_out1
        .clk_out2(),     // output clk_out2
        .clk_out3(),     // output clk_out3
        .clk_out4(clk_out),     // 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

endmodule

程序中先用实例化 clk_wiz_0, 把差分 200MHz 时钟信号输入到 clk_wiz_0 的 clk_in1_p 和 clk_in1_n,把 clk_out4 的输出付给 clk_out。例化的目的是在上一级模块中调用例化的模块完成代码功能,在 Verilog 里例化信号的格式如下:模块名必须和要例化的模块名一致,比如程序中的 clk_wiz_0,包括模块信号名也必须一致,比如 clk_in1,clk_out1,clk_out2 …。连接信号为 TOP 程序(保存后,pll_test 自动成为了 top 文件,clk_wiz_0 成为 pll_test 文件的子模块)跟模块之间传递的信号,模块与模块之间的连接信号不能相互冲突。

添加 xdc 管脚约束文件 pll.xdc:

##################Compress Bitstream############################
set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]

set_property PACKAGE_PIN AE5 [get_ports sys_clk_p]
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]

set_property PACKAGE_PIN AF12 [get_ports rst_n]
set_property IOSTANDARD LVCMOS33 [get_ports rst_n]

set_property PACKAGE_PIN AG11 [get_ports clk_out]
set_property IOSTANDARD LVCMOS33 [get_ports clk_out]

编写仿真文件 vtf_pll_test.v:

`timescale 1ns / 1ps
//
// Module Name: vtf_pll_test
//

module vtf_pll_test;
// Inputs
reg sys_clk_p;
wire sys_clk_n;
reg rst_n;

// Outputs
wire clk_out;

// 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), 
	.clk_out(clk_out)
);

initial begin
	// Initialize Inputs
	sys_clk_p = 0;
	rst_n = 0;

	// Wait 100 ns for global reset to finish
	#100;
      rst_n = 1;      

 end

always #2.5 sys_clk_p = ~ sys_clk_p;   //5ns一个周期,产生200MHz时钟源

assign sys_clk_n = ~ sys_clk_p;
   
endmodule

FPGA学习笔记(三):PLL 锁相环,Xilinx FGPA 学习,fpga开发
编译工程,然后将 bit 文件下载到 FPGA 开发板上,使用示波器测量输出时钟的波形。

如果想输出其它频率的波形,可以修改时钟的输出为 clk_wiz_0 的 clk_out2 或 clk_out3 或 clk_out4,也可以修改 clk_wiz_0 为想要的频率。由于时钟的输出是通过 PLL 对输入时钟信号的倍频和分频系数得到的,所以并不是所有的时钟频率都可以用 PLL 能够精确产生,PLL 会自动计算实际输出接近的时钟频率。文章来源地址https://www.toymoban.com/news/detail-546102.html

到了这里,关于FPGA学习笔记(三):PLL 锁相环的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 锁相环技术原理及FPGA实现(第一章1.2)

    4)嵌入式块 RAM( BRAM)         大多数 FPGA 都具有内嵌的 BRAM, 这大大拓展了 FPGA 的应用范围和灵活性。 块 RAM 可被配置为单端口 RAM、双端口 RAM、地址存储器( CAM),以及 FIFO 等常用存储结构。 CAM 存储器在其内部的每个存储单元中都有一个比较逻辑,写入 CAM 中的数据

    2024年02月03日
    浏览(41)
  • 锁相环技术原理及FPGA实现(第一章1.1)

            锁相环技术具有很强的专业性,要掌握其工作原理,透彻理解各种设计方法和思路,最终游刃有余地设计出性能优良的锁相环电路,首先需要掌握一系列相关工具。请注意,不是“一种”工具,而是“一系列”工具: FPGA 开发软件 Quartus II、 HDL 仿真软件 ModelSim、

    2024年02月03日
    浏览(34)
  • 锁相环技术原理及FPGA实现(第三章3.2)

    3.2.3 锁相环与基本负反馈电路的区别         锁相环是一个相位负反馈电路。也只有当锁相环构成了一个相位负反馈电路后,环路才具有相位跟踪功能。         图 3-1 与图 3-7 如何对应起来呢? PLL 中输入信号的相位1( ) t 能够对应反馈电路中的Xi 吗? PLL 中的基本放

    2024年02月19日
    浏览(38)
  • 锁相环技术原理及FPGA实现(第三章3.1)

            锁相环( Phase-Locked Loops, PLL)电路的发明者是法国的 H.de Bellescize。为了简化 当时广泛使用的超外差式无线接收机结构,消除因接收机本振频率漂移带来的噪声, Bellescize 于 1932 年提出同步检波理论,首次公开发表了对锁相环路的描述,但当时并没有引起普遍的

    2024年02月02日
    浏览(38)
  • Vivado PLL锁相环 IP核的使用

    本文纯属学习笔记,使用的FPGA是Xilinx的XC7A35TFGG484-1,使用Vivado调用PLL IP核来实现倍频效果,使50Mhz的晶振时钟源倍频到100Mhz、200Mhz和400Mhz。 Clocking Options 1.MMCM与PLL相比,PLL的时钟质量更高,所以对时钟质量要求较高的时候需要选择PLL,但是一般可以不用纠结。 2.修改Input Fre

    2024年02月08日
    浏览(39)
  • 锁相环(PLL)基本原理与频率合成器

    锁相环 (phase locked loop),是一种用于锁定相位的环路。锁相环的控制量是信号的频率和相位。它是一种典型的反馈控制电路,利用外部输入的参考信号控制环路内部振荡信号的频率和相位,实现输出信号频率对输入信号频率的自动跟踪,最终呈现出动态平衡。 1、锁相环的组成

    2024年02月15日
    浏览(36)
  • stm32 滑膜观测器+PLL 锁相环 FOC 无感无刷电机控制

            上一期为大家介绍了滑膜观测器正反切的应用案例,收到不少小伙伴的反馈是否有PLL的案例,大概看了一下网上的资料,讲理论的很多,能转化成源码的几乎没有。前半年工作和家里的事情都比较多,一拖再拖,终于在6月将源码调试好了,在这里跟大家分享一下调试

    2024年02月10日
    浏览(49)
  • Xilinx FPGA 中PLL与MMCM区别

    原文连接,版权所有 对于FPGA工程师来说,DCM / DLL / MMCM / PLL这些词简直每天都能看到,但很多人并不是很清楚它们之间的差异。 在Xilinx的FPGA中,时钟管理器称为 Clock Management,简称CMT 。我们所用到的DCM / PLL / MMCM都包含在CMT中。 DCM 是比较早的FPGA中使用的,某些Sparten-3和Vir

    2024年02月07日
    浏览(38)
  • 小梅哥Xilinx FPGA学习笔记19——IP 核使用之 ROM

    目录 一:章节导读 二:ROM IP 核配置 2.1 创建 ROM 初始化文件 2.3 ROM IP 核配置步骤 三: ROM核的仿真与调用 3.1 三角波的产生 3.2 仿真验证结果 3.3 正弦波的产生 3.4 仿真验证结果        ROM 是只读存储器( Read-Only Memory )的简称,是一种只能读出事先所存数据的固态半导体存

    2024年02月03日
    浏览(45)
  • FPGA学习:PLL的使用与仿真

    PLL(phase-locked loop),即锁相环。是FPGA中的重要资源。由于一个复杂的FPGA系统往往需要多个不同频率,相位的时钟信号。所以,一个FPGA芯片中PLL的数量是衡量FPGA芯片能力的重要指标。FPGA的设计中,时钟系统的FPGA高速设计机器重要,一个低抖动,低延迟的系统时钟会增加FPGA设计

    2023年04月17日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包