[an error occurred while processing this directive]
Я для альтеры делал так:
(«Телесистемы»: Конференция 'Языки описания аппаратуры (VHDL и др.))

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

Отправлено ReAl 25 июля 2005 г. 16:13
В ответ на: Ответ: мне бы что попроще,неужели неперед кем не стояла такая задачка.? отправлено <font color=gray>a</font> 14 июля 2005 г. 21:10

у неё незанятые ячейки - нули. И вообще - нулей большинство.
Сделал нечто похожее на macintosh packbits.

mac packbits разжатие (по нему легче объяснить :-) (нюансы могу спутать, но суть такая)


берём из жатого потока байт.
Если он >=0, то
(он+1) байт из входного потока передаём на выход
иначе
(-он) раз дублируем на выход следующий байт

Преимущество перед обычным RLE - не сильно (не в два раза, а всего на 1/128) увеличивает размер кусков, где нет повторяющихся байтов.

Но теперь для альтер я его перетоптал так:
1) Поскольку повторяются в основном нули - при повторе не передаётся
повторяемый нибл. Выигрыш при кодировании цепочек нулей с лихвой перекрывает проигрыш при кодировании повторяющихся ненулей как неповторяющихся.

2) Работаю не в байтах, а в ниблах (полубайтах). При разжатии 0..7 -скопировать 1..8 ниблов со входа на выход, 8..F - 2..9 раз выдаём на выход нулевой нибл.

Это дело жмёт прошивки циклона лучше, чем его родной сжиматель-разжиметель. И очень просто и компактно реализуется.

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

Ответы


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

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

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

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

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


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

E-mail: info@telesys.ru