一种数字电路时钟任意小数分频的方法与流程

文档序号:26295500发布日期:2021-08-17 13:42阅读:354来源:国知局
一种数字电路时钟任意小数分频的方法与流程
本发明属于数字电路领域,具体涉及一种数字电路时钟任意小数分频的方法。
背景技术
:在逻辑设计、数字电路设计中常常需要对时钟进行分频,以得到不同频率的时钟用于不同接口、模块使用,当主时钟与目标时钟之间不是整数倍关系时,计算的分频值不是一个整数,会有小数项。当分频值有小数项时,常用的分频方法有2种。一种是对计算的分频值小数部分进行四舍五入,得到一个近似的整数分频值,并使用该分频值对主时钟进行分频。由于对分频值的取整操作,导致实际得到的时钟频率与目标频率存在很大的误差,并随时间推移误差不断累积。一种是考察计算后的分频值特点,将一个小数分频转化为几个整数分频的和。由于这样做会使整数分频部分交叉组合,所以周期性抖动严重;每需要一个不同的分频值时,都需要单独设计,难以模块化设计。技术实现要素:(一)要解决的技术问题本发明要解决的技术问题是如何提供一种数字电路时钟任意小数分频的方法,以解决现有的小数分频方法存在误差或周期性抖动严重的问题。(二)技术方案为了解决上述技术问题,本发明提出一种数字电路时钟任意小数分频的方法,主时钟频率为n,目标时钟频率为m,该方法包括如下步骤:s1、设置一个计数器,初值为0;s2、在频率为n的主时钟下进行计数,每个时钟计数器值加m;s3、对计数器值加m后的数值进行判断,如果小于n,则返回步骤s2;如果大于等于n,执行步骤s4;s4、当计数器值+m大于等于n时,则产生一个脉冲,同时计数器值设置为:计数器值+m-n;s5、重复步骤s2、s3、s4,产生的脉冲构成了频率为m的目标时钟。进一步地,频率为m的目标时钟的脉宽根据实际情况自行设计。进一步地,频率为m的目标时钟的脉宽与频率为n的主时钟的脉宽相同。进一步地,该方法应用于数字频率综合中。进一步地,该方法应用于串口波特率产生。进一步地,该方法应用于时钟分频电路中。进一步地,使用主时钟的上升沿或下降沿进行时序驱动。进一步地,n不是m的整数倍。(三)有益效果本发明提出一种数字电路时钟任意小数分频的方法,在步骤s4中,每次计数器重置时,均将上次计数的差值重新计入下一个计数周期,这就消除了分频计数的累积误差。同时随着计数器运行,累积误差自然计入计数周期,实现了计数误差的最优化处理,时钟抖动也是各种数字分频方法中最优的。本方法的分频过程不需要额外的计算、控制过程,对任意的主时钟、分频目标时钟都是自适应的,便于模块化设计。本文提出一种可以对数字电路时钟进行任意小数分频的方法,简单精确,没有累积误差;对于任意主时钟与目标时钟,不用人为干预、控制分频计数的过程,有很好的适应性。附图说明图1为本发明的任意小数分频方法示意图。具体实施方式为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。本发明涉及时钟分频方法领域,数字电路领域,特别是涉及一种对任意小数进行分频的方法。本发明的内容是提出了一种可以对时钟进行任意分频的方法,分频得到的时钟频率精准,没有累积误差;对任意的分频值自适应,不需要人为干预,便于模块化设计;所得到的目标时钟的抖动性能可达到最优。本发明的分频方法如下:设主时钟频率为n,目标时钟频率为m,分频过程如下:s1、设置一个计数器,初值为0;s2、在频率为n的主时钟下进行计数,每个时钟计数器值加m;s3、对计数器值加m后的数值进行判断,如果小于n,则返回步骤s2;如果大于等于n,执行步骤s4;s4、当计数器值+m大于等于n时,则产生一个脉冲,同时计数器值设置为:计数器值+m-n;s5、重复步骤s2、s3、s4,产生的脉冲构成了频率为m的目标时钟。对于分频中的误差累计参与计数导致的时钟频率不稳定,这是数字分频难以避免的问题,由图1可以看出,分频产生的脉冲间隔有2种,二者相差1个主时钟周期。在大多数数字系统应用中,只使用时钟的一个跳变边沿进行时序驱动,对时钟的占空比没有要求。所以本发明方法产生的分频时钟可满足绝大多数数字系统的应用。在步骤s4中,每次计数器重置时,均将上次计数的差值重新计入下一个计数周期,这就消除了分频计数的累积误差。同时随着计数器运行,累积误差自然计入计数周期,实现了计数误差的最优化处理,时钟抖动也是各种数字分频方法中最优的。本方法的分频过程不需要额外的计算、控制过程,对任意的主时钟、分频目标时钟都是自适应的,便于模块化设计。进一步地,频率为m的目标时钟的脉宽根据实际情况自行设计。进一步地,频率为m的目标时钟的脉宽与频率为n的主时钟的脉宽相同。进一步地,该方法应用于数字频率综合中。进一步地,该方法应用于串口波特率产生。进一步地,该方法应用于时钟分频电路中。进一步地,使用主时钟的上升沿或下降沿进行时序驱动。进一步地,n不是m的整数倍。一般时钟分频方法如下:设主时钟频率为n,目标时钟频率为m,分频过程如下3个步骤:1、得到分频系数d=n/m;2、设置一个计数器,在主时钟下进行计数,每个时钟计数器加1,当计数值大于等于d时,则产生一个脉冲,同时计数器归零重新开始计数;3、产生的脉冲就是目标时钟m。由于当n不是m的整数倍时无法整除,产生的分频值d是一个小数,导致步骤2中每次计数都不能以‘等于’条件进行计数器的归零重新计数,这就产生了累积误差。对一般时钟分频方法进行改进的原理:在上面的步骤2中,设cnt是一个计数器,计数器运行规则是:(cnt=cnt+1)>=d等价于(cnt=cnt+1)>=n/m等价于m*(cnt=cnt+1)>=n(式1)cnt是一个计数器,每个时钟脉冲到来时计数器按照设定规则更新自身,令cnt以如下2种规则进行计数,并计算各自表达式的值:cnt_a=cnt_a+1cnt_b=cnt_b+m(m为正整数)设计数器cnt_a,cnt_b初值为0,表达式值计算如下计算次数m*cnt_acnt_b1mm22m2m.........nn*mn*m可见,m*cnt_a==cnt_b,即二者等价。所以式1可以写成cnt_b>=n等价于(cnt_b=cnt_b+m)>=n(式2)举例说明本发明方法的可行性:设主时钟频率为5mhz,分频时钟频率为2mhz,即2.5分频。如图1,输入clk为输入主时钟,cnt为计数器数值,clkout为输出的分频时钟;计数器从0开始计数,每一个脉冲到来计数器加2,第一次计数到6后由于6>=5,产生一个脉冲,且计数器重置为6-5=1继续开始计数,当计数到5时,5>=5,产生一个脉冲,且计数器重置为5-5=0继续开始计数,计数过程如图所示,可分频出2mhz的分频时钟,并未产生累积误差。实际应用举例:在异步串口通信中,双方约定通信波特率,发送方按照预定波特率进行数据发送,接收方以16倍波特率进行数据过采样接收。主时钟12mhz,波特率115200bps异步串口格式一般为1位起始位,8位数据位,1位校验位(可选),1位停止位,完成1次数据传输需要至少10个比特被正确采样。接收方采样时在识别起始位后将采样点对齐到数据中心位置。当接收方采样误差达到7%时,10个比特的累积误差就是70%,采样点在开始时对齐数据中心位置,在接收后面的比特时采样点已经滑出正确数据的采样范围,造成接收错误。采用本发明方法生成接收方的16倍采样波特率如下。1、设置一个计数器cnt,初值为0;2、每个主时钟计数器加115200;3、当cnt+115200值大于等于12000000时,则产生一个脉冲,同时计数器值重置为:cnt+115200-12000000;4、重复步骤2、3。通过上述方法产生的脉冲就是16倍波特率采样时钟。接收方完全可以正确采样发送方的数据。该方法由于在每次计数器重置时将计数器累加值与目标值的误差计入到下一个计数周期,所以不会产生累积误差。本文提出一种可以对数字电路时钟进行任意小数分频的方法,简单精确,没有累积误差;对于任意主时钟与目标时钟,不用人为计算、控制分频计数的过程,有很好的适应性。现申请包括但不限于对在时钟任意小数分频,数字频率综合,串口波特率产生,时钟分频电路等相关领域使用该方法进行专利保护。以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1