Здравствуйте!
Вопрос такой. Есть проект под Virtex5, в котором куча памятей. Нужно ли генерить каждую память в CoreGenerator ? Или можно например описать память на HDL по шаблонам Xilinx, вида :
Код
parameter RAM_WIDTH = <ram_width>;
parameter RAM_ADDR_BITS = <ram_addr_bits>;
(* RAM_STYLE="{AUTO | BLOCK | BLOCK_POWER1 | BLOCK_POWER2}" *)
reg [RAM_WIDTH-1:0] <ram_name> [(2**RAM_ADDR_BITS)-1:0];
reg [RAM_WIDTH-1:0] <output_dataA>, <output_dataB>;
<reg_or_wire> [RAM_ADDR_BITS-1:0] <addressA>, <addressB>;
<reg_or_wire> [RAM_WIDTH-1:0] <input_dataA>;
// The following code is only necessary if you wish to initialize the RAM
// contents via an external file (use $readmemb for binary data)
initial
$readmemh("<data_file_name>", <rom_name>, <begin_address>, <end_address>);
always @(posedge <clockA>)
if (<enableA>) begin
if (<write_enableA>)
<ram_name>[<addressA>] <= <input_dataA>;
<output_dataA> <= <ram_name>[<addressA>];
end
always @(posedge <clockB>)
if (<enableB>) begin
if (<write_enableB>)
<ram_name>[<addressB>] <= <input_dataB>;
<output_dataB> <= <ram_name>[<addressB>];
end
Описывать так пробовал, все синтезиться ок, но не очень понимаю отсутствие настроек типа read-first и т.д. Также есть некоторые макросы для RAM у Xilinx - но как я понял - они просто соответствуют hardware реализации. Хочется иметь один полностью запараметризированный модуль и вставлять его по месту требования )). Кто как делает ?