Comments 29
Асинхронный дешифратор на два входа с тремя входами, причем третий работает как строб — мне одному такая асинхронность кажется странной?
Чем именно отличается команда на операцию (хэндшейк по вашему) от синхросигнала — если тем, что по неактивному уровню все выходы гасятся, то такая схема проектируется на раз без привлечения сверхсложных способов. Профессионалы отвечают дилетантам и выигрывают?
Вы наверно тоже специалист по синхронным схемамВовсе нет. Немного увлекаюсь электроникой, немного помню из курса «Основы вычислительной техники». Там мы этих дешифраторов нарисовались до почернения локтей.
у Вас несомненно проявятся состязания, которые Вы будете гасить синхросигналом.
Состязаниям там появиться просто неоткуда- дешифратор просто будет реагировать на любое изменение входной комбинации, в соответствии с таблицей истинности.
Наверно надо так: пришла команда, сделали операцию и стоим ждем следующей командыА тут уже зависит от задачи: если мне нужно чтобы выход менялся только при наступлении некого события (команды в Вашем случае)- добавлю к дешифратору регистр, который застробирую каким-либо сигналом. Ну и собственно- разве не логично, что входная комбинация (которую дешифруем) не должна меняться до завершения операции?
Кстати, стробирующий импульс не есть синхросигнал- в отличии от синхросигнала (сигнала тактирования) строб появляется только при наступлении какого-либо события (например завершения длительной операции)
Мне не совсем понятна идея Вашего дешифратора. У Вас выходной сигнал формируется только при наличии сигнала разрешения операции и состояние выхода фиксируется до прихода следующего разрешения, так? Каким образом этот сигнал формируется?
Состязаниям там появиться просто неоткуда- дешифратор просто будет реагировать на любое изменение входной комбинации, в соответствии с таблицей истинности.
А представьте, какой-то вентиль задумается и будет показывать значение, соответствующее прежней входной комбинации. Тогда и выходной сигнал не будет соответствовать настоящему состоянию входов. В асинхронной схеме такое невозможно.
Я в синхронных схемах не спец, термины могу путать.
Идея такая. Управляющая схема (контроллер) дает команду на дешифрацию (d+). При этом контроллер фиксирует входы (адресные) до окончания операции. Дешифратор выдает в ответ один из четырех сигналов q+, соответствующий адресным входам. Далее контроллер делает с этим сигналом то что ему надо: обращается к ячейке памяти или запоминает этот сигнал… После этого наступает вторая фаза работы дешифратора. приводящая все к исходному состоянию. Контроллер дает сигнал d-, после чего дешифратор приводит себя в исходное состояние, о чем сообщает сигналом q-. После этого контроллер снова может менять состояние адресного регистра, который не является частью схемы дешифратора. А дешифратор будет ждать новой команды.
какой-то вентиль задумается и будет показывать значение, соответствующее прежней входной комбинации. Тогда и выходной сигнал не будет соответствовать настоящему состоянию входов. В асинхронной схеме такое невозможноХм, если какой-то вентиль «залипнет» то и асинхронная схема на выходе пургу гнать будет- не факт что «залипший» вентиль «отлипнет» по сигналу «вернись в исходное». Разве что ввести в логику контроллера (в составе которого и работает данный дешифратор, я правильно Вас понял?) проверку, что все вентили сбросились… Как поведет себя Ваш дешифратор, если какой-то вентиль повиснет в исходном состоянии (как после сброса)? Как-то сложно все это выходит.
… управляющая схема (контроллер) дает команду на дешифрацию (d+). При этом контроллер фиксирует входы (адресные) до окончания операции…Вот здесь- контроллер ждет завершения операции или делает что-то еще в период между запросом к дешифратору «декодируй мне 11001111» и ответом от него «получилось 103»?
… контроллер делает с этим сигналом то что ему надо:
… наступает вторая фаза работы…
… Контроллер дает сигнал d-..
Потом —
(контроллер) дает команду на дешифрацию (d+). При этом контроллер фиксирует входы (адресные) до окончания операциит.е. до окончания операции данные на входе дешифратора не могут поменяться в принципе? В чем же тогда достоинство Вашего дешифратора, который вынужденно синхронизируется с управляющей схемой? Честно говоря, в нашем споре я не понимаю сути «синхронная/асинхронная схема», может растолкуете?
2. Контроллер после запроса на операцию может делать что угодно, это уж от Вас зависит, как Вы его сделаете.
3. Ну привяжите регистр к дешифратору. А сам адрес храните на другом регистре. И делайте с ним, что хотите, в любое время.
такие предположения Вы делаете, раз делаете синхронные схемы.Нет, не делаю (в смысле- не проектирую схем)- максимум закладываю логику, аналогичную «железной» схеме, в виде подпрограммы в каком-нибудь алгоритме для ПЛК. И как-то не задавался вопросом- синхронные ли эти схемы(если составлять программу для ПЛК на языке FBD- она очень походит на электронную схему) или какие другие.
Ну привяжите регистр к дешифратору. А сам адрес храните на другом регистре. И делайте с ним, что хотите, в любое время.Дык я так и делаю, а Вы называете это «синхронной» схемой. Вообще- прошу меня извинить, я честно попытался понять Ваш подход к созданию логических схем и… попросту сломал голову. Похоже- это та область знаний, которая каким-то образом осталась мне абсолютно непонятной.
В вашей схеме путь прохождения сигналов тоже немаленький — и задержка будет сильно выше обычной синхронной схемы. В чем плюс?
В сравнении способов реализации плюсом асинхронной можно считать энергопотребление (в связи с отсутствием тактового сигнала).
Я здесь не сравниваю реализации. Демонстрирую принципиальную возможность синтеза асинхронного дешифратора. Что вместе с предыдущей статьей доказывает возможность построения целиком и полностью асинхронного процессора.
В синхронных схемах (в рамках терминологии поста) тактовый сигнал генерируется всегда, даже если состояния на входе не меняются, а в асинхронных схемах (в рамках терминологии поста) есть запуск (после очередного изменения), а далее информация проходит через последовательность устройств, и каждое из них генерирует свой собственный выходной сигнал, гарантирующий, что операция завершена.
Нет общего для всех устройств тактового сигнала, но для каждого устройства сигнал начала работы есть, он и является третьим входом.
Тогда должен быть и выходной сигнал завершения работы — но его нет, так как сам один из выходов является стартом для очередного устройства, что и вызвало очевидное непонимание.
Я правильно понимаю, что данная схема защищена от глитчей "по построению"? Если так, то зачем нужен сигнал d, если можно начать дешифрацию сразу в момент изменения входных значений?
А, точно, что-то я туплю, входов же несколько. Тогда такой вопрос: чем по существу отличается предложенная схема дешифратора от схемы, полученной непосредственно из таблицы истинности и карты Карно с устранением потенциальных переключений? Мне кажется, такая схема должна получиться намного компактнее.
Выглядит всё это довольно интересно, но закрадываются сомнения в эффективности такого построения в плане количества логических элементов. Казалось бы, нужно к обычной схеме добавить всего лишь сигнал готовности результата, а получается что-то на порядок более крупное, чем без этого сигнала.
Всё равно непонятно. В общем случае, если строить схему просто по таблице истинности, то могут быть проблемы, а если взять карту Карно и покрыть её как надо, то можно избавиться от переходных процессов (насколько мне известно). В случае дешифратора карта Карно вообще содержит одну единицу и остальные нули и покрыть её — тривиальное дело. И вот я попробовал построить схему таким образом и получил четыре отдельных схемы вида
q1=AND(d, AND(r1, r2))
q2=AND(d, NOR(NOT(r1), r2))
q3=AND(d, NOR(r1, NOT(r2)))
q4=AND(d, NOR(r1, r2))
Эта схема, вроде как, должна работать без проблем при условии, что сигнал d приходит после стабилизации сигналов r1, r2. Что я упускаю?
Ещё заметил пару недостатков в вашей схеме. Если предлагается использовать каскадирование этих дешифраторов, то кто и каким образом будет подавать сигнал d дешифраторам следующих уровней? Возможно, всё-таки нужен какой-то выходной сигнал, сигнализирующий о готовности результата.
Кроме того, тут есть проблема с определением, когда можно опустить сигнал d в ноль: нужна обратная связь, что наталкивает на мысль о том, что в гипотетическом процессоре будет замкнутый контур, в котором первому элементу нужна будет обратная связь от самого последнего для управления неким сигналом d. Процессор будет как бы ждать сам себя. Не вызывает ли это противоречий? Возможно, стоит как-то изменить характер сигнализирования о готовности, но всё равно не очень понятно, как избавиться от обратной связи, ибо данные на вход некоторому участку схемы могут приходить быстрее, чем он их будет обрабатывать, что всё равно приведёт к простоям.
И это, а что есть дуальность входных сигналов? Нагуглить не получилось.
А насчет избавления от переходных процессов картой Карно — это принципиально невозможно, поскольку переходной процесс при смене 00-11 и переход 00-01 с последующим 01-11 карты Карно отличите не способны, вот и появляется третий входной сигнал (типа тактового, но это не тактовый).
Мысль была именно в том, что здесь наиболее важно получить отсутствие проблем при переходном процессе для сигнала d в условии обнуления выходов при d=0, а там как раз всё хорошо, ибо остальные входные сигналы к этому времени стабильны.
Думаю, в общем случае это работать, конечно, не будет, но вот для дешифратора — почему бы и нет?
Возьмем уравнение для 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- для самого младшего каскада и вторая фаза проходит аналогично.
Под дуальностью подразумевал представление входного сигнала как самим собой, так и своей инверсией.
я насчитал как минимум 6 триггеров на мелкой логике с цепями очень похожими синхронизацию,
например на базе n1...n4 и m1...m4, а так же i1-j1 и i2-j2
поэтому вопрос, почему эта схема считается асинхронной?
может здесь просто путаница и в реальности применена очень оригинальная методика проектирования?
Но это понятие применимо к устройству в целом, поэтому отдельные узлы выглядят, как тактируемые.
Асинхронный дешифратор