2017-01-16 1 views
0

문제가 있습니다. 이 같은 다른 모듈에서 매개 변수의 값을 얻으려면 : Verilog에의Verilog ams : 다른 모듈의 매개 변수 값 가져 오기

module FS0b (in2,in2,out1); 
    input in1,in2; 
    output out1;  
    parameter real res=10000; 
endmodule 

module FS1b (in1,in2,out1); 
    input in1,in2; 
    output out1; 

    wreal in1; 
    wreal in2; 
    wreal out1; 

    out1=res- in1+in2; 
endmodule 
+1

Welcome to Stackoverflow! 사이트를 최대한 활용하려면 좋은 질문을하는 것이 중요합니다. 질문에 대한 안내는 http://stackoverflow.com/help/how-to-ask에서 확인할 수 있습니다. –

답변

1

verilog 매개 변수가 인스턴스에 적용됩니다. 따라서 인스턴스에서 매개 변수를 호출해야합니다.

여기

module FS0b (in2,in2,out1); 
    input in1,in2; 
    output out1; 

    parameter real res=10000; 

endmodule 

이의 두 번째 모듈

module FS1b (in1,in2,out1); 

parameter real res=10000; 
    input in1,in2; 
    output out1; 

    wreal in1; 
    wreal in2; 
    wreal out1; 


    assign out1=res- in1+in2; 

endmodule 

에 더미 매개 변수를 추가하고 최고 모듈

module Topmodule(...); 

    FS0b fs0b{...}; 

    defparam 
    fs1b.res = fs0b.res; 
    FS1b fs1b{...}; 

endmodule 

이러한 인스턴스를 보자 첫 번째 모듈

입니다하지만 더 나은 응용 프로그램이 될 것이다 상단 모듈에 매개 변수를 정의한 다음 계층에 적용합니다.

module Topmodule(...); 
    parameter real res=10000; 

    defparam 
    fs0b.res = res; 
    FS0b fs0b{...}; 


    defparam 
    fs1b.res = res; 
    FS1b fs1b{...}; 

endmodule 
0

매개 변수는 로컬 범위가 있습니다.

계층 적 표기법을 사용하여 다른 모듈의 매개 변수에 액세스 할 수 있지만 전혀 권장하지는 않습니다.

대신 'define in verilog'또는 시스템 verilog의 패키지를 사용하여 전역으로 만들 수 있습니다.

module FS0b (in1,in2,out1); 
    input in1,in2; 
    output out1 
    parameter real res=10000; 
endmodule 

module FS1b (in1,in2,out1); 
    input in1,in2; 
    output out1; 
    wire in1; 
    wire in2; 
    wire out1; 
    assign out1= FS0b.res - in1+in2; 
endmodule 
관련 문제