我是靠谱客的博主 诚心裙子,最近开发中收集的这篇文章主要介绍D触发器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

D触发器

1.     一个基本的上升沿D触发器


根据上面的电路符号和功能表不难看出,一个基本的D 触发器的工作原理为:当时钟信号的上升沿到来时,输入端口D 的数据将传递给输出端口Q 和输出端口Q。在此,输出端口Q 和输出端口Q 除了反相之外,其他特性都是相同的。

程序如下:

module D_flip_flop(

    input [1:0] d,

    input clk,

    output reg[1:0] q,

    output reg[1:0] qb

    );

      always @(posedge clk)            //时钟上升沿触发D触发器

             begin

                    q<= d ;

                    qb<= ~d ;

             end

endmodule

2.     同步复位的D 触发器

在数字电路中,一种常见的带有同步复位控制端口的上升沿D 触发器的逻辑电路符号如图3.3所示,它的功能表如表3.2 所示。


不难看出,只有在时钟信号的上升沿到来并且复位控制端口的信号有效时,D 触发器才进行复位操作,即将输出端口Q 的值置为逻辑0,而把输出端口Q 的值置为逻辑1。

程序代码如下:

       module D_flip_flop_2(

    input [1:0] d,

    input clk,

    input reset,

    output reg [1:0] q,

    output reg [1:0] qb

    );

       always @ (posedge clk)           //时钟上升沿时触发D触发器

              begin

                     if(!reset)             //reset为低电平时,D触发器置0

                            begin

                                   q<= 2'b00 ;

                                   qb<= 2'b11 ;

                            end

                     else                       //reset为高电平时,q=d, qb = ~d ;

                            begin

                                   q<= d ;

                                   qb<= ~d ;

                            end

              end

endmodule

3.     异步复位的D 触发器

常见的带有异步复位控制端口的上升沿D 触发器的逻辑电路符号如图3.4所示,它的功能表如表3.3 所示。不难看出,只要复位控制端口的信号有效,D 触发器就会立即进行复位操作。可见,这时的复位操作是与时钟信号无关的。


程序代码如下:

       module D_flip_flop_3(

    input [1:0] d,

    input clk,

    input reset,

    output reg[1:0] q,

    output reg[1:0] qb

    );

       always @ (posedge clk ornegedge reset)         //时钟上升沿或reset下降沿时,触发D触发器

              begin

                     if(!reset)       //reset为低电平时,D触发器置0

                            begin

                                   q<= 2'b00 ;

                                   qb<= 2'b11 ;

                            end

                     else             //reset为高电平时,D触发器处于工作状态

                            begin

                                   q<= d ;

                                   qb<= ~d ;

                            end

              end

endmodule

4.     同步置位/复位的D 触发器

带有同步置位/复位端口的上升沿D 触发器的逻辑电路符号如图3.5 所示,它的功能表如表3.4所示。不难看出,只有在时钟信号的上升沿到来并且同步置位/复位端口的信号有效时,D触发器才可以进行置位或者复位操作。


       程序代码如下:

module D_flip_flop_4(

    input [1:0] d,

    input clk,

    input reset,

    input set,

    output reg[1:0] q,

    output reg[1:0] qb

    );

       always @ (posedge clk)           //时钟上升沿时,触发D触发器

              begin

                     if(!set&& reset)       //set为低电平,reset为高电平时,D触发器置1

                            begin

                                   q<= 2'b11 ;

                                   qb<= 2'b00 ;

                            end

                     else if (set&& !reset)    //set为高电平,reset为低电平时,D触发器置0

                            begin

                                   q<= 2'b00 ;

                                   qb<= 2'b11 ;

                            end

                     else                     //D触发器正常工作

                            begin

                                   q<= d ;

                                   qb<= ~d ;

                            end

              end

endmodule

最后

以上就是诚心裙子为你收集整理的D触发器的全部内容,希望文章能够帮你解决D触发器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部