时钟选择器

使用Altera的altclkctrl可以实现时钟的动态切换或者降低局部时钟网络的功耗。生成altclkctrl IP核的过程简单,但是对时钟输入有一定的限制。如果需要切换多个时钟,那么inclk0x和inclk1x必须是FPGA的管脚直接输入,inclk2x和inclk3x必须是锁相环的输出作为输入,还必须是同一个锁相环的不同输出,如c0或c1。

 

my_altclkctrl    my_altclkctrl_inst (

         .clkselect( sync_clk_src_sel_r1[1:0] ),

         .inclk0x(          mfio0 ),//fpga_pin

         .inclk1x(         si5338_clk),//fpga_pin

         .inclk2x(          sys_clk100m),//inclk2和inclk3必须是同一个锁相环的输出

         .inclk3x(         sys_clk50m),

         .outclk(          clk_buf)

         );

 

xilinx的原语如下:设计目的是在两个时钟输入之间切换而不会产生毛刺信号。

BUFGCTRL #(

     .INIT_OUT(0),  // Inital value of0 or 1 after configuration

     .PRESELECT_I0("FALSE"), // "TRUE" or"FALSE" set the I0 input after configuration

     .PRESELECT_I1("FALSE") // "TRUE" or "FALSE" set the I1 input afterconfiguration

   )BUFGCTRL_inst (

     .O(O),     // 1-bit output

     .CE0(CE0), // 1-bit clock enable 0

     .CE1(CE1), // 1-bit clock enable 1

     .I0(I0),   // 1-bit clock 0 input

     .I1(I1),   // 1-bit clock 1 input

     .IGNORE0(IGNORE0), // 1-bit ignore 0 input

      .IGNORE1(IGNORE1), // 1-bit ignore 1 input

     .S0(S0),   // 1-bit select 0 input

     .S1(S1)    // 1-bit select 1 input

   );

你可能感兴趣的:(时钟选择器)