MMCME4_ADV与PLL4_ADV原语

这篇具有很好参考价值的文章主要介绍了MMCME4_ADV与PLL4_ADV原语。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MMCM与PLL

​ UltraScale器件中时钟管理模块(CMT)包含mixed-mode clock manager (MMCM) 和phase-locked loops (PLLs) 。PLL主要用来生成I/O时钟,也包含一部分MMCM的功能。

​ 其中MMCM输出时钟相位调整语VCO频率相关。

MMCME4_ADV原语

​ MMCM原语包含MMCME3_BASE和MMCME3_ADV,在UltraScale+ 器件中MMCME4替代MMCME3。UltraScale+ 器件MMCM原语包含MMCME4_BASE和MMCME4_ADV。

​ MMCME4_BASE实现基本MMCM功能。MMCME4_ADV除了能实现MMCME4_BASE功能外,还可以实现动态可重配等功能。

计算输出时钟频率

​ 时钟输出频率和VCO输出频率计算公式如下,其中M值通过CLKFBOUT_MULT_F设置,D值通过DIVLK_DIVIDE设置,O的值为通过CLKOUT_DIVIDE.设置。

MMCME4_ADV与PLL4_ADV原语,收发器,fpga开发

​ 下图代码中CLKFBOUT_MULT_F设置成8,DIVCLK_DIVIDE设置成1,CLKOUT0_DIVIDE_F设置成4,输入时钟频率CLKIN1_PERIOD等于10,为100Mhz。通过公式计算CLKOUT0输出为100*8/4=200Mhz。

MMCME4_ADV #(
      .BANDWIDTH("OPTIMIZED"),        // Jitter programming
      .CLKFBOUT_MULT_F(8),          // Multiply value for all CLKOUT
      .CLKFBOUT_PHASE(0.0),           // Phase offset in degrees of CLKFB
      .CLKFBOUT_USE_FINE_PS("FALSE"), // Fine phase shift enable (TRUE/FALSE)
      .CLKIN1_PERIOD(10),            // Input clock period in ns to ps resolution (i.e., 33.333 is 30 MHz).
      .CLKIN2_PERIOD(0.0),            // Input clock period in ns to ps resolution (i.e., 33.333 is 30 MHz).
      .CLKOUT0_DIVIDE_F(4),         // Divide amount for CLKOUT0
      .CLKOUT0_DUTY_CYCLE(0.5),       // Duty cycle for CLKOUT0
      .CLKOUT0_PHASE(0.0),            // Phase offset for CLKOUT0
      .CLKOUT0_USE_FINE_PS("FALSE"),  // Fine phase shift enable (TRUE/FALSE)
      .CLKOUT1_DIVIDE(1),             // Divide amount for CLKOUT (1-128)
      .CLKOUT1_DUTY_CYCLE(0.5),       // Duty cycle for CLKOUT outputs (0.001-0.999).
      .CLKOUT1_PHASE(0.0),            // Phase offset for CLKOUT outputs (-360.000-360.000).
      .CLKOUT1_USE_FINE_PS("FALSE"),  // Fine phase shift enable (TRUE/FALSE)
      .CLKOUT2_DIVIDE(1),             // Divide amount for CLKOUT (1-128)
      .CLKOUT2_DUTY_CYCLE(0.5),       // Duty cycle for CLKOUT outputs (0.001-0.999).
      .CLKOUT2_PHASE(0.0),            // Phase offset for CLKOUT outputs (-360.000-360.000).
      .CLKOUT2_USE_FINE_PS("FALSE"),  // Fine phase shift enable (TRUE/FALSE)
      .CLKOUT3_DIVIDE(1),             // Divide amount for CLKOUT (1-128)
      .CLKOUT3_DUTY_CYCLE(0.5),       // Duty cycle for CLKOUT outputs (0.001-0.999).
      .CLKOUT3_PHASE(0.0),            // Phase offset for CLKOUT outputs (-360.000-360.000).
      .CLKOUT3_USE_FINE_PS("FALSE"),  // Fine phase shift enable (TRUE/FALSE)
      .CLKOUT4_CASCADE("FALSE"),      // Divide amount for CLKOUT (1-128)
      .CLKOUT4_DIVIDE(1),             // Divide amount for CLKOUT (1-128)
      .CLKOUT4_DUTY_CYCLE(0.5),       // Duty cycle for CLKOUT outputs (0.001-0.999).
      .CLKOUT4_PHASE(0.0),            // Phase offset for CLKOUT outputs (-360.000-360.000).
      .CLKOUT4_USE_FINE_PS("FALSE"),  // Fine phase shift enable (TRUE/FALSE)
      .CLKOUT5_DIVIDE(8),             // Divide amount for CLKOUT (1-128)
      .CLKOUT5_DUTY_CYCLE(0.5),       // Duty cycle for CLKOUT outputs (0.001-0.999).
      .CLKOUT5_PHASE(0.0),            // Phase offset for CLKOUT outputs (-360.000-360.000).
      .CLKOUT5_USE_FINE_PS("FALSE"),  // Fine phase shift enable (TRUE/FALSE)
      .CLKOUT6_DIVIDE(1),             // Divide amount for CLKOUT (1-128)
      .CLKOUT6_DUTY_CYCLE(0.5),       // Duty cycle for CLKOUT outputs (0.001-0.999).
      .CLKOUT6_PHASE(0.0),            // Phase offset for CLKOUT outputs (-360.000-360.000).
      .CLKOUT6_USE_FINE_PS("FALSE"),  // Fine phase shift enable (TRUE/FALSE)
      .COMPENSATION("AUTO"),          // Clock input compensation
      .DIVCLK_DIVIDE(1),              // Master division value
      .IS_CLKFBIN_INVERTED(1'b0),     // Optional inversion for CLKFBIN
      .IS_CLKIN1_INVERTED(1'b0),      // Optional inversion for CLKIN1
      .IS_CLKIN2_INVERTED(1'b0),      // Optional inversion for CLKIN2
      .IS_CLKINSEL_INVERTED(1'b0),    // Optional inversion for CLKINSEL
      .IS_PSEN_INVERTED(1'b0),        // Optional inversion for PSEN
      .IS_PSINCDEC_INVERTED(1'b0),    // Optional inversion for PSINCDEC
      .IS_PWRDWN_INVERTED(1'b0),      // Optional inversion for PWRDWN
      .IS_RST_INVERTED(1'b0),         // Optional inversion for RST
      .REF_JITTER1(0.0),              // Reference input jitter in UI (0.000-0.999).
      .REF_JITTER2(0.0),              // Reference input jitter in UI (0.000-0.999).
      .SS_EN("FALSE"),                // Enables spread spectrum
      .SS_MODE("CENTER_HIGH"),        // Spread spectrum frequency deviation and the spread type
      .SS_MOD_PERIOD(10000),          // Spread spectrum modulation period (ns)
      .STARTUP_WAIT("FALSE")          // Delays DONE until MMCM is locked
   )
   MMCME4_ADV_inst (
      .CDDCDONE(),         // 1-bit output: Clock dynamic divide done
      .CLKFBOUT(clk_fb),         // 1-bit output: Feedback clock
      .CLKFBOUTB(),       // 1-bit output: Inverted CLKFBOUT
      .CLKFBSTOPPED(), // 1-bit output: Feedback clock stopped
      .CLKINSTOPPED(), // 1-bit output: Input clock stopped
      .CLKOUT0(clkout0),           // 1-bit output: CLKOUT0
      .CLKOUT0B(),         // 1-bit output: Inverted CLKOUT0
      .CLKOUT1(clkout1),           // 1-bit output: CLKOUT1
      .CLKOUT1B(),         // 1-bit output: Inverted CLKOUT1
      .CLKOUT2(clkout2),           // 1-bit output: CLKOUT2
      .CLKOUT2B(),         // 1-bit output: Inverted CLKOUT2
      .CLKOUT3(clkout3),           // 1-bit output: CLKOUT3
      .CLKOUT3B(),         // 1-bit output: Inverted CLKOUT3
      .CLKOUT4(clkout4),           // 1-bit output: CLKOUT4
      .CLKOUT5(clkout5),           // 1-bit output: CLKOUT5
      .CLKOUT6(clkout6),           // 1-bit output: CLKOUT6
      .DO(),                     // 16-bit output: DRP data output
      .DRDY(),                 // 1-bit output: DRP ready
      .LOCKED(lock),             // 1-bit output: LOCK
      .PSDONE(),             // 1-bit output: Phase shift done
      .CDDCREQ(1'b0),           // 1-bit input: Request to dynamic divide clock
      .CLKFBIN(clk_fb_g),           // 1-bit input: Feedback clock
      .CLKIN1(clk_in),             // 1-bit input: Primary clock
      .CLKIN2(1'b0),             // 1-bit input: Secondary clock
      .CLKINSEL(1'b1),         // 1-bit input: Clock select, High=CLKIN1 Low=CLKIN2
      .DADDR(7'b0),               // 7-bit input: DRP address
      .DCLK(1'b0),                 // 1-bit input: DRP clock
      .DEN(1'b0),                   // 1-bit input: DRP enable
      .DI(16'b0),                     // 16-bit input: DRP data input
      .DWE(1'b0),                   // 1-bit input: DRP write enable
      .PSCLK(1'b0),               // 1-bit input: Phase shift clock
      .PSEN(1'b0),                 // 1-bit input: Phase shift enable
      .PSINCDEC(1'b0),         // 1-bit input: Phase shift increment/decrement
      .PWRDWN(1'b0),             // 1-bit input: Power-down
      .RST(rst)                    // 1-bit input: Reset
   );

使用全局时钟网络

​ 如下图所示,CLKOUT0输出要经过全局时钟网络BUFG,CLKFBOUT通过BUFG反馈到CLKFBIN。

MMCME4_ADV与PLL4_ADV原语,收发器,fpga开发

代码如下:

BUFG u_clkout0
   (
   .O (clk_out0_g),
   .I (clkout0)  
   ); 
 BUFG u_clk_fb
   (
   .O (clk_fb_g),
   .I (clk_fb)  
   ); 

PLL4_ADV

​ UltraScale+ 器件包含PLL4_BASE和PLL4_ADV。

​ PLL4_ADV原语输出时钟频率计算方式与MMCME4_ADV一样。输入时钟周期为5ns,频率200Mhz,CLKFBOUT_MULT_F设置成4,DIVCLK_DIVIDE设置成1,CLKOUT0_DIVIDE_F设置成4,CLKOUT0输出依然为200Mhz。

 PLLE4_ADV #(
      .CLKFBOUT_MULT(4),          // Multiply value for all CLKOUT
      .CLKFBOUT_PHASE(0.0),       // Phase offset in degrees of CLKFB
      .CLKIN_PERIOD(5),         // Input clock period in ns to ps resolution (i.e., 33.333 is 30 MHz).
      .CLKOUT0_DIVIDE(4),         // Divide amount for CLKOUT0
      .CLKOUT0_DUTY_CYCLE(0.5),   // Duty cycle for CLKOUT0
      .CLKOUT0_PHASE(0.0),        // Phase offset for CLKOUT0
      .CLKOUT1_DIVIDE(1),         // Divide amount for CLKOUT1
      .CLKOUT1_DUTY_CYCLE(0.5),   // Duty cycle for CLKOUT1
      .CLKOUT1_PHASE(0.0),        // Phase offset for CLKOUT1
      .CLKOUTPHY_MODE("VCO_2X"),  // Frequency of the CLKOUTPHY
      .COMPENSATION("AUTO"),      // Clock input compensation
      .DIVCLK_DIVIDE(1),          // Master division value
      .IS_CLKFBIN_INVERTED(1'b0), // Optional inversion for CLKFBIN
      .IS_CLKIN_INVERTED(1'b0),   // Optional inversion for CLKIN
      .IS_PWRDWN_INVERTED(1'b0),  // Optional inversion for PWRDWN
      .IS_RST_INVERTED(1'b0),     // Optional inversion for RST
      .REF_JITTER(0.0),           // Reference input jitter in UI
      .STARTUP_WAIT("FALSE")      // Delays DONE until PLL is locked
   )
   PLLE4_ADV_inst (
      .CLKFBOUT(clk_fb),       // 1-bit output: Feedback clock
      .CLKOUT0(clk0),         // 1-bit output: General Clock output
      .CLKOUT0B(),       // 1-bit output: Inverted CLKOUT0
      .CLKOUT1(clk1),         // 1-bit output: General Clock output
      .CLKOUT1B(),       // 1-bit output: Inverted CLKOUT1
      .CLKOUTPHY(),     // 1-bit output: Bitslice clock
      .DO(),                   // 16-bit output: DRP data output
      .DRDY(),               // 1-bit output: DRP ready
      .LOCKED(lock),           // 1-bit output: LOCK
      .CLKFBIN(clk_fb_g),         // 1-bit input: Feedback clock
      .CLKIN(clk_in),             // 1-bit input: Input clock
      .CLKOUTPHYEN(1'b1), // 1-bit input: CLKOUTPHY enable
      .DADDR(7'b0),             // 7-bit input: DRP address
      .DCLK(1'b0),               // 1-bit input: DRP clock
      .DEN(1'b0),                 // 1-bit input: DRP enable
      .DI(16'b0),                   // 16-bit input: DRP data input
      .DWE(1'b0),                 // 1-bit input: DRP write enable
      .PWRDWN(1'b0),           // 1-bit input: Power-down
      .RST(rst)                  // 1-bit input: Reset
   );

使用方法

OSERDESE3 时钟

当MMCME4_ADV输出时钟作为OSERDESE3输入时钟是,MMCME4_ADV输出时钟通过BUFGCE和BUFGCE_DIV后,进入OSERDESE3。通过BUFGCE和BUFGCE_DIV来减少CLK与CLKDIV之间时钟偏差。

MMCME4_ADV与PLL4_ADV原语,收发器,fpga开发文章来源地址https://www.toymoban.com/news/detail-730915.html

到了这里,关于MMCME4_ADV与PLL4_ADV原语的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • PowerBUS 双总线收发器

    随着智能化的发展,人的需求变高,在一个环境内,如果子设备较多,距离适中,大多数是布置485总线加电源地需要4根线。这样就会导致走线复杂,线的成本也较高;如果用BLE或者wifi无线连接时也需要电源地2根线,成本更高。 而powerbus双总线就解决了以上的布线复杂的问题

    2024年02月16日
    浏览(49)
  • AD9361收发器中文手册

    因最近公司需要,借此机会和大家一起学习AD9361 制作不易,记得三连哦,给我动力,持续更新! 工程文件下载: 纯硬件SPI配置AD9361    提取码:g9jy ----------------------------------------------------------------------------------------         接收RF信号,并将其转换成可供BBP使用的数字数据

    2023年04月19日
    浏览(45)
  • 缓冲器/驱动器/收发器IC

    记录学习未使用过的IC,开发使用新的IC,哎,就是玩 本编文章主要介绍缓冲器/驱动器/收发器 FPGA或MCU低驱动能力引脚 单向长距离信号 1.SN74HCT245NSR DIR高电平,A到B可控制,B到A不可控制 DIR低电平,B到A可控制,A到B不可控制 OE高电平,所有通道端口高阻 OE低电平,所有通道端

    2024年02月09日
    浏览(48)
  • CAN收发器与CAN控制器

    CAN收发器是一种用于CAN总线通信的专用芯片,主要用于将CAN控制器和CAN总线物理层之间的信号进行转换和调节。它的主要作用是将CAN控制器输出的数字信号转换为CAN总线所需要的物理信号,同时将CAN总线上接收到的物理信号转换为数字信号,并将其传递给CAN控制器进行处理。

    2024年01月24日
    浏览(47)
  • STM32+收发器实现CAN和485总线

    RS485总线是一种常见的(Recommended Standard)串行总线标准(485是它的标识号),采用平衡发送与差分接收的方式,因此具有抑制共模干扰的能力。CAN是控制器局域网络(Controller Area Network, CAN)的简称,是一种能够实现分布式实时控制的串行通信网络,属于CSMA(多路载波侦听)/CD(冲突检测

    2024年02月05日
    浏览(49)
  • ARINC429总线收发器 -- HI-3593调试记录

    ​ HI-3593是一款ARINC429协议收发器芯片,和之前介绍的HI-3582芯片功能一样,该芯片支持两路接收和一路发送,其中每个接收机具有标签识别、32×32 FIFO和模拟线路接收机。不同的是HI-3593通信接口为SPI总线,可以减少MCU的硬件管脚负担,而且HI-3593片内集成DC/DC 转换器用于产生双

    2024年02月12日
    浏览(40)
  • 基于vivado+Verilog FPGA开发 — GT收发器

    代码规范:Verilog 代码规范_verilog代码编写规范-CSDN博客 开发流程:FPGA基础知识----第二章 FPGA 开发流程_fpga 一个项目的整个流程-CSDN博客   源码下载:GitHub - Redamancy785/FPGA-Learning-Record: 项目博客:https://blog.csdn.net/weixin_51460407 零、低速通信接口的缺陷 1、同步通信要求传输数据

    2024年04月17日
    浏览(60)
  • “GT/Serdes/高速收发器”相关的FPGA调研

    根据FPGA使用的要点,GT/Serdes/高速收发器这样的,进行检索,及FPGA的接口培训信息,整理成表如下: 序号 一级搜集 二级搜集 引申 1 知乎ID FPGA个人练习生 FPGA实现图像去雾 基于暗通道先验算法 纯verilog代码加速 提供2套工程源码和技术支持 没玩过GT资源都不好意思说自

    2024年02月08日
    浏览(41)
  • FPGA的高速收发器(GTX/GTY/GTP)的快速上手教程

            工作中有对GT收发器的使用需求, 学习的过程中,看手册,看别人的文章。有些大佬写得非常好,但他们可能不是针对使用来写的,我在实际使用IP核的过程中,还是会有很多疑惑。         所以我就针对怎么使用GTX等IP核写的这几篇文章,希望可以帮助到想快速学

    2024年04月15日
    浏览(54)
  • FPGA-结合协议时序实现UART收发器(一):UART协议、架构规划、框图

    记录FPGA的UART学习笔记,以及一些细节处理,主要参考奇哥fpga学习资料。 本次UART主要采用计数器方法实现,实现uart的稳定性发送和接收功能,最后实现串口数据回环进行功能测试。 UART协议如图。 包含:空闲位、起始位、数据位、校验位、停止位、空闲位(一般没有) 对于

    2024年02月08日
    浏览(64)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包