D触发器

    xiaoxiao2021-03-26  33

    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

    转载请注明原文地址: https://ju.6miu.com/read-661543.html

    最新回复(0)