在Verilog中实现JK触发器
我试图在Verilog(Modelsim)中实现simple在Verilog中实现JK触发器,verilog,Verilog,我试图在Verilog(Modelsim)中实现simpleJK触发器。但是我得到了以下错误 生成if条件必须是常量表达式 这是我正在使用的代码 module jkfflop(J,K,clk,Q); input J,K,clk; output Q; if(J==0 & K==1) begin assign Q = 0; end else if(J==1 & K==0) begin assign Q = 1; end else if(J==1 &a
JK触发器。但是我得到了以下错误
生成if条件必须是常量表达式
这是我正在使用的代码
module jkfflop(J,K,clk,Q);
input J,K,clk;
output Q;
if(J==0 & K==1)
begin
assign Q = 0;
end
else if(J==1 & K==0)
begin
assign Q = 1;
end
else if(J==1 & K==1)
begin
assign Q = ~Q;
end
endmodule
有人能帮我一下吗?在Verilog RTL中,有一个公式或模式用来暗示触发器。对于正边缘触发触发器,它总是@(posedge时钟)
对于负边缘触发触发器,它总是@(negedge时钟)
正边触发块的示例
reg [7:0] a;
always @(posedge clock) begin
a <= b;
end
reg[7:0]a;
始终@(posedge时钟)开始
模块flopJK(q,j,k,c)的可能副本;输入j,k,c;输出q;reg q;总是@(posedge c)开始格({j,k}){1'b0,1'b0}:开始q=q;结束{1'b0,1'b1}:开始q=1'b0;结束{1'b1,1'b0}:开始q=1'b1;结束{1'b1,1'b1}:开始q=~q;end-endcase end-endmodule
请修复最后一个模块(无法编辑)->2'b0_1:Q
reg [7:0] a;
always @(posedge clock) begin
if ( reset == 1'b1 ) begin
a <= 'b0;
end
else begin
a <= b;
end
end
reg [7:0] a;
always @(posedge clock, negedge reset_n) begin
if ( reset_n == 1'b0 ) begin
a <= 'b0;
end
else begin
a <= b;
end
end
module jkfflop(
input J,
input K,
input clk,
output Q );
always @(posedge clk) begin
if(J==1'b0 && K==1'b1) begin
Q <= 'b0;
end
else if(J==1'b1 && K==1'b0) begin
Q <= 1'b1;
end
else if(J==1'b1 & K==1'b1) begin
Q <= ~Q;
end
end
endmodule
always @(posedge clk) begin
case({J,K})
2'b0_0 : Q <= Q ;
2'b0_1 : Q <= 1'b0;
2'b1_0 : Q <= 1'b1;
2'b1_1 : Q <= ~Q ;
endcase
end