2016-11-08 3 views
0

Modul Hierarchie wo uart_receiver.v = ModuleA, RSD.v = ModuleB, uart_transmitter.V = ModuleC
Verilog, Modul Instanziierung mit Eingängen von verschiedenen Modulen

nehme ich ModuleA mit Eingaben Instantiate wollen aus verschiedene Module, B, und der Name der Eingänge sind: WR_EN von moduleB und RD_EN, DT von moduleC

module A(
    input wr_EN, 
    input rd_EN, 
    input DT, 
    output out 
); 

Ich habe versucht, mit Verilog die unten ohne Erfolg, in ISE Xilinx zu tun

B MODULE

module B(...) 
    assign wr_EN = 1; 
    ... 
    // Now call module A from B: 
    module A A_instance(.wr_EN(wr_EN)); 

C MODUL

module C(...) 
    ... 
    assign rd_EN = 0; 
    assign DT = 1; 
    .... 
    // And then call module A from C 
    module A A_instance(.rd_EN(rd_EN), .DT(DT)); 

Wenn ich rufe Modul-Instanzen mit gleichen Namen macht das Programm keine Sekunde i nstance, trotz der Tatsache, dass ich einen will. ich gesucht, aber ich habe nicht ähnliches Beispiel

Antwort

0

Ich habe versucht, Ihre Frage zu bereinigen, aber ich bin noch nicht sicher gefunden Sie zwei Instanzen von A (ein in B der anderen in C zu haben, beabsichtigen) oder wenn Ihr versuchen eine Instanz A zwischen B und C zu teilen.

Eine Instanz repräsentiert eine physische Hardware. Dieselbe Instanz kann nicht zwischen anderen Modulinstanzen geteilt werden. Sie können Netze zum Verbinden von Instanzen routen. Zum Beispiel:

module TOP(...); 
    ... 
    A A_instance(.wr_EN(wr_EN), .rd_EN(rd_EN), .DT(DT), .out(out)); 
    B B_instance(.wr_EN(wr_EN), ...); 
    C C_instance(.rd_EN(rd_EN), .DT(DT), ...); 
endmodule 

können Sie platzieren A Innenseite B oder C und Strecke des Eingang von dem anderen durch eine Elternebene.

module B(
    input rd_EN, // output for C connected at top 
    input DT, // output for C connected at top 
    ... 
); 
    ... 
    assign wr_EN = 1; 
    A A_instance(.wr_EN(wr_EN), .rd_EN(rd_EN), .DT(DT), .out(out)); 
endmodule 

oder

module C(
    input wr_EN, // output for B connected at top 
    ... 
); 
    ... 
    assign rd_EN = 0; 
    assign DT = 1; 
    A A_instance(.wr_EN(wr_EN), .rd_EN(rd_EN), .DT(DT), .out(out)); 
endmodule 

Wenn Sie eine Instanz von A in B platziert und C, dann haben Sie zwei unabhängige Instanzen, auch wenn der Eingang von einem gemeinsamen sind Quelle.

+0

Xmm danke, der 1. klingt gut. Ich habe den 2. oder 3. als einen ersten Gedanken betrachtet. Wenn Sie also die Instanz eines Moduls 2 Mal mit dem Namen SAME aufrufen, werden zwei verschiedene Hardware-Teile erstellt. – trakis95

+0

Es gibt zwei _instances_, die unterschiedliche Instanznamen haben müssen. Verilog ruft keine Module auf – Greg

Verwandte Themen