Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: CPLD EPM7032SLC44
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
pwn
Hi All

Есть простенький проект на EPM7032SLC44, в который упакована небольшая городушка из одного синхронного счетчика на 8 разрядов и кучки триггеров, которая если ее делать на 74-й логие заняла бы десяток-другой корпусов. В общем примитивно и ничего выдающегося. Проект вполне помещается в эту CPLD (занимает 20 макроячеек из 32) и все было прекрасно пока я не задействовал почти все имеюшиеся i/o пины (остался один в резерве). И тут оказалось, что просто так от балды назначать пины на ноги CPLD уже не прокатывает - итог действа варьируется от удачной компиляции в 20 макроячеек до варнингов что компилятору пришлось дополнительно назначить кучку LCELL либо вааще ошибке компиляции так как нет возможности развести тот или иной пин. Я догадываюсь корень зла в том, что ресурсов у этой ПЛИС немного и всего два логических блока. Соответственно часть пинов напрямую доступна одному блоку, а часть другому, и если я начинаю назначать пины от балды, напимер когда половина счетчика использует выходы одного лог. блока а вторая половина выходы другого, то компилятор запросто может упереться в нехватку линий в PIA и скомпилировать проект не сможет. Из сего следует как я понимаю что пины надо назначать не тупо, а так чтобы не создавать компилятору лишних проблем с последующей трассировкой. Это как бы не проблема, но я нигде не нашел в датшите инфы какой пин у сабжа какому лог. блоку принадлежит. Где это можно посмотреть? Или вопрос как-то иначе решается? Сейчас у меня этап разводки PCB, при этом хотелось бы осмысленно тасовать функционал выводов а не методом тыка и последующей перекомпиляции решать вопрос соберется проект при такой разводке или нет

PS В ПЛИС я чайник. Но моих скромных знаний хватает на то чтобы накидать прокет в блочном редакторе, назначить пины и прошить плисину байтбластером. И даже как-то заставить это правильно работать. Бурить языки ттипа *log *DL я пока не стал так как мне кажется для простого проекта это не требуется.
PPS Именно EPM7032SLC44 выбрана потому, что а) они у меня есть б) так как будет стоять в силовом девайсе 5-и вольтовая версия предпочтительнее. Так понимаю что если взять EPM7064SLC44 то подобной проблемы с пинами не возникнет, так как лог. блоков уже 4 и уж 20 макроячеек компилятор в ней по любому разведет, но у меня их нет и они ощутимо дороже. Проект накидан в квартусе 9.1 веб эдишен, его так понимаю вполне достаточно для этой CPLD
des00
Цитата
Я догадываюсь корень зла в том, что ресурсов у этой ПЛИС немного и всего два логических блока

можно было просто даташит глянуть %) дело в том что триггеры у этого семейства в пинах стоят. поэтому и связь такая. лучше всего собрать проект при нулевых пинах и взять те что предложит квартус.


ЗЫ. На некоторые пины квартус ставит метку Must not be connected. Будьте осторожны %)
pwn
Цитата(des00 @ May 29 2012, 21:14) *
можно было просто даташит глянуть %) дело в том что триггеры у этого семейства в пинах стоят. поэтому и связь такая.
Но веть у той же 7064 триггеров в два раза больше чем пинов, как то они меж собой делят их sm.gif
Цитата
лучше всего собрать проект при нулевых пинах и взять те что предложит квартус
У меня он сам не назначает выводы, пока я в планере не расставлю. Наверное где-то в сетапе нада галочку поставить, но где я не знаю. И опять же, хочется понимать что делаешь а не надеяться на мудрость компилятора. Вот я щас при таком раскладе разведу PCB, а потом если вдруг возникнет нужда внутри что нить куда нить подвинуть в пределах оставшихся 12 макроячеек, то окажется что при такой трассировке PCB проект уже не собирается. И что тогда, опять доверится квартусу а потом скальпель плюс МГТФ? Не вдохновляет и хотелось бы сего избежать.
Цитата
ЗЫ. На некоторые пины квартус ставит метку Must not be connected. Будьте осторожны %)
Не сталкивался. Что это такое?
des00
Цитата(pwn @ May 29 2012, 12:24) *
Но веть у той же 7064 триггеров в два раза больше чем пинов, как то они меж собой делят их sm.gif

а там не все пины чипа на корпус разварены + нужно учесть что есть специальные входы %)
Цитата
У меня он сам не назначает выводы, пока я в планере не расставлю... Не сталкивался. Что это такое?

у вас должен быть отчет о пинах и их соединениях в нем написано какие режимы стоят на пинах и что с этим делать. Всякие входные сигналы нужно задать, а выходные пусть ква назначит. Рекомендациям относительно пинов на этом семействе желательно соблюдать, что бы потом не было мучительно больно %)
maksimp
Цитата(pwn @ May 29 2012, 21:09) *
но я нигде не нашел в датшите инфы какой пин у сабжа какому лог. блоку принадлежит.

Эту информацию можно выкопать из отчётов Квартуса после компиляции. Попробуйте запустить из меню Tools инструмент Equations Writer или как-то так он называется. В отчёт компиляции добавится соответствующий раздел, там будет написано что сигнал такой-то на LCxx. Первыё 16 хх - первый блок, следующие 16 хх -второй блок. Кажется так, здесь Квартуса у меня нет проверить не могу.
pwn
Цитата(maksimp @ May 29 2012, 21:39) *
Эту информацию можно выкопать из отчётов Квартуса после компиляции. Попробуйте запустить из меню Tools инструмент Equations Writer или как-то так он называется.
Такого инструмента не нашел, видимо потому что квратус старый (9.1) и веб эдишен. Но порывшись в отчете компиляции во вкладке Fitter похоже нашел именно то что требуется
Нажмите для просмотра прикрепленного файла
Это для входов. И рядом такая же табличка для выходов. Спасибо. Щас я его быстренько выведу на чистую воду и распланирую ноги так, чтобы компилятор не создавал мне проблем а я ему biggrin.gif
maksimp
Цитата(pwn @ May 29 2012, 22:20) *
Такого инструмента не нашел, видимо потому что квратус старый (9.1) и веб эдишен.

У меня как раз на точно таком Квартусе это было. Там в меню Tools ещё подменю есть, и может в нём этот Equations Writer.
pwn
Цитата(maksimp @ May 29 2012, 22:28) *
У меня как раз на точно таком Квартусе это было. Там в меню Tools ещё подменю есть, и может в нём этот Equations Writer.
Не нашел, да и видимо не надо уже. Оказалось все просто - с 4-го по 21-й пин это 1-й блок, с 24 по 41-й это 2-й блок, 2,1,44,43 - глобальные входы. Пины JTAG-а не в счет и их так понимаю лучше не трогать чтобы не лишиться возможности прошивать байтбластером. Они правда раскиданы по всем 4-м сторонам (нет бы собрать рядом до кучи весь JTAG 01.gif mad.gif ) и пин планнер вроде бы как позволяет JTAG на другие ноги назначить, но рисковать как-то совсем не хочется, тем паче что нет никого рядом у кого был бы параллельный программатор. А так я его бы с радостью переназначил на 4,2,1,44 выводы (чтобы не пришлось по всей PCB собирать до кучи на JTAG конектор) а его выводы поюзал бы под свои нужды. Но сойдет и так. Переназначил выводы и компилятор без каких либо криков и возмущений скомпилил все в 20 макроячеек и вроде как все работает biggrin.gif
maksimp
Посмотрел, это находится в меню Processing -> Start -> Start Equation Writer (Post-fitting). Но ваше решение тоже вполне.
pwn
А по JTAG входам может кто подсказать - реально ли их переселить с тех ног где они по дефолту куда нить еще и проделать это байтбластером? Типа как перконфигурить, а потом тем же бластером перешивать но зацепившись на назначенные? Ну очень уж неудобно их по дефолту назначили... Или все же если нет желания выкинуть плисину (программатора в радиусе ближайших ста миль нет) то лучше не извращаться?
Alex11
JTAG ноги не переназначаются. Их можно только запретить и назначить как IO. Но тогда останетесь без бластера.
pwn
Цитата(Alex11 @ Jun 1 2012, 02:26) *
JTAG ноги не переназначаются. Их можно только запретить и назначить как IO. Но тогда останетесь без бластера.
Спасибо, теперь вопросов нет. А то квартусовский пинпланер не возражает если JTAG назначить куданить еще, но назанчить и потом прошить и глянуть что выйдет как-то стремновато biggrin.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.