16+
Среда
19 сентября
Вход |Карта сайта | |Upload |codebook | PARTS

 О смысле всего сущего 0xFF

 Средства и методы разработки

 Мобильная и беспроводная связь

 Блошиный рынок Объявления

caxapa

Микроконтроллеры ARM 

AVR PIC MSP PLD,FPGA,DSP 

Кибернетика Технологии 

Схемы, платы, компоненты 

О смысле всего сущего

 
   Новая тема Правила Регистрация Поиск »» Архив
Вернуться в конференциюТопик полностью
Dingo  (07.12.2017 06:39 - 07.12.2017 06:45, файл(ы), просмотров: 440)
Дали старый проект поковыряться. Любопытный способ упаковки данных 12бит => 8бит. 
Перекликается с кодами Элиаса. Данные с AD7892 со знаком пакуются в 8 бит со знаком. Результирующий байт делится на знак и два поля - группу порядка(экспоненты?) и собственно наиболее значащие биты: s eee bbbb eee кодирует количество "ведущих" нулей перед первой единицей как (MAX - n). Саму единицу хранить необходимости нет. Для положительных получается примерно так:
 SAMPLE RAW         BYTE

s1xx xx.. .... => s111 xxxx
s01x xxx. .... => s110 xxxx
s001 xxxx .... => s101 xxxx
s000 1xxx x... => s100 xxxx
s000 01xx xx.. => s011 xxxx
s000 001x xxx. => s010 xxxx
s000 0001 xxxx => s001 xxxx
Последняя строка любопытна тем, что число переходит в само себя, то есть используется не 4 бита, а 5. При этом погрешность восстановленного сигнала не превышает 6%, а поскольку кодер сделан на ПЗУ, то табличку дополнительно поправили, чтобы ещё уменьшить погрешности. Можно ещё сравнить с флоатом, затрамбованным в 8 бит, но здесь экспонента всегда положительная.
Прикреплённые файлы:
pack12to8.png:76 K

Главная | Карта сайта | О проекте | Проекты | Файлообменник | Регистрация | Вебмастер | RSS
Лето 7527 от сотворения мира. При использовании материалов сайта ссылка на caxapу обязательна.
MMI © MMXVIII