АЛУ на NAND

4-битные микроконтроллеры и микропроцессоры (прошлое, настоящее, будущее)

Moderator: Lavr

User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

VituZz wrote:ЛР - в наличии :) :
ЛР1 - штук 25 в дипе и штук 15 133-их и 136-х;
ЛР3 - 8 штук;
ЛР9 - 6;
ЛР11 - пара десятков;
ЛР13 - 3.

Есть и расширители - ЛД1 (8 шт.) и одна ЛД3.

Но не будет ли применение ЛР отходом от принципов? Ведь в ней содержатся ИЛИ.
Я думаю не будет - т.к. её много и многие видимо не знали куда их применить - вот и оприходуем... :wink:

А "спортивную" часть программы мы выполнили и даже перевыполнили с учетом мультиплексоров на NAND.

Так что дальше - действуем "по-нищщебродски": лепим из того, чего у нас в достатке. :D
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Post by VituZz »

Я не возражаю, но у меня даже на ЛР до железа видимо не дойдёт - нет у меня таких больших макеток и не предвидится. Максимум - 8 на 8 см. АЛУ на ИМ и КП поместить можно.
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

TTL ALU 1

Post by Lavr »

Первый "нищебродский" вариант АЛУ из популярного и подручного ТТЛ-хлама:

Image
_______________ Рис. 8. _______________

Вариант, на мой взгляд, самый минималистичный. Всё уместилось в 28 стандартных 14-выводных корпусов.

Возможностей упростить что-либо пока не вижу.

В заданные габариты умещаемся очень даже неплохо! :kruto:

Image
.
Last edited by Lavr on 21 Oct 2011 16:03, edited 1 time in total.
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

TTL ALU 2

Post by Lavr »

Второй "нищебродский" вариант АЛУ из популярного и подручного ТТЛ-хлама:

Image
_______________ Рис. 9. _______________

Отличается от предыдущего отсутствием микросхемы К155ЛР1. Возможно, она кому-либо
придётся не по душе, в таком случае - этот вариант более приемлем...

Но в нём схема увеличивается до 31-го стандартного 14-выводного корпуса.

Теперь есть все варианты АЛУ, на мой взгляд, которые можно выполнить практически
из любого подручного ТТЛ-хлама.
Ну с помощью алгебры-логики и законов дуальности, конечно. :wink:

Время заняться дешифратором кода операции и, собственно, самими этими кодами... 8)

PS. Внёс в схему исправления замеченных опечаток (22.10.2011).
Last edited by Lavr on 22 Oct 2011 12:03, edited 2 times in total.
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

VituZz wrote:...но у меня даже на ЛР до железа видимо не дойдёт - нет у меня таких больших макеток и не предвидится. Максимум - 8 на 8 см. АЛУ на ИМ и КП поместить можно.
А попробуй в каком-либо симуляторе - тоже весьма интересно!
Симуляторы разные мы тут обсуждали где-то...
После эмуляции становится понятно - есть нужда эту конструкцию делать или - поигрался и хватит.
Я вобщем-то тоже с такой модели и начну, хотя я и так все узлы проверяю...
ЦПУ - оно ж не радиоприёмник, это радиоприёмник не услышать при эмуляции. :lol:
А ЦПУ очень даже наглядно работает в модели.
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Post by VituZz »

Lavr, а в какой программе ты рисуешь схемы? Уж очень мне не нравятся эти все буржуйские УГО...
Можно было бы адаптировать под входы-выходы этих двух вариантов АЛУ и третий вариант, который был первым :) - на ИМ и КП. В принципе ничего вроде сложного, просто чтобы подвести некоторую черту: Вот АЛУ. Три варианта. Конец параграфа. :)

ПС. Снова отвлекусь. В прошлом году я начал собирать один трансивер, который автор выложил на форуме. Вся дока - печатки, схемы. НО! На этом ведь дело не остановилось. Начались совершенствования, появились изменения и прочие улучшения. Вроде бы всё ничего... Но я не занимался трансивером целый год, а когда снова начал паять, то оказалось, что печатки устарели, схема электрическая не соответствует ни схеме монтажной, ни печаткам, прошивку контроллера вообще непонятно где искать - короче УЖАС! Я уж было хотел бросить... Форум разросся до нескольких тысяч сообщений, и найти что-то нужное - много часов перелопачивания из пустого в порожнее. К чему я этот опус? Давайте сразу обратим внимание на чёткость документации и контролируемое внесение изменений. Я понимаю, что нас здесь заинтересованных единицы, но всё же это не будет лишним. Вот закончили мы с АЛУ (ну, не мы, а Lavr :)), назвать его к примеру v.1a, v.1b, v.1c, присвоить дату 2011-10-22. Возможно, даже наваять отдельный .pdf с докой. Чтобы было легко ссылаться на схему в будущем и при внесении изменений было понятно, откуда и куда ноги ростут...
Во накатал, аж взопрел... :D
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Post by VituZz »

В качестве затравки предлагаю пример доки:
Ссылка
В неё нужно внести изменения, но это можно сделать в случае, если мы решим, что она действительно нужна.
Схемы получаются мелковаты, но при распечатке на бумагу читабельны.

* Извини, Виталий, но в *.pdf уже есть опечатки - подправил, чтобы не путаться. Lavr
Last edited by VituZz on 04 Mar 2015 10:05, edited 3 times in total.
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

VituZz wrote:Lavr, а в какой программе ты рисуешь схемы? Уж очень мне не нравятся эти все буржуйские УГО...
Можно было бы адаптировать под входы-выходы этих двух вариантов АЛУ и третий вариант, который был первым :) - на ИМ и КП. В принципе ничего вроде сложного, просто чтобы подвести некоторую черту: Вот АЛУ. Три варианта. Конец параграфа. :)
Схемы я рисую, как ни странно в Paint. Но я их не то чтобы рисую а практически
использую "копи-паст" из своих старых схем, которые тоже были нарисованы в Paint. :wink:
Ну соединения, конечно линиями тяну, но даже точки - это тоже "копи-паст".

Да, я знаю что есть очень много рисовалок, но очень трудно ими порой попасть
в заданный размер (обычно на лист или здесь в 640хYYY).
Поэтому я и привык в Paint - в нём я обычно точно попадаю в нужный размер.

Насчёт документации ты совершенно прав. Но только чютка поторопился.
Я в процессе работы над АЛУ всё подробно записываю в Вордовский файл.
Потому как не каждый день этим занимаюсь - и когда возвращаюсь к этому, то смотрю -
на чём всё закончилось и откуда продолжить.

А поторопился ты с *.pdf потому как я специально здесь вывешиваю всё подробно - для постороннего взгляда.
Ошибки и очепятки вполне возможны - вот сейчас я сам увидел недочёты в последней схеме.
Подправлю. Но может кто ещё что-то заметит.

А когда всё до ума доведу, я Вордовский файл и конвертну в *.pdf .
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Post by VituZz »

Хорошо. "Генеральную линию" должен вести один человек, но другие тоже могут делать посильную работу, чтобы это не выглядело как "ты сделай, а мы посмотрим". Я не знал, что доку отдельно ты уже ведёшь. А .pdf - это только потому, что не люблю я Ворда, да и Виндовса у меня нет.

Схему на ИМ3 ты тоже подправишь для совместимости по входам-выходам?
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

VituZz wrote:А .pdf - это только потому, что не люблю я Ворда, да и Виндовса у меня нет.
Я пишу в Ворде, в формате электронного документа, чтобы не подгонять схемы к страницам -
т.е. сплошной лист как документ .html .
VituZz wrote:Схему на ИМ3 ты тоже подправишь для совместимости по входам-выходам?
Нет - она рабочая и не нуждается в подправках.
Связь между её управляющими сигналами S0-S2 и управляющими сигналами S0-S7 остальных схем,
как я уже здесь уже писАл, всего-то через дешифратор типа "код-позиция", ну, к примеру, вот так:

Image

Это если тебе так уж нужно...
Но как я сразу предупредил - мы так делать не будем!
Потому как нам нужен дешифратор кода - а он более сложен.
Ну, к примеру вот такой (это нулевая прикидка, так сказать):

Image

В чём принципиальная разница? А в том, что на одной выборке S0sum, к примеру,
выполняется несколько команд, которые при включенном суматоре имеют разные С, В и А.
Эту коммутацию и должен делать наш сложный дешифратор.
VituZz wrote:"Генеральную линию" должен вести один человек, но другие тоже могут делать посильную работу, чтобы это не выглядело как "ты сделай, а мы посмотрим".
Что ж мысль весьма правильная. :wink: Поэтому - вот начальный вариант проекта дешифратора кода.
Каждый может попробовать свои силы в составлении и дешифрации системы команд...
если есть такое желание. :lol:
Last edited by Lavr on 22 Oct 2011 09:55, edited 1 time in total.
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Post by VituZz »

Lavr wrote: А в том, что на одной выборке S0sum, к примеру,
выполняется несколько команд, которые при включенном суматоре имеют разные С, В и А.
Эту коммутацию и должен делать наш сложный дешифратор.
Признаться, я пока по дешифратору не понял, в чём смысл. Можно чуть больше слов? :)
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

VituZz wrote:
Lavr wrote: А в том, что на одной выборке S0sum, к примеру,
выполняется несколько команд, которые при включенном суматоре имеют разные С, В и А.
Эту коммутацию и должен делать наш сложный дешифратор.
Признаться, я пока по дешифратору не понял, в чём смысл. Можно чуть больше слов? :)
Да в принципе - можно, хотя я не люблю слов без готовой схемы.

Суть следующая: по выборке S0sum включаются выходы сумматора на выходы АЛУ - R0-R3.
Выполняется операция сумирования R = А + B + C при этом С = 0, значит это команда ADD или ADI.

Если выполнить простое вычитание, то R = А + инверсия_B + C при этом С = 1, значит это команда SUB или SUI.

Значит вычитание - это тоже сложение только надо включить инвертор В, и включить мультиплексор С = 1, но выборка S0sum - должна быть включена!

И таких ситуаций, когда выборка S0sum включена набегает примерно 6 или более штук.

То есть на разные коды операций дешифратор должен сделать активным один и тот-же выход: S0sum.
Обычный дешифратор типа К155ИД4 так сделать не сможет.
У него 000 - на входе однозначно включает S0sum на выходе.

Именно поэтому приходится сочинить хитрый дешифратор, который при разных кодах на входе будет делать активной одну и ту же линию S0sum, но при этом переключать также мультиплексор С, инвертор В и мультиплексор А, чтобы на включенном блоке сумматора реализовать суммирование, вычитание, сравнение, инкремент и декремент.

То есть - все эти операции выполняет сумматор, его включает выборка S0sum , но вот аргументы и значение флага переноса на входе сумматора при этих операциях разные.

Это вкратце. Если я рассказал неубедительно, то очень хороша и понятна книжка:
Computation Structures (MIT Electrical Engineering and Computer Science)
Все кто берутся за "самогонные компьютеры", обычно опираются на неё.
Ссылки есть в нашей "библиотеке". И ещё подходящую литературку я там упоминал...
Last edited by Lavr on 22 Oct 2011 09:58, edited 1 time in total.
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Post by VituZz »

Lavr wrote: То есть на разные коды операций дешифратор должен сделать активным один и тот-же выход: S0sum.
Теперь понятно. Но поскольку одновременно не будет активирован более чем один сигнал из S0...S7, то почему нельзя в микрокоманде хранить 3-битный код микрооперации из числа S0...S7, а для модификации её действия (сложение будет или вычитание, к примеру), в микрокоманде предусмотреть те же биты выбора источника C и инверсии B? Сам же дешифратор 3х8 ввести в состав АЛУ. Разве не так строятся классические микропрограммируемые процы? Я где-то видел, что шина микрокоманды содержала до 56 бит! :o
Собственно, сам дешифратор не представляется мне совершенно необходимым даже для АЛУ на И-НЕ, просто он сокращает ширину шины микрокоманд.
Last edited by VituZz on 22 Oct 2011 10:38, edited 1 time in total.
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

VituZz wrote:
Lavr wrote: То есть на разные коды операций дешифратор должен сделать активным один и тот-же выход: S0sum.
Теперь понятно. Но поскольку одновременно не будет активирован более чем один сигнал из S0...S7, то почему нельзя в микрокоманде хранить 3-битный код микрооперации из числа S0...S7, а для модификации её действия (сложение будет или вычитание, к примеру), в микрокоманде предусмотреть те же биты выбора источника C и инверсии B? Сам же дешифратор 3х8 ввести в состав АЛУ. Разве не так строятся классические микропрограммируемые процы? Я где-то видел, что шина микрокоманды содержала до 56 бит! :o
Я знаю как это строится, и, собственно, этим и занимаюсь, что строю и никому не говорю НЕЛЬЗЯ. :wink:
И я не возражаю, если кто-либо свои мысли облекёт в готовое схемное решение и предложит его обсудить.
Для этого я выкладываю как схему, так и её проект, чтоб всяк желающий мог попробовать сделать так, как видно ему самому.
Всё - МОЖНО, как в микрокоманде, так и практически! :lol:
Я привёл схему дешифратора - и не против, чтобы ты ввёл его в АЛУ, если тебе хочется.
Я лично, как уже говорил, сделаю этот дешифратор отдельно по принципу "код-код", где выходной код будет сразу включать все нужные сигналы управления.
Мне больше нравится такое решение.

И я уже сказал не один раз, что над системой команд как раз размышляю и работаю, ориентируясь при этом на простоту схемотехники.
И пока в этих рамках я вижу - 12 бит команды и 4 бита данных, о чём тоже написал.
Надо бы всё же как-то внимательней читать форум... :wink:
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Post by VituZz »

Да внимательно я читаю, куда уж внимательней... Просто если у тебя есть прикидки вперёд, согласно которым так или иначе и делается схема, то это вовсе не значит, что эти предпосылки столь же очевидны и остальным :). А некоторые может и вовсе туповаты (это я о себе самокритично :)). И цель нашего общения здесь не столько в том, чтобы каждый построил схему так, как он видит (понятно, что никто этого не запрещает!), а чтобы родилась ОДНА конструкция. Просто смешно было бы делать каждому что-то своё, когда нас можно пересчитать по пальцам одной руки, и пальцев более чем хватит.