1 CRG的SPEC参阅
1.1 时钟规划需求
(1)生成AHB时钟,APB时钟,RTC时钟;(2)AHB最高时钟频率为98MHz;(3)APB时钟为AHB同步时钟,且能够装备AHB时钟的1/2,1/4,1/8;(4)RTC时钟独自操控时钟,时钟频率1KHz;(5)各外设时钟能够独自门控,满意低功耗要求。
1.2 时钟规划关键
(1)DFT可控,阻隔,可观测。(2)上电作业外部参阅时钟,PLL安稳后,时钟主动切换。(3)低功耗要求,在体系不作业时,时钟主动封闭。(4)各个外设时钟均能门控。
1.3 时钟规划电路
看上图,首要进来的是8M时钟,给PLL倍频。OSC_OUT是OSC_IN取反得到的,这是外部时钟要求的。经过无毛刺切换后,就发生sys_clk体系时钟,然后进入一个分频模块;分频之后的时钟进入ICG,发生apb和ahb时钟。这个ICG看做是一个buffer,对sys_clk做门控,时钟途径时钟是sys_clk体系时钟,留意这儿出来是不是分频时钟,而是sys_clk出来的,分频时钟仅仅操控效果罢了。
2 时钟的无毛刺切换
2.1 毛刺的发生
两个时钟频率能够互相彻底无关,或许它们能够是互相的倍数。在任何一种情况下,都有或许在切换时在时钟线上发生毛刺。时钟线上的毛刺对整个体系是风险的,由于它或许被某些寄存器解释为捕获时钟边缘而被其他寄存器疏忽。毛刺的处理分为两种,当时钟是互相的倍数时是一种,彻底无关的两个时钟处理又是一种。
2.2 倍数联系的时钟毛刺解决方案
着一篇文章很值得参阅!
其原理是,先gaTIng住之前挑选的时钟,然后再铺开即将挑选的时钟。下图显现了防止源时钟互相倍数的时钟开关输出呈现毛刺的解决方案。在每个时钟源的挑选途径中刺进一个负边缘触发的D触发器。
2.3 针对无关时钟源的毛刺维护
从前防止时钟开关输出处的毛刺的办法需求两个时钟源互相的倍数,在该完成中没有处理异步信号的机制。当两个时钟源互相彻底无关时,异步行为的源能够是SELECT信号或从一个时钟域到另一个时钟域的反应。同步器仅仅两级触发器,其间榜首级经过确定数据来协助安稳数据,这一级能够用上升沿,也能够用下降沿,用上升沿是为了节省时间然后将数据传递到下一级,后一级的DFF有必要运用clock下降沿,由于是用AND门进行gaTIng。
2.4 RTL代码
module clk_sw( input wire clk_a, input wire clk_b, input wire rst_n, input wire sel, output wire clk_o ); reg clk_a_en ; reg clk_b_en ; always @(posedge clk_a or negedge rst_n) begin if(~rst_n) clk_a_en <= 1'b0 ; else clk_a_en <= ~sel & ~clk_b_en ; end always @(posedge clk_b or negedge rst_n) begin if(~rst_n) clk_b_en <= 1'b0 ; else clk_b_en <= sel & ~clk_a_en ; end assign clk_o = (clk_a & clk_a_en) | (clk_b & clk_b_en) ; endmodule