Новости конфигурации от TS-Labs

Железо, связанное с TS-Conf
Аватара пользователя
TS-Labs
Сообщения: 5380
Зарегистрирован: Чт, 26.07.2012 01:29:56

Re: Новости конфигурации от TS-Labs

Сообщение TS-Labs »

UPDATE
Добавил маппинг регистров конфы на память (fmaps).
$this->spoil_pass('Можно делать так:
ld bc, #15AF
ld a, #10
out (c), a
ld a, GFX_MODE
ld (#400), a
ld a, VPAGE
ld (#401),a
...
xor a
out (c), a')
Аватара пользователя
TS-Labs
Сообщения: 5380
Зарегистрирован: Чт, 26.07.2012 01:29:56

Re: Новости конфигурации от TS-Labs

Сообщение TS-Labs »

UPDATE
! Фиксед бага блиттера в режиме сумматора с насыщением.
Аватара пользователя
TS-Labs
Сообщения: 5380
Зарегистрирован: Чт, 26.07.2012 01:29:56

Re: Новости конфигурации от TS-Labs

Сообщение TS-Labs »

UPDATE
+ Добавлены биты на чтение в порту #00AF для контроля статуса RS-232:
- бит 3: можно забрать байт,
- бит 4: пожно положить байт.
+ По ресету сбрасывается режим бипера, гудящий входом Tape In.
Аватара пользователя
TS-Labs
Сообщения: 5380
Зарегистрирован: Чт, 26.07.2012 01:29:56

Re: Новости конфигурации от TS-Labs

Сообщение TS-Labs »

FIXED
! В хдл последних ревизий была бага с кемпстон мышом.
Аватара пользователя
TS-Labs
Сообщения: 5380
Зарегистрирован: Чт, 26.07.2012 01:29:56

Re: Новости конфигурации от TS-Labs

Сообщение TS-Labs »

FIXED
! Пофиксена ужастная бага с режимом ДМА RAM-SPI: адрес памяти инкрементился до первого чтения, что вызывало сдвиг пересылаемых данных на 2 байта.
Аватара пользователя
TS-Labs
Сообщения: 5380
Зарегистрирован: Чт, 26.07.2012 01:29:56

Re: Новости конфигурации от TS-Labs

Сообщение TS-Labs »

UPDATE
+ Добавлена ДМА для вейтовых портов (RS-232 и ZiFi).
* Scroll Lock теперь переключает синхру и на ВГА. В режиме ТВ ВГА монитор покажет сообщение "несовместимый режим" или чОрный экран вместо жирных пикселей.
Аватара пользователя
TS-Labs
Сообщения: 5380
Зарегистрирован: Чт, 26.07.2012 01:29:56

Re: Новости конфигурации от TS-Labs

Сообщение TS-Labs »

UPDATE
* Убран сигнал DOS из дешифрации портов SPI в Zcontroller-е.
Аватара пользователя
TS-Labs
Сообщения: 5380
Зарегистрирован: Чт, 26.07.2012 01:29:56

Re: Новости конфигурации от TS-Labs

Сообщение TS-Labs »

FIXED
! Отображение последнего спрайта в SFILE (thanks to Blade).
* Бит 5 в порту FE читается как 1.
Аватара пользователя
TS-Labs
Сообщения: 5380
Зарегистрирован: Чт, 26.07.2012 01:29:56

Re: Новости конфигурации от TS-Labs

Сообщение TS-Labs »

FIX UPDATE

! Пофиксан анноящий уже полтора года всех баг с вейтовыми портами (не выходило из сетапа биоса, зифи клиент кричал про "обновите конфу").
* Оптимизирован протокол SPI интерфейса между атмегой и фпга.
* Оптимизирована прошивка атмеги на предмет более быстрого обслуживания вейтовых портов.

В данный момент RS232 Mounter невозбранно поддерживает работу на 230400 бит/сек. Правда, реальная скорость передачи данных все же меньше чем 230кбит за счет межсекторных задержек - атмега таки не успевает. Однако, прирост - 1.5х по сравнению с 115200.

Маунтер тоже обновился. Перекачайте, если еще не.

В аттаче - 2 версии плагина для WC со скоростями 115 и 230.

Технические детали реализации под катом.
$this->spoil_pass('Вейтовые порты - это эмуляция внешних устройств через бортовой МК (атмега).

К вейтовым портам относятся следующие устройства:
- COM-port (RS-232), сюда же входит и ZiFi,
- Глючасы и CMOS-память в них.

Поскольку атмеге требуется время на обработку запроса, з80 при обращении к вейт портам аппаратно вешается сигналом ~WAIT (отсюда название), пока требуемые данные не будут приняты/отправлены атмегой. В момент активации вейта на атмегу идет сигнал прерывания. Атмега вылетает на ISR, где устанавливается флаг "было прерывание от вейтовых портов". Ничего более не происходит, и обработка вейтового события произойдет в порядке очереди тасок.

Вопрос: почему нельзя обрабатывать вейтовые запросы сразу на ISR?
Ответ: потому что сами процедуры эмуляции этих устройств весьма объемны, поэтому иср обвешивается тонной push/pop и все становится очень плохо. К тому же, пришлось бы обеспечивать межтредовую коммуникацию между иср и основным циклом (хотя бы то же фифо пс/2).

Когда наконец доходит до обработки, атмега обменивается с фпга данными по SPI интерфейсу, в котором атмега выступает мастером, а фпга - слейвом. Стандартный протокол выглядел следующим образом:
- атмега принимает байт статуса, в котором указан тип устройства (ком/часы) и режим доступа (чтение/запись),
- посылает выбор регистра адреса (каждое устройство имеет внутри себя пул регистров),
- принимает адрес,
- посылает выбор регистра данных,
- посылает/принимает байт данных.
После этого вейт с з80 снимается и он продолжает работу.

Я оптимизировал протокол, добавив в байт статуса 5-битный адрес в упакованном формате. Теперь сокращенный протокол выглядит так:
- атмега принимает байт статуса с типом устройства, режимом доступа и упакованным адресом,
- посылает/принимает данные.

Не все адреса можно упаковать в 5 бит, но можно те, к которым требуется максимальная скорость доступа. В данный момент так:
- COM/ZiFi - полностью попадает в 5-битный адрес,
- GluClock, диапазон #F0..#FF - попадает в 5 бит, здесь живут фифо PS/2 клавиатуры и SPI Flash,
- GluClock, диапазон #00..#EF - работает по старому протоколу, тут скорость не критична.

Вторая и более важная новость - фикс генерации вейта/прерывания в фпга.

Оригинальный говнокод содержал трэшовый адъ баг, который приводил к нестабильной генерации сигнала вейта/прерывания, и самое плохое, что в силу своей специфики проявлялся в зависимости от сборки квартусом. При самом неудачном стечении обстоятельств, некоторые обращения к вейтовым портам не доходили до атмеги и нормальная работа с компортом и цмосом была невозможна.')
Вложения
WC mounter.zip
(39.98 КБ) 81 скачивание
Ответить