nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 12 Nov 2018 22:18



Reply to topic  [ 12 posts ] 
Табличные N-ричные сумматоры на ПЗУ 
Author Message
Senior

Joined: 08 Mar 2018 00:17
Posts: 189
Location: Россия, Москва
Reply with quote
Табличный 16-тиричный (4-хбитный, полубайтный) полный сумматор на ПЗУ 2708
Так как при 16-тиричном сложении в разряде переноса не бывает значения больше 1, то таблица
истинности гексадецитного (16-тиричного, полубайтного, 4-х битного) полного (трёхаргументного, трёхоперандного, трёхвходового) сумматора состоит из (2^4)*(2^4)*(2^1)=2^9=512-ти колонок и из-за большой величины здесь не приводится.
Ниже приведён снимок модели гексадецитного (16-тиричного, полубайтного, 4-х битного) полного (трёхаргументного, трёхоперандного, трёхвходового) сумматора в логическом симуляторе Atanua/Win32 1.2.130617:
Attachment:
AdderHexaDecimal.png
AdderHexaDecimal.png [ 164.59 KiB | Viewed 915 times ]

RS-триггеры с автоматической установкой в "0" при включении служат для ввода битов и к схеме собственно сумматора не относятся.
Семисегментные индикаторы с дешифратором-шифратором 309 отображают значения полубайтов и к схеме собственно сумматора тоже не относятся. Шестнадцатиричное значение "B" отображается знаком "-", а пустой индикатор означает шестнадцатиричное "D".

Значения полубайтов переноса и полубайтов суммы по модулю 16 вычислялись по нижеприведённой программе на Turbo Basic'е и записывались в два файла:
в файл "2708.TXT" для ручного ввода кода в WordPad'е до загрузки модели в симулятор Atanua/Win32 и
в файл "2708.BIN" для автоматического ввода кода командой "L" после загрузки модели в симулятор Atanua/Win32:
Code:
CLS
COLOR 10,0

DIM HexaDecimal$(15)
DATA "0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"
FOR I%=0 TO 15
  READ HexaDecimal$(I%)
NEXT I%

DIM F3HDS%(15,15,1),F3HDC%(15,15,1)

OPEN "2708.TXT" FOR OUTPUT AS # 1
OPEN "2708.BIN" FOR OUTPUT AS # 2

FOR K%=0 TO 1
  FOR J%=0 TO 15
    FOR I%=0 TO 15
      F3HDC%(I%,J%,K%)=(I%+J%+K%) \ 16
      F3HDS%(I%,J%,K%)=(I%+J%+K%) MOD 16
      PRINT HexaDecimal$(F3HDC%(I%,J%,K%));
      PRINT HexaDecimal$(F3HDS%(I%,J%,K%));
      PRINT #1,HexaDecimal$(F3HDC%(I%,J%,K%));
      PRINT #1,HexaDecimal$(F3HDS%(I%,J%,K%));
      F3HDCS%=F3HDC%(I%,J%,K%)*16+F3HDS%(I%,J%,K%)
      PRINT #2,CHR$(F3HDCS%);
    NEXT I%
  NEXT J%
NEXT K%

CLOSE # 1
CLOSE # 2

END


Результат выполнения программы на экране:
Attachment:
2708.JPG
2708.JPG [ 76.69 KiB | Viewed 915 times ]

В каждом байте: 1-й полубайт - перенос, а 2-й полубайт - сумма по модулю 16.
Посмотреть файл 2708.TXT можно в Блокноте или в WordPad'е.
Посмотреть файл 2708.BIN можно в ПониПрог-рамматоре.

Значения результатов суммирования можно записать в ПЗУ 2708 любым доступным способом. Автор открывал код модели adder222.atanua в редакторе текста WordPad и переносил результаты суммирования из файла 2708.TXT прямо в код ПЗУ 2708 после первых восьми полубайтов, которые обозначают объём записываемой в ПЗУ информации, в данном случае 51210 байтов = 0000020016 байтов из 102410 = 0000040016 возможных для 1 КилоБайтного ПЗУ 2708.
После загрузки модели в симулятор Atanua/Win32 записать код в ПЗУ 2708 можно автоматически штатной командой записи кода в ПЗУ 2708 "L" из файла 2708.BIN.

В прикреплённом архиве:
Attachment:
adder222.rar [4.58 KiB]
Downloaded 7 times

adder222.atanua - код модели сумматора в логическом симуляторе Atanua,
2708HBIN.BAS - программа на Turbo Basic'е вычисления результатов суммирования и записи их в файлы "2708.TXT" и "2708.BIN",
2708.TXT - файл с результатами суммирования для записи вручную в ПЗУ 2708 в WordPad'е,
2708.BIN - файл с результатами суммирования для автоматической записи в ПЗУ 2708 штатной командой "L".

Микросхемы 4-х битных полных сумматоров в одном корпусе выпускаются серийно, например микросхема 74LS283, которая есть в симуляторе логических схем Atanua/Win32.

Быстродействие гексадецитного (16-тиричного, полубайтного, 4-х битного) табличного сумматора на ПЗУ

Так как в ПЗУ 2708 используется однофазное кодирование битов адреса, то в нём применён как минимум двухступенчатый дешифратор с временем задержки как минимум равным 2*dt, где dt - время задержки в одном типовом логическом элементе. Ещё одна задержка равная как минимум 1*dt - в выходном шифраторе (в выходной сборке ИЛИ) ПЗУ 2708. Итого: 3*dt.
Так как триггеры регистров имеют два парафазных выхода одного бита, то возможно выполнение ПЗУ с парафазным (двухфазным, противофазным) дешифратором адреса с задержкой равной 1*dt. В этом случае суммарная задержка суммирования составит 2*dt, но в корпусе ПЗУ потребуется в два раза большее количество выводов для адреса, а бит переноса придётся записывать в парафазном (в двухфазном, в противофазном) виде: "01"="0" или "10"="1" в два бита полубайта переноса.
Для сравнения: сумматор Когге-Стоуна в полубайтном (4-х битном, 16-тиричном, гексадецитном) исполнении имеет задержку равную 6*dt.

Литература:
1. Национальный Открытый Университет ИНТУИТ. Введение в цифровую схемотехнику. Лекция 11: Постоянная память. ПЗУ как универсальная комбинационная микросхема. Стр.3-4.
2. Постоянные запоминающие устройства (ПЗУ)


Last edited by AndrejKulikov on 03 Nov 2018 23:57, edited 13 times in total.



15 Oct 2018 02:22
Profile
Senior

Joined: 08 Mar 2018 00:17
Posts: 189
Location: Россия, Москва
Reply with quote
8-ми битный (однобайтный) полный сумматор на 2-х табличных 16-тиричных (4-х битных, полубайтных) полных сумматорах на ПЗУ 2708
Снимок модели в логическом симуляторе Atanua/Win32 1.2.130617:
Attachment:
adder8-bit.png
adder8-bit.png [ 116.95 KiB | Viewed 852 times ]

Из-за ошибок в версии логического симулятора Atanua/Win32 1.2.130617 работать с сумматором лучше в версии Atanua/Win32 1.0.081116 - Personal Edition.

Время суммирования:
в версии на ПЗУ 2708 - 6*dt, где dt - время задержки в одном типовом логическом элементе,
в версии с ПЗУ с парафазным (двухфазным, противофазным) дешифратором - 4*dt.
Для сравнения: в сумматоре Когге-Стоуна, в 8-ми битном (256-тиричном) исполнении - 8*dt.

Код модели в логическом симуляторе Atanua/Win32:
Attachment:
adder223.rar [5.89 KiB]
Downloaded 6 times


17 Oct 2018 01:41
Profile
Senior

Joined: 08 Mar 2018 00:17
Posts: 189
Location: Россия, Москва
Reply with quote
16-ти битный (двухбайтный) полный сумматор на 4-х табличных 16-тиричных (4-х битных, полубайтных) полных сумматорах на ПЗУ 2708
Снимок модели в логическом симуляторе Atanua/Win32 1.2.130617:
Attachment:
adder16bit.png
adder16bit.png [ 88.49 KiB | Viewed 831 times ]

Из-за ошибок в версии логического симулятора Atanua/Win32 1.2.130617 работать с сумматором лучше в версии Atanua/Win32 1.0.081116 - Personal Edition.

Время суммирования:
в версии с ПЗУ 2708 - 12*dt, где dt - время задержки в одном типовом логическом элементе,
в версии с ПЗУ с парафазным (двухфазным, противофазным) дешифратором - 8*dt.
Для сравнения: в сумматоре Когге-Стоуна, в 16-ти битном (256-тиричном) исполнении - 10*dt.

Код модели в логическом симуляторе Atanua/Win32:
Attachment:
adder233.rar [10.31 KiB]
Downloaded 6 times

В общем случае для n-битных сумматоров время суммирования:

ts = 2(log2(n)+1)dt, в сумматорах Когге-Стоуна,

ts = (3/4)*n*dt, в табличных сумматорах на 4-хбитных табличных сумматорах на ПЗУ 2708,

ts = (1/2)*n*dt, в табличных сумматорах с версией ПЗУ с парафазным (двухфазным, противофазным) дешифратором.


17 Oct 2018 06:45
Profile
Senior

Joined: 08 Mar 2018 00:17
Posts: 189
Location: Россия, Москва
Reply with quote
Табличный 256-тиричный (8-мибитный, однобайтный) полный сумматор на ПЗУ

Таблица истинности 256-тиричного (8-мибитного, однобайтного) полного (трёхаргументного, трёхоперандного, трёхвходового) сумматора состоит из (2^8)*(2^8)*(2^1) = 2^17 = 131 072 = 128K колонок и из-за большой величины здесь не приводится.
Байты сумм по модулю 256 можно записать в EPROM 27C010 или 27C100 с ёмкостью 128КБайтов, а биты переноса в EPROM 27128 или 27C128 с ёмкостью 128Кбитов, которых нет в логическом симуляторе Atanua/Win32.

Время суммирования такого сумматора при двухступенчатом дешифраторе составит 3*dt, а при ПЗУ с парафазным (двухфазным) одноступенчатым дешифратором - 2*dt, но при этом вдвое увеличится количество парафазных выводов битов адреса и бита переноса.
Для сравнения: в сумматоре Когге-Стоуна в 8-мибитном (256-тиричном) исполнении время суммирования равно 8*dt.


18 Oct 2018 02:47
Profile
Senior

Joined: 08 Mar 2018 00:17
Posts: 189
Location: Россия, Москва
Reply with quote
Табличный 16-тибитный сумматор на двух табличных 256-тиричных сумматорах на ПЗУ

На двух табличных 256-тиричных (8-мибитных, однобайтных) сумматорах на ПЗУ, описанных в предыдущем посте, можно построить двухкаскадный последовательный 16-тибитный (двухбайтный) табличный сумматор на ПЗУ с временем суммирования равным 6*dt, в случае ПЗУ с двухступенчатым дешифратором, или 4*dt, в случае с одноступенчатым дешифратором.
Для сравнения: в сумматоре Когге-Стоуна, в 16-тибитном (двухбайтном) исполнении, время суммирования равно 10*dt.


Last edited by AndrejKulikov on 21 Oct 2018 07:00, edited 1 time in total.



21 Oct 2018 02:19
Profile
Senior

Joined: 08 Mar 2018 00:17
Posts: 189
Location: Россия, Москва
Reply with quote
Табличный 32-хбитный сумматор на четырёх табличных 256-тиричных сумматорах на ПЗУ

На четырёх табличных 256-тиричных (8-мибитных, однобайтных) сумматорах на ПЗУ, описанных в предыдущих постах, можно построить четырёхкаскадный последовательный 32-хбитный (четырёхбайтный) табличный сумматор на ПЗУ с временем суммирования равным 12*dt, в случае ПЗУ с двухступенчатым дешифратором, или 8*dt, в случае с одноступенчатым дешифратором.
Для сравнения: в сумматоре Когге-Стоуна, в 32-хбитном (четырёхбайтном) исполнении, время суммирования ts = 2(log2(n)+1)dt = 2(log2(32)+1)dt = 2(5+1)dt = 12*dt.


21 Oct 2018 06:59
Profile
Senior

Joined: 08 Mar 2018 00:17
Posts: 189
Location: Россия, Москва
Reply with quote
Табличный 65 536-тиричный (64K-ричный, 16-тибитный, двухбайтный) сумматор на ПЗУ

Таблица истинности 65 536-тиричного (16-тибитного, двухбайтного) сумматора состоит из (2^16)*(2^16)*(2^1) = 2^33 = 8 589 934 592 (8Гига) колонок с двухбайтными ячейками суммы по модулю 65536 и с 8-ю Гигами однобитных ячеек переноса и из-за большой величины здесь не приводится. В настоящее время ПЗУ с 8-ю Гигами двухбайтных слов не является большой проблемой, например, смартфон Xiaomi Mi 8 имеет 8 Гб ОЗУ и 128 Гб ПЗУ.

Время сложения при ПЗУ с однофазным двухступенчатым дешифратором равно 3*dt, а при ПЗУ с парафазным одноступенчатым дешифратором - 2*dt, но для парафазного переноса потребуется ПЗУ с 8-мью Гигами двухбитных ячеек.
Для сравнения: в сумматоре Когге-Стоуна, в 16-тибитном (двухбайтном) исполнении, время сложения ts = 2(log2(n)+1)dt = 2(log2(16)+1)dt = 2(4+1)dt = 10*dt.


22 Oct 2018 01:35
Profile
Senior

Joined: 08 Mar 2018 00:17
Posts: 189
Location: Россия, Москва
Reply with quote
Табличный 32-хбитный (четырёхбайтный) сумматор на двух табличных 65 536-тиричных (64K-ричных) сумматорах на ПЗУ

На двух табличных 65 536-тиричных (64K-ричных) сумматорах на ПЗУ можно построить последовательный 32-хбитный (четырёхбайтный) сумматор.

Время сложения в таком сумматоре при ПЗУ с однофазным двухступенчатым дешифратором будет равно 6*dt, а при ПЗУ с парафазным одноступенчатым дешифратором - 4*dt.
Для сравнения: в сумматоре Когге-Стоуна, в 32-хбитном (четырёхбайтном) исполнении, время сложения ts = 2(log2(n)+1)dt = 2(log2(32)+1)dt = 2(5+1)dt = 12*dt.


23 Oct 2018 00:43
Profile
Senior

Joined: 08 Mar 2018 00:17
Posts: 189
Location: Россия, Москва
Reply with quote
Табличный 64-хбитный (восьмибайтный) сумматор на четырёх табличных 65 536-тиричных (64K-ричных) сумматорах на ПЗУ

На четырёх табличных 65 536-тиричных (64K-ричных) сумматорах на ПЗУ можно построить последовательный 64-хбитный (восьмибайтный) сумматор.

Время сложения в таком сумматоре при ПЗУ с однофазным двухступенчатым дешифратором будет равно 12*dt, а при ПЗУ с парафазным одноступенчатым дешифратором - 8*dt.
Для сравнения: в сумматоре Когге-Стоуна, в 64-хбитном (восьмибайтном) исполнении, время сложения ts = 2(log2(n)+1)dt = 2(log2(64)+1)dt = 2(6+1)dt = 14*dt.


24 Oct 2018 10:06
Profile
Senior

Joined: 08 Mar 2018 00:17
Posts: 189
Location: Россия, Москва
Reply with quote
Дальнейшее увеличение битности (ичности) табличного сумматора на ПЗУ.

Конечно не плохо складывать целые числа равные длине машинного слова на табличном сумматоре за время равное 2*dt, но есть одно "но":
при длине машинного слова 32 бита количество колонок в таблице истинности сумматора составит: (2^32)*(2^32)*(2^1) = 2^65 = 36 893 488 147 419 103 232, что на 8-мь порядков больше, чем Гига,
при длине машинного слова 64 бита количество колонок в таблице истинности сумматора составит: (2^64)*(2^64)*(2^1) = 2^129 = 6,80e+38, что всего на два порядка меньше Радиусного большого числа Дирака (отношение радиуса Вселенной к радиусу электрона), т.е., если на каждую колонку в таблице истинности такого сумматора выделить по 1-му электрону, то размер сумматора будет всего в 100 раз меньше радиуса этой видимой Вселенной,
при длине машинного слова 128 битов количество колонок в таблице истинности сумматора составит: (2^128)*(2^128)*(2^1) = 2^257 = 2,31e+77, что на 37 порядков превышает Радиусное большое число Дирака (отношение радиуса Вселенной к радиусу электрона), т.е. если на каждую колонку в таблице истинности такого сумматора выделить по 1-му электрону, то размер сумматора будет на 37 порядков больше радиуса этой видимой Вселенной.
Вывод: в этой видимой Вселенной табличные сумматоры с временем сложения 2*dt и с битностью 128, 64 и с некоторыми другими построить (спасибо Дираку) невозможно.
"Гравюра Фламмариона":
Attachment:
800px-Flammarion.jpg
800px-Flammarion.jpg [ 319.78 KiB | Viewed 473 times ]

Но в этой видимой Вселенной (спасибо Когге и Стоуну) можно построить сумматор Когге-Стоуна с временем сложения ts = 2(log2(n)+1)dt, а в малобитных (до 16-ти битов) вычислителях можно применять более быстрые табличные сумматоры.


25 Oct 2018 06:12
Profile
Senior

Joined: 08 Mar 2018 00:17
Posts: 189
Location: Россия, Москва
Reply with quote
Экономичный табличный 16-ти битный сумматор

Для уменьшения объёмов ПЗУ в последовательных табличных сумматорах в 8-ми битной группе можно вычислять только разряд переноса за время равное 2*dt, а сложение внутри 8-мибитной группы выполнять двумя 4-хбитными табличными сумматорами, при этом в первом 4-х битном сумматоре можно использовать отдельные 512-типолубайтное ПЗУ для сумм по модулю 16 и 512-тибитное ПЗУ для разрядов переноса, а во втором 4-хбитном сумматоре разряд переноса можно не вычислять вовсе.
В таком сумматоре понадобятся:
два 128Kбитных ПЗУ для разрядов переноса в двух 8-мибитных группах,
два 512-тибитных ПЗУ для разрядов переноса в двух 4-хбитных группах и
четыре 512-типолубайтных ПЗУ для разрядов сумм по модулю 16 в четырёх 4-хбитных группах.
Attachment:
CombinAdder16bit.JPG
CombinAdder16bit.JPG [ 24.6 KiB | Viewed 326 times ]

Время сложения:
при применении в ПЗУ парафазных одноступенчатых дешифраторов равно 6*dt,
при применении в ПЗУ однофазных двухступенчатых дешифраторов равно 9*dt.
Для сравнения: время сложения в сумматоре Когге-Стоуна в 16-тибитном исполнении ts = 2(log2(n)+1)dt = 2(log2(16)+1)dt = 2(4+1)dt = 10*dt.


28 Oct 2018 04:38
Profile
Senior

Joined: 08 Mar 2018 00:17
Posts: 189
Location: Россия, Москва
Reply with quote
Экономичный табличный 32-х битный сумматор

По способу описанному в предыдущем посте можно построить и экономичный табличный 32-х битный сумматор:
Attachment:
CombinAdder32bit.JPG
CombinAdder32bit.JPG [ 53.4 KiB | Viewed 304 times ]

Время сложения:
при применении в ПЗУ парафазных одноступенчатых дешифраторов равно 10*dt,
при применении в ПЗУ однофазных двухступенчатых дешифраторов равно 15*dt.
Для сравнения: время сложения в сумматоре Когге-Стоуна в 32-хбитном исполнении ts = 2(log2(n)+1)dt = 2(log2(32)+1)dt = 2(5+1)dt = 12*dt.


30 Oct 2018 01:31
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 12 posts ] 

Who is online

Users browsing this forum: No registered users and 5 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

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.