|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
Author |
Message |
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
АЛУ на NAND
Я тут решил прикинуть, во что выльется процессор на вентилях NAND или ЛА3. Тем более, что Шаос их прикупил 100 штук, а попадалось мне высказывание, что ему и тысячи их не хватит. Ну это - смотря, что делать. Я не знаю, какие планы у Шаоса, но решил сориентироваться, во что выльется хотя бы АЛУ. Вариантов, конечно много, но я решил попробовать самый, на мой взгляд, простой.
Как пишут на одном сайте - АЛУ из учебника для ВУЗов http://www.6502.org/users/dieter/a1/a1_5.htm (там же есть примечание, что этот артефакт обычно не работает, хотя я не вижу для этого особых причин).
Если это перерисовать несколько подробнее и слегка упростить, то может получиться примерно вот такой узел:
Поскольку сдвиги сделаны переназначением выводов и флага переноса, а регистры особого интереса не вызывают, я попробовал смоделировать на вентилях узел, выделенный красным цветом. Ну и поскольку есть в схеме мультиплексор, то я решил, что не станет грехом использовать вентили с открытым коллектором, поскольку это упрощает мультиплексор, если использовать монтажное "ИЛИ".
Чтобы количество корпусов минимизировать, я решил сделать сначала сумматор, а потом в нем доконструировать остальные элементы, поскольку сумматор частично их будет включать. Если не применять для упрощения всякие шустрые схемы переносов, а использовать последовательный перенос, то в рамках одного разряда получилось вот что:
Здесь уже есть NAND - D1, и XOR - (D1, D2, D3, D4). Остаётся изыскать OR, организовать мультиплексор и правильные полярности всех сигналов. Получилась следующая схема:
В основном тут всё сильно усложняет как раз OR, но проще у меня не получилось. Возможно, кто-то предложит упрощение?
Если подсчитать число корпусов для 8-разрядного АЛУ, то получается ( 19х8 )/4+1=39 14-выводных корпусов. Серьёзная такая плата 5х8 посадочных мест.
Неплохо всё упрощается, если вентиль D1 заменить на трёхвходовый. Тогда при его запрещении = 0 (D2, D3, D4) будут работать как OR.
Можно ещё 2 элемента выкинуть, если OR и XOR будут выводиться через один и тот же выход (по сути, они дублируются), но тогда на 1 элемент усложнится выборка выходного мультиплексора. В этом случае количество 14-выводных корпусов составит: ( 16х8 )/4+1=33 штуки (один корпус я добавляю для инверсии сигналов управления мультиплексором, поскольку активный уровень на выходе дешифратора обычно = 0. Дальнейшее уменьшение числа корпусов, как мне кажется, возможно при переходе на более сложную логику.
Last edited by Lavr on 04 Apr 2013 15:14, edited 3 times in total.
|
16 Jan 2011 09:03 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Очень неплохо получается, если взять более широкую номенклатуру логики. (Готовый XOR я специально не применял). Всего задействуется: 1/2х8=4 - ЛА3, 1х8=8 - ЛР1, 1х8=8 - ЛА8, 3 - ЛА4 (-1 лишний), 1/3х9=3 - ЛН1 (-2 лишних: 6x3=18-(2x8)=2), всего 8+8+4+3+3=26 корпусов + 4 корпуса на сдвиги = 30 корпусов. PS. от 16.10.2011 Для тех, кто открыл этот топик впервые и не жаждет изучать 10 страниц наших размышлений, обсуждений и прочих "тёрок", АЛУ исключительно на NAND приобрело в итоге следующий вид:_______________ Рис. 7. _______________ Согласно приведённой принципиальной электрической схеме 4-битного АЛУ на вентилях NAND, назначение управляющих сигналов следующее. Сигналы S0–S7 осуществляют выбор операции над двумя операндами, поступающими на входы операционного устройства АЛУ. Сигналы C0-C3 коммутируют значение на входе линии флага переноса Cin операционного устройства АЛУ, и позволяют выбрать соответственно следующие значения: " 0", C, " 1", /C для выполнения определённых операций в АЛУ. Сигналы K0-K2 позволяют подавать на входы первого операнда операционного устройства АЛУ полубайты собственно аргумента A, значения 0h и 0Fh соответственно. Сигнал BN (B Negative) позволяет инвертировать значение второго операнда операционного устройства АЛУ во всех операциях вычитания. Логика подсказывет подключить управляющие входы ко внешним дешифраторам типа "код-позиция", но на мой взгляд, более экономичное решение - разработать отдельную схему управления АЛУ, представляющую собой, по сути, сложный декодер типа "код-код", поскольку сигналы управления АЛУ взаимосвязаны между собой. Флаг Р реализован как признак чётности результата (бит 0). В АЛУ реализуется следующая система команд, приведённая в таблице: 4-битное АЛУ содержит 37 14-выводных корпусов ТТЛ микросхем. Разработана и более законченная и работоспособная схема: Кто хочет всё-же узнать, как был достигнут этот результат - читайте весь топик. Он весьма интересен!
Last edited by Lavr on 28 Oct 2011 14:15, edited 7 times in total.
|
17 Jan 2011 07:03 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22626 Location: Silicon Valley
|
А что сказать? Поддерживаю
P.S. Вместо открытого коллектора надо буфера юзать т.к. выход 8-битный всё равно будет - я их тоже много прикупил по дешёвке
|
20 Jan 2011 22:39 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Дык в дремучих машинах подсмотрел - у них, наверное, были трудности с МС тристабльных буферов, и они даже шины тянули на ОК, причем тогда писали, что притяжка к +5 резюками улучшает емкостную характеристику шины.
Но, впрочем, у меня ЛА8 хоть и не сто штук, но приемлемая коробка -
думаю вот заюзать их нафиг.
|
20 Jan 2011 23:01 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Кстати говоря, внутренняя шина 6502 выполнена на открытых коллекторах:
http://www.emuverse.ru/wiki/MOS_Technology_6502
|
24 Jan 2011 07:01 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Как я предварительно посчитал, 8-битное только АЛУ вырисовывается в
33 корпуса - а это больше половины двойной макетки если добавить
логику обслуживания. Если перейти к 4-битной конструкции то можно
уложиться ~ в 20 корпусов целиком. Это будет выглядеть вот так:
Есть некоторая надежда в 4-битном варианте воплотить весь компьютер
в виде одноплатной конструкции... если ещё и вспомнить - сколько
155-я серия по питанию жрёт!!!
|
23 Jun 2011 11:59 |
|
|
VituZz
God
Joined: 13 Nov 2010 04:06 Posts: 1345
|
Не страшно. БП от ПЦ однозначно потянет любой такой комп. Мы же не собираемся питать детище от зарядки для мобилок? Для особых экстремалов и ретроградов - БП от ЕС ЭВМ, минимум 5В 8А - на сотню корпусов 155-й серии хватит...
|
23 Jun 2011 22:15 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Просто вспомнил свой весьма негативный опыт...
Одна плата, вид которой я привёл в топике МС2702 :
http://www.nedopc.org/forum/viewtopic.php?t=8848
жрала столько, что я не смог её запустить от стандартных "армянских"
источников типа Б3... Б5... на пределе 5А.
Может всё происходило в импульсе включения, а может плата нам попалась
неисправная, но она так и не включилась.
Срабатывала защита источников перегрузки по току...
Исследований проводить не стали - ну если она столько жрёт, куда ж нам её задействовать... Правда в ней шинных формирователей "туевы хучи", но
у меня и " Специалист МХ" под ампер кушает - а он примерно 3/4 этой платы.
Last edited by Lavr on 14 Oct 2011 06:56, edited 1 time in total.
|
24 Jun 2011 06:15 |
|
|
VituZz
God
Joined: 13 Nov 2010 04:06 Posts: 1345
|
У меня одна платка 8х8см кушает около ампера, одни только 4х580ИР82=4х160ма=640мА. Пришлось использовать БП от ПЦ.
|
24 Jun 2011 09:15 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Дмитрий - а нет ли какого программного примера побитного парсинга
команд К580ВМ80?
Посмотрел на имеющиеся у меня образцы исходников дизассемблеров -
там в основном табличная перекодировка код - мнемоника.
|
24 Jun 2011 15:26 |
|
|
b2m
Devil
Joined: 26 May 2003 06:57 Posts: 866
|
Это как?
По таблице гораздо быстрее: я обычно делаю табличку 256 байт, в которой содержатся номера мнемоник, а по номеру в другой табличке беру саму мнемонику и какие параметры нужно декодировать.
_________________Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
|
25 Jun 2011 11:51 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Ну можно сделать примерно вот так:
Хотя это можно считать по сути разновидностью таблицы...
|
25 Jun 2011 14:30 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Я здесь несколько раз поднимал вопрос о том, как проверить быстродействие самодельного АЛУ, и к общему знаменателю мы как-то так и не пришли...
Поскольку 4-битный компьютер имеет смысл делать только если его быстродействие весьма велико, о чём свидетельствуют соотношения для Wang 2200:
http://www.nedopc.org/forum/viewtopic.php?t=9573&start=135
то тест на быстродействия для АЛУ представляет актуальность.
Есть у меня такая мысль: поскольку АЛУ - устройство комбинационного типа, и есть варианты его исполнения как таблицы, зашитой в ПЗУ, то можно предложить следующий вариант теста.
Таблицу для конкретного АЛУ заносим в быстродействующее статическое ОЗУ, после чего начинаем одновременно перебирать на чтение адреса ОЗУ, которые для АЛУ будут аргументами А, В и кодом функции. По выходам ставим цифровые компараторы, или схемы совпадения.
После нескольких переборов, частоту смены адресов увеличиваем, и так до тех пор, пока не будет обнружено несовпадение на выходах АЛУ и статического ОЗУ.
Это значение частоты и будет определять быстродействие АЛУ, причём несовпадение должно сразу же оключить перебор адресов, а не моргать визуальной индикацией.
|
16 Jul 2011 06:36 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Авторы PMD-85 на ATmega128 такой метод считают быстрым:
|
18 Jul 2011 07:27 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
4-BIT АЛУ на TTLЯ решил сделать прикидку схемотехники 4-битного АЛУ на основе ТТЛ вентилей, чтобы завершить этот вопрос, который мы, как мне кажется, в основных чертах здесь обсудили. Я также решил придержаться традиционной блок-схемы АЛУ, представленной на следующем рисунке: _______________ Рис. 1. _______________ где А0–А3 – входы от 4-битного регистра-аккумулятора, исполняющего функцию первого операнда; В0–В3 – входные сигналы второго операнда – регистра временного хранения; R0– R3 – выходные сигналы АЛУ, линии регистра временного хранения результата; S0–S2 – выбор функций, выполняемых арифметико-логическим устройством; Cin – вход сигнала переноса; Z, S, P, С – флаги-признаки результата последней операции, соответственно, нуля, знака, чётности и переноса. Три сигнала выбора функции АЛУ – S0–S2 – определяют наличие в его составе 2^3=8 аппаратных блоков, реализующих соответствующие функции. В качестве основных блоков в состав АЛУ введём полный сумматор, выполняющий арифметические функции сложения ( ADD, ADI), вычитания ( SUB, SUI) и сравнения ( CMP, CPI); логические вентили И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ, реализующие соответственно логические операции конъюнкции ( AND, ANI), дизъюнкции ( ORA, ORI) и суммирования операндов по модулю два ( XOR, XRI), а также отрицания (поразрядного дополнения до единицы) одного из операндов ( NOT=А XOR 0Fh). Следует иметь в виду, что логические команды этой группы сбрасывают бит переноса С. Также в состав АЛУ введём схемы реализации арифметических и логических сдвигов – RAR, RAL, RRC и RRC – реализованные перестановкой сигнальных линий операнда А0–А3. В схеме АЛУ не используются инверторы, поскольку функция поразрядного инвертирования бит аккумулятора выполняется на основе вентиля XOR, представляющего собой вариант управляемого инвертора. И чтобы схема была обозрима в размерах, а также понятна функционально я решил выполнить её сначала на наиболее подходящей элементной базе, обсудить здесь достаточность получившейся системы команд, после чего апробировать работу этого АЛУ на модели, и преобразовать схему в конструкцию на вентилях NAND, после чего рассмотреть возможность применения данного АЛУ в схемотехнике 4-битного процессора.Принципиальная электрическая схема окончательного варианта АЛУ приведена на следующем рисунке. _______________ Рис. 2. _______________ Согласно приведённой принципиальной электрической схеме 4-битного АЛУ, назначения управляющих сигналов следующее. Сигналы S0–S2 осуществляют выбор операции над двумя операндами, поступающими на входы операционного устройства АЛУ. Сигналы C1,C2 коммутируют значение на входе линии флага переноса C0 операционного устройства АЛУ, и позволяют выбрать соответственно следующие значения: " 0", C, " 1", /C для выполнения определённых операций в АЛУ. Сигналы K1,K2 на входах 1 и 2 мультиплексоров аргумента позволяют подавать на входы первого операнда операционного устройства АЛУ полубайты собственно аргумента A и значения 0h , 0Fh и 0h соответственно. Последнее значение 0h является избыточным, и может быть впоследствии заменено на другое (возможно, /A). Сигнал BN (B Negative) на входе вентилей XOR микросхемы К155ЛП5 позволяет инвертировать значение второго операнда операционного устройства АЛУ во всех операциях вычитания. Возникает вопрос - нужен ли реальный флаг чётности Р в составе АЛУ? Есть мнение, что это рудимент использования в коммуникационных программах. Может имеет смысл и удобен флаг просто чётности результата (как Р со штрихом) т.е. состояние бита 0? В АЛУ реализуется следующая система команд, приведённая в таблице, где также указаны значения всех управляющих сигналов. Для сравнения я рассмотрел аналогичные команды, реализованные в i8080. Похожая логика в кодировке прослеживается. Вопросы, прежде чем двигаться дальше, хотелось бы обсудить следующие: 1. Достаточна ли реализованная система команд?2. Не избыточна ли реализованная система команд?Это вопрос у меня возник при сравнении с системой команд микроконтроллера PIC16F84. У него нет аналогов RRC и RLC, а есть только - RAR, RAL - насколько такое упрощение существенно для программирования? И второе микроконтроллер PIC16F84 вычитает операнд не из регистра-аккумулятора, а наоборот: из второго операнда вычитается значение регистра-аккумулятора. Схемотехнически это позволяет убрать из схемы инверсию второго операнда. В PIC16F84 также не реализованы операции сложения с учётом флага переноса и вычитания с заёмом - это также значительно упрощает схемотехнику АЛУ. Но программирование, как мне кажется, серьёзно осложняет. Жду вашего мнения…
Last edited by Lavr on 15 Oct 2011 03:03, edited 6 times in total.
|
14 Oct 2011 05:12 |
|
|
Who is online |
Users browsing this forum: No registered users and 19 guests |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum
|
|