1、这个题 ,看着简单还是有点小坑。首先组合逻辑跟时序逻辑哪里。一开始写的时序逻辑有点不对,初状态总是不对。后来把它改成在外面assign赋值的就可以了。还有下面那三个d触发器,我一直以为要用时序逻辑才可以,结果组合逻辑也行。这两者的区别以后还得看一下。
完整代码如下:
module top_module (
input clk,
input x,
output z
);
initial begin
q1=0;
q2=0;
q3=0;
end
reg q1,q2,q3;
assign z=~(q1|q2|q3);
always@(posedge clk)begin
q1<=x^q1;
q2<=x&(~q2);
q3<=x|(~q3);
end
endmodule