Xilinx Clocking Wizard IP核的动态配置

 

1、概述

在 VIVADO 工具提供了关于时钟的 IP 核,其内部调用了 PLL 或 MMCM 原语,通过设置 IP 核配置界面的参数可以获得想要的频率时钟。本文以此展开,对如何根据输入时钟的改变动态配置输出时钟作出讲解,并举例进行详细阐述。

2、使用场景说明

例,一个频率为 450MHz 的差分时钟进入 FPGA 内部,经过 Clocking Wizard IP 核后,分别输出了 180MHz、50MHz、450MHz、90MHz 四个时钟。在此基础上,该输入时钟会在上位机的控制下变为 600MHz,同时需要经过 IP 核后输出 200MHz、50MHz、600MHz、200MHz 四个时钟。

当输入时钟为 450MHz 时设置的输入分频比、VCO 分频比、各输出时钟分频比等参数与输入时钟为 600MHz 时有所改变,这就需要上位机告知我们当前输入的时钟频率,并以此进行相关参数的重配置。

3、IP 核设置

打开 IP 核,在第一页勾选 AXI4Lite,并设置输入差分时钟频率 450MHz。

在第二页中设置如下频率:

在第四页中可以看到分频及倍频参数如下:

其它保持默认设置即可。

4、AXI4-Lite 接口

在上一节的 IP 核设置中勾选了  AXI4Lite,该总线用于配置 IP 核的内部寄存器,包括 CLKFBOUT_MULT_F、DIVCLK_DIVIDE、clkout1~clkout4 对应的 Divide 参数。因此先了解 AXI4-Lite 接口,才能实现动态配置时钟的功能。

信号接口如下:

写地址总线
s_axi_aclkAXI4-lite 时钟
s_axi_aresetn异步复位,低有效
s_axi_awaddr[10:0]写地址
s_axi_awvalid写有效
s_axi_awready写地址 ready
写数据总线
s_axi_wdata[31:0]写数据
s_axi_wstb[3:0]写数据字节有效标志
s_axi_wvalid写有效
s_axi_wready写 ready
写响应总线
s_axi_bresp[1:0]写响应
s_axi_bvalid写响应有效
s_axi_bready响应 ready
读地址总线
s_axi_araddr[10:0]读地址
s_axi_arvalid读地址有效
s_axi_arready读地址 ready
读数据总线
s_axi_rdata[31:0]读数据
s_axi_rresp[1:0]读响应
s_axi_rvalid读有效
s_axi_rready读 ready

接口时序如下:

5、IP 核寄存器

地址寄存器默认值寄存器说明
0X00N/A软复位寄存器,写0x0000_000A激活软复位
0X2000X01010A00

Bit[7:0] = DIVCLK_DIVIDE

Bit[15:8] = CLKFBOUT_MULT

Bit[25:16] = CLKFBOUT_FRAC Multiply Fractional

Bit[26] = CLKFBOUT_FRAC_EN

0X2080X00010A00

Bit[7:0] = CLKOUT0_DIVIDE

Bit[17:8] = CLKOUT0_FRAC Divide Fractional

Bit[18] = CLKOUT0_FRAC_EN
0X2140X00000001Bit[7:0] = CLKOUT1_DIVIDE
0X2200X00000001Bit[7:0] = CLKOUT2_DIVIDE
0X22C0X00000001Bit[7:0] = CLKOUT3_DIVIDE
0X25C0X00000000

Bit[0] = LOAD, 置 1 加载配置寄存器的值到内部寄存器,并在下一周期置0;

Bit[1] = SADDR, 写 0 将默认 GUI 中的参数加载到动态配置中;写 1 将配置寄存器参数加载到动态配置中;

Bit[2] = SEN, 写 1 启动动态配置状态机,在下一次写时置 0 

6、功能仿真

仿真方法如下,在前 20000ns 的时间内,输入时钟为 450MHz,输出了 180MHz、50MHz、450MHz、90MHz 四个时钟;输出在后面的 20000ns 的时间内,输入时钟为 600MHz,输出 200MHz、50MHz、600MHz、200MHz 四个时钟。

下图为 450MHz 输入时钟对应输出,clkout1 的周期为 5.555ns,对应 180MHz 频率,clkout2~4 均为对应的频率:

下图为更改为 600MHz 输出后,动态配置寄存器后,可以看出 clkout1 的周期为 5ns,频率变为了 200MHz,clkout2~4 均变为设置的值:

7、仿真代码

module clk_dynamic_reconfig_tb;  reg                clk_in1_p    ;  wire              clk_in1_n    ;    reg                clk_in2_p    ;  wire              clk_in2_n    ;    wire              clk_in_p    ;  wire              clk_in_n    ;    reg                s_axi_aclk    ;  reg                s_axi_aresetn  ;    reg                clock_re_cfg_en  ;    reg                clock_fre_flag  ;    initial begin    clk_in1_p = 1'b1;    clk_in2_p = 1'b1;    s_axi_aclk = 1'b1;    s_axi_aresetn = 1'b0;    clock_re_cfg_en = 1'b0;    clock_fre_flag = 1'b0;    #201    s_axi_aresetn = 1'b1;    #20000    @(posedge s_axi_aclk)    #1 clock_fre_flag = 1'b1;    #20000    @(posedge s_axi_aclk)    #1 clock_re_cfg_en = 1'b1;    @(posedge s_axi_aclk)    #1 clock_re_cfg_en = 1'b0;    #20000    $stop;  end    assign  clk_in1_n = ~clk_in1_p;  always #1.111 clk_in1_p = ~clk_in1_p;  assign  clk_in2_n = ~clk_in2_p;  always #0.833 clk_in2_p = ~clk_in2_p;    always #10 s_axi_aclk = ~s_axi_aclk;    assign  clk_in_p = clock_fre_flag ? clk_in2_p : clk_in1_p;  assign  clk_in_n = clock_fre_flag ? clk_in2_n : clk_in1_n;  clk_dynamic_reconfig clk_dynamic_reconfig(    .clk_in1_p          ( clk_in_p ),    .clk_in1_n          ( clk_in_n ),      .s_axi_aclk          ( s_axi_aclk ),    .s_axi_aresetn        ( s_axi_aresetn ),        .clock_re_cfg_en       ( clock_re_cfg_en ),        .DIVCLK_DIVIDE        ( 2 ),    .CLKBFOUT_MULT        ( 4 ),    .CLKFBOUT_FRAC        ( 0 ),    .CLKFBOUT_FRAC_EN      ( 0 ),        .CLKOUT0_DIVIDE        ( 6 ),    .CLKOUT0_FRAC        ( 0 ),    .CLKOUT0_FRAC_EN      ( 0 ),        .CLKOUT1_DIVIDE        ( 24 ),    .CLKOUT2_DIVIDE        ( 2 ),    .CLKOUT3_DIVIDE        ( 6 )  );endmodule

8、功能源码

请关注获取:

 

  • 7
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: Vivado中的Clocking Wizard IP核是一个用于生成时钟和时序控制电路的IP核。它可以帮助设计人员快速生成复杂的时钟和时序控制电路,从而简化设计流程并提高设计效率。该IP核支持多种时钟类型和时序控制方案,并且可以根据用户的需求进行定制化配置。在Vivado中使用Clocking Wizard IP核可以大大简化时钟和时序控制电路的设计,提高设计效率和可靠性。 ### 回答2: vivado中的clocking wizard IP核是一种用于生成系统时钟的IP核。在现代数字系统设计中,时钟是一个非常重要的因素,因为它是整个系统同步的心脏。因此,生成正确的时钟信号是非常重要的,是系统成功运行的必要条件之一。 clocking wizard IP核可以帮助设计者方便地生成各种复杂的时钟方案。只需要在vivado工具中使用图形化界面,设置所需的时钟输出频率和时钟延迟等参数,就能够生成相应的时钟电路,包括时钟源、分频器、平移器、时钟缓冲器等。 该IP核的优点是可以为系统提供灵活的时钟配置,支持多个时钟域的设计和自定义延迟,可以帮助设计者兼顾芯片性能和功耗优化。同时,该IP核还提供了多种时钟输出格式,例如差分时钟、单端时钟等,可以适配不同的系统架构。 值得注意的是,在使用clocking wizard IP核时,需要对时钟的延迟和相位进行仔细的调整和验证。因为时钟误差会直接影响到系统的性能和可靠性,需要进行充分的仿真和检测,确保时钟信号满足系统的要求。 总之,clocking wizard IP核是vivado设计工具中非常实用的一个IP核,它可以帮助设计者快速生成符合要求的时钟电路,以保证系统的稳定性和可靠性。同时,它也是数字系统设计中非常重要的一个组成部分,需要设计者对其进行深入的理解和掌握。 ### 回答3: Vivado中的Clocking Wizard是一种可定制化的IP核,旨在帮助用户生成符合其设计需求的时钟。时钟系统是数字设计中最重要的部分之一,它对电路的正确性和性能至关重要。Clocking Wizard可以生成复杂的时钟分配和时钟控制电路,以满足高性能半导体芯片的需求。 Clocking Wizard被设计成可定制化的IP核,并且拥有丰富的功能和选项,以满足各种不同的时钟管理需求。用户可以通过Clocking Wizard生成多路时钟,并可以控制时钟的延迟,相位和频率等特性。Clocking Wizard还可以包含PLL电路,从而提供更高的时钟分辨率和频率范围。此外,Clocking Wizard还支持多种不同的时钟协议和接口标准,如PCI Express,Gigabit Ethernet和DDR接口标准等。 Clocking Wizard的使用方式相对简单,用户只需在Vivado中导入该IP核,然后根据自己的需求进行配置即可。用户可以通过GUI接口或者通过Tcl脚本来配置和管理Clocking Wizard。在配置完成后,用户可以将Clocking Wizard集成到他们的Vivado设计中,从而生成完整的时钟管理电路。 总之,Clocking Wizard是一种功能丰富且易于使用的IP核,在数字设计中扮演着重要的角色。它提供了可定制化的时钟分配和时钟控制方案,并支持多种不同的时钟协议和接口标准。对于需要更高性能且复杂的时钟分配和时钟控制方案的设计,Clocking Wizard是一个值得考虑的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值