源代码
module trigger(
input wire clk ,
input wire T ,
output wire Q3
);
reg Q1,q1;
reg Q2,q2;
reg R,D,J,K;
reg reg_Q3,q3;
reg reg_T;
assign T= reg_T;
assign Q3 = reg_Q3;
always @ (posedge clk)
begin
Q1<=(reg_T&(Q1))|((reg_T)&Q1);
q1<=((reg_T&(Q1))|((reg_T)&Q1));D;
D<=Q1;
K<=q1;
end
always @ (negedge clk)
begin
Q2<=D;
q2<=
J<=Q2;
end
always @ (negedge clk)
begin
reg_Q3<=(J&(reg_Q3))|((K)®_Q3);
q3<=((J&(reg_Q3))|((~K)®_Q3));
R<=q2&q3;
end
endmodule
测试代码
`timescale 1ns/1ps
module tb_trigger();
reg T,clk;
wire Q3;
initial begin
T=1'b1;
clk=1'b0;
end
always #10 clk=~clk;
trigger tb_trigger(
.T(T),
.clk(clk),
.Q3(Q3)
);
endmodule
没看明白你写的代码是干什么的
有俩错误
1:Q1 没有初始值,后面所有的逻辑都是依赖 Q1 的,就都是红色的。可以这样定义一个初始值 reg Q1=0;
2:assign T= reg_T; 这条语句用法不对。T 是输入 input ,不应该被赋值
没有初始化。
全是语法错误