数字IC笔面基础之触发器

  • 写在前面的话
    • 关键点:
  • D触发器
    • 基本正边沿触发D触发器
    • 异步复位D触发器
    • 带清零和置一的D触发器
  • T触发器
  • JK触发器
  • 总结

写在前面的话

触发器是数字IC最基础的知识点,区别于锁存器,触发器是只有在时钟信号触发时才能动作的存储单元,每个触发器可以存储1位二值信号。触发器有两个基本特点:
(1)具有自行保持稳定状态,包含逻辑0和逻辑1。
(2)可以根据输入信号置为1或0状态。

关键点:

笔面时常考的知识点是区分锁存器(Latch)和触发器(Flip-Flop),了解哪些代码风格可能会被综合成Latch,尽量避免。(在实际项目中有时需要故意生成Latch)

锁存器(Latch):电平触发,数据存储取决于信号的电平值。电平有效时,输出信号被锁存。
锁存器如下:

触发器(Flip-Flop):边沿触发,数据存储取决于信号的上升沿或下降沿。
触发器如下:

寄存器(Register): Verilog中用来暂时存放数据的变量。变量被声明为寄存器时,可能被综合成Latch或者Fliop-Flop。

锁存器和触发器优缺点:
锁存器优点:
(1)面积比触发器小
门电路时构建组合逻辑电路的基础,而锁存器和触发器是构成时序逻辑电路的基础。
晶体管>>门电路>>锁存器>>触发器
Latch完成同一个功能所需的门较触发器要少,在ASIC中用的比较多。

(2)速度比触发器快
用来地址锁存是很合适,不过一定要保证所有的Latch信号源的质量,锁存器在CPU设计中很常见,锁存器使得CPU的速度比外部IO部件逻辑快很多。

锁存器缺点:
(1)电平触发,非同步设计,受布线延迟影响较大,很难保证输出没有毛刺。
(2)Latch将静态时序分析变得极其复杂。

触发器优点:
(1)边沿触发,同步设计,不容易受毛刺的影响。
(2)时序分析简单

触发器缺点:
(1)面积比Latch大,消耗的门电路比latch多。
(2)过多的触发器使得数据逻辑变得复杂。

D触发器

D触发器的次态取决于触发之前D端口的状态。

基本正边沿触发D触发器

// -----------------------------------------------------------------------------
// Copyright (c) 2014-2022 All rights reserved
// -----------------------------------------------------------------------------
// Author : HFUT904  1320343336@qq.com
// File   : dff.v
// Create : 2022-11-01 11:10:05
// Revise : 2022-11-01 11:10:05
// Editor : HFUT Integrated Circuit Design & Research Center
// Verdion: v1.0
// Description: 正边沿触发 DFF
// -----------------------------------------------------------------------------
module dff (input       clk         ,   // Clockinput       d           ,   // inputoutput reg  q               // output
);always @(posedge clk ) begin         //上升沿触发q <= d ;
endendmodule

异步复位D触发器

// -----------------------------------------------------------------------------
// Copyright (c) 2014-2022 All rights reserved
// -----------------------------------------------------------------------------
// Author : HFUT904  1320343336@qq.com
// File   : asdff.v
// Create : 2022-11-01 11:14:23
// Revise : 2022-11-01 11:14:23
// Editor : HFUT Integrated Circuit Design & Research Center
// Verdion: v1.0
// Description: 异步复位 DFF
// -----------------------------------------------------------------------------
module asdff (input             clk         ,   // Clockinput           rst_n       ,   // Asynchronous reset active lowinput           d           ,   // inputoutput  reg     q               //output
);always @(posedge clk or negedge rst_n) begin if(~rst_n) beginq <= 1'b0  ;end else beginq  <=  d  ;end
end
endmodule

带清零和置一的D触发器

// -----------------------------------------------------------------------------
// Copyright (c) 2014-2022 All rights reserved
// -----------------------------------------------------------------------------
// Author :HFUT904   1320343336@qq.com
// File   : csdff.v
// Create : 2022-11-01 15:23:49
// Revise : 2022-11-01 15:23:49
// Editor : HFUT Integrated Circuit Design & Research Center
// Verdion: v1.0
// Description: 带清零和置位 DFF
// -----------------------------------------------------------------------------
module csdff (input         clk     ,   // Clockinput       set     ,   // setinput         rst_n   ,   // Asynchronous reset active lowinput       d       ,   //input output  reg q           //output
);always @(posedge clk , negedge rst_n , posedge set) begin if(~rst_n) beginq <= 1'b0     ;end else if(set) beginq <=  1'b1 ;endelse beginq <=  d    ;end
endendmodule

T触发器

T触发器是在数字电路中,凡在CP时钟脉冲控制下,根据输入信号T取值的不同,具有保持和翻转功能的触发器,即当T=0时能保持状态不变,当T=1时一定翻转的电路。

// Copyright (c) 2014-2022 All rights reserved
// -----------------------------------------------------------------------------
// Author : HFUT904  1320343336@qq.com
// File   : tff.v
// Create : 2022-11-01 15:31:04
// Revise : 2022-11-01 15:31:04
// Editor : HFUT Integrated Circuit Design & Research Center
// Verdion: v1.0
// Description:TFF
// -----------------------------------------------------------------------------
module tff (    input       clk         ,input      rst_n       ,input      T           ,output reg     Q           );//特征方程写法always @(posedge clk or negedge rst_n) beginif(~rst_n) beginQ    <= 0;end else beginQ <= (T&~Q)|(~T&Q) ;endend//查找表写法/*always@(posedge clk) beginif(T==1'b1)Q <= ~Q ;elseQ <= Q ;end*/endmodule

JK触发器

JK触发器是数字电路触发器中的一种基本电路单元。JK触发器具有置0、置1、保持和翻转功能。在各类集成触发器中,JK触发器的功能最为齐全。在实际应用中,它不仅有很强的通用性,而且能灵活地转换其他类型的触发器。由JK触发器可以构成D触发器和T触发器。

// -----------------------------------------------------------------------------
// Copyright (c) 2014-2022 All rights reserved
// -----------------------------------------------------------------------------
// Author : HFUT904  1320343336@qq.com
// File   : jkff.v
// Create : 2022-11-01 15:33:16
// Revise : 2022-11-01 15:33:16
// Editor : HFUT Integrated Circuit Design & Research Center
// Verdion:
// Description:
// -----------------------------------------------------------------------------
module jkff (input          clk     ,input          rst_n   ,input          J       ,input          K       ,output     reg     Q
);//状态方程写法always @(posedge clk or negedge rst_n) beginif(~rst_n) beginQ    <= 1'b0;end else beginQ <= (J&~Q)|(~K&Q) ;endend//查找表写法/*always@(posedge clk ) begincase({J,K})2'b00:  Q <= Q        ;2'b01:  Q <= 1'b0    ;2'b10:  Q <= 1'b1    ;2'b11:  Q <= ~Q   ;endcase end*/endmodule

总结

触发器作为数字IC最基础的内容,常常会考手撕代码、门级电路组成、与锁存器的优缺点、代码风格避免生成latch等内容。在跨时钟域中也会用两级DFF避免亚稳态的产生,我在笔面中遇见最多的是DFF和TFF,会结合建立时间、保持时间、跨时钟域、代码风格等一起考。建议各位同学注意触发器的底层电路,切实体会触发器和锁存器的区别。

数字IC笔面基础之触发器——DFF、TFF、JKFF(附Verilog实现)相关推荐

  1. 数字IC笔面基础,动不动就手撕——奇偶分频器(分频器简介和Verilog实现)

    分频器简介和Verilog实现 写在前面的话 偶数分频 级联触发器实现2^n偶数分频 计数器实现2n偶数分频 奇数分频(常考) 奇数分频,占空比50%(最常考,要求熟练掌握一种) OR操作,2N+1 ...

  2. 数字IC笔面基础,师傅领进门,修行靠个人——人人心中都有一个状态机(状态机简介及Verilog模板)

    师傅领进门,修行靠个人(状态机) 写在前面的话 状态机简介 状态机类型 一段.两端还是三段? 状态机的Coding Style要求: 几点规则: 什么是一段.两段.三段? 一段.两段.三段优缺点 Ve ...

  3. 数字IC笔试题,大疆校招16题(仅供参考)

    \\\插播一条: 自己在今年整理一套单片机单片机相关论文800余篇 论文制作思维导图 原理图+源代码+开题报告+正文+外文资料 想要的同学私信找我. 数字IC笔试题,大疆校招16题(仅供参考) 1.异 ...

  4. 转行人必看:数字IC前端设计学习路线与方法(内附学习视频)

    众所周知,数字前端设计对于工程师的能力要求比较高,不仅有学历上的要求,还要求掌握很多的知识技能.不少跨专业想要转行的小伙伴对数字前端设计这个岗位不是很了解,下面IC修真院就带大家全面了解一下数字IC前 ...

  5. 数字IC笔试题---千题解,量大管饱,图文并茂

    前言 出笔试题汇总,是为了总结秋招可能遇到的问题,做题不是目的,在做题的过程中发现自己的漏洞,巩固基础才是目的. 所有题目结果和解释由笔者给出,答案主观性较强,若有错误欢迎评论区指出,资料整理来自于& ...

  6. 建议收藏:不能不刷的100道数字IC笔/面试题!

    一.IC设计流程及相应EDA开发工具 前端设计(逻辑设计) 1.规格制定 根据客户需求(具体的功能和性能要求)制定芯片规格Spec 2.详细设计 设计方案,具体实现架构,模块划分 3.HDL编码 将实 ...

  7. 数字IC笔面常考,跨时钟域神器。——异步FIFO(简介及手撕代码)

    异步FIFO 写在前面的话 异步FIFO相关知识点 FIFO简介 FIFO结构 应用场景(来源小梅哥 <FPGA 系统设计与验证实战指南> 章节4.4) 相关参数 异步FIFO 内部组成 ...

  8. 南芯半导体数字IC笔试题

    笔试题型 总共八道题,其中前四道为5分的画图题和简答题,后四道为20分的设计题和简答题,题目较为基础,难度不大. (1)跨时钟域的问题 (2)竞争与冒险 (3)数字IC的素质与技能 (4)消除毛刺电路 ...

  9. 数字IC笔面试(一)——联发科提前批笔试题记录

    六月底参加了联发科提前批的数字IC笔试,自己能会一些的无非就是FPGA部分,还是凉凉了,不好好准备还是不行!!本文记录一下题目,毕竟复盘很重要啊,同时加入一些小的理解,若有错误,请指正,谢谢!! 对联 ...

最新文章

  1. 打架斗殴烫头酗酒抽烟的小混混,逆袭保送中国科学院,后来怎么样了?
  2. 文巾解题 27. 移除元素
  3. 三、入门实例----基于注解
  4. 请求发送者与接收者解耦——命令模式
  5. Blazor Server 应用程序中进行 HTTP 请求
  6. ABP vNext中使用开源日志面板 LogDashboard
  7. linux 浏览器 links,linux下的命令行浏览器links
  8. JVM和JMM的区别
  9. DebugOutputString 使用
  10. 为Openstack制作CentOS7镜像
  11. 连续被巨头青睐,SpaceX 部分新项目原型系 Rust 构建
  12. React-Native入门(2)-简单阐述跳转
  13. 1081 检查密码 (15 分)—PAT (Basic Level) Practice (中文)
  14. JavaScript中清空数组的三种方式
  15. 视频文件损坏怎么修复,赤兔视频修复软件助您
  16. MATLAB 基础知识 数据类型 分组数组 创建分类数组
  17. android studio如何多moudle依赖同一个gradle配置
  18. 【python】 turtle实现汉诺塔游戏动画过程
  19. 串口通信协议(基于面试),与及树莓派与电脑之间串口通信
  20. 2009-12-20 EXCEL比对数据

热门文章

  1. android datepicker设置日期,Android DatePicker
  2. 转载几个版本的“购票日历”
  3. Python语音转文字
  4. java中复制一行,如何一次复制一行,然后粘贴到Excel中的另一个工作表
  5. AppStore模式下的移动产品推广销售策略
  6. cs231n训练营学习笔记(3)
  7. Python爬虫:煎蛋网图片URL解密处理
  8. The essence of Murphy‘s Law
  9. 输入学生信息,保存于文件当中
  10. Excel提取某一列中的数字