FPGA时钟IP核

简介: FPGA时钟IP核
时钟IP核

对输入的时钟进行时钟分频、倍频、相位偏移

MMCM( 混合模式时钟管理 )和PLL(锁相环)内部的时钟资源

  • PLL 的全称是Phase Locked Loop , 锁相环,反馈控制电路
    PLL对时钟网络进行系统级的时钟管理和偏移控制,具有时钟倍频、分频、相位偏移和可编程占空比的功能。
  • 时钟资源包含时钟管理单元CMT, 每个CMT由一个MMCM和一个PLL组成

MMCM mixed-mode clock manager 混合模式时钟管理

PLL( phase locked loop ) 锁相环

时钟资源简介

7系列的FPGA使用了专用的全局区域时钟资源来管理和设计不同的时钟需求

  • 全局时钟:专用的互联网络,降低时钟的偏斜,占空比的失真和功耗 --> 资源有限
    专用的时钟缓冲、驱动结构,延时低
  • 区域时钟:只能驱动区域内部的逻辑资源和IO口

Clock Management Tiles (CMT) 提供了时钟合成(Clock frequency synthesis ),倾斜矫正(deskew), 过滤抖动(jitter filtering) 功能

一个CMT包 1个MMCM 1个PLL

整体时钟资源视图

  • Clock Region 区域时钟
  • Clock Backbone 全局时钟线主干道
    将FPGA分成左右两个部分,所有的全局时钟布线都要从Clock Backbone经过
  • BUFG 全局时钟缓存
  • HROW: 水平时钟线
    水平方向贯穿每个时钟区域的中心部分
  • CMT Backbone CMT主干道
  • I/O Column 时钟的输入引脚
  • GT Column 串行时钟收发器

划分成几个不同的时钟区域,每个区域可以单独工作,也可以通过时钟主干道统一工作

单个时钟域视图

  • BUFG: 全局时钟缓冲器, BUFG的时钟输出可以经过Clock Backbone 到达任何一个区域,而且可以通过HROW到达每个区域内部的逻辑单元
  • BUFH : 水平时钟缓冲器,功能受限的BUFG,仅能在左右相邻的时钟区域
  • BUFIO: IO时钟缓冲器
  • BUFR: 区域时钟缓冲器,输出的时钟,仅能作用于本时钟区域
  • BUFMR: 多区域时钟缓冲器
  • CC 时钟专用引脚
  • MMCM: 混合模式时钟管理器
  • PLL: 锁相环

时钟引脚:SRCC, MRCC 专用时钟引脚

  • SRCC : 仅作用于本时钟区域
  • MRCC : 作用于本时钟区域和相邻时钟区域

_P、_N 差分信号

MMCM / PLL IP核
PLL

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

锁相环可以实现输出信号频率对输入信号频率的自动跟踪,所以锁相环通常用于闭环跟踪电路

锁相环在工作的过程中,当输出信号的频率与输入信号的频率相等时,输出电压与输入电压保持固定的相位差值,即输出电压与输入电压的相位被锁住,这就是锁相环名称的由来。

PLL主要用于为内存接口生成所需的时钟信号,也具有与器件逻辑的连接

PLL由以下几个部分组成

  • 前置分频计数器(D计数器)
  • 相位-频率检测器(PFD, Phase-Frequency Detector)电路
  • 电荷泵(Charge Pump)
  • 环路滤波器( Loop Filter )
  • 压控振荡器( VCO,Voltage Controlled Oscillator )
  • 反馈乘法器计数器( M计数器 )
  • 后置分频计数器( O1-O6计数器 )

工作过程

  1. PFD 检测其参考频率(FREF)和反馈信号(Feedback)之间的相位差和频率差,控制电荷泵和环路滤波器将相位差转换为控制电压
  2. VCO 根据不同的控制电压产生不同的震荡频率,从而影响 Feedback 信号的相位和频率
  3. 在 FREF和 Feedback 信号具有相同的相位和频率之后,就认为 PLL 处于锁相的状态。
  4. 在反馈路径中插入M计数器会使VCO的震荡频率是FREF信号频率的M倍
    FREF信号等于输入时钟(FIN) 除以预缩放计数器(D)
    参考频率用以下方程描述:FREF= FIN/D
    VCO 输出频率为 FVCO= FIN*M/D
    PLL 的输出频率为 FOUT=(FIN*M)/(D*O)
MMCM

MMCM 的功能是PLL的超集,具有比PLL更强大的相移功能。

MMCM主要用于驱动器件逻辑(CLB, DSP, RAM 等 )的时钟

CMT

包含一个PLL 和一个MMCM

输入:

  • IBUFG(CC) 具有时钟能力的IO输入 CCIO --> Clock Capable Input
  • 区域时钟BUFR
  • 全局时钟BUFG
  • GT收发器输出时钟
  • 行时钟BUFH
  • 本地布线(不推荐使用本地布线来驱动时钟资源)

输出:

  • 驱动全局时钟的BUFG
  • 驱动全局时钟的BUFH

BUFG能够驱动整个器件内部的PL侧通用逻辑的所有时序单元的时钟端口。

Clocking Wizard配置

使用时钟向导(Clocking Wizard)配置时钟IP核

IP核框图:

  • clk_in 输入时钟,可以从专用时钟引脚输入
  • locked信号,从 0 变为1 ,表示输出的时钟达到稳定
配置过程

步骤1

步骤2

  • Clock Monitor 时钟监控: 一般不勾选
  • MMCM、PLL MMCM的功能比PLL强大,根据需求选择
  • Clocking Features
  • Frequency Synthesis 频率合成 --> 输出不同频率时钟
  • Phase Aligment 相位矫正
  • Minimize Power 低功耗,时钟精度会降低
  • Jitter Optimization 抖动设置
  • 默认平衡模式

步骤3

  • 输入时钟设置

步骤4

  • 输出时钟设置

步骤5

  • 输入输出引脚设置

步骤6

  • 端口重命名

步骤7

  • 默认

步骤8

使用IP核
verilog
`timescale 1ns / 1ps
//
// Engineer: wkk
// Create Date: 2022/11/25 12:53:36
// Module Name: clock_ip
//
module clock_ip(
    input       sys_clk,
    input       sys_rst_n,
    output      clk_50m,
    output      clk_25m,
    output      clk_ip_locked
);
clk_clock_ip u_clk_clock_ip(
    .clk_out1   (clk_50m),
    .clk_out2   (clk_25m),            
    .reset      (~sys_rst_n), 
    .locked     (clk_ip_locked),
    .clk_in1    (sys_clk)
);
endmodule
testbench
`timescale 1ns / 1ns
//
// Engineer:  wkk
// Module Name: clock_ip_tb
//
module clock_ip_tb();
reg     sys_clk         ;
reg     sys_rst_n       ;
wire    clk_50m         ;
wire    clk_25m         ;
wire    clk_ip_locked   ;
    
clock_ip u_clock_ip(  
    .sys_clk        (sys_clk      ),       
    .sys_rst_n      (sys_rst_n    ),     
    .clk_50m        (clk_50m      ),       
    .clk_25m        (clk_25m      ),       
    .clk_ip_locked  (clk_ip_locked)
); 
initial begin
    sys_clk = 0;
    sys_rst_n = 0;
end
always #5 sys_clk = ~sys_clk;
initial begin
    #10
    sys_rst_n = 1;
    #200
    $stop;
end
endmodule

参考

正点原子《启明星 ZYNQ 之 FPGA 开发指南 V2.0》

相关文章
|
7月前
|
算法 异构计算 索引
m基于FPGA的Hamming汉明编译码verilog实现,包含testbench测试文件,不使用IP核
m基于FPGA的Hamming汉明编译码verilog实现,包含testbench测试文件,不使用IP核
120 1
|
7月前
|
算法 异构计算
m基于FPGA的RS+卷积级联编译码实现,RS用IP核实现,卷积用verilog实现,包含testbench测试文件
m基于FPGA的RS+卷积级联编译码实现,RS用IP核实现,卷积用verilog实现,包含testbench测试文件
68 0
|
5月前
|
缓存 异构计算
FPGA入门(7):IP核调用(二)
FPGA入门(7):IP核调用(二)
52 0
|
5月前
|
异构计算
FPGA入门(7):IP核调用(一)
FPGA入门(7):IP核调用(一)
99 0
|
7月前
|
芯片 异构计算
【FPGA】高云FPGA之IP核的使用->PLL锁相环(二)
【FPGA】高云FPGA之IP核的使用->PLL锁相环
131 1
|
7月前
|
算法 异构计算 Python
m基于FPGA的217卷积编码维特比译码verilog实现,包含testbench不使用IP核
该内容展示了使用Vivado 2019.2进行卷积编码和维特比译码的模拟。提供了编码、译码输出和RTL图的图片,以及Verilog实现的核心代码。卷积编码是一种前向纠错技术,基于生成多项式产生冗余数据;维特比译码利用动态规划恢复原始信息,最小化错误。Verilog程序包含了编码和译码模块,以及输入输出信号的时序操作。
112 0
|
7月前
|
芯片 异构计算
【FPGA】高云FPGA之IP核的使用->PLL锁相环(一)
【FPGA】高云FPGA之IP核的使用->PLL锁相环
287 0
|
7月前
|
存储 资源调度 算法
m基于FPGA和IP核的RS编译码verilog实现,包含testbench测试文件
m基于FPGA和IP核的RS编译码verilog实现,包含testbench测试文件
114 1
|
算法 异构计算
m基于FPGA的256点FFT傅里叶变换verilog实现,含testbench,不使用IP核
m基于FPGA的256点FFT傅里叶变换verilog实现,含testbench,不使用IP核
496 0
|
算法 异构计算
基于FPGA的FFT变换和反变换实现,使用IP核设计,包含testbench
基于FPGA的FFT变换和反变换实现,使用IP核设计,包含testbench
317 0

热门文章

最新文章