x86128: (Default)
[personal profile] x86128 posting in [community profile] besm6
Предлагаю вниманию таблицу адресов для отображения в MMU.
Версия предварительная и будет немного изменяться по ходу реализации внешних устройств.
Битность регистров для UART, SPI, i2c не окончательная, там надо еще подумать.

Буду делать в первую очередь RTL-модель для PIC и GPIO без привязки к определенному железу.

| Address | Unit  | Register  | R/W | Width | Description                                       |
|---------+-------+-----------+-----+-------+---------------------------------------------------|
|   77777 | PIC   | IFS (РАП) | RW  |    48 | Флажки прерываний ожидающих обработку             |
|   77776 |       | IFSSET    | W   |    48 | Установка по маске                                |
|   77775 |       | IFSCLR    | W   |    48 | Сброс по маске                                    |
|   77774 |       | IEC(РМРП) | RW  |    48 | Маска разрешенных прерываний                      |
|   77773 |       | IECSET    | W   |    48 | Установка по маске                                |
|   77772 |       | IECCLR    | W   |    48 | Сброс по маске                                    |
|   77771 |       | reserved  |     |       |                                                   |
|   77770 |       | OFF(РНП)  | R   |     6 | Номер старшего бита в IFS                         |
|---------+-------+-----------+-----+-------+---------------------------------------------------|
|   77767 | Timer | T0CON     | RW  |    48 | Управление режимом и делителем                    |
|   77766 |       | T0TMR     | RW  |    48 | Текущее значение таймера                          |
|   77765 |       | Т0PRD     | RW  |    48 | Период                                            |
|   77764 |       | T0IE      | RW  |     1 | Разрешение прерываний                             |
|   77763 |       |           |     |       |                                                   |
|   77762 |       |           |     |       |                                                   |
|   77761 |       |           |     |       |                                                   |
|   77760 |       |           |     |       |                                                   |
|---------+-------+-----------+-----+-------+---------------------------------------------------|
|   77757 | GPIO  | TRIS      | RW  |    48 | Направление данных                                |
|   77756 |       | PORT      | RW  |    48 | Запись - выдача, чтение - прием                   |
|   77755 |       | CNIE      | RW  |     1 | Разрешение прерывания по изменению входных данных |
|   77754 |       | CNEN      | RW  |    48 | Маска отслеживаемых пинов                         |
|   77753 |       | reserved  |     |       |                                                   |
|   77752 |       | reserved  |     |       |                                                   |
|   77751 |       | reserved  |     |       |                                                   |
|   77750 |       | reserved  |     |       |                                                   |
|---------+-------+-----------+-----+-------+---------------------------------------------------|
|   77747 | FLASH | CSR       | RO  |    32 | Статус регистр флеш-памяти                        |
|   77746 |       | CCR       | RW  |    32 | Управляющий регистр флеш-памяти                   |
|   77745 |       | AL        | RW  |    32 | Защелка адреса читаемой/записываемой ячейки       |
|   77744 |       | DATA      | RW  |    32 | Содержимое ячейки по адресу AL                    |
|---------+-------+-----------+-----+-------+---------------------------------------------------|
|   77000 | DRAM  |           | RW  |    48 | On CHIP Data RAM                                  |
|       0 |       |           |     |       |                                                   |
|---------+-------+-----------+-----+-------+---------------------------------------------------|

Date: 2019-04-18 05:15 pm (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Отказавшись от совместимости с БЭСМ-6, мы можем лишиться совместимости с имеющимся софтвером. Например, многие системы программирования любили держать служебные данные и процедуры именно в верхних адресах: в силу того, что по адресам 70000-07777 можно обращаться непосредственно командами 1-й структуры (короткоадресными).

Date: 2019-04-18 06:12 pm (UTC)
vak: (Default)
From: [personal profile] vak
Мы поэтому и выбрали эту область адресов под регистры, чтобы адресовать проще. Совместимость с имеющимся софтвером вряд ли важна: не будем мы Диспак запускать, или мониторную систему. А Паскаль компилятор и его рантайм в наших руках.

Date: 2019-04-18 08:55 pm (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Калах, значит, сам будешь портировать. :) Так-то он запускался бы в режиме тренировки практически без изменений, разве что несколько экстракодов реализовать, типа даты-времени.

Date: 2019-04-18 09:42 pm (UTC)
vak: (Default)
From: [personal profile] vak
Он ходит в рантайм в последнюю страницу?
Сложно ли её подвинуть на 74000?

Date: 2019-04-19 05:54 pm (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Ну да. Джиновский бинарник подвинуть сложновато; но даже если мы собираемся пользоваться только системой программирования МС Дубна, то надо убедиться, что она не пользуется последним листом.

Date: 2019-04-19 06:59 pm (UTC)
vak: (Default)
From: [personal profile] vak
Я прогнал пару примеров МС Дубна на dispak с трассировкой: madlen.b6 и monitor80.b6. Похоже, мониторка не лезет выше адреса 65777.

Аналогично прогнал kalah.b6, обнаружил несколько обращений в верхнюю страницу:

01754: vjm 77451(14)
02577: vjm 77400(14)
07715: vjm 76312(16)
11105: vjm 76312(16)
12455: uj 76022
12500: uj 76021
74311: vjm 76005(16)
75707: vjm 76415(11)

У нас только половина страницы зарезервирована: 77000-77777. Два вызова идут по адресам 77400 и 77451.

Да ладно, придумаем что-нибудь. Рантайм всё равно придётся подменить. Да и нет особой необходимости запускать ни калах, ни мониторку.

Date: 2019-04-18 07:26 pm (UTC)
vak: (Default)
From: [personal profile] vak
Но для тестирования процессора это неудобно, согласен.
Предлагаю добавить специальный флажок в тестбенч, который бы отключал секцию периферийных регистров в MMU, специально для теста АУ.

Я поправил тест STI, чтобы он не попадал на адреса периферийных регистров. Наверное и тест АУ тоже можно исправить. Я гляну позже.
Edited Date: 2019-04-18 07:34 pm (UTC)

Date: 2019-04-19 05:37 am (UTC)
vak: (Default)
From: [personal profile] vak
Я поправил тест АУ, теперь он не генерит обращений к области 77000-77777. Флажок больше не нужен.

Date: 2019-04-18 06:19 pm (UTC)
vak: (Default)
From: [personal profile] vak
Неплохо получается.
Я где-то так себе и представлял.
Несколько замечаний поверхностным взглядом:

(1) Разместить устройства чуть менее плотно по адресам. В будущем захочется добавить ещё регистров, к примеру модемные сигналы для UART.

(2) Для каждого регистра лучше делать отдельный always-блок с присваиваниями. Иначе потом будут сложности при синтезе, да и код упрощается.

(3) Не все регистры стоит сбрасывать по reset, для экономии по току. Скажем IFS может очищиться софтом.

(4) Названия регистров может быть чуть изменить, чтобы не обвиняли в микрочипо-центричности. :) Я подумаю.

Date: 2019-04-19 05:52 am (UTC)
vak: (Default)
From: [personal profile] vak
(1) Отлично. Для GPIO может понадобиться больше 8 адресов, например отдельные регистры для установки-сброса битов по маске (как IECSET и IECCLR). В будущем захочется программно включать pull-up/pull-down резисторы, когда чипы FPGA смогут это делать.

(2) Накладывать при записи это правильно. В принципе, на следующем такте оно и так наложится, но лучше при записи его не игнорировать, из принципа.

(3) Сбоя не будет, ведь IEC сбрасывается по reset и отключает реакцию на IFS.

Date: 2019-04-18 07:37 pm (UTC)
vak: (Default)
From: [personal profile] vak
Нам нужны будут тесты для проверки каждого из периферийных блоков в отдельности, без участия процессора.

Profile

Сообщество любителей БЭСМ-6

May 2025

S M T W T F S
    123
4 5678910
11121314151617
18192021222324
2526272829 3031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 12th, 2025 10:05 am
Powered by Dreamwidth Studios