SIA 0 7 октября, 2011 Опубликовано 7 октября, 2011 · Жалоба 1. Вводная инфа. Есть небольшой проект, типа "glue logick+register block". Первоначально разрабатывался под ПЛИС с архитектурой CPLD (экономились триггера, а не многовходовая логика). По ряду причин нужно его перенести на Altera MAX-II. У которого архитектура, насколько я понимаю, представляет собой "быстрозагружаемую" FPGA (LUT+flip-flop). На что напоролись - очень много ресурсов стали съедать многовходовые мультиплексоры шин данных. "Не лезет". При менее чем паре сотен триггеров - дизайн съедает намного больше тысячи LE. Выходов из положения напрашивалось два - заменить мультиплексоры на шину с тремя состояниями или - регистровые блоки выполнить в виде небольших асинхронных двухпортовых ОЗУ. Насколько я знаю, мелкие ОЗУ должны очень эффективно реализовываться из LUT (которая и представляет собой не что иное, как небольшое ОЗУ). Однако проверка обоих вариантов на небольшом тест-проекте очень сильно озадачила - эффекта от замены mux на двухпортовку или шину практически никакого. Возможно, на бОльшем проекте разница появится, но перед переделкой хочется получить совет от тех, кто сталкивался с подобной проблемой. 2. Собственно вопрос: как в MAX-II лучше всего выполнять регистровые блоки с доступом от двух шин ? 3. Попутный вопрос: Правильно ли я понимаю, судя по результатам фиттинга, что или аппаратура этих ПЛИС, или Quartus "не умеет" использовать LUT как распределенную память ? (если так, то это выглядит очень странно - Xilinx умеет, Lattice - тоже). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tegumay 4 7 октября, 2011 Опубликовано 7 октября, 2011 · Жалоба прблема в межсоединениях - надо уйти от муксов, скорее всего проще поставить 2хпортовку. мах2 не та плис куда можно многое впихнуть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SIA 0 8 октября, 2011 Опубликовано 8 октября, 2011 · Жалоба прблема в межсоединениях - надо уйти от муксов, скорее всего проще поставить 2хпортовку. мах2 не та плис куда можно многое впихнуть. Так пробовали, правда, на маленьком тесте, толку практически не было. Или эффект "пороговый" ? Подробнее можно ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 65 8 октября, 2011 Опубликовано 8 октября, 2011 · Жалоба В ПЛИС Altera нету аппаратной поддержки линий с тремя состояниями, кроме как на внешних пинах (т.е. внутри нету), поэтому всякая попытка описать такую логику будет сопровождаться эмуляцией этого на мультиплексорах, что приведёт к громоздкой реализации и кучи предупреждений при синтезе. Лучше так не делать. Распределённая память в ПЛИС Альтеры встречается, AFAIK, только во "взрослых" ПЛИС семейств Stratix III/IV. В Циклонах и уж тем более максах её нет. Т.ч. если нужна распределённая память, посмотрите на Спартанцев от Зайлинкса, там есть варианты с встроенной загрузочной флешкой (почти как Макс 2). Правда, внутренних буферов с тремя состояниями вы там тоже не найдёте - Зайлинкс перестал ставить такие буфера в ПЛИС нижней ценовой категории (Спартанцы), начиная со Спартан 3. Они есть в Вёртексах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SIA 0 8 октября, 2011 Опубликовано 8 октября, 2011 · Жалоба В ПЛИС Altera нету аппаратной поддержки линий с тремя состояниями, кроме как на внешних пинах (т.е. внутри нету), поэтому всякая попытка описать такую логику будет сопровождаться эмуляцией этого на мультиплексорах, что приведёт к громоздкой реализации и кучи предупреждений при синтезе. Лучше так не делать. Распределённая память в ПЛИС Альтеры встречается, AFAIK, только во "взрослых" ПЛИС семейств Stratix III/IV. В Циклонах и уж тем более максах её нет. Т.ч. если нужна распределённая память, посмотрите на Спартанцев от Зайлинкса, там есть варианты с встроенной загрузочной флешкой (почти как Макс 2). Правда, внутренних буферов с тремя состояниями вы там тоже не найдёте - Зайлинкс перестал ставить такие буфера в ПЛИС нижней ценовой категории (Спартанцы), начиная со Спартан 3. Они есть в Вёртексах. За информацию спасибо. Но я правильно понимаю, что на мой вопрос о том, как лучше реализовать требуемое именно на MAX-II ответа нет или он отрицательный? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Beby 8 8 октября, 2011 Опубликовано 8 октября, 2011 · Жалоба Правда, внутренних буферов с тремя состояниями вы там тоже не найдёте - Зайлинкс перестал ставить такие буфера в ПЛИС нижней ценовой категории (Спартанцы), начиная со Спартан 3. Они есть в Вёртексах. Поправлю: оби были в Virtex-2. Начиная с Virtex-4 / Spartan-3 внутренних BUTF не стало ! to SIA: А вместо MAX-II посмотрите на Spartan-3AN - он тоже имеет внутреннюю конфигурационную память - может он подойдёт лучше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 65 8 октября, 2011 Опубликовано 8 октября, 2011 · Жалоба Но я правильно понимаю, что на мой вопрос о том, как лучше реализовать требуемое именно на MAX-II ответа нет или он отрицательный? Я не очень представляю вашу задачу. С одной стороны вы говорите, что имеется обилие многовходовых мультиплексторов, с другой про шину с тремя состояниями. Если я правильно понимаю, то вы имеете в виду, что у вас есть куча [однотипных] блоков, работающих на общий приёмник, и это тянет неслабый мультиплексор, который вы хотели заменить шиной с тремя состояниями. Если так, то насчёт шины с тремя состояниями ответ отрицательный - если нет аппаратной поддержки внутри (а её нет), то ничего хорошего не получится - будет тоже неслабый мультиплексор, может быть даже ещё хуже, чем описанный явно. Поэтому, если Макс2 не тянет по ресурсам, то ничего не поделать - значит, не подходит он в реализации этой задачи. Памяти, кстати, в Макс2 тоже нету. Как и триггеров в элементах ввода-вывода. В общем, кастрат это. :) Посмотрите другие решения. Либо честную FPGA поставить, либо более толстый чип. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SIA 0 8 октября, 2011 Опубликовано 8 октября, 2011 · Жалоба Я не очень представляю вашу задачу. С одной стороны вы говорите, что имеется обилие многовходовых мультиплексторов, с другой про шину с тремя состояниями. Если я правильно понимаю, то вы имеете в виду, что у вас есть куча [однотипных] блоков, работающих на общий приёмник, и это тянет неслабый мультиплексор, который вы хотели заменить шиной с тремя состояниями. Правильно. Блок регистров. Замена напрашивается или на маленькую память, или на TS шину. Если так, то насчёт шины с тремя состояниями ответ отрицательный - если нет аппаратной поддержки внутри (а её нет), то ничего хорошего не получится - будет тоже неслабый мультиплексор, может быть даже ещё хуже, чем описанный явно. Поэтому, если Макс2 не тянет по ресурсам, то ничего не поделать - значит, не подходит он в реализации этой задачи. Памяти, кстати, в Макс2 тоже нету. Как и триггеров в элементах ввода-вывода. В общем, кастрат это. :) Судя по всему, на редкость бестолковый, кстати - когда в ~1000 с гаком LE не влезает дизайн, прототип которого умещался в CPLD с 288 триггерами. Честно говоря, не предполагал такого идиотизма от альтеровских разработчиков - делать FPGA и без поддержки трехстабильных шин, и без конверсии LUT в распределенную память. Посмотрите другие решения. Либо честную FPGA поставить, либо более толстый чип. Ограничение по размерам корпуса. Нужен TQFP-100 с шагом 0.5, сигнальных выводов не менее 76, BGA ставить нельзя. Единственное, что я знаю действительно приличное в этом форм-факторе - Lattice MachXO2 1200/2000. Но это все "на будущее". Сейчас нужно как-то выкрутиться с имеющимися MAX-II, обкарнывая все, что только можно. Поэтому и спрашиваю, что на этих чипах реализуется эффективно, а что - нет. Т.ч. если нужна распределённая память, посмотрите на Спартанцев от Зайлинкса, там есть варианты с встроенной загрузочной флешкой (почти как Макс 2). Учтем. Spartan 3AN в рассмотрение включили. Правда, внутренних буферов с тремя состояниями вы там тоже не найдёте - Зайлинкс перестал ставить такие буфера в ПЛИС нижней ценовой категории (Спартанцы), начиная со Спартан 3. Они есть в Вёртексах. Этого я с технической точки зрения не понимаю - ключи-то все равно в кристалле есть, ими все межсоединения конфигурируются. Смысл отключать к ним доступ и урезать возможности (т.е. снижать конкурентоспособность) продукта? Поправлю: оби были в Virtex-2. Начиная с Virtex-4 / Spartan-3 внутренних BUTF не стало ! to SIA: А вместо MAX-II посмотрите на Spartan-3AN - он тоже имеет внутреннюю конфигурационную память - может он подойдёт лучше. Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 65 8 октября, 2011 Опубликовано 8 октября, 2011 · Жалоба Судя по всему, на редкость бестолковый, кстати - когда в ~1000 с гаком LE не влезает дизайн, прототип которого умещался в CPLD с 288 триггерами. Честно говоря, не предполагал такого идиотизма от альтеровских разработчиков - делать FPGA и без поддержки трехстабильных шин, и без конверсии LUT в распределенную память. Ну, FPGA c тристабильными шинами - это нынче редкость, вон меня поправили, что и в толстых ПЛИСах этого нынче нету. Дороговато получается, видимо. Распределённая память - штука хорошая, но тоже к месту, и не так уж много случаев, когда без неё не обойтись. К тому же, она тоже не безплатно даётся - ведь нужно к LUT помимо загрузочного интерфейса, который позволяет в неё писать, приделать оный, который позволит это делать на рантайме. Очевидно, что делать каждую LUT такой слишком расточительно, а немало дизайнов прекрасно обходятся без такой памяти - большие объёмы лежат в блоковой, а где надо мелкие, там и на триггерах можно (хотя это, конечно, транжирство, но как правило в ПЛИС достаточно ресурсов, чтобы позволить себе несколько таких блочков памяти). Ограничение по размерам корпуса. Нужен TQFP-100 с шагом 0.5, сигнальных выводов не менее 76, BGA ставить нельзя. Единственное, что я знаю действительно приличное в этом форм-факторе - Lattice MachXO2 1200/2000. Я бы заюзал обычную FPGA (в таком корпусе их есть полно) - там только загрузчик добавляется (а если есть на плате процессор, то можно и им грузить битстрим). В ней есть просто блоковая память, в которой успешно разместится сколько угодно регистров. Если грузить нечем, а проца нет, то Spartan3N - FPGA со встроенной загрузочной флешью. Но это все "на будущее". Сейчас нужно как-то выкрутиться с имеющимися MAX-II, обкарнывая все, что только можно. Поэтому и спрашиваю, что на этих чипах реализуется эффективно, а что - нет. Max II - это в чистом виде Cyclone I, без внутренней памяти, без аппаратных умножителей, без триггеров в I/O элементах со встроенной загрузочной флешью. На нём прилично реализуется обычная логика синхронного дизайна (счётчики, регистры, сумматоры и т.п.), требующая обилия триггеров, но если нужна память или скоростные интерфейсы с внешним миром - это не сюда. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SIA 0 8 октября, 2011 Опубликовано 8 октября, 2011 · Жалоба Spartan 3AN, как и большинство распространенных FPGA, отпадает сразу - минимальный корпус TQ144 (BGA нельзя). Нужен именно TQ100, собственно, из-за него весь сыр-бор, в TQ144 есть CPLD не то что на 288, а и на 512 триггеров, в которые существующий дизайн влезает с запасом. За советы и инфу спасибо. Беру тайм-аут. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 8 октября, 2011 Опубликовано 8 октября, 2011 · Жалоба Нужен TQFP-100 с шагом 0.5, сигнальных выводов не менее 76, BGA ставить нельзя Если не секрет, почему нельзя? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SIA 0 8 октября, 2011 Опубликовано 8 октября, 2011 · Жалоба Если не секрет, почему нельзя? 1. ПЛИС стоит на плате, у которой должна быть толстая медь. Соответственно, проектные нормы - 0.25 мм. А габарит жестко задан, наскребали по долям миллиметра. 2. Надежность в производстве и эксплуатации у BGA все-таки ниже. Max II - это в чистом виде Cyclone I, без внутренней памяти, без аппаратных умножителей, без триггеров в I/O элементах со встроенной загрузочной флешью. На нём прилично реализуется обычная логика синхронного дизайна (счётчики, регистры, сумматоры и т.п.), требующая обилия триггеров, но если нужна память или скоростные интерфейсы с внешним миром - это не сюда. Кстати, в свое время у меня на MAX-II очень прилично получились bit-serial DSP обработчики. Последовательные АЛУ на них реализовывались хорошо. Но тут другой случай. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 8 октября, 2011 Опубликовано 8 октября, 2011 · Жалоба 2. Надежность в производстве и эксплуатации у BGA все-таки ниже. По мне, так с точностью до наоборот. max5 посмотрите. (там вроде бы не использованные le в память можно). А вообще странно, что Вам мах 2 не хватило (в сравнении с альтеровскими чистыми cpld). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SIA 0 8 октября, 2011 Опубликовано 8 октября, 2011 · Жалоба max5 посмотрите. (там вроде бы не использованные le в память можно). А вообще странно, что Вам мах 2 не хватило (в сравнении с альтеровскими чистыми cpld). И мне странно. Было бы понятно - не создавал бы тему. Спасибо за замечание. Если в MAX-V действительно можно использовать LUT как память, и эта фича поддержана - то это должно решить проблему, они почти pin-совместимы. Но экспресс-тест этого не подтвердил, да и в документации указаний не нашлось. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 65 8 октября, 2011 Опубликовано 8 октября, 2011 · Жалоба 2. Надежность в производстве и эксплуатации у BGA все-таки ниже. А вот с этим трудно согласиться. Если BGA правильно припаян, это очень надёжное соединение - прикиньте, корпусок микросхемы висит на куче шариков припоя - там зубами не оторвать! С монтажом, конечно, определённые трудности есть, он требует наличия определённого оборудования и умения. Но это реально не так уж сложно, легко паяется на обычной ремонтной станции с термопрофилями. Или в печке. Можно и феном, но это я не отношу к "нормальной" пайке. Кстати, в свое время у меня на MAX-II очень прилично получились bit-serial DSP обработчики. Последовательные АЛУ на них реализовывались хорошо. Но тут другой случай. Если на MAX II получалось, значит на любой FPGA ещё лучше получится. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться