2016-08-30 43 views
0

このエラーの意味を理解できません。 私はメモリを搭載したシンプルな電卓を作りたい、しかし、このエラーが飛び出し、私は何Verilog「In、Out、oroutはポートリストに表示されません」

** Error: C:\Users\Kainy\Desktop\LOGIC\calculator\cal.v(14): In, out, or inout does not appear in port list: f1. ** Error: C:\Users\Kainy\Desktop\LOGIC\calculator\cal.v(15): In, out, or inout does not appear in port list: f2.

手段を得るカント。 f1、f2に無効なものがあるようですが、どうすれば修正できますか?

module cal(a,b,c,op,clk,reset,en,r_w);  
input [3:0] a; 
input [3:0] b; 
input [7:0] c; 
input [2:0] op; 
input clk; 
input reset; 
input en; 
input r_w; 



output reg [7:0] f1; 
output reg [7:0] f2; 


wire [7:0] f3; 




[email protected](a or b or op) begin 
case(op) 
3'b000: begin 
f1 = a; 
f3 = f1; 
end 

3'b001: begin 
f1 = b; 
f3 = f1; 
end 


3'b010: begin 
f1 = a+b; 
f3 = f1; 
end 

3'b011: begin 
f1 = a - b; 
f3 = f1; 
end 

3'b100: begin 
f1 = a * b; 
f3 = f1; 
end 

3'b101: begin 
f1 = b+a; 
f3 = f1; 
end 

3'b110: begin 
f1 = b-a; 
f3 = f1; 
end 

3'b111: begin 
f1 = 0; 
f3 = 0; 
end 
endcase 
end 

mem32 mem(clk,reset,en,r_w,c,f3,f2); 

endmodule 
+0

こんにちは、スタックオーバーフローへようこそ!あなたの質問に2つの改善を提案して、強力な回答の可能性を大幅に高めることができますか? '1:'あなたの投稿に常に明確な質問と問題の説明を入れてください。長いテキストブロックがある場合は、投稿の最後に改訂版を繰り返すことも大丈夫です。 '2:'あなたが試したことを詳細に記述するセクションを含めてください。 – Kzqai

答えて

2

あなたは出力としてf1f2を指定しましたが、ポートリストでそれらを指定していない:module cal(a,b,c,op,clk,reset,en,r_w);:他の言葉で、f1f2は、この行に表示されません。

ちなみに、あなたは非常に昔ながらのスタイルを使用しています。 2001年にこのスタイル(「ANSIスタイル」)が導入されました。

module cal(  
    input [3:0] a, 
    input [3:0] b, 
    input [7:0] c, 
    input [2:0] op, 
    input clk, 
    input reset, 
    input en, 
    input r_w, 
    output reg [7:0] f1, 
    output reg [7:0] f2 
); 

このANSIスタイルを使用した場合、エラーは発生しませんでした。

私が教える人たちのために、新しいコードには常にANSIスタイルをお勧めします。私はこの昔ながらのスタイルを教えていますが、レガシーコードを理解できるようにするだけです。

+0

ありがとうございます。わかった。 –

+0

また、別のエラーがあります。ネット "f3"への不正な参照です。 これがなぜ起こるのか教えていただけますか?ありがとうございました。 –

+0

@KainyYangはい、あなたは 'always'ブロックから' wire'に割り当てるためです。それは許されない。 'f3'は' reg'である必要があります。 –

関連する問題