Monday, August 12, 2019

Пока все играют (1 и 3 выпуски)





Ниже есть продолжение.

В обоих выпусках много паяют. Платы. Мой папа тоже был радиолюбителем и тоже много паял. И программатор у него был (самодельный).

Третий выпуск. Помню, как он ультрафиолетом перезаписывал ПЗУ. На 12 минуты показаны логические вентили

Логика работы вентиля основана на битовых операциях с входными цифровыми сигналами в качестве операндов. При создании цифровой схемы вентили соединяют между собой, при этом выход используемого вентиля должен быть подключён к одному или к нескольким входам других вентилей. В настоящее время в созданных человеком цифровых устройствах доминируют электронные логические вентили на базе полевых транзисторов, однако в прошлом для создания вентилей использовались и другие устройства, например, электромагнитные реле, гидравлические устройства, а также механические устройства.
https://ru.wikipedia.org/wiki/%D0%9B%D0%BE%D0%B3%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%B2%D0%B5%D0%BD%D1%82%D0%B8%D0%BB%D1%8C

При первом просмотре я подумал, что на 12 минуте показывают как реализовать AND/OR через NAND. Из курса מערכות ספרתיות (дигитальные системы? цифровые технологии?) известно, что NAND является функционально полным. Попробую объяснить "на пальцах": Любая функция алгебры логики может быть выражена в виде формулы через отрицание (NOT), конъюнкцию (AND) и дизъюнкцию (OR) (подробнее см. тут, это я учил на курсе логика и теория множеств).

Попробуем выразить отрицание (NOT), конъюнкцию (AND) и дизъюнкцию (OR) через NAND. (Формально, это доказывает, что {NAND} является функционально полной системой, т.е. можно построить любую схему имея только NAND).

NOT через NAND - Легко видеть,что A AND A=A, поэтому A NAND A=NOT A

AND через NAND - A NAND B даст NOT (A AND B). Т.к. NOT(NOT A)=A, то применяя NOT из пункта выше получим AND. В явном виде:

(A NAND B) NAND (A NAND B)

OR через NAND - ( A NAND A ) NAND ( B NAND B ) - это следует из законов де Моргана.

A OR B = {Закон Де Моргана} = NOT ((NOT A) AND (NOT B)) = {A NAND B = NOT (A AND B) - это можно доказать напрямую через таблицы истинности} =(NOT A) NAND (NOT B)=(A NAND A) NAND (B NAND B)

Второй способ (для меня первый способ более простой). Если внимательно рассмотреть таблицу истинности оператора NAND можно увидеть, что NAND даёт 0 тогда и только когда существует хотя бы один 0 на входе (1 NAND 1=0, в остальных случаях есть хотя бы один ноль в комбинации и получаем на выходе 1). Чтобы получить OR можно тогда и только когда если есть хотя бы один 1 на входе, то получали 1 на выходе (0 OR 0=0, в остальных случаях есть хотя бы одна единица в комбинации и получаем на выходе 1). Таким образом если мы инвертируем входы и подадим их в NAND мы получим, если есть хотя бы одна 1 получил на выходе 1 как при OR, т.е.

A OR B = (NOT A) NAND (NOT B)=(A NAND A) NAND (B NAND B)

Так вот, я думал, там нарисованы эти схемы как реализовать AND и OR через NAND. Я ошибся. :-) Там были просто схемы, которые состояли из последовательного применения логических вентилей.

А вот, про логический синтез я не помню. Цитаты из Википедии:

Логический синтез - процесс получения списка соединений логических вентилей из абстрактной модели поведения логической схемы (например, на уровне регистровых передач). Наиболее распространенный пример этого процесса — синтез спецификаций, написанных на языках описания аппаратуры.
https://ru.wikipedia.org/wiki/%D0%9B%D0%BE%D0%B3%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D1%81%D0%B8%D0%BD%D1%82%D0%B5%D0%B7

Язык описания аппаратуры (HDL от англ. hardware description language) — специализированный компьютерный язык, используемый для описания структуры и поведения электронных схем, чаще всего цифровых логических схем.

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

Языки описания аппаратуры являются неотъемлемой частью САПР, особенно для таких сложных схем, как специализированные интегральные схемы, микропроцессоры и программируемые логические устройства.

Основные практически используемые языки описания аппаратуры — Verilog и VHDL; также существует несколько десятков альтернативных языков.
https://ru.wikipedia.org/wiki/VHDL

Этого я не помню, чтобы я учил. Мой отец использовал эти языки описания аппаратуры для паяния плат дома. VHDL я слышал на интервью при приёме на работу в одну из компаний.


No comments:

Post a Comment