首页 > 其他分享 >数字IC手撕代码-分频器(任意小数分频)

数字IC手撕代码-分频器(任意小数分频)

时间:2022-09-22 11:12:01浏览次数:46  
标签:分频 分频器 周期 17 IC 时钟 小数

什么是分频

        分频就是生成一个新时钟,该新时钟的频率是原有时钟频率的整数分之一倍,新周期是原有周期的整数倍。

        再简单来说,让你手撕一个四分频电路,就是写代码生成一个周期是原来四倍的时钟,如果手撕一个三分频电路,就是写代码生成一个周期是原来三倍的时钟。

四分频波形。

        如上图所示,就是一个四分频电路的波形,四分频后,新的clk_out的频率是原来的1/4,也即周期是原来的4倍,从图中可以看到,clk每过4个周期,clk_out过1个周期。

小数分频  

  在之前的专栏中,讲完了任意占空比任意偶数分频器,以及任意占空比任意奇数分频器后,下面讨论更加夸张的小数分频。什么是小数分频?以及怎么实现  9/4,17/3 ,6.3 等任意小数分频??

        编码小数分频,就不能看微观了,要用宏观的眼界去看,比如实现一个 17/3 分频,表达成:17 除以 3 得商为 5 余2。

        那么我们就可以通过5(商)分频和7(商+余数)来实现 17/3 分频。

        现在我们来确定5分频和7分频的次数,设:

        5分频的次数为a  ,      7分频的次数为b;

        那么应该有:

        a+b=3(除数)

        5a+7b = 17(被除数)

        解得a=2,b=1,也就是说通过2次5分频和1次7分频可得到 17/3 分频。

 

        这样编程完之后就实现了17/3分频,那么自然会有个疑问,为什么这样就实现了?详细看,仍然是五分频管五分频的,七分频管七分频的,大家各管各的,这算哪门子的小数分频啊??

        所以就要提到我们前面说的宏观来看。宏观来看,总共是17个时钟周期,由三个分频器均分,那么平均每个分频器就是分到17/3了,这就是小数分频,这是一个宏观的平均概念。解释完概念,我们下面开始手撕代码。

代码:

 

 

 testbench: 

 

 

 

如同我们分析的一样,两个五分频,一个七分频,每十七个周期循环一次。即每十七个周期有三个分频器,平摊下来就是 17/3 。

        小数分频的缺点就是 占空比不为50%,要想实现50%占空比的小数分频,涉及很多算法,具体算法十分复杂,一般不会作为手撕代码题,本篇专栏到此结束。

标签:分频,分频器,周期,17,IC,时钟,小数
From: https://www.cnblogs.com/jerry-caiyu/p/16718490.html

相关文章

  • 数字IC手撕代码-序列检测(移位寄存器写法)
    大家好我是酸菜鱼,这个系列着重讲解数字ic或FPGA实习面试及秋招面试的高频手撕代码题。本文具体内容涉及:利用移位寄存器写序列检测。        一说到序列检测,你脑......
  • 数字IC手撕代码-序列检测(状态机写法)
    大家好我是酸菜鱼,这个系列着重讲解数字ic或FPGA实习面试及秋招面试的高频手撕代码题 具体内容涉及:        一说到序列检测,你脑子里要立马跳出两种解法,一种是状......
  • elasticsearch生成证书的两种方式
    1.elasticsearch-certgen方式注意:这种方式如果以后新增节点导致证书得重新生成并放到es所有节点2.elasticsearch-certutil方式##(1)创建证书$pwd/alidata1/admin......
  • static关键字
    static为编程语言中的一个关键字,是一种修饰符,既可以修饰变量也可以修饰方法在类中,用static声明的成员变量为静态成员变量,也称之为类变量,类变量的生命周期和类相同,在整个......
  • Java并发编程解析 | 基于JDK源码解析Java领域中并发锁之同步器Semaphore,CyclicBarrier
    苍穹之边,浩瀚之挚,眰恦之美;悟心悟性,善始善终,惟善惟道!——朝槿《朝槿兮年说》写在开头在并发编程领域,有两大核心问题:一个是互斥,即同一时刻只允许一个线程访问共享......
  • JAVA字符串转Unicode编码
    importjava.util.ArrayList;publicclassHello{publicstaticvoidmain(String[]args){Strings="我爱JAVA";System.out.println(s2uni......
  • Python commandline-config简洁命令行配置工具: 一个供用户以Python Dict或JSON格式编
    本文介绍了一个可以直接用pip安装的python工具包commandline-config,适合经常写python代码跑实验的研究生们,工具可以通过Python原生字典dict(支持嵌套)的形式来写实验的参数配......
  • static
    一静态局部变量静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整......
  • 有关static关键字的探究
    static为编程语言中的一个关键字,是一种修饰符,既可以修饰变量也可以修饰方法在类中,用static声明的成员变量为静态成员变量,也称之为类变量,类变量的生命周期和类相同,在整个应......
  • 静态static
    静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间都不释......