计算高的p显示d的平均值

时间:2017-11-16 16:19:07

标签: verilog hdl synthesis flip-flop

module try2(p,d,q1,q2,q3,q4,q5,q6,q7,q8,c,a);
input p,c;
output [15:0]q1,q2,q3,q4,q5,q6,q7,q8,d,a;
reg [15:0] d=16'b0;//may be error
reg [15:0]a;
always @ (posedge p) begin 
d<=d+1;
end

DFF dff0(q1,d,p);
DFF dff1(q2,q1,p);
DFF dff2(q3,q2,p);
DFF dff3(q4,q3,p);
DFF dff4(q5,q4,p);
DFF dff5(q6,q5,p);
DFF dff6(q7,q6,p);
DFF dff7(q8,q7,p);
always @ ( posedge c )begin 
a = ( q1 + q2 + q3 + q4 + q5 + q6 + q7 + q8 )/8;
end 

endmodule

module DFF(q,d,clk);
input [15:0]d;
input clk;
output [15:0]q;
reg [15:0]q;
always @ (posedge  clk)begin 
q <=d;
end

endmodule

这里我计算脉冲p的高电平并显示16位d的值。 每当另一个输入c从0变为1时,我显示d的最后8个值的平均值。

问题:这里的一切工作正常,但平均值显示1和程序的偏差是刺激但不合成。

1 个答案:

答案 0 :(得分:0)

根据您使用的合成工具,您可能不会使用变量初始化。您可能需要使用重置信号。您甚至可以使其与

同步
always @ (posedge p) begin 
  d<=reset ? 0 :d+1;
end