题目
正确代码
module top_module (
input clk,
input j,
input k,
output reg Q
);
always @(posedge clk) begin
Q <= (Q&(~j)&(~k)) | ((~Q)&j&k) | (j&(~k)); //输出方程
end
endmodule
错误代码
module top_module (
input clk,
input j,
input k,
output reg Q
);
wire D;
reg q;
assign D = Q;
always @(posedge clk) begin
q <= D;
Q <= (q&(~j)&(~k)) | ((~q)&j&k) | (j&(~k)); //输出方程
end
endmodule
与前面不同的是:这里的D触发器写的很明显,最后反而弄巧成拙。原因是q存储的是上上次的Q,正确的应该是q存储上次的Q