nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 15 Nov 2018 04:01



Reply to topic  [ 52 posts ]  Go to page Previous  1, 2, 3, 4  Next
3niti alpha simu1 - троичный компьютер на двоичном пике 
Author Message
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17121
Location: Colorado
Reply with quote
Post 
Напоминаю как работают троичные часы - количество часов показывается в диапазоне от OOOO (0) до PONN (23), минуты и секунды в диапазоне от NONO (-30) до POPN (+29). Т.е. термин "полвторого" в случае троичных часов принимает буквальное значение - они будут показывать не 1:30, а 2:-30 :roll:

_________________
:eugeek: https://twitter.com/Shaos1973


28 Nov 2009 10:35
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17121
Location: Colorado
Reply with quote
Post 
Собрал тестовый вариант nedoSerial-2009 на печатке, полученной лутом - буду тестить последовательное соединение с PC (точнее с маком):

Image

_________________
:eugeek: https://twitter.com/Shaos1973


Last edited by Shaos on 09 Apr 2010 19:37, edited 1 time in total.



12 Dec 2009 18:00
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17121
Location: Colorado
Reply with quote
Post 
На форуме www.Ternary.info рассказываю в картинках про правильную сборку платы Rev.A:

http://ternary.info/modules/newbb/viewt ... 59&forum=4

Если кому есть что сказать-прокомментировать - прошу не стесняться :roll:

_________________
:eugeek: https://twitter.com/Shaos1973


09 Apr 2010 19:31
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17121
Location: Colorado
Reply with quote
Post 
Shaos wrote:
На форуме www.Ternary.info рассказываю в картинках про правильную сборку платы Rev.A:

http://ternary.info/modules/newbb/viewt ... 59&forum=4

Если кому есть что сказать-прокомментировать - прошу не стесняться :roll:


Повествование закончено! :dj:

_________________
:eugeek: https://twitter.com/Shaos1973


17 Apr 2010 16:06
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17121
Location: Colorado
Reply with quote
Post 
Shaos wrote:
Программная эмуляция троичного процессора будет вычерпывать из внешней последовательной памяти (по I2C на частоте 400 кГц) байты, в которых будут хранится триады (два бита на один трит) с контрольным тритом, блоками по 27 триад во внутренний "кеш" команд, по которому будет проходить быстрая эмуляция. Кеша данных наверное не будет (во всяком случае пока), т.е. для данных будет прямое чтение-запись триад. По коду видно, что в переменных пика выделены две области по 27 байт - с адресами от 32 до 58 (c_base) и от 59 до 86 (d_base - эта область предполагалась для кеша данных, но скорее всего там будет вторая страницы блока команд) - именно туда будут сливаться команды для эмуляции на максимальной скорости pic16f870 - 5 миллионов команд в секунду (при тактовой частое 20 МГц). Например подпрограмма троичной инверсии (tri_neg) занимает 14 тактов - это значит что на максимальной скорости этот "эмулятор" сможет делать 357 тысяч троичных инверсий в секунду.


Внимательный читатель может спросить - почему в таблице компонентов у меня стоит 24c32 (последовательное ПЗУ на 4 КБ), а в схеме - 24c512 (последовательное ПЗУ на 64 КБ). Ответ простой - для минимальной работы достаточно 24c32, а в будущем возможна поддержка микросхем памяти вплоть до 24c512. Разве что в отличие от 24c32 и 24c64, где WP защищает от записи только старший квадрант (соответственно старшие 1 КБ и 2 КБ), а во всём, что старше (24c128, 24c256, 24c512), нога WP запрещает запись во всю память, т.е. для полноценной эмуляции троичных ПЗУ/OЗУ в одном флаконе может и не подойти. С другой стороны для этих больших микросхем вместо аппаратной можно сделать программную защиту от записи в область, эмулирующую троичное ПЗУ - т.е. любые попытки записи туда через троичные тумблеры просто не будут разрешаться эмулятором.

Чтобы определиться сколько же нам надо килобайтов, сначала вспомним описание оригинальной архитектуры 3niti alpha, где про память написано следующее:
Quote:
In first prototype highest trit of address will be always 0 and remaining address space is divided to 3 equal parts:
-3280...-1094: space for peripheral devices (ternary or binary);
-1093...+1093: space for ROM with basic system program;
+1094...+3280: space for RAM with user program/data.


Как видно доступная память разделяется на три куска по 2187 триад (каждая триада будет у нас описываться одним байтом). В случае же полноценного использование всех 9 тритов для адресации троичной памяти полный диапазон адресов будет -9841...+9841, причём под ПЗУ будyт также отданы лишь средние 2187 триад, размер же ОЗУ (расположенного выше +1094 включительно) составит 8748 триад. Область периферийных устройств может также потребовать наличия памяти для эмуляции - это ещё 8748 триад. Т.е. для полноценной работы с 9-тритовыми адресами нам надо как минимум 19683 байт в нашем ПЗУ с последовательным доступом из которых желательно защитить от записи до 2187 байт.

В случае 24c32 (4 КБ) мы можем аппаратно защитить от записи старшие 1024 байта, что несколько меньше чем нужно, однако вполе достаточно на первое время - скажем они могут покрыть область троичного ПЗУ с адресами от 0 до +1023 (что означает, что старшие 71 триада и отрицательная часть троичного ПЗУ эмулироваться через двоичное ПЗУ не будут). Оставшиеся 3072 байта (что есть 3 КБ) могут быть поделены между 2187 триадами троичного ОЗУ и оставшимися 885 байтами, которые можно отнести в область периферии (адреса ниже -1094 включительно), из которых скажем 729 (для круглого троичного счёта) можно назначить буфером обмена для "умных" внешних устройств, а оставшиеся 156 зарезервировать под остальную виртуальную периферию.

В случае 24c64 (8 КБ) мы можем аппаратно защитить от записи старшие 2048 байт, что только немного меньше чем нужно (а нужно напомню 2187 триад). Оставшиеся 6 КБ полностью покроют область троичного ОЗУ и область виртуальной периферии первого прототипа, причём ещё и останется (1770 байт). Для эмуляции же полной 9-тритовой троичной памяти этого чипа будет недостаточно.

Для последовательных ПЗУ большего размера защиту от записи придётся делать программно. Чип 24c128 (16 КБ) не сможет покрыть всё доступное 9-тритное адресное пространство, однако он вполне сможет покрыть облать полного троичного ОЗУ - 8748 триад. Скажем если мы отнесём под троичное ПЗУ указанные ранее 2187 триад, то у нас останется 5449 триад, которые можно использовать под эмуляцию виртуальной периферии. Покрыть все 19683 триад при полной 9-тритной адресации сможет чип 24c256 (32 КБ), оставшуюся область которого можно использовать скажем для эмуляции троичного дискового накопителя объёмом 13085 триад. А чип 24c512 (64 КБ) будет иметь эмулируемый диск размером уже 45853 триады.

Кстати все эти последовательные ПЗУ допускают до миллиона циклов записи, т.е. их использование для эмуляции троичного ОЗУ в каком-то смысле оправдано. Хотя всегда можно отвести несколько регистров пика под часть эмулируемого троичного ОЗУ - только для наиболее часто меняющихся переменных троичных программ. Точно также несколько ячеек адресуемых в области троичного ПЗУ можно не хранить во внешнем ПЗУ, а подставлять в эмуляторе для индентификации конкретной реализации "3niti alpha", версии аппаратной части и версии программной части.

_________________
:eugeek: https://twitter.com/Shaos1973


18 May 2010 22:15
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17121
Location: Colorado
Reply with quote
Post 
Shaos wrote:
Shaos wrote:
На форуме www.Ternary.info рассказываю в картинках про правильную сборку платы Rev.A:

http://ternary.info/modules/newbb/viewt ... 59&forum=4

Если кому есть что сказать-прокомментировать - прошу не стесняться :roll:


Повествование закончено! :dj:


Повествование облечено в PDF форму:

http://ternary.info/ternary/3niti1-book.pdf (2.6 MB)

P.S. Вопросы использования и расширения (в троичном смысле) платы "3niti alpha simu1" предлагаю вести на нашем троичном форуме:
http://ternary.info/modules/newbb/viewt ... 64&forum=4

P.P.S. А тут лучше обсуждать всякие двоичные тонкости реализации троичного эмулятора и т.д...

_________________
:eugeek: https://twitter.com/Shaos1973


05 Jun 2010 20:58
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17121
Location: Colorado
Reply with quote
Post 
Shaos wrote:
Кстати все эти последовательные ПЗУ допускают до миллиона циклов записи, т.е. их использование для эмуляции троичного ОЗУ в каком-то смысле оправдано. Хотя всегда можно отвести несколько регистров пика под часть эмулируемого троичного ОЗУ - только для наиболее часто меняющихся переменных троичных программ. Точно также несколько ячеек адресуемых в области троичного ПЗУ можно не хранить во внешнем ПЗУ, а подставлять в эмуляторе для индентификации конкретной реализации "3niti alpha", версии аппаратной части и версии программной части.


Подумалось мне, что наверное жирно юзать ПЗУ как ОЗУ - у нас ведь I2C куда можно ещё и срам подцепить, например такой как PCF8570 (он правда всего на 256 байт):

http://search.digikey.com/scripts/DkSea ... -1071-5-ND

С другой стороны наверное такое расширение можно отложить на будущее, а пока юзать одну страницу ОЗУ (27 триад) как быструю память, находящуюся непосредственно в памяти пика, а всё остальное - как медленную память, находящуюся в последовательном пзу. Кроме того у этого пика есть 64 байта EEPROM, что также можно заюзать под конфигурацию либо под часть эмулируемого троичного пзу

_________________
:eugeek: https://twitter.com/Shaos1973


07 Jun 2010 20:39
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17121
Location: Colorado
Reply with quote
Post 
А вообще ОЗУ в тринити для двух разных целей может быть предназначено:
1) хранение введённой юзером программы (или загруженной с компьютера)
2) переменные необходимые для работы программ из ПЗУ и ОЗУ
Вот как раз первый пункт вполне можно раположить в ПЗУ I2C, а второй - желательно иметь или внутри пика, или в сраме

P.S. Кстати PIC16F870 (и его старший брат PIC16F871) позволяют читать и писать память программ (т.е. флеш) программно, т.е. свободную область кода можно юзать как троичное ПЗУ (две триады на одно слово) ну и загрузку прошивки прямо в плату можно теоретически организовать (т.е. без программатора)

_________________
:eugeek: https://twitter.com/Shaos1973


08 Jun 2010 06:36
Profile WWW
Retired

Joined: 03 Aug 2003 23:37
Posts: 1481
Location: Moscow
Reply with quote
Post 
Shaos wrote:
P.S. Кстати PIC16F870 (и его старший брат PIC16F871) позволяют читать и писать память программ (т.е. флеш) программно, т.е. свободную область кода можно юзать как троичное ПЗУ (две триады на одно слово) ну и загрузку прошивки прямо в плату можно теоретически организовать (т.е. без программатора)


А каков ресурс, сколько раз можно записать?

_________________
Extreme Entertainment


11 Jun 2010 14:31
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17121
Location: Colorado
Reply with quote
Post 
Mac Buster wrote:
Shaos wrote:
P.S. Кстати PIC16F870 (и его старший брат PIC16F871) позволяют читать и писать память программ (т.е. флеш) программно, т.е. свободную область кода можно юзать как троичное ПЗУ (две триады на одно слово) ну и загрузку прошивки прямо в плату можно теоретически организовать (т.е. без программатора)


А каков ресурс, сколько раз можно записать?


Я уже писал чуть выше - до миллиона циклов перезаписи

P.S. Хотя я это про ПЗУ писал, но тем не менее - до миллиона и там, и тут...

_________________
:eugeek: https://twitter.com/Shaos1973


11 Jun 2010 23:18
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17121
Location: Colorado
Reply with quote
Post 
Shaos wrote:
Кстати PIC16F870 (и его старший брат PIC16F871) позволяют читать и писать память программ (т.е. флеш) программно, т.е. свободную область кода можно юзать как троичное ПЗУ (две триады на одно слово) ну и загрузку прошивки прямо в плату можно теоретически организовать (т.е. без программатора)


В связи с этим хочу сделать встроенный бутлоадер, который при старте платы, если крайний правый переключатель находится в верхнем положении (т.е. режим "Step"), будет ожидать ввода HEX-прошивки непосредственно через последовательный порт. При этом программа будет сама себя защищать - отказываться писать те части прошивки, которые будут залезать на бутлоадер.

_________________
:eugeek: https://twitter.com/Shaos1973


14 Jun 2010 16:41
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17121
Location: Colorado
Reply with quote
Post 
Shaos wrote:
Mac Buster wrote:
Shaos wrote:
P.S. Кстати PIC16F870 (и его старший брат PIC16F871) позволяют читать и писать память программ (т.е. флеш) программно, т.е. свободную область кода можно юзать как троичное ПЗУ (две триады на одно слово) ну и загрузку прошивки прямо в плату можно теоретически организовать (т.е. без программатора)


А каков ресурс, сколько раз можно записать?


Я уже писал чуть выше - до миллиона циклов перезаписи

P.S. Хотя я это про ПЗУ писал, но тем не менее - до миллиона и там, и тут...


Стал читать даташит внимательнее - не вижу информации о количестве циклов перезаписи
Посторонние источники говорят о 1000 циклах для флеша и 100000 циклах для EEPROM...

_________________
:eugeek: https://twitter.com/Shaos1973


16 Jun 2010 16:04
Profile WWW
Retired

Joined: 03 Aug 2003 23:37
Posts: 1481
Location: Moscow
Reply with quote
Post 
Shaos wrote:
Стал читать даташит внимательнее - не вижу информации о количестве циклов перезаписи
Посторонние источники говорят о 1000 циклах для флеша и 100000 циклах для EEPROM...


Тест?

_________________
Extreme Entertainment


22 Jun 2010 14:37
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17121
Location: Colorado
Reply with quote
Post 
Mac Buster wrote:
Shaos wrote:
Стал читать даташит внимательнее - не вижу информации о количестве циклов перезаписи
Посторонние источники говорят о 1000 циклах для флеша и 100000 циклах для EEPROM...


Тест?


Только вчера нашёл почти в самом конце даташита в таблице где наряду с разным электрическими и временными параметрами стоят эти цифры - 1000 циклов перезаписи для Flash и 100 000 циклов для EEPROM...

_________________
:eugeek: https://twitter.com/Shaos1973


22 Jun 2010 14:45
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17121
Location: Colorado
Reply with quote
Post 
Прибыли платы Rev.B:

Image

_________________
:eugeek: https://twitter.com/Shaos1973


29 Oct 2011 11:36
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 52 posts ]  Go to page Previous  1, 2, 3, 4  Next

Who is online

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