来源:CSDN
作者:fzhykx
1. D触发器:
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. RS触发器:
module SY_RS_FF ( R, S, CLK, Q, QB ); //模块名及参数定义,范围至endmodule。 input R, S, CLK; //输入端口定义 output Q, QB; //输出端口定义 reg Q; //寄存器定义 assign QB = ~Q; //assign语句,QB=/Q。 always @( posedge CLK ) //在CLK的上跳沿,执行以下语句。 case ({ R ,S }) //case语句,至于endcase为止。 1:Q <= 1; //当R,S的组合为01,则令Q=1。 2:Q <= 0; //当R,S的组合为01,则令Q=1。 3:Q <= 1'bx; //当R,S的组合为11,则令Q为1bit的数,数值为不定(x)。 endcase //case语句结束 endmodule //模块结束
3. JK触发器:
module JK(clk,j,k,q,r,s,seg); input clk,j,k,r,s; output q; output [7:0]seg; reg q=0; reg [7:0]seg; always @(posedge clk) begin if(r==1 && s==0) begin q<=0; end if(r==0 && s==1) begin q<=1; end if(r==0 && s==0) begin if(j==1 && k==1) begin q<=~q; end if(j==1 && k==0) begin q<=1; end if(j==0 && k==0) begin q<=q; end if(j==0 && k==1) begin q<=0; end end end endmoudle
4. T 触发器:
input T, input clk, output Q, output QB, always@(posedge clk) begin if(~reset) begin Q<=1'b0; end else begin if(T) Q<=~Q; QB<=~Q; else begin Q<=Q; QB<=~Q; end end end
版权声明:本文为CSDN博主「fzhykx」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fzhykx/article/details/80169078