[email protected] 0 30 мая, 2016 Опубликовано 30 мая, 2016 · Жалоба Здравствуйте. Я описываю схему, содержащую большое количество 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 30 мая, 2016 Опубликовано 30 мая, 2016 · Жалоба Здравствуйте. Я описываю схему, содержащую большое количество 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 " Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Копейкин 0 30 мая, 2016 Опубликовано 30 мая, 2016 (изменено) · Жалоба Память расходуется целыми блоками, даже если используется несколько байт. Если памяти требуется совсем немного, то, может действительно, имеет смысл синтезировать её из LC. Посмотреть отчёт - там указано какой модуль сколько блоков памяти использует. Изменено 30 мая, 2016 пользователем Копейкин Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
[email protected] 0 30 мая, 2016 Опубликовано 30 мая, 2016 · Жалоба подробнее Какие именно подробности Вас интересуют? Могу заскринить всё)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 30 мая, 2016 Опубликовано 30 мая, 2016 · Жалоба Какие именно подробности Вас интересуют? Могу заскринить всё)) см. предыдущее сообщение и рис 4 даташит (по ссылке) - там приведены разрядности данных и адреса Если сделать правильно разрядности данных и адреса то получите полную заполняемость памяти - рис 4 даташит Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 30 мая, 2016 Опубликовано 30 мая, 2016 · Жалоба Какие именно подробности Вас интересуют? Могу заскринить всё)) Как показывает мой опыт - лучшая оптимизация - это когда пересматривается весь проект, начиная с алгоритма вычислений. И тогда возможно, что памяти хватит... Что конкретно Вы делаете? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
[email protected] 0 30 мая, 2016 Опубликовано 30 мая, 2016 · Жалоба Как показывает мой опыт - лучшая оптимизация - это когда пересматривается весь проект, начиная с алгоритма вычислений. И тогда возможно, что памяти хватит... Что конкретно Вы делаете? Запрашиваю по УАРТ данные, принимаю набор 8-ми разрядных данных, собираю в слова по 12 разрядов, которые согласно программе опроса кладу в буфер, который, в свою очередь, последовательно побитово передаю на приёмник. Программы опросов-ответов-адресаций храню в памяти внутри ПЛИС. см. предыдущее сообщение и рис 4 даташит (по ссылке) - там приведены разрядности данных и адреса Если сделать правильно разрядности данных и адреса то получите полную заполняемость памяти - рис 4 даташит Боюсь, что в моём описании разрядности используются нестандартные, поэтому, наверное, он и использует чрезвычайно избыточное количество EAB. Избежать этого, как я понимаю, вряд-ли удастся?( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 30 мая, 2016 Опубликовано 30 мая, 2016 · Жалоба Запрашиваю по УАРТ данные, принимаю набор 8-ми разрядных данных, собираю в слова по 12 разрядов, которые согласно программе опроса кладу в буфер, который, в свою очередь, последовательно побитово передаю на приёмник. Программы опросов-ответов-адресаций храню в памяти внутри ПЛИС. Боюсь, что в моём описании разрядности используются нестандартные, поэтому, наверное, он и использует чрезвычайно избыточное количество EAB. Избежать этого, как я понимаю, вряд-ли удастся?( попробуйте сделать более плотную запись в память... например 48/12 = 4 и 48/16 = 3 попробуйте сделать регистр с разрядностью 48 бит (можно и выше например 96) с возможностью записи в него данные по 12 бит, а потом уже в память по 16 бит данные пишем (чтение из регистра 48 бит) не забываем про pipeline и возможность увеличения тактовой частоты (PLL) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 30 мая, 2016 Опубликовано 30 мая, 2016 · Жалоба Боюсь, что в моём описании разрядности используются нестандартные, поэтому, наверное, он и использует чрезвычайно избыточное количество EAB. Избежать этого, как я понимаю, вряд-ли удастся?( Если Вы берете 16-ти разрядный блок и часть не используете, то возможно... Попробуйте 2 блока 8 + 4 бита... Или 3х 4 бита... И кстати, поищите, можно ли при записи иметь 8 бит, а по чтению - 12... Если есть скайп, то можем поговорить... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
[email protected] 0 30 мая, 2016 Опубликовано 30 мая, 2016 · Жалоба попробуйте сделать более плотную запись в память... например 48/12 = 4 и 48/16 = 3 попробуйте сделать регистр с разрядностью 48 бит (можно и выше например 96) с возможностью записи в него данные по 12 бит, а потом уже в память по 16 бит данные пишем (чтение из регистра 48 бит) не забываем про pipeline и возможность увеличения тактовой частоты (PLL) Спасибо, попробую подумать о разрядностях и перестроить проект... И да, ФАПЧа тут нет, это же русская ПЛИС))) Если Вы берете 16-ти разрядный блок и часть не используете, то возможно... Попробуйте 2 блока 8 + 4 бита... Или 3х 4 бита... И кстати, поищите, можно ли при записи иметь 8 бит, а по чтению - 12... Если есть скайп, то можем поговорить... на уровне языка, я так понимаю, это значит использование блоков памяти других разрядностей, и конкатенация выходных шин? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
[email protected] 0 31 мая, 2016 Опубликовано 31 мая, 2016 · Жалоба В процессе переработки возник такой вопрос, возьмём, например, встроенный блок 256х8. Я описываю 16 маленьких RAM 16х8, к которым, возможно, буду обращаться одновременно. Могу-ли я предполагать, что Фиттер положит их в один блок? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x736C 0 31 мая, 2016 Опубликовано 31 мая, 2016 (изменено) · Жалоба Wayne Shepard, нет, положит в 16 больших, как Вам уже писали выше. Необходимо делать самому, организуя процесс отложенных записи/чтения. То есть на одном блоке EAB эмулировать работу двух, трех и т.д. блоков памяти с соответствующими ограничениями. Изменено 31 мая, 2016 пользователем x736C Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться