реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> ПЛИС непонятно работает, хотя в симуляторе всё как надо
dvladim
сообщение Mar 4 2017, 13:46
Сообщение #16


Знающий
****

Группа: Свой
Сообщений: 654
Регистрация: 24-01-07
Из: Воронеж
Пользователь №: 24 737



Цитата(enzaime @ Mar 4 2017, 14:23) *
Сам знаю, что я виноват, но вот потихоньку разбираюсь)

У вас каша в голове. Возьмите хотя бы tutorial от Квартуса и почитайте.
Вкратце последовательность такая: вы пишете RTL код и отлаживаете его в симуляторе.
Затем добавляете временные ограничения (SDC) и синтезируете. Получаете выходной нетлист (vo в Квартусе), файл задержек (SDF) и кучу отчетов.
Можете посмотреть блок схему после синтеза или после размещения - улучшает понимание во что превратилось то, что вы написали в исходниках.
Смотрите отчеты синтеза - обратить внимание на latch, отчеты временного анализа.
Если все устраивает и нет отрицательных slack-ов то всё будет работать на железе.
Выходной нетлист с задержками можете промоделировать - это и будет соответствовать реальному поведению схемы.
PS. расширения я писал для Верилога, для ВХДЛ расширения будут другие.
Go to the top of the page
 
+Quote Post
Flood
сообщение Mar 4 2017, 15:20
Сообщение #17


Знающий
****

Группа: Свой
Сообщений: 702
Регистрация: 8-06-06
Пользователь №: 17 871



Цитата(enzaime @ Mar 4 2017, 12:47) *
Чего так сложно-то??? sad.gif


Ну, сложно - понятие относительное.
В языке C, бывает, нужно выделить память перед тем как начать ей пользоваться и освободить по окончании. По сравнению с, допустим, питоном, это сложно?

ПЛИСоводство - область в целом гораздо менее развитая, чем "обычное" мейнстримовое программирование, а оттого более сложная и менее удобная для программиста. Языки кривоваты, редакторов нормальных почти нет, компиляция занимает часы и может закончиться провалом таймингов. Что ни делай с кодом - сотни варнингов, практически все тулчейны глубоко проприетарные, и т. п. Короче, хардкор.
И это в то время, когда для программистов давным-давно редактор уже чуть ли не сам пишет код, линтер подчеркивает ошибки во время написания, а компилятор переспрашивает, "а вы точно хотите использовать присваивание под if?".

Возможно, ситуация несколько сдвинется в связи с современным хайпом аппаратных ускорителей и общим ростом популярности ПЛИСов. Но достижение того уровня удобства, к которому привыкли сегодняшние программисты, в среде ПЛИСов займет еще многие годы, если вообще будет достигнуто.

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

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

Так что одной правды здесь нет.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Mar 4 2017, 15:45
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



На пальцах:
каждый элемент в схеме, каждое соединение создает задержечку сигнала.
Когада вы симулите RTL вы симулите идеальный вариант без задержечек вообще. Если у вас есть опты, то в 99% случаев этой симуляции хватит вам чтобы предсказать как поведет себя ПЛИС. После какого-то порога постсинтез симмуляцию уже и делать то перестаешь.

Кроме опыта вам нужна еще помщь синтезатора, плейсера и тому подобных утилит. Для этого им нужны констраины, им надо объяснить какие у них есть вводные по времени. Самый основной констраин это период клока. Утилиты размещая элементы учитывают все задержечки и строют схему так чтобы сигнал от элемента до элемента доходил за период клока при любых раскладах температуры и питания. Это гарантия что синхронные схемы после этого заработают ровно как в симуляторе.

После того как схема построена вы можете поглядеть на то что там получилось для этого симулятору нужен еще один файл с этими задержчеками, тот самый sdf файл. Симмулятор вам будет рисовать сигналы добавляя задержечки из sdf файла. Если файл будет не верный то и графики будут не верные, но к счастью этот файл пишите не вы, а его вам даст инструментsm.gif.

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

Но как я и написал выше при правильных констраинах, некотором опыте, вам понадобиться только первый шаг симмуляции RTL.
Go to the top of the page
 
+Quote Post
enzaime
сообщение Mar 4 2017, 16:48
Сообщение #19


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 22-08-14
Пользователь №: 82 609



Во!!! Всё как надо разъяснили, я аж всё понял, чего да как) Всем спасибо)
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th August 2025 - 04:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01442 секунд с 7
ELECTRONIX ©2004-2016