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

Синтез асинхронных цифровых схем

Приветствую!

"И опыт, сын ошибок трудных ..."

Описываем  нужный функционал  RS триггера на Verilog 

(* keep_hierarchy="yes" *)
module RS (
  output bit  q,
  input  wire r, //
  input  wire s  //
  );

  always @(r, s) begin
    case ({r, s})
      2'b01   : q <= 1'b0;
      2'b10   : q <= 1'b1;
      default : q <= q;
    endcase
  end
endmodule

И пробуем синтезировать его в синтезаторе для выбранной FPGA. Смотрим что в итоге получается (Vivado 19.2,  Virtex Ultrascale) :

RS.thumb.png.530a2a8c08573092fa52e31facda5262.png

Как видно  для создания RS защелки  используется  встроенный триггер  в режиме latch + LE. 

Удачи! Rob.

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


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

1 hour ago, Strob said:

Если не использовать синхронные конструкции, то результат будет асинхронным. Другое дело, что verilog все же позволяет абстрагироваться от деталей реализации, сконцентрировавшись на описании поведения схемы. Т.е. при правильном описании, работа схемы не будет отличаться от эталона, вне зависимости от наличия тех или иных компонентов на кристалле.

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

так же использование языков высокого уровня вряд ли возможно (есть подходы, когда заменяют после синтеза триггера на какие-то асинхронные ячейки с памятью, но это не труЪ путь), синтез будет выкидывать всю "научную новизну" из описания, так как с его точки зрения это избыточная логика, которую можно выкинуть

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


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

30 minutes ago, yes said:

синтез будет выкидывать всю "научную новизну" из описания, так как с его точки зрения это избыточная логика, которую можно выкинуть

Для таких случаев есть fpga editor в ise. Можно контролировать все... Вообще все. Мне пришлось в нем плотно сидеть вручную рисуя hard macro. Очень "интересный" опыт. Крайне НЕ рекомендую...

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


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

4 hours ago, KA3AKOB said:

Реализация схем аналогичных тем, что когда-то паялись на 133 серии. Но уже на новой технологической основе и новыми средствами проектирования.

Не надо этого делать. Схемы на 133 серии отличались очень демократичным отношением к глитчам, т.к. их быстродействие (а точнее 'медленнодействие') было такое, что все эти глитчи счастливо проглатывались. На FPGA этот номер не пройдёт - они все иголки вылавливают на ура, а 'припаять кондюк на ножку' (любимый способ подавления слишком толстых иголок) там тоже не пройдёт.

FPGA сапры тут тоже не помогут - не расчитанны они на такие методы проектирования.

 

Если я правильно помню, тут уже кто рассказывал страшилку о переводе аэродрома из 155 серии на FPGA - после прямого переноса получили абсолютно точную, и так же абсолютно неработающую копию :cray2:Закончилось созданием с нуля синхронного дизайна по спекам исходного аэродрома.

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


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

2 часа назад, prostoRoman сказал:

 

Считаю Ваш вопрос нужно разделить на две части:

1. Академический: Можно ли сделать RS-триггер на одной логической ячейке современной ПЛИС. Я думаю да. Но в этом вопросе я новичок.

2. Прикладной: исходите из своей задачи и ресурсов. В самом общем смысле и в самом грубом приближении, даже при таком расточительном подходе что я предлагаю*, даже (лучшая) отечественная ПЛИС 5578ТС064, аналог "морально взрослой" (устаревшей?) EP3C55 ф. Altera  с 55 тысячами вентилей (4 вх. LUT +  D-триггер) заменит порядка 1000 корпусов м/с стандартной логики.

 

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

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

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


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

54 minutes ago, KA3AKOB said:

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

Это Вы, конечно, в жёстких условиях оказались)

 Я свой первый проект строил на 5576ХС2 (аналог EPF8282А) с 208 LE. Заменил примерно 50 корпусов логики 1554 @48МГц.

Как раз, кстати, более половины корпусов - RS-триггреы.


 

Поделюсь опытом, кстати. Это был мой первый проект на ПЛИС, первый код. Изначально были мысли "перерисовать схему" в MAX+plusII  но недружелюбность графического интерфейса меня убила на финальной стадии. Да и в целом, будучи программистом, я понимал, что рисование не правильный путь.

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

Итого строк 200 кода, примерно 10 входных и 20 выходных сигналов.

Концептуально схема от оригинала отличается дико, я бы сказал. Т.е. даже близко не 1 в 1.


 

Изменено пользователем prostoRoman

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


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

43 минуты назад, KA3AKOB сказал:

Но у меня именно академический интерес.

Увлечение асинхронщиной на плисе у меня кончилось после того как я сравнил асинхронный и синхронный проекты, простенькие: 

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

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

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

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

 

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


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

44 minutes ago, AlexRayne said:

парится с разведением глобального клока

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

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


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

@KA3AKOB   Я на прошлой странице привел ссылку на статьи Лемберского. Чем гадать, почитайте сначала, как другие асинхронные схемы на плис делают.

Изменено пользователем Aleх

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


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

22 часа назад, Yuri124 сказал:

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

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

 

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


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

1 minute ago, AlexRayne said:

В синхронных микрухах - он главная головная боль, и расход энергии/тепловыделение

Можете пояснить насчет "головной боли"? В FPGA и CPLD есть же ресурсы трассировки как раз для глобальных клоков. Насчет тепловыделения - оно же за счет перезаряда емкостей происходит, если логические уровни постоянные - то переключения логики (записи в триггеры противоположного уровня) не происходит, греются только те цепи, которые переключаются - т.е. только клоковые цепи.

Зато голова не болит, что в случае вычисления какой-нибудь сложной логической функции, из которой формируется сигнал CLK какого-нибудь триггера, не появится иголка, которая запишет в этот триггер что-то ненужное или преждевременное.

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


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

У автора сугубо организационные проблемы — он почему-то вынужден экономить блоки, т.е. ему изначально что-то жабоудушенное припаяли и ничего другого не ожидается.

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


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

1 час назад, Yuri124 сказал:

Можете пояснить насчет "головной боли"?

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

АМД экпериментировала с резонансной технологией клока, и сумели разогнать свой камень до 5ггц, за счет того что тепловыделение кристала на треть снизили.

Ну и далтше можно продолжать. Это я о основных мотиваторах современных для перехода на асинхронные дизайны.

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


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

On 2/3/2020 at 7:46 PM, Strob said:

А в чем смысл? Борьба за минимальные задержки? Или перенос старых схем на новое железо?

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

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


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

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

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

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

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

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

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

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

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

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