Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Есть (+)

Отправлено CD_Eater 08 сентября 2007 г. 20:52
В ответ на: а практический смысл у задачи есть? отправлено koyodza 08 сентября 2007 г. 20:02

В проектируемое устройство так заводится сигнал.
Подробнее. Есть 6 состояний, расположенных "по кругу", и объект может переходить за один шаг из текущего состояния в любое соседнее (либо по часовой стрелке, либо против). Каждый шаг несёт 1 бит информации. Задача - закодировать маршрут движения объекта и вывести эту информацию в последовательный регистр (его длина наращивается по потребностям реализации).
Самый естественный способ задать двоичные координаты в шестиугольнике - вложить его в двоичный куб, у которого откушены 2 вершины (в 2 бита всё равно не уложиться, значит, придётся передавать 3 бита).
X, Y, Z - координаты вершин куба (могут быть 0 или 1)
Вершины шестиугольника (в порядке их обхода по часовой стрелке):
(1,0,0)
(1,1,0)
(0,1,0)
(0,1,1)
(0,0,1)
(1,0,1)
Итак, на устройство передаются три линии X,Y,Z, несущие координаты вершины куба, соответствующей текущей вершине шестиугольника. Сохранять все три бита расточительно, т.к. каждый шаг описывается всего одним битом (движение либо по часовой стрелке, либо против). Итак, Главная Хитрость: присвоим сторонам шестиугольника значения 0 и 1, так чтобы при обходе шестиугольника (напр., по часовой стрелке) они чередовались: 0,1,0,1,0,1. Тогда, имея список значений рёбер вдоль маршрута, и зная начальную вершину, можно однозначно восстановить весь путь объекта (из каждой вершины идёт одно ребро с нулём и одно ребро с единицей). Мы тратим всего один бит на запись одного движения объекта - оптимальное кодирование. Как из X,Y,Z получить значение ребра? Заметим, что каждое ребро меняет только одну координату куба, а остальные две координаты постоянны. Если вдоль ребра меняется координата X, то берём в качестве значения ребра значение Y, если меняется координата Y, то берём значение Z, если меняется Z, берём X. Проверьте - получается искомое чередование нулей и единиц!
Поэтому на схему подаём
FA = X
FB = Y
FC = Z
DA = Y
DB = Z
DC = X
и получаем в регистре сдвига последовательность значений рёбер.
Вот для чего нужна эта схема.

В задаче я не сформулировал дополнительное ограничение, что из чисел X, Y, Z одновременно только одно или два равны единице, это чуть упростит схему, но не намного.



Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
поделите двойку на единицу:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru