JK Flip-Flop verilog设计错误代码



我正在尝试构建一个具有异步低激活清除和预设的JK FF。然而verilog给了我";design.sv:24:语法错误我放弃了"看起来我在某个地方出错了,但我找不到。我将感谢的每一次帮助

这是我的设计代码

module JKFF(clk,J,K,Q,Qbar,Clear,Preset);
input J,K,clk,Clear;
output Q, Qbar;
reg Q;
assign Qbar= ~Q;

always@(negedge clk or negedge Clear or negedge Preset )
begin
if(!Clear)
Q<=1'b0;
else if(!Preset)
Q<=1'b1;
else if(Clear==1&&Preset==1)
if (K==0 && J==0)
Q <= Q;
if (K==1 && J==0)
Q <= 0;
if (K==0 && J==1)
Q <= 1;
else
Q <= ~Q;

end
endmodule;

这是我的TB代码

module JKFF_tb;

// Inputs

reg J;
reg K;

reg clk;

reg Clear;

// Outputs

wire Q;

wire Qbar;

// Instantiate the Unit Under Test (UUT)

JKFF uut (

.Q(Q), 

.Qbar(Qbar), 

.J(J),
.K(K),

.clk(clk), 

.Clear(Clear)

);
initial begin
clk=0;
Clear=1;
Preset=1;
forever #10 clk = ~clk; 
end

initial begin 
J= 1; K= 0;
#100; J= 0; K= 1; 
#100; J= 0; K= 0; 
#100; J= 1; K=1; 
end 
// Add stimulus here
endmodule
  1. 您没有在模块JKFF输入列表中声明Preset
  2. 您在endmodule关键字后键入了分号;
  3. else if(Clear==1&&Preset==1)之后的开始和结束中没有代码
  4. JK条件下没有else if
  5. 在模块JKFF_tb中,您不声明Presetreg,而是为其赋值
  6. 您不会将Preset传递给名为uutJKFF模块实例
module JKFF(clk,J,K,Q,Qbar,Clear,Preset);
input J,K,clk,Clear, Preset;
output Q, Qbar;
reg Q;
assign Qbar= ~Q;
always@(negedge clk or negedge Clear or negedge Preset )
begin
if(!Clear)
Q<=1'b0;
else if(!Preset)
Q<=1'b1;
else if(Clear==1&&Preset==1) begin
if (K==0 && J==0)
Q <= Q;
else if (K==1 && J==0)
Q <= 0;
else if (K==0 && J==1)
Q <= 1;
else
Q <= ~Q;
end
end
endmodule
module JKFF_tb;
// Inputs
reg J;
reg K;
reg Preset;
reg clk;
reg Clear;
// Outputs
wire Q;
wire Qbar;
// Instantiate the Unit Under Test (UUT)
JKFF uut (
.Q(Q), 
.Qbar(Qbar), 
.J(J),
.K(K),
.clk(clk), 
.Clear(Clear),
.Preset(Preset)
);
initial begin
clk=0;
Clear=1;
Preset=1;
forever #10 clk = ~clk; 
end
initial begin 
J= 1; K= 0;
#100; J= 0; K= 1; 
#100; J= 0; K= 0; 
#100; J= 1; K=1; 
end 
// Add stimulus here
endmodule

相关内容

最新更新