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

Использование памяти в FLEX10KE

Здравствуйте. Я описываю схему, содержащую большое количество RAM и ROM блоков (использую встроенные мегафункции), и проект при анализе и синтезе занимает около 71'000 бит памяти из 98'000 имеющихся в FPGA. Разводчик QuartusII (9.1) выдаёт следующую ошибку:

 Error: Project requires 32 Embedded Array Blocks for RAM, but the selected device can contain only 24 EABs.

Помогите, пожалуйста, разобраться, почему превышено максимальное количество встроенных блоков памяти, и как задействовать оставшиеся 27'000 бит. Может быть, можно где-то в настройках указать, чтобы Quartus использовал LC, вместо EAB.

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


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

Здравствуйте. Я описываю схему, содержащую большое количество RAM и ROM блоков (использую встроенные мегафункции), и проект при анализе и синтезе занимает около 71'000 бит памяти из 98'000 имеющихся в FPGA. Разводчик QuartusII (9.1) выдаёт следующую ошибку:
 Error: Project requires 32 Embedded Array Blocks for RAM, but the selected device can contain only 24 EABs.

Помогите, пожалуйста, разобраться, почему превышено максимальное количество встроенных блоков памяти, и как задействовать оставшиеся 27'000 бит. Может быть, можно где-то в настройках указать, чтобы Quartus использовал LC, вместо EAB.

подробнее

реализовать данные и адрес в соответствии "Figure 4. FLEX 10KE Device in Single-Port RAM Mode "

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


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

Память расходуется целыми блоками, даже если используется несколько байт.

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

Посмотреть отчёт - там указано какой модуль сколько блоков памяти использует.

Изменено пользователем Копейкин

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


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

подробнее

Какие именно подробности Вас интересуют? Могу заскринить всё))

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


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

Какие именно подробности Вас интересуют? Могу заскринить всё))

см. предыдущее сообщение и рис 4 даташит (по ссылке) - там приведены разрядности данных и адреса

Если сделать правильно разрядности данных и адреса то получите полную заполняемость памяти - рис 4 даташит

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


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

Какие именно подробности Вас интересуют? Могу заскринить всё))

Как показывает мой опыт - лучшая оптимизация - это когда пересматривается весь проект, начиная с алгоритма вычислений. И тогда возможно, что памяти хватит...

Что конкретно Вы делаете?

 

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


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

Как показывает мой опыт - лучшая оптимизация - это когда пересматривается весь проект, начиная с алгоритма вычислений. И тогда возможно, что памяти хватит...

Что конкретно Вы делаете?

Запрашиваю по УАРТ данные, принимаю набор 8-ми разрядных данных, собираю в слова по 12 разрядов, которые согласно программе опроса кладу в буфер, который, в свою очередь, последовательно побитово передаю на приёмник. Программы опросов-ответов-адресаций храню в памяти внутри ПЛИС.

 

см. предыдущее сообщение и рис 4 даташит (по ссылке) - там приведены разрядности данных и адреса

Если сделать правильно разрядности данных и адреса то получите полную заполняемость памяти - рис 4 даташит

Боюсь, что в моём описании разрядности используются нестандартные, поэтому, наверное, он и использует чрезвычайно избыточное количество EAB. Избежать этого, как я понимаю, вряд-ли удастся?(

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


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

Запрашиваю по УАРТ данные, принимаю набор 8-ми разрядных данных, собираю в слова по 12 разрядов, которые согласно программе опроса кладу в буфер, который, в свою очередь, последовательно побитово передаю на приёмник. Программы опросов-ответов-адресаций храню в памяти внутри ПЛИС.

 

 

Боюсь, что в моём описании разрядности используются нестандартные, поэтому, наверное, он и использует чрезвычайно избыточное количество EAB. Избежать этого, как я понимаю, вряд-ли удастся?(

попробуйте сделать более плотную запись в память...

например 48/12 = 4 и 48/16 = 3

попробуйте сделать регистр с разрядностью 48 бит (можно и выше например 96) с возможностью записи в него данные по 12 бит, а потом уже в память по 16 бит данные пишем (чтение из регистра 48 бит)

не забываем про pipeline и возможность увеличения тактовой частоты (PLL)

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


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

Боюсь, что в моём описании разрядности используются нестандартные, поэтому, наверное, он и использует чрезвычайно избыточное количество EAB. Избежать этого, как я понимаю, вряд-ли удастся?(

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

Попробуйте 2 блока 8 + 4 бита... Или 3х 4 бита...

И кстати, поищите, можно ли при записи иметь 8 бит, а по чтению - 12...

Если есть скайп, то можем поговорить...

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


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

попробуйте сделать более плотную запись в память...

например 48/12 = 4 и 48/16 = 3

попробуйте сделать регистр с разрядностью 48 бит (можно и выше например 96) с возможностью записи в него данные по 12 бит, а потом уже в память по 16 бит данные пишем (чтение из регистра 48 бит)

не забываем про pipeline и возможность увеличения тактовой частоты (PLL)

Спасибо, попробую подумать о разрядностях и перестроить проект... И да, ФАПЧа тут нет, это же русская ПЛИС)))

 

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

Попробуйте 2 блока 8 + 4 бита... Или 3х 4 бита...

И кстати, поищите, можно ли при записи иметь 8 бит, а по чтению - 12...

Если есть скайп, то можем поговорить...

на уровне языка, я так понимаю, это значит использование блоков памяти других разрядностей, и конкатенация выходных шин?

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


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

В процессе переработки возник такой вопрос, возьмём, например, встроенный блок 256х8. Я описываю 16 маленьких RAM 16х8, к которым, возможно, буду обращаться одновременно. Могу-ли я предполагать, что Фиттер положит их в один блок?

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


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

Wayne Shepard, нет, положит в 16 больших, как Вам уже писали выше.

Необходимо делать самому, организуя процесс отложенных записи/чтения.

То есть на одном блоке EAB эмулировать работу двух, трех и т.д. блоков памяти с соответствующими ограничениями.

Изменено пользователем x736C

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


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

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

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

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

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

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

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

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

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

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