前言:

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

目录如下:

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

上升边沿 边沿检测波形

下降边沿 边沿检测波形

双边沿 边沿检测波形


边沿检测

在使用FIFO进行数据读写的时候,我们会用到边沿检测,比如当FIFO内的数据被读空了,这样 empty 信号就会从0→1,产生一个上升沿,当这个上升沿到来的时候代表FIFO内孔,我们就可以对FIFO进行一个写操作(把写使能拉高,往FIFO写数据),所以边沿检测是十分常用的东西,下面我们来讲讲边沿检测的原理、代码以及对应仿真。

原理

比如我们要检测信号 signal 的上升沿,我们使用两个寄存器,级联记录 signal 的值,这样由于寄存器延迟一拍的特性,第二个寄存器永远会延迟第一个寄存器。

当 signal 上升沿到来时,会有:第一个寄存器检测为高,第二个寄存器检测为低。

这样,我们只要把第二个寄存器取反,然后和第一个寄存器做与运算,这样当计算的数值为 1 时,就检测到了上升边沿。

代码

module edge_det(input clk            ,input rstn           ,input signal         ,output signal_edge
);reg reg1,reg2;always @(posedge clk or negedge rstn)beginif(!rstn)beginreg1 <= 1'b0;reg2 <= 1'b0;endelse beginreg1 <= signal;reg2 <= reg1;end
endassign signal_edge = (~reg2) & reg1;endmodule

testbench

module edge_det_tb();reg clk,rstn;
reg signal;wire signal_edge;always #10 clk = ~clk;initial beginclk     <= 1'b0;rstn    <= 1'b0;signal  <= 1'b0;#50rstn    <= 1'b1;#100signal  <= 1'b1;
end    edge_det u_edge_det (.clk          (clk)    ,.rstn         (rstn)   ,.signal       (signal) ,.signal_edge  (signal_edge));endmodule

上升边沿 边沿检测波形

从图中我们可以看到,跟我们预料的一样,当上升沿到来的时候,reg1和 reg2 信号错一拍,这样利用这个特性,让signal_edge = ~reg2 & reg1 就能检测到上升边沿。

检测下降沿也是一个道理,代码完全一致,就是把最后边沿检测信号改为:

assign signal_edge = ~reg1 & reg2;

下降边沿 边沿检测波形

双边沿 边沿检测波形

双边沿检测,就是上升沿和下降沿,检测信号都要输出一次高电平。这我们可以用异或实现,同样是只需要在上升沿检测的代码里改最后一条赋值语句即可,改为:

assign signal_edge = reg1 ^reg2 ;

结果和我们设计的一致。

数字IC手撕代码-边沿检测(上升沿、下降沿、双边沿)相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

  7. 数字IC手撕代码--小米科技(除法器设计)

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

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

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

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

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

最新文章

  1. bean ref的bean可以做判断吗_Spring Boot @Condition 注解,组合条件你知道吗
  2. JavaScript之substring()方法讲解
  3. 大咖来信 | 微软中国CTO韦青:低代码/无代码时代来了,写代码的你准备好了吗?...
  4. dp凸优化/wqs二分学习笔记(洛谷4383 [八省联考2018]林克卡特树lct)
  5. Oracle EBS常用数据表
  6. 小菜学习Lucene.Net(更新3.0.3版本使用)
  7. GG and MM(every sg 游戏)
  8. Linux下的gpio,gpiod
  9. 友勤签约中芝软件系统(上海)有限公司Oracle Crystal Ball Suite软件项目
  10. LTP 语义依存分析
  11. OSPF之Stub区域
  12. 【原创】小时候特别喜欢玩的强手棋游戏
  13. SPSS李克特五点计分调查问卷的选项如何设置?【SPSS 066期】
  14. oracle ora 3136,关于ORA-3136的处理思路
  15. 超级!超级!超级好用的视频标注工具
  16. 塔望3W消费战略全案|牛小范:即食牛排如何打造品牌「高级感」
  17. 食君之禄 忠君之事 奈何哉!
  18. 关于ssh登录时卡顿30s左右的问题调试处理
  19. k8S中的MySQL如何扩容_Kubernetes 中进行 PVC 的扩容 互联网技术圈 互联网技术圈
  20. 荣耀7x Android8,荣耀7X升级安卓8.0

热门文章

  1. springboot二手书籍线上回收网站java ssm-0401u
  2. JS有效数字取近似值组件封装
  3. 【英语单词听写】英语单词背诵辅助
  4. 英语NanyangJade南阳玉nanyangjade独山玉
  5. 阿里云计算巢加速企业软件云化,助力企业业务创新 - SegmentFault 思否
  6. 外汇交易中的资金管理方案
  7. Windows死机代码翻译大全
  8. 企业电子商务网站策划分析
  9. VMware 14 安装 macOS10.13 详细图文教程
  10. 关于SQL模糊查询日期时间的方法