一个clock的产生:

1) Clock source的选择:

cgm_mux5(.clk_out,

.clk_in0,

.clk_in1,

.clk_in2,

.clk_in3,

.clk_in4,

.sel_in,

.ptest_scan_dc_mode  );

在dc_scan mode下,选择某一个clock freq。

Sel_in_scan = {3{~ptest_scan_dc_mode}} & sel_in[2:0]

将所有的mux做成2x1的。5选1的mux,可以先进行4x1的选择,再进行2x1的选择,4选1的mux,可以分为三个2x1的选择。

Z_i0 = S0  ?  I1 : I0;

Z_i1 = S0  ?  I3 : I2;

Z   = S1  ? Z_I1 : Z_I0;

2)       Clock div的处理:

u_cgm_divn_clk_sim0(

.clk_div  (clk_sim0_gen),

.div_ratio  (cgm_ratio_sim0),

.cgm_busy  (cgm_busy_sim0),

.clk_in  (clk_sim0_mux),

.rst_clk_in  (rst_clk_n),

.cgm_div  (cgm_sim0_div_ac[2:0]),

.cgm_en  (cgm_sim0_en_ac),

.ptest_scan_dc_mode  (ptest_scan_dc_mode),

.ptest_icg_mode  (ptest_icg_mode),

.clk_scan  (clk_scan_occ), );

首先在clk_in与clk_scan之间进行mux,产生clock,clk_in_scan(该clk只用在cgm_en的同步)。

再次基于clk_in_scan进行cgm_en的sync处理。这时的rst可能并没有进行同步释放处理。

再次cgm_active = cgm_en_sync | ~cnt_zero。(cnt_zero无效时,clock为低电平允许进行gate操作)

再次加入clock_gate

clk_gate u_clk_gate_in(

.genp (cgm_active),

.lclkp (clk_In),

.testmodep (ptest_icg_mode),

.gclkp (clk_in_gate));

再次加入mux,在clk_scan和clk_in_gate之间进行选择。Selcet信号ptest_scan_dc_mode,产生clk_in_gate_scan

再次进行Counter Divider

Always @(posedge clk_in_gate_scan or negedge rst_clk_n)

If(~rst_clk_n)    div_cnt < = WIDTH{1’b0}

else if(cnt_zero)  div_cnt <= cgm_div[WIDTH-1:0]

else div_cnt <= div_cnt[WIDTH-1:0] – 1’b1;

再次cnt_zero和cnt_half的组合逻辑。

assign cnt_zero = (div_cnt[WIDTH:0] == {WIDTH{1’h0}} ) ? 1’b1 : 1’b0;

assign cnt_half = (div_cnt[WIDTH-1:0] == (cgm_div[WIDTH-1:1] + cgm_div[0])) ? 1’b1 : 1’b0;

再次generated clock

Always @(posedge clk_in_gate or negedge rst_clk_n)

If(~rst_clk_n)  clk_div_gen = 1’b0;

else if(div_sel == 1’b0)  clk_div_gen = 1’b0;

else if(cnt_zero) clk_div_gen = 1’b1;

else if(cnt_half) clk_div_gen = 1’b0;

else clk_div_gen = clk_div_gen;

3) 最终mux选择。

Assign div_sel = (cgm_div[WIDTH-1:0] == {WIDTH{1’b0}}) ? 1’b0 : 1’b1;

Assign div_sel_scan = ~ptest_scan_dc_mode & div_sel;

Mux2x1 u_mux2_clk_div(

.in1  (clk_in_gate),

.in2  (clk_div_gen),

.c  (div_sel_scan),

.out  (clk_div)

);

Assign div_ratio = cgm_active & cnt_zero;

Assign cgm_busy = cgm_en | cgm_en_sync | ~cnt_zero

clock divider的更多相关文章

  1. clock

    Prime Time中的clock分析包括: 1)Multiple clocks,clock from port/pin,virtual clock. 2)Clock network delay an ...

  2. STM8S——Clock control(CLK)

    1.主时钟源 有四种时钟源可以用做主时钟: (1)1-24MHz高速外部晶体振荡器(HSE) (2)最大24MHz高速外部时钟信号(HSE user-ext) (3)16MHz高速内部RC振荡器(HS ...

  3. 详解树莓派Model B+控制蜂鸣器演奏乐曲

    步进电机以及无源蜂鸣器这些都需要脉冲信号才能够驱动,这里将用GPIO的PWM接口驱动无源蜂鸣器弹奏乐曲,本文基于树莓派Mode B+,其他版本树莓派实现时需参照相关资料进行修改! 1 预备知识 1.1 ...

  4. CE STEPLDR

    作用:初始化CPU.内存.Flash,复制EBoot到内存并跳入EBoot中运行. 原理:S3C2416有 8-KB 的steppingstone(暂时翻译为垫脚石),在Nand启动模式下可把Nand ...

  5. PIC32MZ tutorial -- OC Interrupt

    In my previous blog "PIC32MZ tutorial -- Output Compare", I shows how to apply Output Comp ...

  6. PIC32MZ tutorial -- External Interrupt

    In my older blog "PIC32MZ tutorial -- Key Debounce", I shows how to acheive key debounce w ...

  7. Cotex-M3内核LPC17xx系列时钟及其配置方法

    一.背景: 最近正在接手一个项目,核心芯片既是LPC17XX系列MCU,内核为ARM的Cotex-M3内核. 想要玩转一个MCU,就一定得搞定其时钟! 时钟对MCU而言,就好比人类的心脏.由其给AHB ...

  8. sja1000芯片can驱动程序

    应用层使用socketCan的方法:http://pan.baidu.com/s/1ntsvbb7#path=%252Floongson1%252Ftools%252Fcan 功能:对can驱动程序的 ...

  9. PIC32MZ tutorial -- Output Compare

    Output Compare is a powerful feature of embedded world. The PIC32 Output Compare module compares the ...

随机推荐

  1. XLAT转码:以DS:【BX+AL】为地址,提取存储器中的一个字节再送入AL

    data segment a db ,,,,,,,, b dw ;sum of a table db 11h,22h,33h,44h,55h,66h,77h,88h,99h ends code seg ...

  2. ADO.NET中主要对象

    ADO.NET是什么? ADO.NET是.Net平台提供和数据库交互的类库集,我们可以通过它对SQLSERVER,XML,Oracle等这样的数据源进行访问. 应用程序可以使用ADO.NET链接到数据 ...

  3. SMART Goals

    Once you have planned your project, turn your attention to developing several goals that will enable ...

  4. 在CentOS6.5上安装Tomcat7

    Tomcat大本营地址:http://tomcat.apache.org/ 本文使用到的Tomcat7下载地址:http://apache.opencas.org/tomcat/tomcat-7/v7 ...

  5. http://blog.csdn.net/fw0124/article/details/48280083

    http://blog.csdn.net/fw0124/article/details/48280083

  6. 读取XML文档结构并写入内容

    1.在项目中新建XML文档结构.xsd文件,在其中添加相应的节点. 2.读取文档结构并写入内容 string initFileName = @"D:\Config.xml"; Da ...

  7. Spring第12篇—— Spring对Hibernate的SessionFactory的集成功能

    由于Spring和Hibernate处于不同的层次,Spring关心的是业务逻辑之间的组合关系,Spring提供了对他们的强大的管理能力, 而Hibernate完成了OR的映射,使开发人员不用再去关心 ...

  8. gdb 7.11

    因为CentOS自带的GDB版本有点低,所以下载了最新的gdb 7.11编译以后,调试过程中提示以下错误. Python Exception <type 'exceptions.NameErro ...

  9. MOGRE学习笔记(2) - MOGRE基础知识总结

    前一篇配置了MOGRE的运行环境,这里记录一些MOGRE基础知识,仅仅是最基础的一些东西.由于本人接触ogre的时间比较短,对于很多知识都是一知半解,所以理解起来不免会有一些错误,本人也希望自己在对o ...

  10. 奥威power-BI 在线体验平台

    奥威Power-BI比你想象的更简单!完全可视化绿色开发平台.奥威Power-BI在线体验平台,欢迎大家体验,了解更多产品知识.奥威Power-BI为您达成信息化最后一公里!在线体验网址:http:/ ...