2016-07-27 87 views
4

verilog中泛型的等價物是什麼? 例如vhdl程序員的Verilog中的泛型

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

什麼是通用的等價物? 什麼是如果生成和生成的等價物?

回答

3

泛型在Verilog中被稱爲參數。

parameter DATA_WIDTH = 8; 
parameter ADDR_WIDTH = 8; 

的實例可以單獨地優化的參數值::

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

使用類似於C有條件合成這些指令:

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

它們由相同的線聲明的模塊內或者更靈活generate結構如:

generate 
    if(cond) 
    ... 
    else 
    ... 
endgenerate 
+0

很好的答案和直接點 – CJC

0

這是一個如何在本例中用於生成實例化模塊的示例core_top。 NCORE是父模塊的一個參數或一個指定要實例化的核心數量的localparam。

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