Перейти к содержанию
    

<_< Подскажите пожалуйста как описать работу с блочной памятью VirtrexE 300 в ISE 6.3 на языке VHDL, если мне надо использовать её всю (16K) для одного буффера?!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1) Я не знаю как в ISE 6.3, а вот в ISE 5.1 (которой я пользуюсь) есть "Language Temlates" (у меня это лампочка в самом правом углу панели инструментов), так вот там есть папочка "Synthesis Templates",а в нём есть VHDL шаблоны памяти (как блочного так и распределённого, как одно- так и многовходового) их лишь немного надо ручками поправить (разрядности шин и т.д. и т.п.)

 

2) воспользоваться CoreGen (по моему она так называется в ISE 6.3)

 

 

PS на случай если в ISE 6.3 нет "Language Temlates" прикрепляю сгенерированные у меня

RAM.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Странные вещи творятся... Если взять код, приведенный в прикрепленном файле (RAM.txt), то ISE при синтезе использует в качестве памяти распределенную двухпортовую. Если же убрать из кода счетчик и использовать внешнее указание адреса (что для моих целей оч. неудобно), то ISE использует блочную однопортовую...

 

Не подскажите, так как все-таки при использовани счетчика добиться использования и блочной однопортовой памяти? :wacko:

RAM.txt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В разные процессы их. Тогда и счетчик будет и память системная.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вынес счетчик в другой процесс. Результат, использует однопортовую распределенную, но главное в результате синтеза все ресурсы ПЛИС исчерпаны :excl: , тогда как, блочная память без проблем рнеализуется :wacko:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вот вопрос, конечно оффтопик, но меня очень интересует: в BRAM или DRAM одновременно ко всем ячейкам обратится можно? Если да то как?

 

PS: Мне одновреммено нужно считать их содержимое

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вынес счетчик в другой процесс. Результат, использует однопортовую распределенную, но главное в результате синтеза все ресурсы ПЛИС исчерпаны :excl: , тогда как, блочная память без проблем рнеализуется :wacko:

Опишите память компонентом BlockRAM (RAMB*) или сгенерите ядро.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость RU3DLR

Интересно,

если не трудно подскажи каую библиотеку использовать,

а насчет COREGENA - так он именно глючит (при трассировке не включает файл в проект)

и надо из-за этого описать самому-ручками,

Просто организовать массив - не нормально так как не получается BRAM, а тогда как?

:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Интересно,

если не трудно подскажи каую библиотеку использовать,

а насчет COREGENA - так он именно глючит (при трассировке не включает файл в проект)

и надо из-за этого описать самому-ручками,

Просто организовать массив - не нормально так как не получается BRAM, а тогда как?

:)

библиотека, конечно, того чипа, что Вы используете. virtex?

к сожалению, сейчас не стоит библиотека virtex

но должно быть так:

--сначала подключаете библиотеку

library virtex;

use virtex.all;

 

 

--открываете библиотеку и смотрите список компонентов

--определяетесь какой тип памяти Вам нужен: двухпортовая

--RAMBRAMB4_Sn_Sm или однопортовая RAMB4_Sn

--где n и m разрядность шины данных памяти

--в архитектуре декларируете компонент выбранный компонент,

--этот текст нужно скопировать можно из исх. текста компонента в библиотеке

--

component RAMB4_Sn_Sm

(

......

);

-- а потом подключаете компонент в теле кода (после begin)

comp_name: RAMB4_Sn_Sm

port map(

...

);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

К сожалению, я не успел скачать предложенные примеры:( Поэтому не могли бы вы выложить их еще раз? Заодно привожу текст, возникающей у меня ошибки:

 

Started process "Create Schematic Symbol".

 

Compiling vhdl file C:/Xilinx6.3/bin/247_CB_STD/wrapped_mem.vhd in Library work.

ERROR:HDLParsers:3317 - C:/Xilinx6.3/bin/247_CB_STD/wrapped_mem.vhd Line 4.

Library XilinxCoreLib cannot be found.

ERROR:HDLParsers:3013 - C:/Xilinx6.3/bin/247_CB_STD/wrapped_mem.vhd Line 5.

Library XilinxCoreLib is not declared.

vhdtdtfi:Declaration (Module bc64) not found.

tdtfi(vhdl) completed with errors.

ERROR: vhdtdtfi failed

 

Здесь wrapped_mem - имя компонента. При этом библиотеки прописаны как

library XilixCoreLib;

и т.д.

 

Что же это такое?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не устаю повторять: XilinxCoreLib --- это библиотека симуляционных моделей. Она не синтезируема, и нужна только для симуляции блоков, сгенеренных CoreGen'ом. Все эти блоки для синтеза нужно объявлять как blackbox. Пример смотрите в .vho-файле, сгенеренном опять-таки CoreGen'ом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По поводу размещения памяти в BRAM.

 

Попробуйте явно указать синтезатору что это память. Для этого нужно установить соответствующий атрибут. При использовании синтезатора ISE 6.3 прикрепленный файл генерируется в двухпортовую память на BRAM. Если вы используете другой синтезатор, нужно поискать в документации, там этот атрибут звучит иначе. :glare:

mem.txt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я уж прям и не знаю куды бечь! Пробовал все, что было здесь предложено - результат один - каждый раз глюки. Из последних: проект компалится, но блок RAM игнорируется... Может быть вы сами посмотрите, то что я написал и укажите на ошибку?

 

Прикрепленные файлы

247_CB_STD.rar - архив всего проекта (сделан в версии 6.3)

Для тех, у кого более ранняя версия:

CODE.txt - VHDL код

LOG.txt - то что выводитится при генерации

 

Заранее БОЛЬШОЕ спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну какой wrapped_mem? Окуда вы его взяли? Компонент называется mem --- так, как было указано CoreGen'у. Дальше смотрим в проект 247_CB_STD.npl. Вот что нужно сделать:

1. убрать из проекта mem.xco. Это файл проета CoreGen. Он уже не нужен: CoreGen сделал свое дело, CoreGen может уходить.

2. убрать из проекта wrapped_mem.vhd. Он содержит симуляционную модель вашего компонента mem. Соответственно, для разводки он не нужен.

3. исправить BC64.vhd так, чтобы использовался компонент mem, так как показано в mem.vho.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...