|
对给定的4个输入in1,in2,in3,in4,对应4个输出c1,c2,c3,c4,每个输出随着输入的上升沿来到而+1,就是c1计算in1上升沿的个数,c2,c3,c4类似,接下来对c1,c2,c3,c4进行比较,当c1,c2,c3,c4中有两个以上的数相同时,让输出等于这个数。程序中还设置了个复位键reset,当reset为1时,复位。 程序如下: module ronghe(c,in1,in2,in3,in4,c1,c2,c3,c4,reset); input reset,in1,in2,in3,in4; inout c1,c2,c3,c4; reg [15:0] c1,c2,c3,c4; output [15:0] c; reg[15:0] c;
always @(posedge in1 ) begin if (reset) c1<=0; else c1<=c1+1; end
always @(posedge in2 ) begin if (reset) c2<=0; else c2<=c2+1; end
always @(posedge in3 ) begin if (reset) c3<=0; else c3<=c3+1; end
always @(posedge in4 ) begin if (reset) c4<=0; else c4<=c4+1; end
always@(c1 or c2 or c3 or c4 or reset) begin if(reset) c<=0; else if(c1==c2 && c1==c3 && c1==c4) c<=c1; else if(c1==c2 && c1==c3) c<=c1; else if(c1==c2 && c1==c4) c<=c1; else if(c1==c3 && c1==c4) c<=c1; else if(c2==c3 && c2==c4) c<=c2; else if(c1==c2) c<=c1; else if(c1==c3) c<=c1; else if(c1==c4) c<=c1; else if(c2==c3) c<=c2; else if(c2==c4) c<=c2; else if(c3==c4) c<=c3; else c<=0; end endmodule 问题:仿真时,我设置仿真时间为1us,in1,in2,in3,in4是以10ns为周期的时钟激励,结果得到的输出的问题是等了几个周期输出c才开始有数,然后在输入的两个周期之间会莫名其妙的多出来一些数,例如对应第一个方波,计数应该是00001,对应第二个方波应该是00002,对应第3个方波应该是00003,然后有时在第n和第n+1个方波间,会多显示出来0000x,000xx等数字。
|
|