前言:

本专栏旨在记录高频笔面试手撕代码题,以备数字前端秋招,本专栏所有文章提供原理分析、代码及波形,所有代码均经过本人验证。

目录如下:

1.数字IC手撕代码-分频器(任意偶数分频)

2.数字IC手撕代码-分频器(任意奇数分频)

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

4.数字IC手撕代码-异步复位同步释放

5.数字IC手撕代码-边沿检测(上升沿、下降沿、双边沿)

6.数字IC手撕代码-序列检测(状态机写法)

7.数字IC手撕代码-序列检测(移位寄存器写法)

8.数字IC手撕代码-半加器、全加器

9.数字IC手撕代码-串转并、并转串

10.数字IC手撕代码-数据位宽转换器(宽-窄,窄-宽转换)

11.数字IC手撕代码-有限状态机FSM-饮料机

12.数字IC手撕代码-握手信号(READY-VALID)

13.数字IC手撕代码-流水握手(利用握手解决流水线断流、反压问题)

14.数字IC手撕代码-泰凌微笔试真题

15.数字IC手撕代码-平头哥技术终面手撕真题

16.数字IC手撕代码-兆易创新笔试真题

17.数字IC手撕代码-乐鑫科技笔试真题(4倍频)

18.数字IC手撕代码-双端口RAM(dual-port-RAM)

...持续更新

为了方便可以收藏导览博客: 数字IC手撕代码-导览目录


目录

什么是分频

偶数分频

代码

testbench

波形


什么是分频

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

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

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

同理三分频也一样,但是奇数分频会比偶数分频复杂一些,在奇数分频部分会讲。

偶数分频

我们先来讲偶数分频。逐步加大难度,先说二分频,怎么实现二分频呢?

答:检测参考时钟,每一个上升沿到来时,新的时钟翻转一次。即:

always @ (posedge clk or negedge rstn)
      if (!rstn)
          clk_out <= 1'b0;           // 复位置零
      else
          clk_out <= !clk_out;     // 否则q信号翻转

从图中可以看到,clk_out每过两个clk时钟上升沿就flip-flop一次,这样一个clk_out的周期就是clk周期的两倍,也即实现了二分频。

那如果是任意偶数分频呢,这就得数经过了多少上升沿,如果是四分频,那就每过两个时钟上升沿(两周期),新信号flip-flop一次,flip-flop两次为新信号的一个周期,即是周期是原时钟的四倍。同理,8分频就是每数4个上升沿,flip-flop一次,以此类推,可以实现任意偶数分频了。

下面拿8分频举例,贴出代码以及testbench:

代码

testbench

波形

从波形我们可以看到,clk每过4个时钟上升沿,clk_out 翻转一次,和设计的一样,在RTL文件中的 number 是可以修改的,可以改成任意偶数从而实现任意偶数分频(改为2也行,即每次时钟上升沿到来时,if语句一直满足,clk_out 翻转一次,每次时钟上升沿翻转一次,就是我们之前提到的二分频。)注意翻转的时间点是number/2-1!因为当cnt 是从0开始计数的,

当cnt == 3 时(八分频举例),cnt被重置到0,持续一个clk。

检测到上升沿,cnt再持续一个clk,cnt=1。

再检测到上升沿,cnt再持续一个clk,cnt=2。

再检测到上升沿,cnt再持续一个clk,cnt=3。

再检测到上升沿,此时cnt=3,cnt又被置零。

更加直观一些可以把cnt作为div_8这个module的输出信号,查看cnt随时间的变化值,找感觉。

        占空比分析:我们上面写的任意偶数分频代码的占空比都是50%,实际上面试手撕代码不会让你50%占空比,那怎么办?

答:进行计数,对于一个八分频,开始就把时钟设为高电平,我用cnt 计数到两个时钟上升沿后再把它拉低,计数到7后cnt 拉低 时钟拉高,这样就实现了两个周期高,六个周期低,占空比为2/8 即 25% 的八分频。 

数字IC手撕代码-分频器(任意偶数分频)相关推荐

  1. 【数字IC手撕代码】Verilog偶数分频|题目|原理|设计|仿真(二分频,四分频,六分频,八分频,偶数分频及特殊占空比)

    芯片设计验证社区·芯片爱好者聚集地·硬件相关讨论社区·数字verifier星球 四社区联合力荐!近500篇数字IC精品文章收录! [数字IC精品文章收录]学习路线·基础知识·总线·脚本语言·芯片求职· ...

  2. 【数字IC手撕代码】Verilog奇数分频|题目|原理|设计|仿真(三分频,五分频,奇数分频及特殊占空比)

    芯片设计验证社区·芯片爱好者聚集地·硬件相关讨论社区·数字verifier星球 四社区联合力荐!近500篇数字IC精品文章收录! [数字IC精品文章收录]学习路线·基础知识·总线·脚本语言·芯片求职· ...

  3. 数字IC手撕代码-兆易创新笔试真题

    前言: 本专栏旨在记录高频笔面试手撕代码题,以备数字前端秋招,本专栏所有文章提供原理分析.代码及波形,所有代码均经过本人验证. 目录如下: 1.数字IC手撕代码-分频器(任意偶数分频) 2.数字IC手 ...

  4. 数字IC手撕代码-流水握手(利用握手解决流水线断流、反压问题)

    前言: 本专栏旨在记录高频笔面试手撕代码题,以备数字前端秋招,本专栏所有文章提供原理分析.代码及波形,所有代码均经过本人验证. 目录如下: 1.数字IC手撕代码-分频器(任意偶数分频) 2.数字IC手 ...

  5. 数字IC手撕代码-乐鑫科技笔试真题(4倍频)

    前言: 本专栏旨在记录高频笔面试手撕代码题,以备数字前端秋招,本专栏所有文章提供原理分析.代码及波形,所有代码均经过本人验证. 目录如下: 1.数字IC手撕代码-分频器(任意偶数分频) 2.数字IC手 ...

  6. 数字IC手撕代码-同步FIFO

    前言: 本专栏旨在记录高频笔面试手撕代码题,以备数字前端秋招,本专栏所有文章提供原理分析.代码及波形,所有代码均经过本人验证. 目录如下: 1.数字IC手撕代码-分频器(任意偶数分频) 2.数字IC手 ...

  7. 数字IC手撕代码-边沿检测(上升沿、下降沿、双边沿)

    前言: 本专栏旨在记录高频笔面试手撕代码题,以备数字前端秋招,本专栏所有文章提供原理分析.代码及波形,所有代码均经过本人验证. 目录如下: 1.数字IC手撕代码-分频器(任意偶数分频) 2.数字IC手 ...

  8. 数字IC手撕代码---百题斩

    前言: 本篇导览目录,用来索引笔者写的其他手撕代码文章 本专栏旨在记录高频笔面试手撕代码题,以备数字前端秋招,本专栏所有文章提供原理分析.代码及波形,所有代码均经过本人验证. 目录如下: 1.数字IC ...

  9. 数字IC手撕代码-有限状态机FSM-饮料机

    前言: 本专栏旨在记录高频笔面试手撕代码题,以备数字前端秋招,本专栏所有文章提供原理分析.代码及波形,所有代码均经过本人验证. 目录如下: 1.数字IC手撕代码-分频器(任意偶数分频) 2.数字IC手 ...

最新文章

  1. 谷歌数字图书馆_如何在没有联系的情况下找到6位数字的工作-提示使我获得了Google和其他技术巨头的工作机会...
  2. Linux-diff和diff3命令
  3. webservice-WebService试题
  4. windows下,‘nmake‘不是内部或外部命令,也不是可运行的程序或批处理文件
  5. cuSPARSE库:(十七)cusparseStatus_t 返回信息
  6. 如何为项目配置opencv
  7. c语言添加vmp保护代码,易语言使用vmp加壳保护程序
  8. uint32_t 大小端转换
  9. idea更新报错:master has no tracked branch
  10. Deecamp2019年试题A卷详解和感受
  11. 如何注册自己的OpenAI/ChatGPT账号?
  12. 实现财务自由的关键词汇
  13. 实现现代汽车SoC功能安全的实践和挑战
  14. 纽约的雪-我的西行漫记
  15. 采用CAnimateCtrl的AVI播放器,没有什么应用的,纯当练技术
  16. PS-twelveday-历史记录画笔工具
  17. 完美解决 Android WebView 文本框获取焦点后自动放大问题
  18. MPAndroidChart开源图表库(三)之柱形图
  19. 华为WeLink钉钉企业微信飞书等,通过竹云IDaaS,访问企业内部应用及SaaS应用
  20. 转python 将base64字符串还原成图片保存

热门文章

  1. 基于opencv的条纹识别计数 木板数目识别 完整代码+数据 直接运行 评论区自取代码
  2. [C++][STL]resize函数问题
  3. 幻读:听说有人认为我是被MVCC干掉的
  4. 简单使用Kali WiFi破解实例
  5. 论证使用手机的危害性
  6. 项目基础信息概况一览表
  7. 极客头条:5月31日科技资讯 |中国计算机学会暂停与IEEE合作;百度接连五位高管离职;所有版本 Docker 被爆严重漏洞!
  8. 盘点影响光化学合成反应的几个重要因素
  9. 机器学习有监督-分类算法
  10. nagios插件之监控MQA日志文件