BEPTEP ALU

Уравновешенная троичная система счисления - форум переехал с http://ternary.info

Moderator: haqreu

User avatar
Shaos
Admin
Posts: 25241
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: BEPTEP ALU

Post by Shaos »

BEPTEP wrote: 16 Jan 2026 15:45
Shaos wrote: 15 Jan 2026 00:46 Почитать можно например тут:
viewtopic.php?t=58 (2004)
viewtopic.php?t=17752 (2017)
Читаю, вникаю. Но по моему там не просто АЛУ, а уже целый процессор описан.
Счётчик команд, регистры указатели....
Или без этого софтово никак реализовать вышеописанные операции нельзя?
Туго доходит, сразу не въезжаю.
Ну понятно, что замахивались на комп, но обсуждение шло от АЛУ
User avatar
Shaos
Admin
Posts: 25241
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: BEPTEP ALU

Post by Shaos »

BEPTEP wrote: 16 Jan 2026 16:12 Вопрос по сдвигам. Не совсем понимаю:
сдвинуть регистр A влево через флаг BCF
Сложение тоже через этот флаг, флаг переноса.
Т.е. сдвиг вправо/влево осуществляется через флаг переноса. Так?
Это циклический сдвиг, сдвиг с переносом младшего трита в старший и наоборот, или обычный?
--------
Если флаг переноса = 0, то сдвиг обычный получается(если он с переносом только)
Классический перенос , как в калькуляторе винды, не нужен?
Циклический через флаг переноса - чтобы можно было и нулями добивать, и единичками (с плюсиками или минусиками)
User avatar
BEPTEP
Doomed
Posts: 418
Joined: 09 Apr 2025 01:49

Re: BEPTEP ALU

Post by BEPTEP »

Shaos wrote: 16 Jan 2026 22:08
BEPTEP wrote: 16 Jan 2026 16:12 Вопрос по сдвигам. Не совсем понимаю:
сдвинуть регистр A влево через флаг BCF
Сложение тоже через этот флаг, флаг переноса.
Т.е. сдвиг вправо/влево осуществляется через флаг переноса. Так?
Это циклический сдвиг, сдвиг с переносом младшего трита в старший и наоборот, или обычный?
--------
Если флаг переноса = 0, то сдвиг обычный получается(если он с переносом только)
Классический перенос , как в калькуляторе винды, не нужен?
Циклический через флаг переноса - чтобы можно было и нулями добивать, и единичками (с плюсиками или минусиками)
А моя реализация переключаемых буферов не подойдёт?
Хотя, надо подумать, может в эта экономней получится.
User avatar
BEPTEP
Doomed
Posts: 418
Joined: 09 Apr 2025 01:49

Re: BEPTEP ALU

Post by BEPTEP »

В общем туго до меня доходит. Только сейчас дошло, представление начал чёткое иметь, как работает АЛУ в целом.
Даёт покоя голове манечка с монитором и тетрисом)) Нарисовал схему монитора.
монитор 9х9.PNG
На всё про всё 748 транзисторов надо. Это отдельная плата плотно набитая элементами с двух сторон. Она даёт не только изображение 9х9 но и служит оперативной памятью. Оперативная видео-память. Из которой, например, можно брать данные текущего положения и расположения фигуры, рассчитывать коллизии.
Потом начал команды писать, прикидывать как будет устроено ПЗУ, сколько регистров надо, плясать от обратного. Вначале 9 штук написал - не хватило! Перешёл на 27 - то же маловато будет. Но меня понесло - гулять так гулять)) 37 инструкций почти успокоили меня! :lol:
2х4
Один картридж ПЗУ = 81 ячейка = 243 трита
Максимум 9 картриджей = 729 ячеек = 2187 трит
----------------------------------------------------------------------------------------
Регистры:
A - секционный регистр 3х3 трита. Посекционная и полная запись и чтение.
B - секционный регистр 3х3 трита. Запись целиком, чтение посекционное.
X - 2 тритный регистр хранения координаты. Запись/чтение.
Y - 2 тритный регистр хранения координаты. Запись/чтение.
Z - 2 тритный регистр адреса строки монитора. Только запись.
M - 2 тритный регистор адресов строк монитора. Только чтение.
C - 2 тритный регистр адресов ПЗУ. Запись.
J - 2 тритный регистр хранения адреса перехода. Запись.
JM- 2 тритный регистр хранения адреса перехода. Запись.
JR- 2 тритный регистр возврата с перехода. Запись.
MP- 2 тритный регистр карты памяти. Запись.
MR- 2 тритный регистр карты памяти. Возврат. Запись.
S - 3 тритный регистр вывод звука. Запись.
RN- 2 тритный регистр случайного числа. Только чтение.
K - 2 тритный регистр кнопок управления(клавиатура). Чтение/сброс.
Внешняя ОЗУ - строка монитора. Посекционное чтение, но полная запись.
Флаги:
FC - флаг переноса суммы сложения 3х3
FV - флаг счётчика строк. Строка готова +1. Сброс -1.
Счётчик времени...
0.002
0.006
0.018
0.036
0.054
0.108
0.162
0.324
0.486
0.972
1.458
-----------------------------------------------------------------------------------------

1. INV Инверсия
2. SHL Сдвиг влево
3. SHR Сдвиг вправо
4. INC Инкремент
5. DEC Декремент
6. STM Записать 9 трит значение из регистра A в Монитор по адресу в регистре Z
7. STB Записать 9 трит значение из A в B
8. STZ Записать 2 трит значение из A в Z
9. STX Записать 2 трит значение из A в Х
10. STY Записать 2 трит значение из A в Y
11. STJ Записать 2 трит значение из A в J
12. LDM Загрузить 9 трит значение полной строки из Монитора по адресу в регистре Z в регистр A
13. LDX Загрузить регистр X на вход сумматора
14. LDY Загрузить регистр Y на вход сумматора
15. LDK Загрузить регистр K на вход сумматора
16. LDM_A Загрузить сектор A регистра M на вход сумматора
17. LDM_B Загрузить сектор B регистра M на вход сумматора
18. LDM_C Загрузить сектор C регистра M на вход сумматора
19. LDB_A Загрузить сектор A регистра B на вход сумматора
20. LDB_B Загрузить сектор B регистра B на вход сумматора
21. LDB_C Загрузить сектор C регистра B на вход сумматора
22. ADD Сложение.
23. JMP_0 Условный переход. Если аккумулятор == 0 то записывает в регистры JR/MR -> С/MP записывает регистры J/JM -> С/MP
24. JMR Обратный переход. Записывает в регистры С/MP -> JR/MR
25. JMV Ожидание новой строки. Если флаг FV взведён, то записываем в регистр С/MP -> J/MR и сбрасываем флаг FV
26. SJM Записать 2 трит значение из A в JM
27. ROR Циклический сдвиг вправо.
28. ROL Циклический сдвиг влево.
29. ROR_3 Поворот куба 3х3 на 90 градусов.
30. ROL_3 Поворот куба 3х3 на -90 градусов.
31. MIN Минимум.
32. MAX Максимум.
33. LRN Загрузить регистр RN на вход сумматора
34. ADN Сложение без переноса. Пренос FC результата сложения 3х3 сбрасывается.
35. NUL Обнуление регистра A
36. JMP_1 Условный переход. Если аккумулятор != 0 то записывает в регистры JR/MR -> С/MP записывает регистры J/JM -> С/MP
37. SND Звук. Первый трит команды +1. Дешифратор остальные 3 трита записывает в буфер S
Но в процессе понял что мне 2 тритного счётчика адреса строки недостаточно. Нужен минимум 6 тритный. И ещё инструкции. Либо этот скисок урезать и новые добавлять, либо расширять. В общем прикинул по транзисторам. Вместе с монитором получается примерно 2200-2500 штук. Ещё плюс не протестированы частоты и не просчитаны тайминги, сможет ли всё это успевать при самом тяжёлом сценарии успевать собрать строку для обновления экрана за временной интервал ~0.003 - 0.004 секунды.
Решил это пока отложить и вернутся к калькулятору, на котором все элементы реализовать в минимальном виде и добавить крутилку частоты самого АЛУ. А то сразу такое конское количество элементов на платы вжаривать и ещё их рисовать неправильно. Если работать не будет или криво работать - всё насмарку - переделка, новая ревизия.
You do not have the required permissions to view the files attached to this post.
User avatar
BEPTEP
Doomed
Posts: 418
Joined: 09 Apr 2025 01:49

Re: BEPTEP ALU

Post by BEPTEP »

Принципиальные схемы. Дешифратор:
Дешифратор.PNG
Заголовок строки, выбор режима:
Заголовок строки.PNG
Сама ячейка динамической памяти:
Ячейка.PNG
В ней у меня несколько моментов которые необходимо проверить на макетке вначале.
Поэтому в прототипе обязательно буду делать одну строку 9 трит динамической памяти на частоте 500 Гц,(в матрице 9х9 строка обновляется с частотой примерно 55 Гц, 500 герц это частота обновления всего экрана - 9 строк) чтобы убедится что расчёты верны.
You do not have the required permissions to view the files attached to this post.
User avatar
BEPTEP
Doomed
Posts: 418
Joined: 09 Apr 2025 01:49

Re: BEPTEP ALU

Post by BEPTEP »

Счётчик строк на 2 трита:
счётчик строк.PNG
Счёт от -1-1 до +1+1
Тактовый генератора для счётчика строк монитора:
Тактовый генератор монитора.PNG
Проектировал его со сдвигом второго импульса такта. Это нужно чтобы счётчик(и возможно управляющий флаг ещё какой добавить надо) переключал строку в последний момент такта, а процессор читал из регистра адрес текущей строки для обновления как можно дольше. Обновлением, обработкой строк заниматься будет сам процессор. У него неограниченный доступ к записи/чтению в монитор/из монитора. Так же этот счётчик надо расширять до 6 трит, чтобы иметь хоть какие то тайминги в системе для смены уровней, цветовой ШИМ модуляции монитора, мерцание и т.д. 4 дополнительные трита дают тайминги:
0.054 сек
0.108 сек
0.162 сек
0.324 сек
0.486 сек
0.972 сек
1.458 сек
You do not have the required permissions to view the files attached to this post.
User avatar
BEPTEP
Doomed
Posts: 418
Joined: 09 Apr 2025 01:49

Re: BEPTEP ALU

Post by BEPTEP »

Напутал с таймингами. х2 можно отбрасывать, так как такт несимметричный, то эффективные значения времени только х3 каждого регистра. Итого:
0.018 сек ( под вопросом, нужен ли, но по факту такой тайминг есть)
0.054 сек
0.162 сек
0.486 сек
1.458 сек

Тайминги плохи из-за слишком грубой дискретности.
Можно, конечно, отдельный счётчик на 4 трита сделать. Там умножение на 2 тогда будет. По транзисторам разница смехотворная получается. Итого на всю схему 3 генератора получится.