D触发器

来源:互联网 发布:通向财务自由之路 知乎 编辑:程序博客网 时间:2024/06/06 00:19

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

1 0
原创粉丝点击