J'ai un problème. Je veux obtenir une valeur d'un paramètre dans un autre module comme celui-ci:

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 
0
user7424071 16 janv. 2017 à 10:11

2 réponses

Meilleure réponse

N'oubliez pas que les paramètres verilog sont appliqués à l'instance. Vous devez donc appeler des paramètres depuis l'instance.

Voici votre premier module

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

    parameter real res=10000;

endmodule 

Ajoutons un paramètre factice au deuxième module

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 

Et instanciez-les dans le module supérieur

module Topmodule(...);

    FS0b fs0b{...};

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

endmodule

Mais une meilleure application serait de définir le paramètre dans le module supérieur, puis de l'appliquer à la hiérarchie:

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

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


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

endmodule
1
Alper Kucukkomurler 16 janv. 2017 à 08:45

Le paramètre dans verilog a une portée locale. Il est local au module dans lequel il est défini.

Vous pouvez accéder au paramètre à partir d'autres modules en utilisant la notation hiérarchique, mais il n'est pas du tout recommandé de le faire.

Au lieu de cela, vous pouvez utiliser `define in verilog ou un package dans system verilog pour le rendre global.

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 
0
YoungHobbit 16 janv. 2017 à 08:34