Увы, нет. Этот распаковщик я проверял, именно для декомпрессии изображений, и там всё сильно хуже, распаковка одной картинки идёт единицы секунд. Картинки правда были пошумнее, чем текущее видео, но погоды это не сделает. Я всё-таки попробую поколдовать с исходником и порезать дельту насколько получится.
Вчера времени хватило только убрать бордер из потока. Долго не мог понять что не так, оказывается обращение к SD биосу портит не только BC, но и DE. Без бордера замерил скорость - ровно 1.5 Гц, но при этом я запрашиваю у биоса по 64 байта, из-за этого поток мог слегка упасть. Надо будет глянуть на логическом анализаторе, как ведёт себя шина при разных размерах блока.
Последний раз редактировалось hitomi2500; 09.10.2018 в 06:52.
6Кб в секунду это почти 300 тактов на байт. Не многовато? Может как-то в обход биоса читать байты из контроллера? Если биос ждёт готовности от контроллера, может быть можно использовать это время для алгоритма распаковки.
А вообще, есть другой интерфейс от HardWareMan-а на основе сдвигового регистра и счётчика бит, он раз в 5 быстрее может работать. С файловой системой придётся самому разбираться, но и это не проблема. Я писал читалку для SD-карт, а PVV успешно её дорабатывает.
И сколько кадров в секунду будет?
Мои скромные железяки
ATARI 65хе
YAMAHA YIS503IIIR
PackardBell
HP Vectra 286/25n/VE/VL/VL800/VLi8, Kayak XA
AcerPower 433sv
Fujitsu-Siemens Scenic/S 2
Compaq deskpro en
МС 0511-01
Микро80(в процессе)
Микроком85
Апогей-БК01Ц
РадиоРК-86
БК0010/10-01/11/11М
ПК-8000
Львов ПК-01
Агат-9
ДВК-2(в процессе)
ДВК-3М
Вектор-06ц
Специалист
ХТ8088 nec-20
АТ286,386,486
PI-75-200ММХ
РII, III,IV
ZX-Evolution r.C3
Santaka-002
Дельта-С
Ленинград48к
[свернуть]
Всё зависит от того, насколько хорошо получится упаковать дельту, и сколько времени уйдёт на её декодирование на КР580. Если оценивать грубо, предположим дельта с упаковкой будет в среднем 500 байт, и распаковка дельты займёт столько же, сколько её получение. Тогда скорость будет примерно 5 кадров в секунду. Если добавить интерлейс, то 10 кадров. Но по факту может получиться как в 3 раза быстрее, так и медленнее.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Нет, всё-таки никого я не обманул, а вернее обманул дважды. Сел писать бинарные деревья, оказалось что в моём подсчёте дельты куда больше чем одна ошибка. Среднее значение для дельты пока получается 1400 байт (1350 с порогом), а размер с бинарным деревом вообще швах - 2290 байт в среднем. Прости-прощай 5 герц, 3 бы выжать с таким раскладом. Только прежде чем делать выводы я сначала реконструирую изображение по дельте (и отдельно по дереву) на большой машине, а то вдруг ещё ошибки найдутся.
Прицепил ЛА к случайным ногам, видно что у контроллера есть какой-то период "раскачки", видимо когда он читает с SD, а потом он шлёт всю пачку то ли на неравномерной частоте, то ли с паузами. Минимальный период порядка 20 мкс, но 64 байта передаются явно больше чем за положенные 1.3мс. Вечером копну детальнее.
Последний раз редактировалось hitomi2500; 10.10.2018 в 07:10.
Покрутил ещё немного ЛА. Команда R перебирает адреса в портах B и C, время загрузки одного байта - 73.2 мкс (122 такта), но периодически врывается ВТ57 и всё затягивает на 30-250мкс, среднее
время получается примерно 100 мкс (167 условных тактов), скорость приёма - 10000 байт/с.
У Алексея (vinxru) нашёл в биосе расчёты, он насчитал 54 такта (может мкс?) на байт. Мои замеры показывают 52.9 мкс в пике, но пики чередуются с пустотами. Иногда пробегают пачки стробов по 70-80 байт за 4 мс,
то есть на максимальной скорости, а иногда тишина по 700-800 мкс.
Если запрашивать у биоса по 64 байта, период равен 12-15мс, примерно четверть времени шина "живёт" на максимальной скорости, а остальное время обмен не такой интенсивный. При этом по моей оценке сквозь шину проходит примерно 200-250 байт. И если среди 70 байт быстрого режима лишние можно отнести к прогрузке конвейера, то остальное - это видимо хэндшейки, синхронизация и статусы. Пиковая скорость получается 18900 байт/с, а реальная - примерно в 4 раза меньше, 4300-5300 байт/с.
Ради интереса увеличил запрашиваемый у биоса блок до 4096, он считывается за 360-400 мс, т.е скорость возросла до 10200-11400 байт/с. Но столько времени тратить на чтение уже нельзя - 400 мс это уже 2.5 Гц, в ещё надо успеть кадр нарисовать. Если оставлять текущее SD решение, то блоки надо уменьшать до 1500-2000 байт, где-то там оптимум. Если не оставлять, а поставить снаружи микроконтроллер или ПЛИС с предвыборкой и большим SRAM, можно разгоняться минимум до 18900, а то и выше.
До деревьев я сегодня не дошёл
Так оно и оказалось, пока результаты реконструкции на экране не появились, все ошибки устранить не получилось. Дельта оказалась меньше, чем у меня получалось, средняя около 200 байт, но бинарное дерево пакует её слишком уж неоптимально, без малого в килобайт. В любом случае это уже неплохо, но я ещё не замерял производительность её распаковки. Если там сюрпризов не будет, даже с таким жирным деревом герц на 8 есть шансы выйти.
Возможно следует нижний квант дерева сделать не 8 байт (24х2), а 4 байта (12х2), а то много лишнего лезет.
На картинке зелёным - дельта, красным - дерево.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)