所有代码都在图片中,我的问题是,如果代码会给我不同的结果。我特别怀疑方法3和3b之间的区别,为方便起见,我在下面概述了它。 在3到3b之间,一个使用assign语句进行XOR,另一个使用直接向上异或。 1)因为它在clock语句的always @ posedge之外,它是否仍会执行相似的操作? 2)我确定,我在某处读取了分配运行的信息。 组合逻辑(xor U1(Z .....))是否需要放在“always @(*)”块中,以便它与assign语句的运行方式类似?
xor U1(Z,A,D);//uncomment this line for METHOD 3
assign Z=A^D; //uncomment this line for METHOD 3b
完整的代码......
module SetupHold(
input wire clock,
input wire B,
input wire C,
input wire E,
input wire F,
input wire H,
input wire J,
output reg K
);
reg A,D,G;
//wire Z;//uncomment this line for METHOD 3 & 3b
//xor U1(Z,A,D);//uncomment this line for METHOD 3
//assign Z=A^D; //uncomment this line for METHOD 3b
always@(posedge clock) begin
A <= B ^ C;
D <= E & F;
G <= H | J;
//K <= G ? ~&{A,D} : ^{A^D};//uncomment this line for METHOD 1
//K <= G ? ~&{A,D} : (A^D); //uncomment this line for METHOD 2
//K <= G ? ~&{A,D} : Z;//uncomment this line for METHOD 3 &3b
if (G==1)//uncomment this line for METHOD 4
K<=~&{A,D};//uncomment this line for METHOD 4
else //uncomment this line for METHOD 4
K<=(A^D);//uncomment this line for METHOD 4
end
endmodule
答案 0 :(得分:1)
对于Verilog作为硬件描述语言(HDL),如果给予综合工具,相同逻辑功能的5种不同实现将产生等效硬件。因此硬件的逻辑运算将是相同的。
但请注意,综合工具在选择基于时序约束和设备填充的特定实现方面有很大的自由度,因此在查看门表示时,您可能会看到从run到tun的实现方面的差异。然而,实现的逻辑功能将是等效的。