В случае ручного программирования ПЗУ 2К в логисимовкой модели - вот первые 100 троичных адресов, которые отображаются на начало двоичной памяти следующим образом (в скобках шестнадцатиричный адрес ячейки в ПЗУ):Shaos wrote:На самом деле часть отрицательной области троичной памяти таки попадает в эти 2K (не попадает только треть троичного адресного пространства):
Nxxxxx - не попадает (от -364 до -122)
Oxxxxx - попадает (от -121 до +121)
Pxxxxx - попадает (от +122 до +364)
т.е. у нас в 2K ПЗУ будет не 365 пятитритных слов, как я написал чуть выше, а целых 486 (или 23.7% от всего объёма 2К)!
Code: Select all
OOOOOO 0 (000)
OOOOOP 1 (001)
OOOOPN 2 (006)
OOOOPO 3 (004)
OOOOPP 4 (005)
OOOPNN 5 (01A)
OOOPNO 6 (018)
OOOPNP 7 (019)
OOOPON 8 (012)
OOOPOO 9 (010)
OOOPOP 10 (011)
OOOPPN 11 (016)
OOOPPO 12 (014)
OOOPPP 13 (015)
OOPNNN 14 (06A)
OOPNNO 15 (068)
OOPNNP 16 (069)
OOPNON 17 (062)
OOPNOO 18 (060)
OOPNOP 19 (061)
OOPNPN 20 (066)
OOPNPO 21 (064)
OOPNPP 22 (065)
OOPONN 23 (04A)
OOPONO 24 (048)
OOPONP 25 (049)
OOPOON 26 (042)
OOPOOO 27 (040)
OOPOOP 28 (041)
OOPOPN 29 (046)
OOPOPO 30 (044)
OOPOPP 31 (045)
OOPPNN 32 (05A)
OOPPNO 33 (058)
OOPPNP 34 (059)
OOPPON 35 (052)
OOPPOO 36 (050)
OOPPOP 37 (051)
OOPPPN 38 (056)
OOPPPO 39 (054)
OOPPPP 40 (055)
OPNNNN 41 (1AA)
OPNNNO 42 (1A8)
OPNNNP 43 (1A9)
OPNNON 44 (1A2)
OPNNOO 45 (1A0)
OPNNOP 46 (1A1)
OPNNPN 47 (1A6)
OPNNPO 48 (1A4)
OPNNPP 49 (1A5)
OPNONN 50 (18A)
OPNONO 51 (188)
OPNONP 52 (189)
OPNOON 53 (182)
OPNOOO 54 (180)
OPNOOP 55 (181)
OPNOPN 56 (186)
OPNOPO 57 (184)
OPNOPP 58 (185)
OPNPNN 59 (19A)
OPNPNO 60 (198)
OPNPNP 61 (199)
OPNPON 62 (192)
OPNPOO 63 (190)
OPNPOP 64 (191)
OPNPPN 65 (196)
OPNPPO 66 (194)
OPNPPP 67 (195)
OPONNN 68 (12A)
OPONNO 69 (128)
OPONNP 70 (129)
OPONON 71 (122)
OPONOO 72 (120)
OPONOP 73 (121)
OPONPN 74 (126)
OPONPO 75 (124)
OPONPP 76 (125)
OPOONN 77 (10A)
OPOONO 78 (108)
OPOONP 79 (109)
OPOOON 80 (102)
OPOOOO 81 (100)
OPOOOP 82 (101)
OPOOPN 83 (106)
OPOOPO 84 (104)
OPOOPP 85 (105)
OPOPNN 86 (11A)
OPOPNO 87 (118)
OPOPNP 88 (119)
OPOPON 89 (112)
OPOPOO 90 (110)
OPOPOP 91 (111)
OPOPPN 92 (116)
OPOPPO 93 (114)
OPOPPP 94 (115)
OPPNNN 95 (16A)
OPPNNO 96 (168)
OPPNNP 97 (169)
OPPNON 98 (162)
OPPNOO 99 (160)
P.S. Текст программы, которая генерит такой файл:
Code: Select all
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int i,j,k;
char top[7] = "NNNNNN";
for(i=-364;i<=364;i++)
{
j = i;
if(j < 0) j+=256;
k = 0;
if(top[5]=='P') k=1;
if(top[5]=='N') k=2;
if(top[4]=='P') k|=4;
if(top[4]=='N') k|=8;
if(top[3]=='P') k|=16;
if(top[3]=='N') k|=32;
if(top[2]=='P') k|=64;
if(top[2]=='N') k|=128;
if(top[1]=='P') k|=256;
if(top[1]=='N') k|=512;
if(top[0]=='P') k|=1024;
if(top[0]=='N') k|=2048;
printf(" %s %i\t[%3.3X]\n",top,i,k);
/* balanced ternary increment */
if(++top[5]=='Q')
{
top[5] = 'N';
if(++top[4]=='Q')
{
top[4] = 'N';
if(++top[3]=='Q')
{
top[3] = 'N';
if(++top[2]=='Q')
{
top[2] = 'N';
if(++top[1]=='Q')
{
top[1] = 'N';
if(++top[0]=='Q')
{
top[0] = 'N';
}
}
}
}
}
}
}
return 0;
}