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

Вопрос об особенностях архитектуры MAX-II

1. Вводная инфа.

Есть небольшой проект, типа "glue logick+register block".

Первоначально разрабатывался под ПЛИС с архитектурой CPLD (экономились триггера, а не многовходовая логика).

По ряду причин нужно его перенести на Altera MAX-II.

У которого архитектура, насколько я понимаю, представляет собой "быстрозагружаемую" FPGA (LUT+flip-flop).

На что напоролись - очень много ресурсов стали съедать многовходовые мультиплексоры шин данных.

"Не лезет". При менее чем паре сотен триггеров - дизайн съедает намного больше тысячи LE.

Выходов из положения напрашивалось два

- заменить мультиплексоры на шину с тремя состояниями

или

- регистровые блоки выполнить в виде небольших асинхронных двухпортовых ОЗУ.

 

Насколько я знаю, мелкие ОЗУ должны очень эффективно реализовываться из LUT (которая и представляет собой не что иное, как небольшое ОЗУ).

 

Однако проверка обоих вариантов на небольшом тест-проекте очень сильно озадачила - эффекта от замены mux на двухпортовку или шину практически никакого.

Возможно, на бОльшем проекте разница появится, но перед переделкой хочется получить совет от тех, кто сталкивался с подобной проблемой.

 

2. Собственно вопрос: как в MAX-II лучше всего выполнять регистровые блоки с доступом от двух шин ?

 

3. Попутный вопрос: Правильно ли я понимаю, судя по результатам фиттинга, что или аппаратура этих ПЛИС, или Quartus "не умеет" использовать LUT как распределенную память ?

(если так, то это выглядит очень странно - Xilinx умеет, Lattice - тоже).

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


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

прблема в межсоединениях - надо уйти от муксов, скорее всего проще поставить 2хпортовку. мах2 не та плис куда можно многое впихнуть.

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


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

прблема в межсоединениях - надо уйти от муксов, скорее всего проще поставить 2хпортовку. мах2 не та плис куда можно многое впихнуть.

Так пробовали, правда, на маленьком тесте, толку практически не было. Или эффект "пороговый" ?

Подробнее можно ?

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


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

В ПЛИС Altera нету аппаратной поддержки линий с тремя состояниями, кроме как на внешних пинах (т.е. внутри нету), поэтому всякая попытка описать такую логику будет сопровождаться эмуляцией этого на мультиплексорах, что приведёт к громоздкой реализации и кучи предупреждений при синтезе. Лучше так не делать.

 

Распределённая память в ПЛИС Альтеры встречается, AFAIK, только во "взрослых" ПЛИС семейств Stratix III/IV. В Циклонах и уж тем более максах её нет.

 

Т.ч. если нужна распределённая память, посмотрите на Спартанцев от Зайлинкса, там есть варианты с встроенной загрузочной флешкой (почти как Макс 2). Правда, внутренних буферов с тремя состояниями вы там тоже не найдёте - Зайлинкс перестал ставить такие буфера в ПЛИС нижней ценовой категории (Спартанцы), начиная со Спартан 3. Они есть в Вёртексах.

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


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

В ПЛИС Altera нету аппаратной поддержки линий с тремя состояниями, кроме как на внешних пинах (т.е. внутри нету), поэтому всякая попытка описать такую логику будет сопровождаться эмуляцией этого на мультиплексорах, что приведёт к громоздкой реализации и кучи предупреждений при синтезе. Лучше так не делать.

 

Распределённая память в ПЛИС Альтеры встречается, AFAIK, только во "взрослых" ПЛИС семейств Stratix III/IV. В Циклонах и уж тем более максах её нет.

 

Т.ч. если нужна распределённая память, посмотрите на Спартанцев от Зайлинкса, там есть варианты с встроенной загрузочной флешкой (почти как Макс 2). Правда, внутренних буферов с тремя состояниями вы там тоже не найдёте - Зайлинкс перестал ставить такие буфера в ПЛИС нижней ценовой категории (Спартанцы), начиная со Спартан 3. Они есть в Вёртексах.

За информацию спасибо.

Но я правильно понимаю, что на мой вопрос о том, как лучше реализовать требуемое именно на MAX-II ответа нет или он отрицательный?

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


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

Правда, внутренних буферов с тремя состояниями вы там тоже не найдёте - Зайлинкс перестал ставить такие буфера в ПЛИС нижней ценовой категории (Спартанцы), начиная со Спартан 3. Они есть в Вёртексах.

Поправлю: оби были в Virtex-2. Начиная с Virtex-4 / Spartan-3 внутренних BUTF не стало !

 

to SIA: А вместо MAX-II посмотрите на Spartan-3AN - он тоже имеет внутреннюю конфигурационную память - может он подойдёт лучше.

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


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

Но я правильно понимаю, что на мой вопрос о том, как лучше реализовать требуемое именно на MAX-II ответа нет или он отрицательный?

Я не очень представляю вашу задачу. С одной стороны вы говорите, что имеется обилие многовходовых мультиплексторов, с другой про шину с тремя состояниями. Если я правильно понимаю, то вы имеете в виду, что у вас есть куча [однотипных] блоков, работающих на общий приёмник, и это тянет неслабый мультиплексор, который вы хотели заменить шиной с тремя состояниями. Если так, то насчёт шины с тремя состояниями ответ отрицательный - если нет аппаратной поддержки внутри (а её нет), то ничего хорошего не получится - будет тоже неслабый мультиплексор, может быть даже ещё хуже, чем описанный явно. Поэтому, если Макс2 не тянет по ресурсам, то ничего не поделать - значит, не подходит он в реализации этой задачи.

 

Памяти, кстати, в Макс2 тоже нету. Как и триггеров в элементах ввода-вывода. В общем, кастрат это. :)

 

Посмотрите другие решения. Либо честную FPGA поставить, либо более толстый чип.

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


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

Я не очень представляю вашу задачу. С одной стороны вы говорите, что имеется обилие многовходовых мультиплексторов, с другой про шину с тремя состояниями. Если я правильно понимаю, то вы имеете в виду, что у вас есть куча [однотипных] блоков, работающих на общий приёмник, и это тянет неслабый мультиплексор, который вы хотели заменить шиной с тремя состояниями.

Правильно. Блок регистров.

Замена напрашивается или на маленькую память, или на 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 - он тоже имеет внутреннюю конфигурационную память - может он подойдёт лучше.

Спасибо.

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


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

Судя по всему, на редкость бестолковый, кстати - когда в ~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 элементах со встроенной загрузочной флешью. На нём прилично реализуется обычная логика синхронного дизайна (счётчики, регистры, сумматоры и т.п.), требующая обилия триггеров, но если нужна память или скоростные интерфейсы с внешним миром - это не сюда.

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


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

Spartan 3AN, как и большинство распространенных FPGA, отпадает сразу - минимальный корпус TQ144 (BGA нельзя).

Нужен именно TQ100, собственно, из-за него весь сыр-бор, в TQ144 есть CPLD не то что на 288, а и на 512 триггеров, в которые существующий дизайн влезает с запасом.

За советы и инфу спасибо. Беру тайм-аут.

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


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

Нужен TQFP-100 с шагом 0.5, сигнальных выводов не менее 76, BGA ставить нельзя

 

Если не секрет, почему нельзя?

 

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


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

Если не секрет, почему нельзя?

1. ПЛИС стоит на плате, у которой должна быть толстая медь. Соответственно, проектные нормы - 0.25 мм. А габарит жестко задан, наскребали по долям миллиметра.

2. Надежность в производстве и эксплуатации у BGA все-таки ниже.

 

Max II - это в чистом виде Cyclone I, без внутренней памяти, без аппаратных умножителей, без триггеров в I/O элементах со встроенной загрузочной флешью. На нём прилично реализуется обычная логика синхронного дизайна (счётчики, регистры, сумматоры и т.п.), требующая обилия триггеров, но если нужна память или скоростные интерфейсы с внешним миром - это не сюда.

Кстати, в свое время у меня на MAX-II очень прилично получились bit-serial DSP обработчики.

Последовательные АЛУ на них реализовывались хорошо. Но тут другой случай.

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


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

2. Надежность в производстве и эксплуатации у BGA все-таки ниже.

 

По мне, так с точностью до наоборот.

max5 посмотрите. (там вроде бы не использованные le в память можно).

А вообще странно, что Вам мах 2 не хватило (в сравнении с альтеровскими чистыми cpld).

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


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

max5 посмотрите. (там вроде бы не использованные le в память можно).

А вообще странно, что Вам мах 2 не хватило (в сравнении с альтеровскими чистыми cpld).

И мне странно. Было бы понятно - не создавал бы тему.

Спасибо за замечание.

Если в MAX-V действительно можно использовать LUT как память, и эта фича поддержана - то это должно решить проблему, они почти pin-совместимы.

Но экспресс-тест этого не подтвердил, да и в документации указаний не нашлось.

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


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

2. Надежность в производстве и эксплуатации у BGA все-таки ниже.

А вот с этим трудно согласиться. Если BGA правильно припаян, это очень надёжное соединение - прикиньте, корпусок микросхемы висит на куче шариков припоя - там зубами не оторвать! С монтажом, конечно, определённые трудности есть, он требует наличия определённого оборудования и умения. Но это реально не так уж сложно, легко паяется на обычной ремонтной станции с термопрофилями. Или в печке. Можно и феном, но это я не отношу к "нормальной" пайке.

 

Кстати, в свое время у меня на MAX-II очень прилично получились bit-serial DSP обработчики.

Последовательные АЛУ на них реализовывались хорошо. Но тут другой случай.

Если на MAX II получалось, значит на любой FPGA ещё лучше получится. :)

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


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

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

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

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

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

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

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

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

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

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