IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Контроллер AZ BK: Документирование процесса разработки, на основании этой темы будет сформирована техническое описание
SuperMax
сообщение 20.1.2021, 20:37
Сообщение #1


Администратор
*****

Группа: Root Admin
Сообщений: 6 087
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



Палитры V2
управление палитрами будет через 2 регистра палитры первый - адрес ячейки палитры
второй - значение палитры 15bit

адреса ячеек палитры будут начинаться с большей
Код

нумерация кодов цветов
палитра коды цветов (адреса ячеек палитры)
256     0-255
4x16    320-335
16       256-319
2         336-337


так получается полностью независимые палитры без пересечений
+ явный дубль стандартного функционала палитр, те можно переключать палитры как и ранее, но теперь доступна опция настройки каждой штатной палитры!

и как следствие палитры не надо будет перегружать при переключении видеорежима

для удобства формирования палитр сделал эксельку
Прикрепленный файл  palette_calc21.xlsm ( 77.85 килобайт ) Кол-во скачиваний: 53


основная задача этой эксельки - сформировать файл mif для загрузки дефолтной палитры при старте ПЛИС

также она пригодится разработчикам для пересчета цветов в 15bit

пояснения к блоку 4x16 320-335
это 16 наборов палитры, изначально туда грузятся штатные значения, но их можно менять на любые!
нумерация прямая - те нулевая палитра это 320-321-322-323 ячейки
следующие 4 ячейки это 1ая палитра и так далее

управление палитрами осуществляется через 2 регистра
177234 - адрес ячейки палитры [9бит]
177236 - значение палитры [15бит]

формулу формирования цвета
цвет на выходе = VideoModeOffset + PaletteOffset + ColorIndex ;

VideoModeOffset - смещение видеорежима
cмещение - кол-во цветов
0 - 256
256- 16
320- 4
336- 2

PaletteOffset существует только для штаного видеорежима 4 цвета
во всех остальных случаях =0
номер палитры - смещение
0 - 0
1 - 4
2 - 8
итд

ColorIndex - непосредственно номер цвета в видеорежиме, начиная с 0




--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SuperMax
сообщение 15.4.2021, 1:24
Сообщение #2


Администратор
*****

Группа: Root Admin
Сообщений: 6 087
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



Для Legacy видеорежимов реализовано циклическое переключение по сочетанию AR2 + KT
В зависимости от запущенной программы, поведение может отличаться от стандартного, но в большинстве перехват данного сочетания работает корректно

Всего 4 видеорежима - точнее интерпретации 16кБ видеопамяти

0 - ч/б режим, по умолчанию палитра с белыми точками и темно-синим фоном
разрешение 512х256

1 - цветной режим, 4 цвета, палитра управляется как и стандартным 177716 как и через 177234/177236
разрешение 256х256

2 - цветной режим, 16 цветов, 4 бита на пиксель, соответственно
разрешение 128х256
палитра управляется только через 177234/177236

3 - цветной режим, 256 цветов, 8 бит на пиксель, соответственно
разрешение 64х256
палитра управляется только через 177234/177236



--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SuperMax
сообщение 16.4.2021, 11:52
Сообщение #3


Администратор
*****

Группа: Root Admin
Сообщений: 6 087
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



Модель управления памятью в AZ

Концепция:
адресное пространство разбито на 3 сегмента:

0-256кБ это write-only память для организации "теневой" памяти БК11М
первые 128кБ являются полной копией оперативки БК11М
из этой памяти идет отображение legacy видео режимов
а также получается есть техническая возможность отобразить на экран любую страницу памяти БК11М
Прикрепленное изображение
обращаю внимание на то, что физический адрес - словный

256-512кБ это read-only память, она не доступна на запись со стороны БКшки
эта память для эмуляции различных ПЗУ, содержимое которых может быть загружено только средствами AZ

512-1024кБ для эмуляции SMK-512

Начиная с 1МБ вся оперативная память - полноценная память без ограничений, а именно ее подключение всегда дает RPLY на чтение и на запись если не установлен режим r/o на данной странице в регистре 177342

маппер памяти AZ
технически адрес в системе 24bit-а (адрес слова 16bit)
для маппера памяти используется старшая часть адреса, и получается дискретность привязки памяти к окну - 4кБ

есть 16 регистров (177300-177336) куда пишется 13bit адрес начала (11 бит добавляется от адреса с шины и получается 24bit адрес слова)
старшие 3 бита в резеве и маппер предусматривает расширение до 256МБ.

для управления маппером предусмотрен регистр маски окон - 177340
младший бит соответствует младшему окну (те с 0 до 7777) но тк первые 32кБ в БК приколочены жестко то пока это задел на вырост и младший байт использовать нельзя (он работает но очевидно будет конфликт на шине при его активации)

пример: для подключения оперативки в окно 160000-167777 надо сделать следующее:
177334 <- 400 (это указатель на первый мегабайт)
177340 <- 40000 (это разрешение этого окна)

для управления r/o на выбранном окне предусмотрен регистр-маска 177342
соответственно для установки режима только чтения надо установить соответствующий бит на окне
к примеру
177334 <- 400 (это указатель на первый мегабайт)
177340 <- 40000 (это разрешение этого окна)
177342 <- 40000 это запрет записи в это (160000-167777) окно

также есть регистр с битовой маской запрета подключения окон 177344
(=1 аппаратный запрет на подключение окна)
в нем при старте системы сохраняется конфигурация машины исходя из которой можно понять, какие возможности доступны на данной машине

к примеру на БК11М с отключением монитора или на БК-0010 с отключением монитора в регистре будет 377 ибо отвечает только оперативка ДО адреса 100'000
на обычной БК11М будет 30377 - те к ОЗУ добавилась ПЗУ

разбивка на окна соответствует размеру в SMK - те 4кБ начиная со 100000(8)
обращаю внимание на адресацию, те свойства r/o w/o привязаны к 24bit адресу слова (!)
также есть регистр управления который осуществляет включение/выключение окон по маске (177342) + для общего управления и совместимостью с SMK

При этом любая память, может быть использована для отображения изображения на экране
Расширенный режим видеоконтроллера представляет набор строк от 0 до 767
и привязанный к ним
- адрес 24bit начала строки, длина строки от 32 до 256 слов (16bit), важно, это адрес слова 16bit а не байта как это будет на МПИ
- видеорежим строки: те количество цветов 2bit (2/4/16/256), масштабирование 2bita (1/2/4/8)
те растягивание данных на заданное число пикселей
Прикрепленное изображение


технически 768 строк, которые мы можем дублировать как нам удобно просто указывая одинаковый адрес начала строки


Соответственно технически получается можно создавать любые видеорежимы в пределах 1024х768
комбинируя допустимые варианты




--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SuperMax
сообщение 4.5.2021, 14:16
Сообщение #4


Администратор
*****

Группа: Root Admin
Сообщений: 6 087
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



Генератор псевдослучайных чисел

технически это LFSR длиной 128bit, младшие 16bit доступны по адресу 177550
данный регистр отвечает и на чтение и на запись. запись игнорируется.

питается генератор частой 130MHz и как следствие каждое обращение с МПИ даст совершенно новое слово




--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SuperMax
сообщение 8.5.2021, 14:10
Сообщение #5


Администратор
*****

Группа: Root Admin
Сообщений: 6 087
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



Консоль контроллера
основное назначение - отладка + информационные сообщения для расширенной диагностики

Настройка консоли
baud rate: 115200
data:8 bit
parity: none
stop: 1bit


К примеру в случае отсутствия карточки в консоли будет:

Код
AZBK build May  5 2021 23:12:19
Start lan init
ERROR: Card NOT installed
Lan init ok
IO11 init begin
ERROR open AZ.INI  errorcode=12
IO11 Error: 4
System Halted



Нормальный старт выводит в консоль следующий лог
Код

AZBK build May 17 2021 22:27:48
Start lan init
Card installed OK
Card mounted OK
Lan init ok
IO11 init begin
LOAD 0 ROM: file 0:/ROM/AZBOOT.ROM at 400000 (100)
LOAD 8 ROM: file 0:/ROM/BZ326.ROM at 440000 (110)
LOAD 11 ROM: file 0:/ROM/HDD326.ROM at 454000 (113)
LOAD 16 ROM: file 0:/ROM/11M_324.ROM at 500000 (120)
LOAD 18 ROM: file 0:/ROM/11M_325.ROM at 510000 (122)
LOAD 20 ROM: file 0:/ROM/11M_327.ROM at 520000 (124)
LOAD 22 ROM: file 0:/ROM/11M_328.ROM at 530000 (126)
LOAD 24 ROM: file 0:/ROM/11M_329.ROM at 540000 (130)
MOUNT image 0:/DISKS/AG.IMG
MOUNT image 0:/DISKS/ANSYS.IMG
MOUNT image 0:/DISKS/CSI_321B.IMG
MOUNT image 0:/DISKS/CSI_321R.IMG
MOUNT image 0:/DISKS/FORTRA.DSK
MOUNT image 0:/DISKS/51SYS_DS.DSK
MOUNT image 0:/DISKS/51DS_BK.DSK
MOUNT image 0:/DISKS/BK326.IPL
Card installed OK
Card mounted OK

-----------------------------
Network setting:
DHCPNAME=AZNET-BK.home.maxiol.com
MAC=00.0e.35.22.0b.01
DHCP=ON
IP=0.0.0.0
MASK=0.0.0.0
GW=0.0.0.0
NTP=0.0.0.0
DNS1=0.0.0.0
DNS2=0.0.0.0
NTP_BROADCAST=OFF
SNMP_COMMUNITY=maxiol
SNMP_TRAP=0.0.0.0
SNMP_TRAP_CHECK_PERIOD=0
SNMP_OK1=0.0.0.0
SNMP_OK2=0.0.0.0
SNMP_OK3=0.0.0.0
SNMP_OK4=0.0.0.0
SNMP_OK5=0.0.0.0
TIMEZONE=0
IO11 init ok
Begin main work






--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SuperMax
сообщение 8.5.2021, 14:13
Сообщение #6


Администратор
*****

Группа: Root Admin
Сообщений: 6 087
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



Загрузка ПЗУ

Пример az.ini
Код

[ROM]
R00=0:/rom/AZBOOT.ROM
R08=0:/rom/bz326.rom
R11=0:/rom/HDD326.ROM
R16=0:/rom/11m_324.rom
R18=0:/rom/11m_325.rom
R20=0:/rom/11m_327.rom
R22=0:/rom/11m_328.rom
R24=0:/rom/11m_329.rom
[disks]
D0=0:/disks/AG.IMG
D1=0:/disks/ANSYS.IMG
D2=0:/disks/CSI_321B.IMG
D3=0:/disks/CSI_321R.IMG
D4=0:/disks/fortra.dsk
D5=0:/disks/51SYS_DS.DSK
D6=0:/disks/51DS_BK.DSK
D7=0:/disks/BK326.IPL
[boot]
D7


Секция ROM обязательна и всегда должна быть первой
привязка основных ROMов будет статична тк является ключевой для эмуляции стандартного набора ПЗУ разных БК

разберем строчку:
Код
R00=0:/rom/AZBOOT.ROM


R00 - номер слота куда будет загружено ПЗУ
нумерация от R00 до R63
(весь сегмент ПЗУ - 256кБ - соответственно всего 64слота)
соответственно если ПЗУ 8кБ то она займет 2 слота

Код
0:/rom/AZBOOT.ROM

тут очевидно путь к файлу

Распределение адресного пространства ПЗУ
Прикрепленное изображение
обращаю внимание на то, что физический адрес - словный

столбец окно маппера как раз показывает номер для мапирования
те для подключения ПЗУ AZ326.ROM которое загружено с адреса 440'000(8)
мы должны занести в регистр слота - в нашем случае 177334 (тк мы подключаем в окно 160'000(8)), значение 110(8)

Если мы хотим подключить длинное ПЗУ которое занимает два слота маппера то надо указать оба
Код

            mov        #120,@#177330         ; окно 140000-147777
            mov        #121,@#177332         ; окно 150000-157777
            bis        #30000,@#177340       ; включаем страницы




--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SuperMax
сообщение 14.6.2021, 0:12
Сообщение #7


Администратор
*****

Группа: Root Admin
Сообщений: 6 087
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



Стартовая последовательность

1. После нажатия RESET на БК (или включения) питания процессор в БК остановлен
2. Запускается STM32, удерживает RESET в низком состоянии и начинает загрузку конфига AZ.INI и его исполнение
3. Загружаются образа ПЗУ в оперативку для эмуляции ПЗУ
4. После завершения инициализации инфраструктры, STM32 отпускает RESET и БК может стартовать
5. Инициализирует сетевой стек до старта БК (подъема RESET через штатную цепь заряда конденсатора)
6. Старт БКшки с AZ осуществляется с адреса 177000 по которому отвечает стартовое однорегистровое ПЗУ.
7. Программа в нем подключает ПЗУ AZBOOT c адрес 170000 и передает управление ему.

Цветовая индикация,стадии
1-2 - фиолетовый
3 - синий
4-5-6-7 - зеленый





--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SuperMax
сообщение 19.6.2021, 15:36
Сообщение #8


Администратор
*****

Группа: Root Admin
Сообщений: 6 087
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



Индикация режимов работы

AZБК снабжен RGB сетодиодом в целях экономии места и увеличения функционала

Индикация ошибок - подробно расписано тут

1. При старте если все OK - горит зеленый

2. Сеть в номинальном режиме работы: раз в секунду гасит зеленый и зажигает синий потом обратно - те синий-зеленый раз в секунду

3. Процесс неполучения адреса по DHCP [или отсутствия сетевой карты]
раз в секунду зеленый гаснет но синий не загорается, загорается красный

4. Сетевая активность - только при отправке пакетов ибо мусор из сети валится постоянно
зеленый не горит, синий моргает часто

5. Активность контроллера - малиновый [синий +красный], при совмещении с сетью получаются сочетания до белого.


--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SuperMax
сообщение 19.6.2021, 16:10
Сообщение #9


Администратор
*****

Группа: Root Admin
Сообщений: 6 087
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



Кнопка перезапуска на AZ
изначально, подразумевалось что перезапуск будет идти с платы БКшки, и на самом AZ не предусматривалась установка кнопки перезапуска, однако это можно легко сделать

необходимо подключить кнопку между контактами NRST и GND

к примеру можно так:
Прикрепленное изображение

Данная кнопка перезапустит STM32, а он в свою очередь осуществит полный перезапуск и БКшки и ПЛИС


--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SuperMax
сообщение 17.7.2021, 22:45
Сообщение #10


Администратор
*****

Группа: Root Admin
Сообщений: 6 087
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



Проект звуковой части

1. ковокс
набор регистров доступных и по чтению и по записи
177360 - 16bit левый канал
177362 - 16bit правый канал
177364 - 16bit моно, иначе говоря запись в этот регистр приводит к фактической одновременной записи в регистры 177360 и 177362
177366 - 8bit стерео, иначе говоря запись в этот регистр приводит к фактической одновременной записи в
регистры 177360 и 177362 - в старший байт

запись в 177714 тоже приводит к фактической одновременной записи в 177360 и 177362
обеспечивая полную совместимость со старым софтом

2. DMA контроллер ковокса
- регистр адреса с дискретностью 10000 (4кБ)
- регистр скорости чтения , режима интерпретации данных (8/16 моно стерео), повтора
- регистр длины до останова или повтора
данные с DMA ковокса пойдут напрямую на микшер






--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 24.7.2021, 22:04