[an error occurred while processing this directive]
вот коечто
(«Телесистемы»: Конференция 'Программируемые логические схемы и их применение')

миниатюрный аудио-видеорекордер mAVR

Отправлено sled 09 ноября 2004 г. 17:03
В ответ на: Вопрос по компресии битового потока конфигурации ПЛИС. отправлено Petrick Andrew 09 ноября 2004 г. 15:01

Сооб: 298 из 300 -288 +299 PVT.HARDW.MAX2PLUS
От : Dmitry Kuznetsov 2:5020/400 Thu 14 Mar 02 19:50
Кому: Andrey Teplyakov
Тема: Re: Сжать файл прошивки

From: Dmitry Kuznetsov

Hello, Andrey Teplyakov
On Wed, 13 Mar 2002 20:59:06 +0300, you wrote:

>Есть мысль сжать прошивку Flex10K и грузить ее из FlashROM посредством
>однокристалки. Пробовал сжимать методом RLE - получилось 50%, это при загрузке
>ПЛИС около 60%. Какой бы еще не слишком мудреный метод применить (чтобы
>однокристалка при распаковке не слишком тормозила - 8МГц все-таки) и чтобы
>степень сжатия была повыше? Ресурсы, затрачиваемые на архивацию, не критичны.

Эта тема уже как-то обсуждалась, но очевидно достаточно давно,
поскольку самого обсуждения у меня не сохранилось.
По горячим следам я тогда поигрался с предложенными алгоритмами
на своих реальных прошивках и остановился на методе "пропуска
нулевых байтов" (как он у меня тогда обозначался).
К сожалению, не помню, кто же его тогда предложил :(

Короче, исходная прошивка делится на группы по 8 байт.
В сжатом потоке такая группа представлена кадром, состоящем из:
1) 1-го байта "карты ненулевых байтов" в котором по порядку
единицы установлены только для ненулевых байтов исходной
группы;
2) перечисления только "ненулевых байтов".

Алгоритм легкий и занимает под себя пару байт под переменные
(кроме, естественно, неизбежных расходов типа счетчик байтов)
1) байт для хранения "карты",
2) байт маски с бегущей единицей (при переходе единицы через
бит переноса производится смена "карты".


Пока!
<< Вышел е:жик из тумана, лихо вставил всем в каналы!
Dmitry Kuznetsov, Moscow, http://www.orc.ru/~dkuzn/index.htm
[Team Беговая Черепаха] [Team LEXX] [Team TV6]
Resistance
*
--- ifmail v.2.15dev5
* Origin: HOT (2:5020/400)


Сооб: 299 из 300 -298 +300 PVT.HARDW.MAX2PLUS
От : Igor Evdokimov 2:461/67 Thu 14 Mar 02 20:21
Кому: Dmitry Kuznetsov
Тема: Сжать файл прошивки

Приветствую, Dmitry!

14 марта 2002г. (четверг) 19:50, Dmitry Kuznetsov писал к Andrey Teplyakov:

DK> Эта тема уже как-то обсуждалась, но очевидно достаточно давно,
DK> поскольку самого обсуждения у меня не сохранилось.
DK> По горячим следам я тогда поигрался с предложенными алгоритмами
DK> на своих реальных прошивках и остановился на методе "пропуска
DK> нулевых байтов" (как он у меня тогда обозначался).
DK> К сожалению, не помню, кто же его тогда предложил :(

Я пpобовал еще пpоще - вместо длинной цепочки нулей пишется байт
с их количеством. Экономия до 2 pаз на больших кpисталлах.


С уважением, Igor. 20:21 14 марта 2002г. (четверг)
E-mail: ie@altron.com.ua
ICQ: 92960740

... Ошибки в работе чреваты ошибками в зарплате ...
--- Флеймоскоп 3.00.Beta5+
* Origin: Polaris Kharkov UA (2:461/67)


Сооб: 298 из 300 -297 PVT.HARDW.MAX2PLUS
От : Dmitry Kuznetsov 2:5020/400 Sun 17 Mar 02 16:29
Кому: Vladimir Poletaev
Тема: Re: Сжать файл прошивки

From: Dmitry Kuznetsov

Hello, Vladimir Poletaev
On Sat, 16 Mar 2002 22:27:38 +0300, you wrote:

>Area : PVT.HARDW.MAX2PLUS
>Date : Mon Aug 23, 21:23 loc scn
>
>From : Vladimir Poletaev 2:5020/604.66
>To : Andrey Vasilyev
>Subj : FLEX10K - Passive Parallel Asynchronous

Эт за какой год?

> VP>> Кстати - зашивка под 50E довольно здоровая (98К), пришлось написать
> VP>> упаковку. Только за счет нулей сжимается почти в 2 раза.
>
> AV> И сколько места занял pаспаковщик ?
> Hе считал - где-то десяток-другой байт. Принцип простой -
>последовательность
>из 3 и более нулей пакуется в двухбайтовую. Первый байт имеет фиксированное
>значение (префикс), второй - счетчик нулей. Если счетчик = 0, то считается,
>что
>это один байт префикса. В качестве префикса выбирается наиболее редко
>встречающийся байт. У меня получился 1F - он вообще не встречается в моем
>rbf-файле. Скорость загрузки из-за распаковки у меня не упала - если ставить
>проверку RDYnBSY, то это получится медленнее, чем просто писать не чаще, чем
>через 2 мкс.

Позволил себе посравнивать ;-)

Проектик для EPF10K10TI144 - назовем его условно П1.
Составные его фрагменты (скомпилированные отдельно): П2 и П3
(П2 - самый крупный и не влез в указанный чип из-за большого
числа портов и скомпилирован под 208-ногий корпус).
Исходный размер файла - 14751 байт.

Способы упаковки
С1 - RLE с префиксом (расчитывается статистически).
С2 - С картой ненулевых байтов (опубликован мной
и Ivan Mak под этим же сабжем немного ранее).
С3 - еще один вариантик (описание пока пропущено).
ZIP - для сравнения размер зазипованого файла.

Utilized Доля нулей С1 С2 С3 ZIP
П1 97% 0.492 11169 9343 10243 7525
П2 39% 0.736 7024 5739 5872 4468
П3 12% 0.852 3969 4028 3491 2341

Способ С1 проигрывает из-за преобладания в основном
коротких цепочки нулей в нагруженном проекте.
Способ С2 показал наилучший результат (имхо).
Способ С3 лидирует в примитивных проектах, но это
не дает ему права стать фаворитом гонки.

Пока!
<< Вышел е:жик из тумана, лихо вставил всем в каналы!
Dmitry Kuznetsov, Moscow, http://www.orc.ru/~dkuzn/index.htm
[Team Беговая Черепаха] [Team LEXX] [Team TV6]

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru