nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 27 Apr 2024 17:04



Reply to topic  [ 222 posts ]  Go to page Previous  1 ... 4, 5, 6, 7, 8, 9, 10 ... 15  Next
Как бы потихонечку освоить работу с FPGA 
Author Message
Devil

Joined: 30 Nov 2013 11:08
Posts: 707
Location: WWW
Reply with quote
Lavr wrote:
Это я всё и сам прочитал... но вот касательно конкретной ПЛИС - как она распознает,
что её сейчас будут программировать?

Что-то я не могу понять, в чем именно вопрос ? Ну начала эта CPLD работать, так пускай и работает, пока команда по JTAG не придет - после этого перейдет в нужный режим (программирования, отладки или еще чего)...

Lavr wrote:
Иначе, при подаче питания, она ведь должна начать работать, если в ней прошито устройство?

На всякий случай - если говорить об Altera (просто не знаю, как у других), то конфигурационная память FPGA - это RAM. Т.е. при выключении питания она пропадает. У CPLD - это уже flash (кроме последней серии - Max 10), т.е. после включения питания они сразу готовы к работе, если были ранее прошиты.

Кстати, поэтому я предпочитаю использовать аббревиатуры CPLD и FPGA вместо ПЛИС - иногда эти нюансы существенны.


01 Jul 2016 10:07
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
newold86 wrote:
Lavr wrote:
Это я всё и сам прочитал... но вот касательно конкретной ПЛИС - как она распознает,
что её сейчас будут программировать?
Что-то я не могу понять, в чем именно вопрос ? Ну начала эта CPLD работать, так пускай и работает, пока команда по JTAG не придет - после этого перейдет в нужный режим (программирования, отладки или еще чего)...
В этом именно и есть вопрос: как ПЛИС распознает, что её сейчас будут программировать.

Ну и согласно таблице сигналов интефейса JTAG:
Attachment:
JTAGmode.gif
JTAGmode.gif [ 6.13 KiB | Viewed 7049 times ]

я думаю, что TMS тут ключевой сигнал. Если он не активен, ПЛИС работает, если прошита программой.
Если TMS активен, ПЛИС начинает "слушать" и выполнять команды JTAG.

_________________
iLavr


01 Jul 2016 12:32
Profile
Devil

Joined: 30 Nov 2013 11:08
Posts: 707
Location: WWW
Reply with quote
Lavr wrote:
я думаю, что TMS тут ключевой сигнал. Если он не активен, ПЛИС работает, если прошита программой.
Если TMS активен, ПЛИС начинает "слушать" и выполнять команды JTAG.

Я не понимаю, почему эти вещи противопоставляются друг другу...Ведь FPGA/CPLD вполне успешно может работать, параллельно взаимодействуя по JTAG - например, для отладки. А вообще работе с JTAG и разным видам программирования посвящено ОЧЕНЬ много страниц в handbook - наверное, стоит там прочитать, если какие-то тонкости интересуют...


01 Jul 2016 12:38
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
newold86 wrote:
Я не понимаю, почему эти вещи противопоставляются друг другу...
А кто сказал, что "эти вещи противопоставляются друг другу"? :o

Возможно, это Вам так показалось, но я этого не говорил.
Вопрос:
Lavr wrote:
Как ПЛИС различает, работает она как обычно при подаче питания или её программируют?
На мой взгляд, даже в двоичной логике "или" никогда не было противопоставлением... :ewink:

_________________
iLavr


01 Jul 2016 12:45
Profile
Doomed
User avatar

Joined: 11 Dec 2003 14:34
Posts: 413
Reply with quote
Lavr wrote:
Это я всё и сам прочитал... но вот касательно конкретной ПЛИС - как она распознает,
что её сейчас будут программировать?
Иначе, при подаче питания, она ведь должна начать работать, если в ней прошито устройство?
Вот этот момент мне пока и не понятен... ну а JTAG - да он и есть JTAG... :obye:

Почитал несколько твоих постов по JTAG... я в недоумении, зачем ты придумываешь себе все эти заморочки ?? Нужно запрограммировать плисину ? - ну дык и в чем проблема-то: по JTAG-у, по PS (passive serial) или AS (active serial). Программирование по JTAG-у имеет наивысший приоритет перед PS или AS. CPLD прошивается один раз и просто работает с текущей прошивкой. FPGA надо прошивать каждый раз при включении ее питания. Как войти в режим прошивки (конфигурирования) плиса - почитай в даташите (хэндбуке) данной плисины по теме конфигурирования (может быть отдельная pdf-ка). Подробней, чем описано в хэндбуке, тебе никто ничего не скажет.

_________________
Vasil Ivanov
vasil-i@yandex.ru


01 Jul 2016 13:04
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Vasil Ivanov wrote:
Почитал несколько твоих постов по JTAG... я в недоумении, зачем ты придумываешь себе все эти заморочки ??

Я сам в недоумении, почему "всё это заморочки" ?? :o Мне просто интересно, как это действительно работает.
Ну и я вижу, что есть линия передачи данных в ПЛИС, есть линия приёма данных из ПЛИС,
тактовый сигнал задается внешним устройством, отсюда - только сигнал TMS определяет
режим работы ПЛИС.

А что, "ОЧЕНЬ много страниц в handbook" - против такого "разбора полётов"? :roll:

И я почему-то думаю, что ЧиД будет быстрее китайцев, так что паять вот это всё мне придется самому.
Attachment:
TQFP 144.gif
TQFP 144.gif [ 13.08 KiB | Viewed 7041 times ]

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

_________________
iLavr


01 Jul 2016 13:25
Profile
Devil

Joined: 30 Nov 2013 11:08
Posts: 707
Location: WWW
Reply with quote
Lavr wrote:
Поэтому я тщательно готовлюсь, чтобы не напартачить лишнего...

Ну, для надежности можно взять готовую схему (хотя там все примитивно), например http://www.pyroelectro.com/tutorials/cp ... ematic.gif

Только в данной схеме я не понимаю, почему оставили в воздухе global clear - наводки реально мешают. Если этот вывод посадить, куда надо (не помню, что какой уровень там активен), то схема полностью рабочая.


01 Jul 2016 21:09
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
newold86 wrote:
Ну, для надежности можно взять готовую схему (хотя там все примитивно),
например http://www.pyroelectro.com/tutorials/cp ... ematic.gif
Спасибо большое - схема очень кстати!

Я еще ориентируюсь на построение Макетки для CPLD.
Attachment:
0932716.gif
0932716.gif [ 54.91 KiB | Viewed 7026 times ]


newold86 wrote:
Только в данной схеме я не понимаю, почему оставили в воздухе global clear - наводки ревльно мешают. Если этот вывод посадить, куда надо (не помню, что какой уровень там активен), то схема полностью рабочая.

А вот тут Вы очень вовремя затронули этот вопрос, я как раз спросить собирался про 4 этих "глобальных пина"... :wink:
Ну я из всех мануалов понял что:
Quote:
ПЛИС семейства MAX3000 имеют четыре вывода, закрепленных за глобальными цепями (dedicated inputs). Это глобальные цепи синхронизации сброса и установки в третье состояние каждой макроячейки. Кроме того, эти выводы можно использовать как входы или выходы пользователя для “быстрых” сигналов, обрабатываемых в ПЛИС.
...
В ПЛИС семейства MAX3000 доступно 2 глобальных тактовых сигнала, что позволяет проектировать схемы с двухфазной синхронизацией.
...
dedicated pins могут использоваться как входы общего назначения или входы высокоскоростных глобальных управляющих сигналов (синхронизации - clock, обнуления - clear и разрешения выхода - enable), для каждой макроячейки и контакта ввода/вывода - I/O.

Attachment:
Image128.gif
Image128.gif [ 16.6 KiB | Viewed 7026 times ]

Attachment:
Image129.gif
Image129.gif [ 14.98 KiB | Viewed 7026 times ]

А вот когда смотришь практические схемы, то с этими сигналами - полный разнобой! :o
Чаще всего - кварцевый генератор 20...50 МГц вешают на GCLK1, при этом 3 остальных пина висят в воздухе.
Видел схему, где все 4 dedicated pins висят в воздухе, но её раскритиковали:
Quote:
Старайтесь делать ваше устройство синхронным. ПЛИС не любят асинхронщины. Асинхронщина способствует зависимости работоспособности проекта от таких труднопрогнозируемых условий, как температура, напряжение питания, фаза Луны, направление ветра на Мадагаскаре и пр. В данном случае успешный эксперимент не является критерием истины - ваща система может работать в лаборатории, но сташно глючить у заказчика. Чтобы избежать шаманских плясок над своим устройством, делайте его синхронным.

Значит, хотя бы один сигнал GCLK обязательно нужен?
Внесите ясность, по возможности, с этими dedicated pins?

_________________
iLavr


01 Jul 2016 23:16
Profile
Devil

Joined: 30 Nov 2013 11:08
Posts: 707
Location: WWW
Reply with quote
Lavr wrote:
Значит, хотя бы один сигнал GCLK обязательно нужен?
Внесите ясность, по возможности, с этими dedicated pins?

Если начать с конца, то я не понимаю, как можно оставить тот же global clear в воздухе (именно совсем в воздухе, а не выведенным на разъем, как в приведенной Вами схеме отладочной платки, для последующего подключения). В свое время этот вывод чуть не свел меня с ума - оказалось, что он реагировал на наводки с руки, когда она оказывалась ближе определенного расстояния. В результате, получился не Орион, а терменвокс какой-то. Подтяжка вывода моментально решила проблему, над которой я бился несколько часов.

Насчет GCLK - в общем случае, однозначной необходимости в нем нет. Ведь никто не запрещает делать схемы асинхронными даже на CPLD/FPGA. Только, как уже было написано, это чревато. В принципе, даже в тех же Орионе/Специалисте асинхронное построение вызывало кучу проблем и шаманства на уровне куда-нибудь прицепить какой-нибудь конденсатор, авось заработает. Но там проблема слегка сглаживалась относительно низким быстродействием микросхем, что не позволяло тем же иголкам творить свои грязные дела. А вот быстродействие CPLD/FPGA, особенно современных, такое, что вся эта грязь напрочь убивает работоспособность. Из того же Ориона на CPLD пример - один из узлов сброса счетчика работал по разному после очередной перекомпиляции проекта, даже если изменения были совсем в другой части. Просто где-то слегка менялись пути прохождения сигнала, и этого было достаточно.
Сейчас же все заточено под синхронную схемотехнику - экономить аппаратные ресурсы особо не нужно, а вот получить предсказуемый вариант намного проще. Тот же Quartus прямо заточен под синхронные схемы - только так можно провести полный временной анализ проекта и заранее убедиться, что все задержки будут в пределах допустимого для данной части проекта.
При этом в качестве синхросигнала не обязательно использовать выделенный пин - в принципе, никто не мешает сделать синхронную схему, но при этом подать внешний синхросигнал на обычный GPIO. Однако выделенные пины для синхронизации имеют оптимизированный роутинг, позволяющий доставить тактовый сигнал ко всем (или к четко определенным) частям CPLD/FPGA в пределах предсказуемых задержки/смещения. Без этого, опять таки, произвести полноценный временной анализ проекта либо сложно, либо вообще невозможно.
Правда, для частот уровня Ориона, думаю, разницы особой нет, какой пин выбирать для тактовой частоты.


02 Jul 2016 00:51
Profile
Doomed
User avatar

Joined: 11 Dec 2003 14:34
Posts: 413
Reply with quote
Lavr wrote:
Vasil Ivanov wrote:
Почитал несколько твоих постов по JTAG... я в недоумении, зачем ты придумываешь себе все эти заморочки ??

Я сам в недоумении, почему "всё это заморочки" ?? :o Мне просто интересно, как это действительно работает.

Это актуально, если надо заливать конфу в режиме PS или AS. Если по JTAG-у, то собрал схему и вперед программить. Или тебе надо писать софт, работающий по JTAG-протоколу с плисиной ?. Тогда другое дело. А схемы (обвязка плиса + порт подключения программатора) лучше брать из даташитов девборд, там они проверенные и "железно" работают. Наверняка есть CPLD борда от Терасик-а, воспользуйся ее даташитом :).


P.S. А неиспользуемые выводы плиса, как правило, надо ставить (в настройках проекта) как "входы с Z-состоянием" и больше не заморачиваться, что с ними надо делать и куда подтягивать.

_________________
Vasil Ivanov
vasil-i@yandex.ru


02 Jul 2016 03:03
Profile
Doomed
User avatar

Joined: 11 Dec 2003 14:34
Posts: 413
Reply with quote
newold86 wrote:
Насчет GCLK - в общем случае, однозначной необходимости в нем нет. Ведь никто не запрещает делать схемы асинхронными даже на CPLD/FPGA.

Согласен. И более того, делают ассинхронщину, чаще, чем того хотелось бы.

Quote:
Только, как уже было написано, это чревато. В принципе, даже в тех же Орионе/Специалисте асинхронное построение вызывало кучу проблем и шаманства на уровне куда-нибудь прицепить какой-нибудь конденсатор, авось заработает.

То же самое можно сказать про Спринтер. Там у Ивана тоже хватает ассинхронщины, из-за чего он по нескольку раз компилил проект, пока получится более/менее рабочая прошивка. С его скандаблером та же песня - как он писал, что искал причину, почему после ~двух часов работы у скандаблера сносило крышу. Теперь мне понятно "почему".

_________________
Vasil Ivanov
vasil-i@yandex.ru


02 Jul 2016 03:16
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Vasil Ivanov wrote:
А неиспользуемые выводы плиса, как правило, надо ставить (в настройках проекта) как "входы с Z-состоянием" и больше не заморачиваться, что с ними надо делать и куда подтягивать.

Это я усвоил сразу... :lol: Во всех "пошаговых руководствах для чайников" сразу однозначно указывают: неиспользуемые выводы в проекте обозначить как "входы с Z-состоянием" :exclaim:


newold86 wrote:
При этом в качестве синхросигнала не обязательно использовать выделенный пин - в принципе, никто не мешает сделать синхронную схему, но при этом подать внешний синхросигнал на обычный GPIO.

То есть просто использовать этот внешний синхросигнал с обычного IO в качестве синхронизирующего
и во всей разрабатываемой по синхронному принципу схеме самому использовать для синхронизации именно его?

А то встречалась рекомендация (если я правильно её понял), что внешний синхросигнал с обычного
GPIO можно мультиплексором перенаправить на ту же самую линию GCLK внутри ПЛИС ?

newold86 wrote:
Однако выделенные пины для синхронизации имеют оптимизированный роутинг, позволяющий доставить тактовый сигнал ко всем (или к четко определенным) частям CPLD/FPGA в пределах предсказуемых задержки/смещения. Без этого, опять таки, произвести полноценный временной анализ проекта либо сложно, либо вообще невозможно.

То есть, правильно ли я понимаю мысль? --- Подача внешних 20...50МГц на вход, скажем, GCLK1
ещё не делает разрабатываемую тобой схему синхронной?

Чтобы разрабатываемая схема была синхронной - надо самому строить её так, чтобы после некоторого
асинхронного участка результаты защелкивались бы в регистры по этому самому GCLK1 или его произодным?
(к примеру - сделанному внутри ПЛИС GCLK1/2)

_________________
iLavr


02 Jul 2016 06:10
Profile
Devil

Joined: 30 Nov 2013 11:08
Posts: 707
Location: WWW
Reply with quote
Lavr wrote:
Vasil Ivanov wrote:
А неиспользуемые выводы плиса, как правило, надо ставить (в настройках проекта) как "входы с Z-состоянием" и больше не заморачиваться, что с ними надо делать и куда подтягивать.

Это я усвоил сразу... :lol: Во всех "пошаговых руководствах для чайников" сразу однозначно указывают: неиспользуемые выводы в проекте обозначить как "входы с Z-состоянием" :exclaim:

Я не уверен, что, например, вход global clear можно настройками проекта притянуть куда-то - скорее всего, придется использовать внешнее подключение

Lavr wrote:
newold86 wrote:
При этом в качестве синхросигнала не обязательно использовать выделенный пин - в принципе, никто не мешает сделать синхронную схему, но при этом подать внешний синхросигнал на обычный GPIO.

То есть просто использовать этот внешний синхросигнал с обычного IO в качестве синхронизирующего
и во всей разрабатываемой по синхронному принципу схеме самому использовать для синхронизации именно его?

Можно, но зачем ? Как я уже говорил, GCLK оптимизирован для использования в качестве тактового, не вижу причин использовать для этого обычные GPIO - и времянки хуже, и универсальные ноги впустую тратятся, которых всегда не хватает...

Lavr wrote:
А то встречалась рекомендация (если я правильно её понял), что внешний синхросигнал с обычного
GPIO можно мультиплексором перенаправить на ту же самую линию GCLK внутри ПЛИС ?

Думаю, там о чем-то другом шла речь - потому что в таком виде это ОЧЕНЬ странная рекомендация. Не только не понятен ее смысл, но еще я не уверен, что на вход GCLK можно что-то подать изнутри самой микросхемы - как правило, весь смысл этого входа в подаче на него внешнего тактового сигнала.

Lavr wrote:
newold86 wrote:
Однако выделенные пины для синхронизации имеют оптимизированный роутинг, позволяющий доставить тактовый сигнал ко всем (или к четко определенным) частям CPLD/FPGA в пределах предсказуемых задержки/смещения. Без этого, опять таки, произвести полноценный временной анализ проекта либо сложно, либо вообще невозможно.

То есть, правильно ли я понимаю мысль? --- Подача внешних 20...50МГц на вход, скажем, GCLK1
ещё не делает разрабатываемую тобой схему синхронной?

Наверное, ранее я не совсем четко выразил мысль - сам по себе GCLK ВООБЩЕ никакого отношения к синхронности/асинхронности не имеет. Синхронной схему делает дизайн, а чем тактировать - дело вторичное (думаю, сами это знаете).

Lavr wrote:
Чтобы разрабатываемая схема была синхронной - надо самому строить её так, чтобы после некоторого
асинхронного участка результаты защелкивались бы в регистры по этому самому GCLK1 или его произодным?
(к примеру - сделанному внутри ПЛИС GCLK1/2)

Ну, это уж совсем упрощенный подход, да и тактировать, как раньше сказал, не обязательно от GCLK или его производных.

А вообще настоятельно рекомендую почитать приложенный файл:

Attachment:
synch.pdf [478.8 KiB]
Downloaded 338 times


02 Jul 2016 09:14
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
newold86 wrote:
Lavr wrote:
newold86 wrote:
Однако выделенные пины для синхронизации имеют оптимизированный роутинг, позволяющий доставить тактовый сигнал ко всем (или к четко определенным) частям CPLD/FPGA в пределах предсказуемых задержки/смещения. Без этого, опять таки, произвести полноценный временной анализ проекта либо сложно, либо вообще невозможно.

То есть, правильно ли я понимаю мысль? --- Подача внешних 20...50МГц на вход, скажем, GCLK1
ещё не делает разрабатываемую тобой схему синхронной?

Наверное, ранее я не совсем четко выразил мысль - сам по себе GCLK ВООБЩЕ никакого отношения к синхронности/асинхронности не имеет. Синхронной схему делает дизайн, а чем тактировать - дело вторичное (думаю, сами это знаете).

Я исходил из вот этой схемы, задавая этот вопрос:
Image
На выходе каждого LAB есть возможность подключить D-триггер, "защелкивающий" по GCLK.
Если разрешить этот триггер и подачу на него GCLK, то в некотором смысле результат работы
узла будет синхронным, и подавит всякие иголки и прочие "неприятности", возникшие в части
комбинационной логики.


newold86 wrote:
Lavr wrote:
Чтобы разрабатываемая схема была синхронной - надо самому строить её так, чтобы после некоторого
асинхронного участка результаты защелкивались бы в регистры по этому самому GCLK1 или его произодным?
(к примеру - сделанному внутри ПЛИС GCLK1/2)

Ну, это уж совсем упрощенный подход, да и тактировать, как раньше сказал, не обязательно от GCLK или его производных.

Ну я вот просто пытаюсь проанализировать Ваш же дизайн (чисто в учебных целях):
Attachment:
12.gif
12.gif [ 94.65 KiB | Viewed 7005 times ]

Я вижу на нём:
1. Вы поставили разъём для JTAG (ну как и положено).
2. Вы сделали из +5В пониженное питание для ПЛИС.
3. Вы прицепили внешний задающий генератор (возможно, 50МГц ? )

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

А потом - Вы ввели в свой дизайн некие элементы синхронности, или прицепить генератор
потребовали всякие добавки в проект типа внутреннего встроенного контроллера и т.п. ?

_________________
iLavr


02 Jul 2016 09:58
Profile
Devil

Joined: 30 Nov 2013 11:08
Posts: 707
Location: WWW
Reply with quote
Lavr wrote:
3. Вы прицепили внешний задающий генератор (возможно, 50МГц ? )

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

А потом - Вы ввели в свой дизайн некие элементы синхронности, или прицепить генератор
потребовали всякие добавки в проект типа внутреннего встроенного контроллера и т.п. ?

Иногда нужно следовать самому простому объяснению :) Генератор там на 12 или сколько там нужно Ориону МГц. Внешний - потому что внутреннего у CPLD (да и у FPGA) нет.


02 Jul 2016 10:57
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 222 posts ]  Go to page Previous  1 ... 4, 5, 6, 7, 8, 9, 10 ... 15  Next

Who is online

Users browsing this forum: No registered users and 61 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.