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

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

Преамбула: Вопрос по синтезу цифровых последовательностных автоматов на схемах малой интеграции. Известны способы синтеза цифровых автоматов[1]. Большинство сводится к формализации функционирования автомата в виде функции переходов, переводимой в таблицу переходов, и функции выходов. Два вида: автоматы Мили и автоматы Мура. В данном вопросе разница несущественна. Известно, что автомат представляется в виде набора триггеров (как элементов памяти) и комбинационной схемы, реализующей логику переходов из одного состояния схемы в другое. При этом выходы комбинационной схемы являются входами триггеров памяти, а выходы триггеров подаются на входы комбинационной схемы. Мне известен способ создания автоматов Мили на базе асинхронных потенциальных триггеров RS. Закон функционирования которых задаётся формулой Q+ = S or (Q & (not R)) . При этом на входные сигналы накладывается ограничение R & S = 0. То есть одновременно нельзя подавать по  1 на вход и R и S.

Амбула. Собственно мой вопрос: в системах проектирования FPGA триггеры уже есть и в большом числе. Но это D-триггера с синхронным входом С (CLOCK). Возможно ли как-то использовать эти триггера аналогично триггерам RS? Можно ли вход CLOCK использовать как входной, наряду с входом D, а не как синхроимпульс, по фронту которого и происходит запись уровня D в триггер-защёлку?

Не смотря на кажущийся очевидным ответ, вопрос не так-то прост. Речь идёт о концептуальном подходе. В частности, я могу синтезировать схему импульсного dJdK-триггера или D-триггера на базе элементов памяти на RS-триггерах. А возможно ли наоборот: синтезировать потенциальный (то есть управляемый уровнем, а не фронтом импульса) RS-триггер на базе импульсного (точнее, меняющего состояние по фронту синхронного импульса CLOCK) D-триггера?

С уважением,

Казаков С.А.

1. Smith J.R., Roth C.H. Analysis and synthesis of asynchronous sequential networks using edge-sensitive flip-flops. -- IEEE trans., 1971, C-20,8, p.847-855.

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

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


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

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

В зависимости от семейства FPGA  у встроенных триггеров могут быть  асинхронные S/R входы. Хотя в новых семействах триггер в основном имеет 1 асинхронный  вход установки уровень установки которого задается в конфигурации.   Но никто не мешает сделать асинхронный RS "программно" на базе LUT.

Использовать вход CLK триггера для подачи импульсных сигналов  с комбинаторной логики в большинстве семейств FPGA тоже можно - но надо понимать что это чревато  ложными срабатываниями триггера из за глитчей  на выходе комбинаторики. Это же касается и асинхронных входов.  Скорость переключения внутренних триггеров высока и они могут ловить очень короткие глитчи.  

Удачи! Rob.

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


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

Встречный вопрос: а нужно ли?

На сколько я понимаю основная логика ПЛИС стоится на LUT. Заводим на один вывод LUT провод S, на другой R, на третий Q' (выход этого же LUT через локальный интерконнект), а дальше таблица истинности:

S R Q'  Q

0 0 0    0

0 0 1    1

1 0 x    1

0 1 x    0

1 1 x    - запрещено
 

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


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

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

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

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

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


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

Вроде бы большинство ПЛИС может использовать свои триггеры или как flip-flopы, или как защёлки (latch) -- всё по желанию разработчика. Проблема бывает в том, что ПО не всегда способно (а может, и никогда не способно) правильно оценить задержки и т.п. вещи для защёлок -- и тогда гарантировать временные соотношения приходится уже разработчику. Хотя могу и ошибаться.

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


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

Не очень понимаю, что именно нужно тс, но обычно асинхронные схемы требуют наличия в базисе RS защелки, и вот здесь то и возникает затык при использовании ПЛИС. Вроде бы эта проблема как-то решается в Зайлинксах - привел ссылку выше, но в тех ПЛИСах, с чем приходилось работать (Альтера преимущественно), RS защелок не было.

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

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


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

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

30 minutes ago, SII said:

Проблема бывает в том, что ПО не всегда способно (а может, и никогда не способно) правильно оценить задержки и т.п. вещи для защёлок

Как раз обычные задержки считаются без проблем и для latch в том числе. Засада обычно в другом - синтез автоматов на асинхронной логике  создает combinatory loop что обычно и является проблемой как для синтеза так и для обычного timig analysys в FPGA.

Удачи! Rob.

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


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

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

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


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

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

теоретически - а статья говорит о преобразовании триггеров? я так понял из анонса, что подстраивают автомат под триггера - то есть переход 0-1 на С входе используют. когда-то что-то такое видел в статьях - добавляют логику ко входу С и так избегают гонок

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


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

5 часов назад, KA3AKOB сказал:

А возможно ли наоборот: синтезировать потенциальный (то есть управляемый уровнем, а не фронтом импульса) RS-триггер на базе импульсного (точнее, меняющего состояние по фронту синхронного импульса CLOCK) D-триггера?

Ну если подходить по простому, то асинхронный сброс D-триггера используем как вход R, а вход S реализуем путём использования D- и CLK-входа. На D-вход, подаём всегда "1",  а CLK-вход будет входом S. Т.о. R работает по уровню S - по фронту.
Но остаётся главный вопрос - зачем?

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


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

11 часов назад, Jackov сказал:

Ну если подходить по простому, то асинхронный сброс D-триггера используем как вход R, а вход S реализуем путём использования D- и CLK-входа. На D-вход, подаём всегда "1",  а CLK-вход будет входом S. Т.о. R работает по уровню S - по фронту.

Это не годится, ТС интересуют полностью асинхронные решения.

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


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

30 minutes ago, vladec said:

Это не годится, ТС интересуют полностью асинхронные решения.

Предложенное решение асинхронное.

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


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

17 часов назад, prostoRoman сказал:

Встречный вопрос: а нужно ли?

На сколько я понимаю основная логика ПЛИС стоится на LUT. Заводим на один вывод LUT провод S, на другой R, на третий Q' (выход этого же LUT через локальный интерконнект), а дальше таблица истинности:

S R Q'  Q

0 0 0    0

0 0 1    1

1 0 x    1

0 1 x    0

1 1 x    - запрещено
 

Спасибо за ответ.

Нужно ли? Желательно. В моём понимании логическая ячейка это D-триггер  с синхронным входом CLOCK и некоторая обвязка из логических элементов 2И-НЕ, 3И-НЕ  и прочих вентилей. Из этих вентилей вполне можно собрать потенциальный RS-триггер в точном соответствии с приведённой Вами таблицей истинности. Но тогда, имеющийся в ячейке D-триггер не используется, пропадает зря. При малой степени интеграции подобная расточительность чревата. Ну, и концептуально интересно: из потенциальных RS-триггеров можно сделать импульсные (на самом деле тоже потенциальные, как я понимаю, но срабатывающие по фронту, запрет только на совпадение фронтов, тогда состязания, но нет запрета на потенциалы) D-триггера с синхронизирующим входом CLOCK, а можно ли наоборот: из D-триггеров сделать RS-?

14 часов назад, Strob сказал:

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

Пожалуй, да, второе. Реализация схем аналогичных тем, что когда-то паялись на 133 серии. Но уже на новой технологической основе и новыми средствами проектирования. Поэтому прошу не удивляться, возможно, устаревшему подходу. Вот судя по примерам и литературе Verilog синтезирует только с использованием синхронных триггеров и вообще синтезирует схемы, предполагающие только синхронную логику. А мне как-то привычнее асинхронная.

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


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

1 hour ago, KA3AKOB said:

Verilog синтезирует только с использованием синхронных триггеров и вообще синтезирует схемы, предполагающие только синхронную логику

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

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


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

57 minutes ago, KA3AKOB said:

 Желательно. В моём понимании логическая ячейка это D-триггер  с синхронным входом CLOCK и некоторая обвязка из логических элементов 2И-НЕ, 3И-НЕ  и прочих вентилей. Из этих вентилей вполне можно собрать потенциальный RS-триггер в точном соответствии с приведённой Вами таблицей истинности. Но тогда, имеющийся в ячейке D-триггер не используется, пропадает зря. При малой степени интеграции подобная расточительность чревата. Ну, и концептуально интересно: из потенциальных RS-триггеров можно сделать импульсные (на самом деле тоже потенциальные, как я понимаю, но срабатывающие по фронту, запрет только на совпадение фронтов, тогда состязания, но нет запрета на потенциалы) D-триггера с синхронизирующим входом CLOCK, а можно ли наоборот: из D-триггеров сделать RS-?

Пожалуй, да, второе. Реализация схем аналогичных тем, что когда-то паялись на 133 серии. Но уже на новой технологической основе и новыми средствами проектирования. Поэтому прошу не удивляться, возможно, устаревшему подходу. Вот судя по примерам и литературе Verilog синтезирует только с использованием синхронных триггеров и вообще синтезирует схемы, предполагающие только синхронную логику. А мне как-то привычнее асинхронная.

 

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

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

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

 

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

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


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

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

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

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

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

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

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

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

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

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