2017-11-16 7 views
-2
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つの値の平均を示しています。dの平均値を示すpの高値のカウント

問題:ここではすべて正常に機能していますが、1とプログラムの偏差を示す平均値は刺激的ですが合成しません。

+0

"プログラムが合成されていません" - どのエラーが表示されているかを教えてください。 –

答えて

0

使用している合成ツールによっては、変数の初期化を使用できません。リセット信号を使用する必要があるかもしれません。

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