Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Block RAM initilization files
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Rok
В системе нужно использовать RAM.
Coregen'ом генерю Block RAM. К этим BRAM использую init. files.
Делаю проект синтеза в Synplify. Затем, соответственно ISE и ...
Большой проект, Place and Route только занимает минимум часа 2,5.
А, кристал Virtex-II используется.

Так вот потом мне нужно использовать другой init. file, т.е. снова с самого начала генерю BRAM с новым init. file, Synplify, ISE ......т.е. делаю тот же проект, то же самое, только память чуток другая.

Вопрос в следующем:
Как использовать все вот это с наименьшими затратами по времени, очень уж долго ожидать приходится.
Как сократить время разработки ?
Может кто сталкивался, подскажите.
andrew_b
Цитата(Rok @ Mar 17 2006, 10:05) *
только память чуток другая.

"Другая" в смысле инициализирована по-другому? А размеры те же самые?

Самое простое, что вы можете сделать --- это пропустить этап повторного синтеза. Память вставляется в hdl-код как black box. Синтезатор про содержимое памяти ничего не знает, поэтому с его точки зрения проект не меняется совершенно.

Результат работы CoreGen'а --- EDIF .edn. Это текстовый файл, если открыть его любым текстовым редактором, то можно найти инициализационные значения памяти. Например:
Код
(property INIT_00 (string "002d002a002700240021001e001b001800150012000f000c0009000600030000"))
(property INIT_01 (string "002d002a002700240021001e001b001800150012000f000c0009000600030000"))
(property INIT_02 (string "0096008c00820078006e0064005a00500046003c00320028001e0014000a0000"))
(property INIT_03 (string "0096008c00820078006e0064005a00500046003c00320028001e0014000a0000"))
(property INIT_04 (string "fff1fff2fff3fff4fff5fff6fff7fff8fff9fffafffbfffcfffdfffeffff0000"))
(property INIT_05 (string "fff1fff2fff3fff4fff5fff6fff7fff8fff9fffafffbfffcfffdfffeffff0000"))
(property INIT_06 (string "0000000000000000000000000000000000000000000000000000000000000000"))
(property INIT_07 (string "0000000000000000000000000000000000000000000000000000000000000000"))
(property INIT_08 (string "002d002a002700240021001e001b001800150012000f000c0009000600030000"))
(property INIT_09 (string "fffdfffafff7fff4fff1ffeeffebffe800150012000f000c0009000600030000"))
(property INIT_0A (string "0096008c00820078006e0064005a00500046003c00320028001e0014000a0000"))
(property INIT_0B (string "fff6ffecffe2ffd8ffceffc4ffbaffb00046003c00320028001e0014000a0000"))
(property INIT_0C (string "fff1fff2fff3fff4fff5fff6fff7fff8fff9fffafffbfffcfffdfffeffff0000"))
(property INIT_0D (string "00010002000300040005000600070008fff9fffafffbfffcfffdfffeffff0000"))
(property INIT_0E (string "0000000000000000000000000000000000000000000000000000000000000000"))
(property INIT_0F (string "0000000000000000000000000000000000000000000000000000000000000000"))

Поэтому, если меняете "прошивку", можно сформировать эти строчки вручнуюили какой-то программой (Matlab, ...)(формат у них простой, ищите в xapp. Нужный вам номер xapp для Virtex-II не знаю, по рукой есть xapp130 "Using the Virtex Block SelectRAM+ Features", таблица 4 "RAM Initialization properties"), и просто в том же редакторе руками ихпоменять. А можно написать скрипт на shell+sed/awk/perl, который будет менять одни значения string на другие,...
Azazella
Редактировать (обновлять) содержимое блочной памяти можно прямо в .bit файле,
пропуская все этапы синтеза и имплементации, как и поступает EDK при обновлении программ
под MicroBlaze.
Данная операция производится при помощи програмки Data2MEM.
Попробуйте почитать мануалы и хелп, там ве просто: указываете файл с данными (.mem),
формат и расположение блоков памяти (.bmm) и сам файл прошивки (.bit).
iosifk
Цитата(Rok @ Mar 17 2006, 10:05) *
Так вот потом мне нужно использовать другой init. file, т.е. снова с самого начала генерю BRAM с новым init. file, Synplify, ISE ......т.е. делаю тот же проект, то же самое, только память чуток другая.

Вопрос в следующем:
Как использовать все вот это с наименьшими затратами по времени, очень уж долго ожидать приходится.
Как сократить время разработки ?
Может кто сталкивался, подскажите.


Как я понял Вам нужна внешняя загрузка памяти.
1. Делается проект с первичной инициализацией, которая скажем будет эквивалентом команды NOP, и в проект надо добавить нечто, что принимало бы данные из внешнего интерфейса, например JTAG, и грузило бы эти данные в BRAM, и далее надо перестартовать устройство.
2. Возможно BRAM надо сделать двухпортовой для отладки.
3. Сделать сплиттер, который бы делал "прошивку" из ваших задач, а лучше всего сделать объединный софтовый инструмент: от набивки init'ов до загрузки прошивки.

Вот при таком подходе только один раз компилите проект, а потом работаете только с разными прошивками памяти. При этом всегда есть возможность "отката назад".

Удачи!
Rok
Всем огромное спасибо. Буду разбиратьсяsmile3046.gif
cheers.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.