Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Xilinx Memory
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
Egel
Здравствуйте!

Вопрос такой. Есть проект под 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 реализации. Хочется иметь один полностью запараметризированный модуль и вставлять его по месту требования )). Кто как делает ?
MKS
По началу тоже пробовал делать как вы, описывать синтезируемую модель на RTL и подсовывать ей содержимое через readmemh. Пока в проекте 1, 2 блока использовалось то ничего, синтезилось. А вот когда больше то у синплифая начинаются чудеса с распознаванием таких конструкций. В итоге плюнул я на это дело, и теперь использую только coregen.
Egel
Ну вот этого я и боялся - у меня уже чудеса начались, но синтез веду в XST, если ставить -ram_style Block, магии меньше вроде

Еще смежный вопрос - насколько медленне проект симмулируется с памятями из coregen, по сравнению с простым RTL-описанием ? Я думал, через условную компилляцию переключаться с поведенческой модели на синтезируемую. Будет выигрыш?
MKS
Цитата(Egel @ May 5 2010, 12:56) *
...
Я думал, через условную компилляцию переключаться с поведенческой модели на синтезируемую. Будет выигрыш?

Именно так я и делаю если необходимо ускорить моделирование. По памяти могу сказать что прибавка в скорости была заметна на глаз.
o_khavin
Цитата(Egel @ May 5 2010, 12:57) *
Кто как делает ?

Если синтез ведётся в XST - то самый безпроблемный вариант, это вставлять примитивы из темплейтов, а для ускорения симуляции подсовывать альтернативные куски RTL-кода при помощи условной компиляции (на больших проектах разница в скорости в разы). В принципе этих темплейтов для Virtex5 всего четыре варианта (18 и 36 Кбит, SDP и true dual port), а остальное и так задаётся параметрами.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.