2016-07-27 22 views
4

Was ist das Äquivalent des Generik in Verilog? Zum BeispielGeneric in Verilog von einem vhdl Programmierer

entity my_entity 
generic(a : integer); 
port(x : in std_logic; y out std_logic); 
end entity my_entity; 

Was für Gattungs das Äquivalent ist? Auch was ist das Äquivalent für das Generieren und Generieren?

Antwort

3

Die Generika werden in Verilog als Parameter bezeichnet. Sie sind wie durch die Linien innerhalb des Moduls erklärt:

parameter DATA_WIDTH = 8; 
parameter ADDR_WIDTH = 8; 

eine Instanziierung individuell können die Parameterwerte verfeinern:

my_ram_impl #( 
    .DATA_WIDTH(16), 
    .ADDR_WIDTH(8) 
) 
ram_instance(
    .clk(clk), 
    .addr(addr), 
    .data(data), 
    .cs(cs), 
    .we(we) 
); 

Mit diesen Richtlinien ähnlich wie C für bedingte Synthese:

`ifdef SYM 
    ... 
`else 
    ... 
`endif 

oder, flexibler generate Konstrukte wie:

+0

gute Antwort und direkt auf den Punkt – CJC

0

Dies ist ein Beispiel für die Verwendung von generate zum Instanziieren von Modulen, in diesem Fall core_top. NCORE ist ein Parameter in dem übergeordneten Modul oder einem lokalen Parameter, der die Anzahl der zu instanziierenden Kerne angibt.

wire clk; 
    wire [31:0] data_from_core[0:NCORES-1]; 

    genvar core; 
    generate 
    for (core=0; core < NCORES; core=core+1) begin : core_gen 
     core_top 
      #(.CORE_ID (core), 
       .NCORES (NCORES)) 
      u_fpgaminer_top 
      (.clk_in   (clk), 
       .data_out  (data_from_core[core])); 
     end 
    endgenerate