Как стать автором
Обновить
9
0
Быстров Сергей А. @ajrec

Пользователь

Отправить сообщение
Есть вот такое мнение.
Как выясняется, исключительную роль в асинхронных схемах играют монотонные (unate) функции, а значит — логические элементы у которых нет инвертера на входе (NAND, NOR). Это и понятно, ведь если есть инвертер, то сигнал на другой вход элемента может прийти, когда инвертер еще меняет состояние. Теперь посмотрим насколько в этом отношении хороши FPGA. Все они используют LUT и выходную защелку. Допустим (что очень редко) у этой защелки есть раздельные входы set и reset, т.е. мы можем сделать из неё обычный RS-триггер. Допустим, что к set и reset можно подключить свой LUT. Допустим также, что логический блок из двух LUT и RS-триггера можно без проблем подключить к любому из четырех ближайших соседей. Это, на мой взгляд является необходимым, но не достаточным условием для реализации асинхронной схемы. Дело в том, что LUT — это фактически мультиплексор, который, как известно, описывается немонотонной функцией. Вернее, не монотонный в мультиплексоре только декодер. Таким образом, корректность реализаций асинхронных схем на FPGA оказывается под вопросом. В частности реализация С-элемента на LUT, мы это обсуждали. В данном случае люди берут 8:1 MUX, делают на нем binary adder, а выход переноса замыкают на один из входов. Это то, что называется relative timing. Для «чистой» реализации нужна мажоритарная функция (на одном элементе), которая является монотонной. К сожалению, все FPGA так или иначе используют LUT (мультиплексор). В том и числе мелкозернистые типа АТ40К или proASIC3. Более того, некоторые CPLD тоже построены на LUT, например MAX II, Lattice, Igloo 2. Из традиционных CPLD, где есть монотонные NAND, NOR остались EPM7512, ispMACH4512 и XC2C512. Все три имеют 512 макроячеек и представяют собой расширенный вариант 22V10, на которой делали асинхронные схемы.
Чего минусами то баловаться. Мне они по барабану. Детский сад какой-то. Что не понравилось?
Верно, рисовал в logisim, но использовал исключительно как редактор для рисования. Может дело в этом.
Сразу хочу выразить признательность за проявленный интерес. Хотя бы и с долей скепсиса, это даже хорошо.
По поводу второй части эксперимента. Результат абсолютно предсказуем. Если что-то использовать вопреки инструкции, наверняка получится кака. В описании исходного задания четко сказано: сначала устанавливаются сигналы r, только после этого вырабатывается сигнал d+.
Такое временное соотношение можно обеспечить следующим образом. Рассмотрим в совокупности дешифратор, регистр адреса и контроллер, управляющий обеими этими схемами. Сначала контроллер дает команду регистру записать новое значение. После того как регистр установит новое значение, он посылает контроллеру сигнал о готовности. Только после этого контроллер дает команду d+ дешифратору. Дешифратор выполняет свою работу и в завершении ее посылает контроллеру сигнал q-. После этого контроллер может снова выдать команду регистру на запись нового значения.
Что касается временных интервалов. В асинхронных схемах время не измеряется в метрических единицах (наносекундах и т.п.). Время представляется порядком следования одних событий за другими (причинно-следственными связями). Т.е. событие А является причиной события В. Временной интервал между этими событиями не имеет значения и определяется конкретной реализацией. Такая схема будет работоспособна при любой величине задержки между событиями А и В.
По поводу различной ширины импульсов d и q. Объясняется просто: вторая фаза дешифратора (после d-) несколько длиннее первой. Можно даже посчитать по событиям в итоговом поведении. Это всего лишь особенность данной схемы.
Что касается первой части эксперимента., то для меня положительный результат не стал сюрпризом. Более того, если отслеживать не только выходные но и внутренние сигналы, все они будут переключаться в порядке, описанном в итоговом графе.
Ну и наконец по поводу больших размеров схемы. Действительно, задача представления комбинационной логики в асинхронном виде сложна и затратна по ресурсам. И насколько я знаю до сих пор не решенная. Моя попытка первая. Особенности такой реализации надо принять как данность и использовать в соответствии с этими особенностями.
По поводу оригинальности спорить не буду. Но это схема асинхронная. Причем асинхроннийшая из асинхроннийших, чесно. Все эти триггера сами собой получаются. Здесь нет никакой навязанной структуры. Например С-элемент в минимальном базисе также содержит триггер и обратные связи. Такова природа исходных заданий. Если копнуть глубже, то грань между синхронным и асинхронным размывается. Можно ведь тактовый сигнал зашить в исходное задание как обычный входной сигнал. И сделать по этому заданию асинхронную схему. А потом можно принять ограничения на разброс задержек элементов. И сделать асинхронную схему при этих условиях. Получится некий аналог синхронной схемы.
Прошу прощения, 4 дня назад не сдержался. Злой был, три с лишним дня не кушал.
Так кубы, карты Карно — это инструменты, применяемые к таблице истинности. Так что все это одно и тоже. Получившиеся уравнения — прекрасные, в модели Маллера (задержка приведена к выходу элемента) все будет работать. В общем со всей асинхроникой не было бы проблем. Но в действительности такие сложные элементы (3 уровня) не реализовать (в соответствии с моделью Маллера), задержка будет размазана по NOT, NOR. Чем меньше элемент, тем роднее он для модели Маллера.
Возьмем уравнение для q3. Представьте ситуацию: d=0, r1=0, r2=1, NOT(r2)=0, NOR(...)=1, q3=0. А теперь переключим r2-, а затем d+. По идее q3 должен остаться в 0. Но при достаточно большой задержке NOT и NOR, d+ дойдет до AND раньше чем «0» с NOR. В итоге получим q3+. Со временем эти ложные выбросы рассосутся. Вместе с тактовым сигналом такую схему употреблять можно, без него будет плохо. Комбинационная логика в асинхронном виде реализуется тяжеловато. Но это не потому что синхронные схемы хорошие а асинхронные плохие. Асинхронные схемы делаются при соблюдении гораздо более жестких условий: нет предположений об ограничении задержек элементов, недопустимы ложные выбросы.
О каскадировании я собирался написать попозже. Не надо воспринимать так, что более высокий уровень будет состоять из готовых дешифраторов. Над двумя дешифраторами вдвое меньшей разрядности будет надстраиваться схема, похожая на правую часть двухразрядного дешифратора. В этой правой части выделяются 4 одинаковых блока. Такой блок (с небольшими изменениями) будет соответствовать каждому выходу дешифратора с удвоенной разрядностью.
Теперь о взаимодействии с контроллером.
Сигнал d — чисто управляющий. Сигналы q несут две функции: управляющую и информационную. Переключение одного из этих сигналов говорит о том, что:
1 — на входе дешифратора определенная комбинация (информационная составляющая),
2 — процесс переключений закончился (управляющая составляющая).
Таким образом сигнал q для верхнего каскада и информационный, и управляющий.
Общая схема взаимодействия такая. Контроллер вырабатывает d+ для самого нижнего каскада. Также самый нижний каскад получает информацию от разрядов регистра (r1, r2...).
Далее от каскада к каскаду передаются сигналы q+. С самого верхнего каскада q+ поступает в контроллер, который вырабатывает d- для самого младшего каскада и вторая фаза проходит аналогично.
Под дуальностью подразумевал представление входного сигнала как самим собой, так и своей инверсией.
А еще! Моя штуковина не требует дуальности входных сигналов.
Потенциально то что сделано по таблице истинности может дать волну на выходах. В конце концов все устаканится как надо. Но нужна задержка в виде синхросигнала. Асинхронный дешифратор лишен этого недостатка, переключится только один нужный выход. Что касается габаритов, согласен: игрушка увесистая. Но тут ничего не поделаешь. Тут дело даже не в том что я не доработал. Такова природа этих вещей. Я не ставлю вопрос так, что асинхронный дешифратор лучше синхронного. Наверно, для огромного количества задач синхронный предпочтительнее. Но если кто-то захочет полностью отказаться от тактовых сигналов, возможно и мое творение пригодится. А вообще в этой статье и предыдущей я отвечал на утверждение, что задача асинхронного представления операций над данными и адресами не решена. Вот я и решил эти задачки. Хотя повторюсь, решение вопроса о нужности асинхронного дешифратора не моя сфера.
Чую, получу еще один минус. Кто-то упорный минусует все мои комментарии, и все комментарии хоть с малейшим положительным отношением. Наверно что-то личное.
Все правильно, в асинхронной схеме не должно быть никаких непредвиденных переключений. Все строго как нарисовано в итоговом графе. Нельзя начинать операцию, не убедившись, что входная информация достоверна. В противном случае пойдут непредсказуемые переключения. Переключение одного входа можно считать началом процесса смены входного кода. Но окончание этого процесса не определено. После переключений, например, двух входов из четырех, дешифратор не сможет определить: ждать ли ему переключения оставшихся двух входов, или же это итоговая входная комбинация. Сигнал d сообщает, что на входе достоверный набор и можно начинать операцию.
Изменение на любом из выходов и означает завершение работы. Незачем это дублировать еще одним выходным сигналом.
В синхронном дешифраторе нужно действительно выдержать какую-то задержку, чтобы считать «выходную комбинацию» достоверной. В асинхронном устройстве само появление «выходной комбинации» говорит о ее достоверности.
В сравнении способов реализации плюсом асинхронной можно считать энергопотребление (в связи с отсутствием тактового сигнала).
Я здесь не сравниваю реализации. Демонстрирую принципиальную возможность синтеза асинхронного дешифратора. Что вместе с предыдущей статьей доказывает возможность построения целиком и полностью асинхронного процессора.
1. Если уж что-то испортится, будет плохо всем. Я говорю о том, что задержка элемента вышла за пределы Ваших предположений. А такие предположения Вы делаете, раз делаете синхронные схемы.
2. Контроллер после запроса на операцию может делать что угодно, это уж от Вас зависит, как Вы его сделаете.
3. Ну привяжите регистр к дешифратору. А сам адрес храните на другом регистре. И делайте с ним, что хотите, в любое время.
Состязаниям там появиться просто неоткуда- дешифратор просто будет реагировать на любое изменение входной комбинации, в соответствии с таблицей истинности.

А представьте, какой-то вентиль задумается и будет показывать значение, соответствующее прежней входной комбинации. Тогда и выходной сигнал не будет соответствовать настоящему состоянию входов. В асинхронной схеме такое невозможно.
Я в синхронных схемах не спец, термины могу путать.
Идея такая. Управляющая схема (контроллер) дает команду на дешифрацию (d+). При этом контроллер фиксирует входы (адресные) до окончания операции. Дешифратор выдает в ответ один из четырех сигналов q+, соответствующий адресным входам. Далее контроллер делает с этим сигналом то что ему надо: обращается к ячейке памяти или запоминает этот сигнал… После этого наступает вторая фаза работы дешифратора. приводящая все к исходному состоянию. Контроллер дает сигнал d-, после чего дешифратор приводит себя в исходное состояние, о чем сообщает сигналом q-. После этого контроллер снова может менять состояние адресного регистра, который не является частью схемы дешифратора. А дешифратор будет ждать новой команды.
При этом у Вас несомненно проявятся состязания, которые Вы будете гасить синхросигналом. Дешифратор делает дешифрацию. Но по Вашему он делает ее беспрестанно. Зачем это? Наверно надо так: пришла команда, сделали операцию и стоим ждем следующей команды, хоть год. В этом смысл сигнала d. А постоянно молотящего синхросигнала здесь нет. Вы наверно тоже специалист по синхронным схемам. И пытаетесь применить свой опыт здесь.
Синхросигнал молотит без устали. И что по каждому изменению синхросигнала нужно делать дешифрацию? Наверно нужен еще какой-то управляющий сигнал, разрешающий выполнить операцию. У меня такой сигнал есть, а синхросигнала нет. А Вам синхросигнал нужен, чтобы гасить все состязания, которые при Вашем подходе несомненно будут. Я нисколько не умаляю Ваших достижений в синхронной схемотехнике. Но эта область другая.
Про управляющие сигналы слышали? D — не строб, не тактовый сигнал. Это управляющий сигнал, команда на операцию. Про хэндшейк слышали? Дилетанты куражатся.
Ну тогда все эти автоматы с полумодулярностями надо снести на помойку. А оставить одно нормальное требование: Внутренние и выходные сигналы не могут снимать возбуждение без переключения. Как Вы собираетесь эмулировать среду при выборе. Вы не сможете эмулировать произвольный порядок выбора альтернативных ветвей. Вы сможете эмулировать только один единственный жестко зафиксированный порядок. Или Вам надо сделать бесконечное количество эмуляций. Зачем цепляться за автомат, выдуманный не от хорошей жизни, если проку от него немного? За 40 лет можно было бы развить из него что-либо стоящее? Значит идея тупиковая.
А заглушки это вообще какой-то древнейший атавизм. Я последний раз о них слышал лет 25 назад.

Информация

В рейтинге
Не участвует
Откуда
Сочи, Краснодарский край, Россия
Дата рождения
Зарегистрирован
Активность