时序逻辑电路(2)----------触发器(D, JK, T, SR)
在时钟脉冲边沿作用下的状态刷新称为触发。具有这种特性的存储单元电路称为触发器。
1. 主从触发器
2. 维持阻塞触发器
3. 利用传输延迟的触发器
D触发器
【例9.16】带同步清0、同步置1的D触发器
module DFF2(q,qn,d,clk,set,reset);
input d,clk,set,reset;
output q,qn;
reg q,qn;
always @(posedge clk)
begin
if (reset)begin
q <= 0; qn <= 1; //同步清0,高电平有效
end
else if (set) begin
q <=1;qn <=0; //同步置1,高电平有效
end
else begin
q <= d;qn <= ~d;
end
end
endmodule
【例9.15】带异步清0、异步置1的D触发器
module DFF1(q,qn,d,clk,set,reset);
input d,clk,set,reset;
output q,qn;
reg q,qn;
always @(posedge clk or negedge set or negedge reset)
begin
if (!reset) begin
q <= 0; //异步清0,低电平有效
qn <= 1;
end
else if (!set)begin
q <= 1; //异步置1,低电平有效
qn <= 0;
end
else begin
q <= d;
qn <= ~d;
end
end
endmodule
【例9.14】基本D触发器
module DFF(Q,D,CLK);
output Q;
input D,CLK;
reg Q;
always @(posedge CLK)
begin
Q <= D;
end
endmodule
【例10.16】引入了D触发器的长帧同步时钟的产生
module longframe2(clk,strb);
parameter delay=8;
input clk;
output strb;
reg counter;
reg temp;
reg strb;
always@(posedge clk)
begin
if(counter==255) counter=0;
else counter=counter+1;
end
always@(posedge clk)
begin
strb=temp; //引入一个触发器
end
always@(counter)
begin
if(counter<=(delay-1))temp=1;
else temp=0;
end
endmodule JK触发器
【例9.17】带异步清0、异步置1的JK触发器
module JK_FF(CLK,J,K,Q,RS,SET);
input CLK,J,K,SET,RS;
output Q;
reg Q;
always @(posedge CLK or negedge RS or negedge SET)
begin
if(!RS)Q <= 1'b0;
else if(!SET) Q <= 1'b1;
else case({J,K})
2'b00 :Q <= Q;
2'b01 :Q <= 1'b0;
2'b10 : Q <= 1'b1;
2'b11 : Q <= ~Q;
default: Q<= 1'bx;
endcase
end
endmodule T触发器
module T(q,t,cp);
input t,cp; //输入t端,时钟端
output q; //输出q端
reg q;
always@(posedge cp) //cp上升沿触发
begin
if(t) //判断t对否为1
begin
q <=~q; //是q取反
end
end
endmodule RS触发器
页:
[1]