0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

时序逻辑电路设计之D触发器

CHANBAEK 来源:通信情报工学算法学习 作者:syu ikko 2023-05-22 16:54 次阅读

本文旨在总结近期复习的数字电路D触发器(边沿触发)的内容。

D触发器是一个具有 记忆功能 ,持有 两个稳定状态(0和1)信息存储器件,是数字电路初学者所能接触到最简单的 时序逻辑电路 , 也是多种时序逻辑的电路的基本逻辑单元。

边沿触发D触发器特点是可以在时钟脉冲到来时刻从一个状态翻转到另一个状态,其具有的存储特性也是时序逻辑的基本特征。

图片

其内部结构可以由3个RS锁存器构成

将其绘制成一个模型,最简单的如下图表示,D为数据输入端,clk为时钟输入端,Q为数据输出端口

图片

这种D触发器的功能也是相当简单的,就是当CLK上升沿到来时,Q的输出等于D,特征方程写为 Q=D* (没有任何控制输入的情况下)。 波形图如下所示:

图片

为了进一步具体得知其作用,接下来在FPGA开发板上展示其功能,使用的办卡为德致伦的genesys2,芯片为kintex-7系列的xc7k325tffg900-2。

为了更加全面一些,在此为D触发器增加复位功能(按下按钮回到初始状态),此时可以有两种复位D触发器,一种是同步复位,一种是异步复位。

同步复位:按钮按下,上升沿到来时刻复位,复位动作和系统时钟同步。

异步复位:按钮按下立刻复位,复位无需看系统时钟的脸色。

下面给出本设计的模块框图:

图片

说明一下各个端口的作用,sys_clk为时钟,sys_rst_n为复位,key_in为按键输入,即为触发器的D,led_out为输出,本demo会将其接到开发板的灯上,用灯的亮灭展示D触发器的效果。

首先展示同步D触发器的verilog代码和testbench以及仿真结果。

module flip_flop(


input wire sys_clk,
input wire sys_rst_n,
input wire key_in,


output reg led_out
    );


always@(posedge sys_clk)


if (sys_rst_n == 1'b0)
    led_out <= 1'b0;


else
    led_out <= key_in;

endmodule


————————————————————testbench——————————————————————————————————
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 2023/01/21 20:02:21
// Design Name: 
// Module Name: tb_flip_flop
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////




module tb_flip_flop(


    );
    reg sys_clk;
    reg sys_rst_n;
    reg key_in;


    wire led_out;


    initial begin
        sys_clk = 1'b1; //时钟信号初始化为1


        sys_rst_n <= 1'b0; //复位信号初始化,因为低电平有效,所以为0
        key_in    <= 1'b0; //输入信号的初始化

        #20


        sys_rst_n <= 1'b1; //20ns后,复位信号释放,因为低电平复位,所以变成高电平开始工作。


        #210
        sys_rst_n <= 1'b0;


        #40
        sys_rst_n <= 1'b1; //复位40ns再次释放


    end


always #10 sys_clk = ~sys_clk;


always #20 key_in <= {$random}%2; //20ns产生一次随机数,比时钟周期大,利于波形观察


flip_flop flip_flop_inst


(
    .sys_clk(sys_clk),
    .sys_rst_n(sys_rst_n),
    .key_in(key_in),


    .led_out(led_out)
);


endmodule

仿真结果跑500ns:

图片

可以发现,尽管系统已经处于复位释放的状态(复位键为高电平),时钟,数据和上升沿也都到来,但是输出会在时钟的下一拍进行变化。 **即:当时钟和信号在同一时刻变化时,我们以时钟的上升沿前一时刻采集的输入信号为依据来产生输出信号。 **

下面是异步D触发器的代码,区别是增加了复位下降沿到来时刻的敏感性(always语句),testbench和同步D触发器的一致。

module flip_flop(


input wire sys_clk,
input wire sys_rst_n,
input wire key_in,


output reg led_out
    );


always@(posedge sys_clk or negedge sys_rst_n)


if (sys_rst_n == 1'b0)
    led_out <= 1'b0;


else
    led_out <= key_in;

endmodule

图片

可以观察到复位下降沿到来时刻,输出即刻置为0,经过综合之后的RTL电路如图所示,和设计(异步D触发器电路,同步D触发器电路多一个MUX模块)的差不多。

图片

然后分配管脚。

此次实验中出现的一个问题是,此次使用的FPGA已经没有单端口时钟输出,所以需要调用PLL的IP核合成输出一个单端口的时钟信号,这个准备下一篇再说。

实验设备(谢谢老板买的高级货,可惜许可证快到期了):

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 时钟
    +关注

    关注

    10

    文章

    1710

    浏览量

    131241
  • D触发器
    +关注

    关注

    3

    文章

    164

    浏览量

    47809
  • 数字电路
    +关注

    关注

    193

    文章

    1592

    浏览量

    80356
  • 触发器
    +关注

    关注

    14

    文章

    1994

    浏览量

    60999
  • 时序逻辑电路

    关注

    2

    文章

    94

    浏览量

    16518
收藏 人收藏

    评论

    相关推荐

    时序逻辑电路设计

    时序逻辑电路设计6.1 基本D触发器的设计6.2 JK触发器6.3 带异步复位/置位端的使能T触发器
    发表于 03-20 10:04

    时序逻辑电路的概述和触发器

    的对象就是触发器。 描述时序电路时通常使用状态表和状态图,我们分析时序电路的方法通常是比较相邻的两种状态(即现态和次态)。 例 1:列出下表所示时序电路
    发表于 08-23 10:36

    请问怎样去设计多输入时序逻辑电路

    多输入时序电路的基本原理是什么?基于数据选择D触发器的多输入时序逻辑电路设计
    发表于 04-29 07:04

    触发器时序逻辑电路

    一、基本要求1、理解R-S触发器、J-K触发器D触发器逻辑功能;2、掌握触发器构成的
    发表于 08-26 11:40 57次下载

    D触发器

    D触发器 同步式D触发器逻辑电路D触发器功能
    发表于 10-20 09:57 2459次阅读
    <b class='flag-5'>D</b><b class='flag-5'>触发器</b>

    时序逻辑电路实例解析

    时序逻辑电路实例解析 一、触发器 1、电位触发方式触发器
    发表于 04-15 13:46 5506次阅读

    基于D触发器和数据选择的多输入时序网络的电路设计

      在SSI时序逻辑电路设计中,遵循的设计准则是:在保证所设计的时序逻辑电路具有正确功能的前提下,触发器的激励函数应最小化,从而简化
    发表于 08-13 09:22 3184次阅读
    基于<b class='flag-5'>D</b><b class='flag-5'>触发器</b>和数据选择<b class='flag-5'>器</b>的多输入<b class='flag-5'>时序</b>网络的<b class='flag-5'>电路设计</b>

    时序逻辑电路分为几类

    时序逻辑电路是由组合逻辑电路与记忆电路(又称存储电路) 组合而成的。 常见时序
    的头像 发表于 02-26 15:25 5.1w次阅读

    时序逻辑电路的分析方法

    将驱动方程代入相应触发器的特性方程中,便得到该触发器的次态方程。时序逻辑电路的状态方程由各触发器次态的
    的头像 发表于 02-28 14:06 2.4w次阅读

    时序逻辑电路设计同步计数

    时序电路的考察主要涉及分析与设计两个部分,上文介绍了时序逻辑电路的一些分析方法,重点介绍了同步时序电路分析的步骤与注意事项。 本文就时序
    的头像 发表于 05-22 17:01 3010次阅读
    <b class='flag-5'>时序</b><b class='flag-5'>逻辑电路设计</b><b class='flag-5'>之</b>同步计数<b class='flag-5'>器</b>

    时序逻辑电路的分析方法

      时序逻辑电路分析和设计的基础是组合逻辑电路触发器,所以想要分析和设计,前提就是必须熟练掌握各种常见的组合逻辑电路
    的头像 发表于 05-22 18:24 3499次阅读
    <b class='flag-5'>时序</b><b class='flag-5'>逻辑电路</b>的分析方法

    D触发器与Latch锁存电路设计

    D触发器,是时序逻辑电路中必备的一个基本单元,学好 D 触发器,是学好
    的头像 发表于 10-09 17:26 2924次阅读
    <b class='flag-5'>D</b><b class='flag-5'>触发器</b>与Latch锁存<b class='flag-5'>器</b><b class='flag-5'>电路设计</b>

    时序逻辑电路有哪些 时序逻辑电路和组合逻辑电路区别

    产生相应的输出信号。本文将详细介绍时序逻辑电路的分类、基本原理、设计方法以及与组合逻辑电路的区别。 一、时序逻辑电路的分类
    的头像 发表于 02-06 11:18 8604次阅读

    触发器时序逻辑电路详解

    在数字电路设计中,触发器时序逻辑电路是构建复杂数字系统不可或缺的基础元素。触发器(Flip-Flop)作为基本的存储单元,能够存储一位二进
    的头像 发表于 07-18 17:43 831次阅读

    时序逻辑电路有哪些结构特点呢

    具有两个稳定状态的电路,可以用来存储一位二进制信息。触发器的类型有很多,如SR触发器、JK触发器D触发
    的头像 发表于 08-28 11:07 230次阅读