Verilog中的Always语句
我正在使用异步清除的t_触发器为8位同步计数器编写代码。这是我的密码:Verilog中的Always语句,verilog,Verilog,我正在使用异步清除的t_触发器为8位同步计数器编写代码。这是我的密码: module T_ff(CLK,E,CLEAR,T,Q); input CLK,E,CLEAR,D; output reg Q; always@(posedge CLK, negedge CLEAR,E,T) begin: if(~CLEAR) Q<=1b'0; else if (E == 1) Q<=Q^T; en
module T_ff(CLK,E,CLEAR,T,Q);
input CLK,E,CLEAR,D;
output reg Q;
always@(posedge CLK, negedge CLEAR,E,T)
begin:
if(~CLEAR)
Q<=1b'0;
else if (E == 1)
Q<=Q^T;
end:
endmodule
有什么帮助吗?另外,我可以将E和T与posedge和NEGDEDGE函数一起放在灵敏度列表中吗?开始和结束后不需要冒号 你不应该把E和t放在敏感度列表中。 当时钟改变或复位时,触发器会执行某些操作。您不希望在E或t更改时触发块
module T_ff(CLK,E,CLEAR,T,Q);
input CLK,E,CLEAR,D;
output reg Q;
always@(posedge CLK or negedge CLEAR)
begin
if(~CLEAR)
Q<=1b'0;
else if (E == 1)
Q<=Q^T;
end
endmodule
开始和结束后不需要冒号 你不应该把E和t放在敏感度列表中。 当时钟改变或复位时,触发器会执行某些操作。您不希望在E或t更改时触发块
module T_ff(CLK,E,CLEAR,T,Q);
input CLK,E,CLEAR,D;
output reg Q;
always@(posedge CLK or negedge CLEAR)
begin
if(~CLEAR)
Q<=1b'0;
else if (E == 1)
Q<=Q^T;
end
endmodule
如果在开始/结束关键字后使用冒号,则需要在其后加上标识符。请记住,这是SystemVerilog功能,请参阅第9.3.4节块名。例如,可以将块命名为dff: 为块命名是可选的。在end关键字后使用名称也是可选的
另外,我认为你应该在港口申报单中将D改为T。正如另一个答案所说,您不应该在敏感度列表中使用E或T。如果在开始/结束关键字之后使用冒号,则需要在它们后面加上标识符。请记住,这是SystemVerilog功能,请参阅第9.3.4节块名。例如,可以将块命名为dff: 为块命名是可选的。在end关键字后使用名称也是可选的 另外,我认为你应该在港口申报单中将D改为T。正如另一个答案所说,你不应该在敏感度列表中使用E或T
module T_ff(CLK,E,CLEAR,T,Q);
input CLK,E,CLEAR,T; // D should be T
output reg Q;
always@(posedge CLK, negedge CLEAR)
begin: dff
if(~CLEAR)
Q<=1b'0;
else if (E == 1)
Q<=Q^T;
end: dff
endmodule