XC6220B331MR-G 触发器的次态
发布时间:2019/10/16 21:25:08 访问次数:2230
XC6220B331MR-G第三个模块描述的是具有同步置0功能的D触发器,即置0信号Rd也要在CP脉冲上升沿作用下才起作用。于是,在always语句中@符号之后的“事件控制表达式”中只有一个时钟事件,它表示只有在CP的上升沿到来时,后面的if-else语句才会被执行,此时首先检查Rd信号,如果Rd为逻辑0,则将输出Q置0;否则,将输人D传给输出Q。显然,在该语句块中,置0信号Rd仍具有优先权,只有Rd=1时,才有可能执行Q<=D语句。
例5.5.2
//Elementary D nip_n。p(see Fig.5,3.2 or Fig.5.3.5)
Inodule DFF(Q,D,CP);
ou奋put Q;
input D9CP;
reg Q:
always@(posedge CP)
Q(=D;
endmodule
Inodule async~ set~rst~ DFF(Q,QN,D,CP,sd,Rd);
output Q, QN;
input D, CP, sd, Rd;
reg Q, QN;
always@(posedge CP or negedge sd or negedge Rd)
if(~sd|| ~Rd)
if( ~sd )begin
Q(=1’b1;
QN (= 1’bO;
end
eIse begin
Q <= 1’bO;
QN <= 1’b1;
end
else begin
Q(=D;
QN <= ~D;
end
endmodule
//∶D nip-n。p with synchronous reset,
module sync~ rst~ DFF(Q,D,CP,Rd);
output Q;
input D,CP,Rd;
reg Q;
always@(posedge CP)
if(~Rd)Q (= 11 bO;
else Q (= D;
endInodule
例5,5,3给出了一个下降沿触发的k`K触发器模块,它应用了另一种描述方法。根据JK触发器的功能表,它使用多路分支语句case进行描述。这里,将输人变量J、K拼接起来成为一个2位二进制变量({J,K}),它的值可能是二进制数00、01、10、11,case语句后面的4条分支语句正好说明了在时钟信号CP下降沿作用后,触发器的次态。注意,case语句中所列出的各个条件是不存在优先权差别的,这种语句是直接从功能表进行电路描述的常用方法。
例5,5.3
//Functional description of JK~nip~n。p (see Fig・ 5・3,7)
m,odule JK~FF(Q,Qn。t,J,Κ,CP);
output Q,Qnot;
nnput J,K,cP;
reg Q;
assign Qnot = ~ Q ;
always@(negedge CP)
case({J,K}) //Switch based on concatenation of J and K signals
2i b00: Q (= Q;
2’b01: Q <= 1i bO;
2’b10: Q (= 1i b1;
2i b11:Q(=~Q;
endcase
endmodule
XC6220B331MR-G第三个模块描述的是具有同步置0功能的D触发器,即置0信号Rd也要在CP脉冲上升沿作用下才起作用。于是,在always语句中@符号之后的“事件控制表达式”中只有一个时钟事件,它表示只有在CP的上升沿到来时,后面的if-else语句才会被执行,此时首先检查Rd信号,如果Rd为逻辑0,则将输出Q置0;否则,将输人D传给输出Q。显然,在该语句块中,置0信号Rd仍具有优先权,只有Rd=1时,才有可能执行Q<=D语句。
例5.5.2
//Elementary D nip_n。p(see Fig.5,3.2 or Fig.5.3.5)
Inodule DFF(Q,D,CP);
ou奋put Q;
input D9CP;
reg Q:
always@(posedge CP)
Q(=D;
endmodule
Inodule async~ set~rst~ DFF(Q,QN,D,CP,sd,Rd);
output Q, QN;
input D, CP, sd, Rd;
reg Q, QN;
always@(posedge CP or negedge sd or negedge Rd)
if(~sd|| ~Rd)
if( ~sd )begin
Q(=1’b1;
QN (= 1’bO;
end
eIse begin
Q <= 1’bO;
QN <= 1’b1;
end
else begin
Q(=D;
QN <= ~D;
end
endmodule
//∶D nip-n。p with synchronous reset,
module sync~ rst~ DFF(Q,D,CP,Rd);
output Q;
input D,CP,Rd;
reg Q;
always@(posedge CP)
if(~Rd)Q (= 11 bO;
else Q (= D;
endInodule
例5,5,3给出了一个下降沿触发的k`K触发器模块,它应用了另一种描述方法。根据JK触发器的功能表,它使用多路分支语句case进行描述。这里,将输人变量J、K拼接起来成为一个2位二进制变量({J,K}),它的值可能是二进制数00、01、10、11,case语句后面的4条分支语句正好说明了在时钟信号CP下降沿作用后,触发器的次态。注意,case语句中所列出的各个条件是不存在优先权差别的,这种语句是直接从功能表进行电路描述的常用方法。
例5,5.3
//Functional description of JK~nip~n。p (see Fig・ 5・3,7)
m,odule JK~FF(Q,Qn。t,J,Κ,CP);
output Q,Qnot;
nnput J,K,cP;
reg Q;
assign Qnot = ~ Q ;
always@(negedge CP)
case({J,K}) //Switch based on concatenation of J and K signals
2i b00: Q (= Q;
2’b01: Q <= 1i bO;
2’b10: Q (= 1i b1;
2i b11:Q(=~Q;
endcase
endmodule
上一篇:DC2247A基本D触发器