> Часть II
Во второй части спроектируем устройства, представленные в первой части, на микросхемах малой степени интеграции, а также в Verilog'е. Спроектируем схему, позволяющую складывать четырехразрядные числа. Нам понадобятся сумматор и аккумулятор.
Рассмотрим, как работает сумматор на примере микросхемы 155им3 (зарубежный аналог 7483). Для микросхем 155-й серии условимся, что на входах есть внутренний резистор, подтягивающий к плюсу (если ножка «висит в воздухе», то на ней присутствует логическая «единица»), поэтому при подключении питания на микросхему зажгутся все 5 светодиодов, присоединенных к выходу.
Так выглядит модель микросхемы в Logisim.
Для того, чтобы в Logisim спроектировать такую микросхему, необходимо выбрать «Меню» — «Проект» — «Добавить схему».
Вот как эта МС выглядит внутри подсхемы.
В качестве аккумулятора будем использовать микросхему 155тм8 (74175) — счетверённый D-триггер.
Триггеры, входящие в состав МС, пропускают насквозь всё время, пока на входе синхронизации присутствует 1, а не только по фронту (триггеры со статическим управлением), но в программе Logisim нам доступны только триггеры с динамическим управлением, но в данном случае это не важно; будем использовать то, что есть.
Подробнее про триггеры можно прочитать в Википедии.
Соберём из D-триггеров модель МС 155тм8.
Далее соберём схему, позволяющую складывать наборы чисел.
Например, если сложить набор из чисел 2 (0010), мы получим 2 (0010), 4 (0100), 6 (0110) и т.д.
Вот так выглядит «физическая» модель.
Сперва 2 появляется на выходе сумматора (красные светодиоды), затем 2 загружается в счетверенный D-тригер (желтые светодиоды), а на выходе сумматора появляется 4, затем 4 загружается в 155тм8, а на выходе сумматора появляется 6 и т.д.
Для того, чтобы спроектировать простой модуль памяти (статической), нам понадобится мультиплексор. Спроектируем сдвоенный мультиплексор 155кп2.
Также нам понадобится счетчик. Спроектируем микросхему 155ие5.
Это четырехразрядный счетчик, но нам понадобится только два младших разряда.
Будем хранить числа, например, 2 (0010), 3 (0011), 5 (0101).
«Физическая» модель.
Объединим все компоненты в одну схему. Будем складывать числа, которые хранятся в памяти
2 + 3 + 5.
«Физическая» модель.
Далее создадим устройство, позволяющее осуществлять операцию «вычитание». Для того, чтобы вычесть число, его надо сначала перевести в обратный код (заменить все 0 на 1; все 1 на 0), а затем в дополнительный код (прибавить 1).
Для хранения чисел будем использовать 155ру2 (ОЗУ), для перевода в обратный код будем использовать 155лн2 (шесть Элементов Не). Эти микросхемы имеют выходы с открытым коллектором. Светодиод к выходу с ОК надо подключать так (на примере 155лн2/7405)
Для МС 155ру2 будем считать, что вход синхронизации и вход разрешения записи объединены в одну линию. Этот (объединённый) вход является статическим, МС пропускает насквозь всё время, пока на входе присутствует 0 (низкий уровень).
Данные поступают в МС при появлении низкого уровня на этом (объединенном) входе, поэтому повесим Элемент Не к тактовому входу.
Выходы будут инвертированы, если подключать по схеме, которую я привел выше для выхода с ОК (повесим Элементы Не к выходам), вход выбора кристалла тоже инвертирован, МС осуществляет цикл записи или чтения только при нулевом уровне на этом входе (повесим Элемент Не ко входу выбора кристалла).
Также МС имеет отдельные входы для адреса и для данных, поэтому при выборе стандартного модуля ОЗУ (Боковое меню — Память — ОЗУ) на вкладке «Интерфейс данных» необходимо выбрать «Раздельные порты чтения и записи».
Т.о. наиболее близкой к 155ру2 будет такая модель:
Для выбора числа в прямом или обратном коде будем использовать мультиплексор. Будем хранить числа 8, 4 (в обратном коде), 1.
«Физическая» модель.
Объединим нашу схему с предыдущей и будем из 8 вычтать 4, т.е. 8 + 4 (в обратном коде) + 1.
Т.о. мы создали простейшее программируемое устройство, в котором командами осуществляется выбор числа в прямом или обратном коде.
Спроектируем наши схемы на ПЛИС/FPGA. Будем использовать Quartus II. Бесплатную версию с ограниченным функционалом можно скачать с официального сайта.
При регистрации в разделе My Primary Job Function is* необходимо выбрать пункт Student.
Далее необходимо скачать драйвер для программатора (драйвер для usb-blaster'a можно установить из C:\altera\...\quartus\drivers\usb-blaster).
В среде Quartus создадим новый проект («File»-«New»-«New Quartus II Project») и добавим к проекту Block Diagram/Schematic File («File»-«New»-«Block Diagram/Schematic File»).
Нам понадобятся сумматор (7483) и аккумулятор (74175).
Эти микросхемы можно добавить из Symbol Tool:
Добавив порты ввода-вывода, получаем схему, позволяющую складывать набор четырехразрядных чисел.
Если использовать внешний источник тактового сигнала, тактовую ногу источника надо стянуть к «земле».
Схемы, спроектированные в Logisim, можно скачать одним файлом.
Комментарии (20)
skoptsev
25.10.2017 06:22Спасибо за статью. Можно с полной уверенностью сказать: всем желающим разобраться, как работает Ардуино изнутри посвящается.
AVKinc
25.10.2017 08:16Ну то есть вы очевидно даже не понимаете, что такое Ардуино, ибо это таки не процессор вообще.
Да и реальный процессор намного, намного сложнее чем этот сумматор. И что-бы разобраться реально как он работает явно недостаточно понимать как работает сумматор. Хотя так то всего три элемента, куда уж проще. И, НЕ да ИЛИ.demser Автор
25.10.2017 08:51«Попутно, пользуясь поводом, мы пропиарим отличный проект Marsohod.org как раз активно описывающий работу с ПЛИС. Рекомендую зайти к ним в гости и пошариться там. Найдете много интересного. Там есть и всякие пищалки музыкальные, USB устройства, разные протоколы и даже создание упрощенного AVR ядра в недрах ПЛИС, с компиляцией кода под него в AVR Studio :) И это при том, что ПЛИС EPM240T100C5 реально небольшая.»
ссылка
seri0shka
26.10.2017 10:26Интересно, а реально ли построить прототип Ардуино только на трёх типах элементов? Если да, то сколько сотен-тысяч корпусов понадобилось бы?
sim2q
25.10.2017 08:56удивительно, что этот комок проводов работает без керамики по питанию…
ТТЛ же!
ps нашел в детстве где то 155ИП3, разобрался по книжке и даже что то считала как надо, но применить куда то в то время не смог. Хотя даже была и статическая память 1 кб, счётчики, мультиплексоры и дешифраторы от ЕС ЭВМ, но больше конечно беспонтовых ЛР*, ЛП* и ЛА*. Тогда кстати и пришло понимание, что без кондёров, толстых шин и витых проводов — ТТЛ не стабильно не живётseri0shka
26.10.2017 10:48удивительно, что этот комок проводов работает без керамики по питанию…
Несколько факторов. Во-первых, всего несколько корпусов. Во-вторых, помех на лабораторном столе может быть намного меньше, чем в условиях реальной эксплуатации. Ну и помех боятся только D-триггеры и более сложные корпуса с их использованием, в схеме с использованием простых логических злементов несколько случайных импульсов на входе (помехи) вызовут несколько импульсов на выходе с мгновенным возвратом в исходное состояние (в отличии от триггера, который изменит своё состояние). По светодиодам этого не заметить. В своё время, когда активно увлёкся цифровой логикой, старался обходиться без триггеров там, где была возможность.
Wuzaza
25.10.2017 09:13Очень интересный канал. Автор собирает 8 битный процессор, параллельно объясняет устройство. На английском языке.
www.youtube.com/user/eaterbc/videos
GeMir
25.10.2017 10:54Год назад собирал демонстрационные схемы, похожие на представленную на первом снимке, но с использованием AND, OR и XOR (SN74ACT08, SN74ACT32 и SN74ACT86) и на большинстве форумов хватались за голову и рекомендовали собрать как минимум что-то вроде этого:
Не подскажете, что почитать для ликбеза совсем уж начинающему строителю схем?
Sdima1357
Прочитал и удивился, 155 серия ещё жива.
skoptsev
Живее всех живых, в гос закупках военные еще и 133 серию закупают, у них прогресс застрял в 70-х. А для данных опытов 155, 555 и рядом с ними самое оно.
zartarn
Я бы не сказал что застрял, просто длительная поддержка своих устройств. ;).
Новые вполне себе на более-менее современной комплектухе. Съездите в августе на ту же выставку «Армия 2018», там очень даже ничего :)
Другое дело, что новое очень медленно проходит, так как нужны тесты, сертификация и т.д. и т.п.
Costic
Золотая 133 серия это наша версия с приёмкой, аналог 74 серии… Ещё 100+ лет будет использоваться.
Sdima1357
Не знаю насчет приёмки, но мне встречались экземпляры 133 с боязнью темноты :). На свету работает, а в темноте нет. Видимо за счет металло-стеклянного корпуса. Ох и намучился я тогда с ними. Правда давно это было, в 1987…
seri0shka
Ну не такой он и стеклянный. Вроде металлическая крышечка на керамической «ванночке», так ведь? А как выяснили про боязнь темноты?
Sdima1357
Случайно. Завинчиваю корпус устройства (а он тяжелый сволочь, чугунный )- не работает, отвинчиваю — работает. И все контрольные точки в порядке. Случайно рукой над корзинкой провел, ближе к вечеру тень от лампы упала- и от опа на. Часов пять проковырялся, золотистых 133 около сотни на каждой плате.