LXF162:CPU своими руками
Olkol (обсуждение | вклад) (→Мультиплексоры) |
Olkol (обсуждение | вклад) (→Срабатывание по перепаду сигнала) |
||
Строка 36: | Строка 36: | ||
Если число является беззнаковой переменной, эти операции имеют эффект умножения (сдвиг влево) или деления (сдвиг вправо) числа на два. Это должно быть очевидно, поскольку каждая позиция имеет вес в два раза больший, чем позиция справа от нее. | Если число является беззнаковой переменной, эти операции имеют эффект умножения (сдвиг влево) или деления (сдвиг вправо) числа на два. Это должно быть очевидно, поскольку каждая позиция имеет вес в два раза больший, чем позиция справа от нее. | ||
===Срабатывание по перепаду сигнала=== | ===Срабатывание по перепаду сигнала=== | ||
− | [[Файл: LXF162.feat_cpu.figur_opt1.jpeg|left | | + | [[Файл: LXF162.feat_cpu.figur_opt1.jpeg|left |300px |thumb|Рис. 2. АЛУ, использующее мультиплексоры для обеспечения выбора между операциями.]] |
В созданном нами триггере задержки вход действует, только когда переключатель enable установлен на 1. Это прекрасно, но в компьютерах и в цифровой электронике в целом удобны схемы, которые активируется за более короткое время, то есть пока вход enable переходит из одного состояния в другое. Это позволяет создавать намного более чувствительные схемы, с более тонким контролем над ними. Когда схемы, подобные триггеру задержки, запускаются во время переброса входа enable из 0 в 1, это называется уже не триггером, а мультивибратором. Мы говорим о «срабатывании по перепаду сигнала [edge triggering]». | В созданном нами триггере задержки вход действует, только когда переключатель enable установлен на 1. Это прекрасно, но в компьютерах и в цифровой электронике в целом удобны схемы, которые активируется за более короткое время, то есть пока вход enable переходит из одного состояния в другое. Это позволяет создавать намного более чувствительные схемы, с более тонким контролем над ними. Когда схемы, подобные триггеру задержки, запускаются во время переброса входа enable из 0 в 1, это называется уже не триггером, а мультивибратором. Мы говорим о «срабатывании по перепаду сигнала [edge triggering]». | ||
Версия 05:33, 13 октября 2018
|
|
|
Содержание |
CPU своими руками
Часть вторая
Еще два компонента электронного сердца вашего CPU: Джонатан Робертс подводит вас на шаг ближе к рабочему процессору.
В LXF158 мы показали вам, как построить собственный компьютер из базовых электронных блоков. По сути, мы изготовили двоичный сумматор. Мы закончили статью, сказав, что созданное нами — это еще далеко не настоящий компьютер, и вам нужны еще несколько компонентов, прежде чем ваша машина сможет претендовать на звание компьютера.
В этой статье мы рассмотрим дальнейшие шаги и представим вам еще несколько компонентов, продемонстрировав, как расширить возможности вашего сумматора до выполнения других действий (AND [И], XOR [ИСКЛ.ИЛИ] и NOT [ИЛИ]) и создать цепи памяти для хранения ввода и вывода.
Перед чтением этой статьи вам стоит прочесть предыдущую часть, чтобы освежить память, поскольку мы исходим из того, что вы с ней ознакомлены. Если у вас нет экземпляра LXF158, вы сможете найти PDF этой статьи на диске этого месяца.
Декодер
Первый компонент, который мы рассмотрим – это декодер, или, точнее, линейный декодер. Он очень прост, но очень удобен в работе и сам по себе, и декодеры также используются в мультиплексорах – что исключительно важно для остальной части нашей статьи.
По сути, все декодеры позволяют сделать выбор из множества выходов, используя только половину входов. Более конкретно – при единственном входе декодер позволит вам выбирать между двумя выходами, два входа обеспечат вам выбор из четырех выходов, и т. д. В случае декодеров мы говорим не о входе и выходе, а об адресной линии и линии передачи данных. Таблица истинности для простого линейного декодера 1-в-2 размещена ниже, а схема соединений приведена на рис. 1.
Как видите, все очень просто. Адресная линия раздвоена, и вход NOT размещен на одном ответвлении этого раздвоения. Таким образом, только одна из этих линий передачи данных может за один раз передать 1.
Мультиплексоры
Мультиплексор подобен декодеру, но способен на большее. Вместо выбора между двумя линиями передачи данных, он использует адресную линию для выбора между двумя входами, и выбранная величина (0 или 1) будет перенаправлена на единственную линию передачи данных.
Его таблица истинности приведена ниже, а его схему соединений вы также можете увидеть на рис. 1. На этой схеме вы видите, что мультиплексор – это просто расширенный декодер.
Другие полезные операции
Мы использовали AND, OR и XOR как примеры операций для расширения нашего сумматора, потому что эти схемы просты в создании. Но если вы работаете с числами без знака, то логический сдвиг влево или вправо может оказаться более естественным выбором для расширения нашего сумматора.
Как и предполагает название, логический сдвиг влево сдвигает все биты на одну позицию влево, а логический сдвиг вправо – на одну позицию вправо. Бит, который выпадает, потерян навсегда, а свободное место, появившееся в начале, занимает 0.
Если число является беззнаковой переменной, эти операции имеют эффект умножения (сдвиг влево) или деления (сдвиг вправо) числа на два. Это должно быть очевидно, поскольку каждая позиция имеет вес в два раза больший, чем позиция справа от нее.
Срабатывание по перепаду сигнала
В созданном нами триггере задержки вход действует, только когда переключатель enable установлен на 1. Это прекрасно, но в компьютерах и в цифровой электронике в целом удобны схемы, которые активируется за более короткое время, то есть пока вход enable переходит из одного состояния в другое. Это позволяет создавать намного более чувствительные схемы, с более тонким контролем над ними. Когда схемы, подобные триггеру задержки, запускаются во время переброса входа enable из 0 в 1, это называется уже не триггером, а мультивибратором. Мы говорим о «срабатывании по перепаду сигнала [edge triggering]».
Быть может, это звучит чуть ли не мистически, но если вы представите себе график прямоугольной волны, все станет ясно. Когда линия высоко, то вход или выход равны 1; когда она низко, это 0. В случае с триггером задержки выходы повторяют входы все время, пока enable высоко. В случае с мультивибратором, он будет реагировать только на одно ребро прямоугольного графика, образованного тогда, когда вход enable переходит в соттояние 1.
Это не просто интересно, поскольку при работе со встроенным D Flip-Flop от KTechlab вам нужно обеспечить включение и выключение тактового сигнала, чтобы он действовал. Он срабатывает при переходе от высокого уровня к низкому, так что вам нужно установить переключатель на 1 и снова на 0, чтобы активировать мультивибратор и заставить его сохранить новую величину.