2016-08-30 25 views
0

이 오류의 의미를 이해할 수 없습니다. 내가 메모리 간단한 계산기를 만들고 싶어, 그러나이 오류가 뛰어 난 무엇Verilog "In, Out 또는 inout이 포트 목록에 나타나지 않습니다."

** 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

안녕하세요, 스택 오버플로! 질문에 대한 두 가지 개선점을 제시하면 강력한 답변 기회가 크게 늘어날 것입니다. '1 :'항상 게시물에 명확한 질문 및 문제 설명을 포함하십시오. 긴 텍스트 블록이있는 경우 게시물의 끝에서 다시 말한 버전을 반복해도 괜찮습니다. '2 :'당신이 시도한 내용을 자세하게 기술하는 절을 포함 시키십시오. – Kzqai

답변

2

당신은있는 출력으로 f1f2를 지정하지만, 포트 목록에서 그들을 지정하지 않은 : 즉, f1f2이 줄에 나타나지 않습니다 : module cal(a,b,c,op,clk,reset,en,r_w);.

덧붙여서, 당신은 매우 고풍스런 스타일을 사용하고 있습니다. 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

그리고 다른 오류가 있습니다. net "f3"에 대한 잘못된 참조입니다. 이것이 왜 발생하는지 가르쳐 줄 수 있습니까? 고맙습니다. –

+0

@KainyYang 네, 왜냐하면'always' 블록에서'wire'에 할당하기 때문입니다. 그건 허용되지 않습니다. 'f3'은'reg' 일 필요가 있습니다. –