SPARTAN 3 первые шаги с FPGA от Xilinx (вопросы по ISE)

  • Автор темы Васисуалий
  • Дата начала
В

Васисуалий

Команда форума
Регист
11 Ноя 2005
Сообщения
4.036
И так продолжение. Начало было положено в соседней теме ( https://monitor.net.ru/forum/threads/543998/ ) и там я собрал простой и работоспособный JTAG для Спартанца. Ну собственно оный интерфейс должен подходить к любой микросхеме от Xilinx, но мне важно подключить его к конкретной микросхеме и к конкретной макете. В качестве макетки используется так называемый "Семпл-борт" от "Диджильента" для "Спартанца3" Платка очень простая, пожалуй наверное это самая простая и дешевая макетка, которая может существовать для ПЛИС потому как кроме собственно ПЛИС и микросхемы, кодержащей конфигурацию для этой ПЛИС на плате ничего и нет! Тут я напомню, что ФПГА в своей подавляющей массе не содержат в себе энергонезависимой памяти для собственного конфигурирования при включении питания и для этого рядом с большинством ФПГА на плате живет отдельная энергонезависимая ПЗУ из которой сразу после включения черпает информацию совершенно пустая ФПГА.

Ну само собой, что на плате есть еще несколько стабилизаторов питания, как же без них? И еще есть семь светодиодов и одна (!) кнопка. Есть еще одна, но она соединена с схемой питания и выполняет функцию включения и выключения питания всей макетки и ее никак больше юзать нельзя.

В предьидущей теме я писАл, что макетина эта однако не простая, а реализованное на ней между прочем устройство меня поразило своей шедевральностью! Ну что казалось бы можно слепить на такой простой платочке? А вот можно! Оказывается по умолчанию с завода во внешнюю флешь платы записана не только конфигурация флешь, но и программа для некоего процессора, которого в выключенном состоянии платы на ней просто нет! Этот, так называемый, софт процессор автоматически создается внутри микросхемы ФПГА в момент включения питания по конфигурации из внешней флешь, затем уже в сформированный процессор с этой же флеши заливается программа и запускается на выполнение! :shocked: Вот такая вот фича на ровном месте!

Я уже писАл, что использовать все эти навороты и этот самый Микро-Блейз процессор мне пока не светит! У меня задача пока просто освоиться с ФПГА от Ксилинка в принципе. Ну и попутно освоить среду программирования ISE от того же Ксилинка.

Первая проблема, с которой я сейчас борюсь, связана именно с применением параллельной флешь-памяти на моей плате! Дело в том, что чаще и больше для конфигурации ФПГА применяют последовательные SPI микросхемы в восьмивыводных корпусах. Это удобно т.к. позволяет экономить место на плате. Для такого способа инициализации у ФПГА есть несколько специально выделенных контактов, которые классически подключаются к соответствующим выводам SPI-флешь и все это работает на ура! С подключением параллельной флеши есть проблемы! Надо как то обьяснить ПО, что во-первых флешь то параллельная, во-вторых сколько у нее адресных и данных ног. Пока я в этом не разобрался, однако мир не без добрых людей и после четырех дней медленного и не очень то успешного чтения текстов на моем недоанглийском, я нашел наконец то в сети вразумительное описание на нашем родном! Читаю и разбираюсь.

Вот ссылки >>  ссылка скрыта от гостей 

Там целый большой курс статей по проектированию на ПЛИС от Xilinx и работы в среде ISE.

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

На плате, а точнее у Спартанца есть три ноги, на которые на плате приклеены три джампера. Эти джамперы регулируют режим загрузки и управления микросхемой после включения. Так вот я сегодня во-первых установил режим работы, так называетмый, JTAG. Это означает, что прошивка ПЛИСЫ может происходить не из памяти а сразу из компьютера по проводам JTAG.

В общем мой первый проект "ПЕРЕМЫЧКА" я в ПЛИС все же залил. Т.е. я его залил прямо в плис минуя ПЗУ. Я понимаю, что ели выключить питание, то микросхема забудет мою "ПЕРЕМЫЧКУ", но это очень удобный режим для проектирования и проверки работоспособности проектов не заливая ничего в память...

 
D

dsp155

Участник
Регист
6 Мар 2012
Сообщения
1.369
Преремычка то с инверсией! :)
Поздравляю с удачным стартом, осталось научиться во флешку писать.
 
В

Васисуалий

Команда форума
Регист
11 Ноя 2005
Сообщения
4.036
Ну вот и грабли! Не думал, что инженеры у Ксилинка такие идиоты! Ну честное слово, кто писАл эту ISE несколько неадекватные люди!

Во-первых меня интересует прежде всего графический режим по понятным соображениям - я плохо понимаю VHDL. И вот именно графический режим в ISE не выдерживает никакой критики! Начнем с начала...

Я попытался слепить простой триггер и подключить его вход на кнопку, а выходы, которых у триггера часто два - на светодиоды. Ну и первое, что меня удивило - нельзя подключить вход сигнала сразу к двум входам двух логических элементов в схеме! Почему? Оказывается, что бы подключить вход к двум логическим элементам, надо сначала прогнать сигнал через что то типа инвертора или другой элемент и уже потом раздвоить или как то иначе размножить сигнал! Почему? Зачем так?

Во время рисования система постоянно следит за нарисованным и видимо прямо в реале пишет где то в себе текстовый файл. Ну, это понятно, что моя схема будет сначала переведена в какой нибудь формат типа того же VHDL, а потом уже из этого состояния будет компилироваться прошка для FPGA, но вот зачем постоянно следить за моими действиями? Допустим я взял вход и подключил его к кнопке. Естественно было бы назвать этот вход на схеме как то типа "ТАКТ_СВИЧ" или "КНОБ", ну вот я и назвал так его! В отдельной программе по имени "Планахеад" я указал, что этот мой вход из схемы подключен к такому то выводу физически. Описал там напряжения, тип сигнала и прочее. Теперь, если я вдруг отрываю в процессе творчества от этого входа линию или отключаю вход от какого то логического элемента, то система немедленно переименует его в "НЕПОДКЛЮЧЕННЫЙ ЭЛЕМЕНТ" красного цвета! Затем я могу подключить этот вход к другому логическому элементу, но система не вернет ему мое имя, т.е. он не станет снова "ТАКТ СВИЧ", а будет назван как то типа "XLXN39". Но и это еще не все! Дело в том, что этот XLXN39 не описан в "Планахеад" и при компиляции он никуда не будет подключен физически!

Млядь! Зачем так делать? Неужели нельзя тихо и спокойно подождать, пока я не подключу мой вход куда мне надо? Ну если я забуду это сделать, то можно жн сообщить мне об ощибке тогда, когда станет ясно, что я ошибся, а не суетиться и бегать вокруг меня?

И что я должен подумать теперь о программистах от Ксилинка? Что они нормальные люди? :ma:

Общий вывод напрашивается сам собой - мне уже неоднократно говорили, что Ксилинк по сравнению с Альтерой несколько попахивает! Теперь я самостоятельно в этом убеждаюсь! И проблема не в сложности ПО и не в крутости микрух. Просто программеры у Ксилинка неадекватные, это уже становится очевидно!
 
A

atmicandr

Васисуалий, Вась, напрашивается вывод- пора браться за изучение VHDL или Verilog :)
 
В

Васисуалий

Команда форума
Регист
11 Ноя 2005
Сообщения
4.036
atmicandr, я думаю, вывод будет сделан простой и правильный. Не связываться с Ксилинком в принципе и все! Я же тоже не дете! Я глазами вижу, что в схеме нет никаких ошибок и эти все ограничения только плот больной фантазии или попытка затыкания дыр в тупых программах не менее тупых программистов. Ну почему у Альтеры такие схемы работают на ура, а у Ксилинка возникают проблемы?

А VHDL можно учить и с Альтерой! ;)
 
A

atmicandr

Васисуалий, Вась, чисто ради прикола, попробуй запустить не создав проекта утилиту iMPACT и попробовать втулить ПЛИСине левый файл прошивки, который не создавался в виде проекта на твоей САПР :p
 
В

Васисуалий

Команда форума
Регист
11 Ноя 2005
Сообщения
4.036
А что должно произойти?

Добавлено 04-01-2015 21:19

Я вот тебе сейчас покажу "козью рожу"...

Вот смотри:

Угадай, что произойдет, если я соединю две красные точки, т.е. подключу "такт_свич" к LD7 через инвертор?

Одно движение руки...

 
A

atmicandr

Васисуалий, Тут огромная проблема это сделать. Складывается впечатление что проект, созданный в САПР на одном компе, должен вшиваться в ПЛИС именно на этом компе. Проект полностью "отлизанный" на одном компе инсталлируется в прошивку на другом компе только с кучей разных предупреждений, а если их много, то импакт нихрена не запустится, а это и есть утилита программатора.

Добавлено 04-01-2015 21:24

Васисуалий,
Васисуалий сказал(а):
Угадай, что произойдет, если я соединю две красные точки
оно потребует ввода в схему источника тактового сигнала, если я не ошибаюсь конечно...
 
В

Васисуалий

Команда форума
Регист
11 Ноя 2005
Сообщения
4.036
А вот и нет! Все гораздо прозаичнее! :gigi:

Смотри...

Перевод на нормальный язык нужен? В кратце - невозможно соединить ТАКТ_СВИЧ и LD5 :shocked: :shocked: :shocked:

Это как же, вашу мать, извиняюсь, понимать? (С) :gigi:

 
A

atmicandr

Васисуалий, поищи буферные элементы и добавь между инверторами так, чтоб они были, но логику схемы не меняли
 
В

Васисуалий

Команда форума
Регист
11 Ноя 2005
Сообщения
4.036
Я уже догадался, но я не понимаю, почему бы компилятору самому не сделать то, что он обязан сделать - увязать нужную мне схему с теми ресурсами, которые есть у микросхемы. Если надо где то добавить "пустой" элемент, то пусть он сам его и добавит. Но почему надо на каждом шагу ставить мне подножку? Я просто пытаюсь нарисовать нужную мне схему. Она не противоречит никаким правилам, тем более, что она еще не закончена и никакой компилятор еще не знает, что я хочу нарисовать, но уже на этапе первых трех перемычек пытается загнать меня в свои надуманные рамки и дебильные правила, известные только самим инженерам Xilinx!

И почему такой дебилизм не процветает в ПО для Альтеры?
 
A

atmicandr

Васисуалий сказал(а):
И почему такой дебилизм не процветает в ПО для Альтеры?
Ну эт чтоб жизнь мёдом не казалась
:) А вообще то что разработчики сделали просто даже саму возможность схемного ввода, только за это им можно спасибо сказать. То что для Ксайлинксов всё гораздо хитрее это они конечно выепнулись :)

Добавлено 04-01-2015 21:49

А вообще тебе повезло в том, что начал возиться с продукцией сразу с весьма вкусного камня :p
 
В

Васисуалий

Команда форума
Регист
11 Ноя 2005
Сообщения
4.036
Я бы сказал хитроопее! Я вот только что попытался оторвать выход LD5 от провода и потом снова подключил его туда же и он стал вместо выхода - входом! :shocked: :shocked: :shocked:

Ну это уже просто дурдом! Я его ЛИЧНО РУКАМИ СВОИМИ назначил ВЫХОДОМ!

ПОЧЕМУ ОН СТАЛ ВХОДОМ? КТО ЕМУ РАЗРЕШИЛ? :shocked: :shocked: :shocked:
 
D

dsp155

Участник
Регист
6 Мар 2012
Сообщения
1.369
Васисуалий сказал(а):
А вот и нет! Все гораздо прозаичнее! :gigi:

Смотри...

Перевод на нормальный язык нужен? В кратце - невозможно соединить ТАКТ_СВИЧ и LD5 :shocked: :shocked: :shocked:

Это как же, вашу мать, извиняюсь, понимать? (С) :gigi:
дык ld5 выход получается. :p

 
В

Васисуалий

Команда форума
Регист
11 Ноя 2005
Сообщения
4.036
dsp155, все правильно! Выход, причем подключенный к светодиоду, как и LD7 тоже. Только вот же незадача, там был кусок схемы в котором сигнал брался с выхода триггера и шел одновременно на LD5 и инвертор. Триггер я убрал (убил) и получилось, что вход инвертора подключен к выходу на светодиод. В принципе конкретная ошибка, но! Я пытаюсь соединить сейчас вход "такт_свич" (кнопку) с другим инвертором простой вертикальной перемычкой. Затем я еще нарисую кусок схемы, который все устаканит. Но почему при попытке изобразить перемычку система не дает мне это сделать? Почему ISE решила, что это конечный вариант схемы и в нем есть ошибка, которую немедленно надо пресечь? Да и почему бы не пресечь эту ошибку раньше, т.е. на этапе удаления триггера? Почему еще тогда не рассказать мне, что в результате удаления триггера получится такая вот нелепая связь светодиода и входа инвертора?

Нифига это не нормально! :no:
 
D

dsp155

Участник
Регист
6 Мар 2012
Сообщения
1.369
Васисуалий, хотелось бы увидеть схему (попробую у себя такое изобразить) мож и правда глюк.
или переименовать вход. до соединения с остальными цепями.

какая версия ise (моя 14.7).
 
В

Васисуалий

Команда форума
Регист
11 Ноя 2005
Сообщения
4.036
13.4_1. Ставил с фирменного диска, который шел вместе с макеткой. Естественно версия старая, как и макетка. Просто мне лень было качать все из нета, тем более, что на диске все уже было. Могу обновить, конечно. Может быть даже и обновлю, если мы с ним подружимся. Пока дружба не клеится!

Схема вся на картинке, больше ничего нет. К стати я действительно заменил один инвертор на буфер и оно нормально компилировалось. Сейчас снова попробую воткнуть в схему триггер...

Добавлено 04-01-2015 23:16

Да! Вот загрузилось в чип. Кнопку нажимаешь и два светодиода перемыргиваются... :gigi:

Добавлено 04-01-2015 23:17

Ну ладно! Хорошо.

Тогда кто мне может обьяснить популярно, зачем нужны входные и выходные буферы? И почему нельзя входной сигнал сразу развести на нужное количество входом логических элементов?
 
D

dsp155

Участник
Регист
6 Мар 2012
Сообщения
1.369
Васисуалий, обьясняю: чтобы не глючило...
каждый логический элемент имеет свою вх емкость и сопротивление.
чтобы заряжать ету емкость быстрее и нужен буфер. особеннно если сигнал подается на несколько входов логических элементов.
длительность фронта и спада импульсов будет меньше. примерно как то так
 
В

Васисуалий

Команда форума
Регист
11 Ноя 2005
Сообщения
4.036
dsp155, хорошо. Но мы же не корпуса в ДИПе паяем! Это же внутри микросхемы, разводку для которой делает программа! Почему нельзя учесть этот факт при компиляции и оптимизировать, пусть и с предупреждением? Ты ведь не будешь утверждать, что конечный код программ на АСМе это полный аналог кода на С! Иначе говоря компилятор при компиляции "несколько" подправляет наши команды, так почему нельзя этого же делать с ПЛИС?
 
D

dsp155

Участник
Регист
6 Мар 2012
Сообщения
1.369
Васисуалий сказал(а):
dsp155, хорошо. Но мы же не корпуса в ДИПе паяем! Это же внутри микросхемы, разводку для которой делает программа! Почему нельзя учесть этот факт при компиляции и оптимизировать, пусть и с предупреждением? Ты ведь не будешь утверждать, что конечный код программ на АСМе это полный аналог кода на С! Иначе говоря компилятор при компиляции "несколько" подправляет наши команды, так почему нельзя этого же делать с ПЛИС?
немогу картинку своей схемы вставить щас уменьшу.
входные буферы прога я так думаю автоматом расставляет.
а вот дальше надо самому. компилятору проще. и вроде как
загруженная схема должна соответствовать той которуюнарисовал.
иначе отлавливать странные глюки будет тот еще гемор. ИМХО.
 
В

Васисуалий

Команда форума
Регист
11 Ноя 2005
Сообщения
4.036
dsp155, вот смотри. Я тут схему воткнул и описание ошибки. Вот обьясни, где я тут накосячил?



 
D

dsp155

Участник
Регист
6 Мар 2012
Сообщения
1.369
Васисуалий, не нравятся мне чтото элементы нанд2 и нанд 281
а вообще нафига такой изврат? взять триггер тм2 из библиотеки и все.
насколько понял пытаешся изобразить триггер со счетным входом типа 155тв1
 
В

Васисуалий

Команда форума
Регист
11 Ноя 2005
Сообщения
4.036
А где в библиотеке триггер типа ТМ2? Я там вообще растерялся! Они там называются так, как кому хрен на душу послал! Счас фотку выложу, а пока расскажи, чем они не нравятся? Не свежие? :gigi: Но они тоже из штатной библиотеки. К стати этот внизу называется NAND2B1. Да и вообще, какой нахрен? У нанда впереди может быть выход? Значит как так я неправильно подключил такт свич?
 
D

dsp155

Участник
Регист
6 Мар 2012
Сообщения
1.369
Васисуалий сказал(а):
А где в библиотеке триггер типа ТМ2? Я там вообще растерялся! Они там называются так, как кому хрен на душу послал! Счас фотку выложу, а пока расскажи, чем они не нравятся? Не свежие? :gigi: Но они тоже из штатной библиотеки. К стати этот внизу называется NAND2B1. Да и вообще, какой нахрен? У нанда впереди может быть выход? Значит как так я неправильно подключил такт свич?
тм2 = FD
У меня вот такая хрень получилась.. :gigi:

 
В

Васисуалий

Команда форума
Регист
11 Ноя 2005
Сообщения
4.036
Я так думаю, что программисты Ксилинка сделали все, что бы отвратить от своего ПО любого начинающего, или видевшего другое ПО, например от Альтеры! Ну вот пара картиночко из разряда триггеров...

Как в этом ориентироваться?

Добавлено 05-01-2015 00:45

dsp155 сказал(а):
тм2 = FD
:shocked: :shocked: И в какой закладке мне искать?



 
Верх