реклама на сайте
подробности

 
 
> подскажите плз некий код Грея, только равномерный, в обычном рефлексном коде Грея биты неизменны 2 такта, а надо больше..
Krys
сообщение Jul 9 2010, 10:12
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271



Приветствую! Подскажите плз некий код Грея, только равномерный: в обычном рефлексном коде Грея биты неизменны 2 такта, а надо больше и равномернее. Сейчас объясню, что бы мне хотелось.
Берём обычный 2-битный код Грея. В нём каждый бит неизменен 2 такта. Это здОрово по сравнению с обычным бинарным кодом, в котором бит может меняться каждый такт. Однако берём тот же обычный код Грея на 3 разряда. Всё равно неизменность 2 такта. Берём 10 разрядов - всё равно 2 такта.
А мне бы хотелось иметь некий код, интервал неизменности каждого разряда которого увеличивался бы с увеличением числа бит в коде. Т.е. берём 2-битный код - имеем неизменность по одной линии 2 такта. Берём 4-битный код - неизменность 4 такта. Берём 10-битный код - неизменность 10 тактов по одной линии. Ну может не так линейно, например, для 10 битов неизменность 7 или 8 тактов, но всё равно, чтобы интервал неизменности увеличивался с числом бит кода.

Ну и при этом нужно, чтобы свойство кода Грея оставалось: в каждом такте меняется только один бит.

Такое вообще возможно?


--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
scifi
сообщение Jul 9 2010, 17:45
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Я как-то раз решал похожую задачу: нужен был тикающий счётчик в EEPROM, и надо было сделать wear-leveling, то есть чтобы при каждом приращении счётчика менялся только 1 байт, и частота изменения байтов счётчика была приблизительно одинаковой. У Вас не та же задача?
Пришёл к некому решению. Поиск по патентам США привёл к патенту, в котором та же задача решена точно так же :-) Если надо, могу попробовать снова найти этот патент.
Go to the top of the page
 
+Quote Post
Krys
сообщение Jul 19 2010, 04:51
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271



Цитата(scifi @ Jul 10 2010, 00:45) *
Пришёл к некому решению. Поиск по патентам США привёл к патенту, в котором та же задача решена точно так же :-) Если надо, могу попробовать снова найти этот патент.
Если не сильно у Вас отниму время - то был бы благодарен за информацию.


Цитата(scifi @ Jul 10 2010, 00:45) *
Я как-то раз решал похожую задачу: нужен был тикающий счётчик в EEPROM, и надо было сделать wear-leveling, то есть чтобы при каждом приращении счётчика менялся только 1 байт, и частота изменения байтов счётчика была приблизительно одинаковой. У Вас не та же задача?
Давайте я попробую обрисовать задачу, зачем мне это понадобилось.
Сразу скажу, что всё реализуется в ПЛИС. Есть счётчик (грубо говоря счётчик времени) с тактовой частотой 100 МГц, значения с его выхода поступают по шине в некий блок, в который заходит тактовая частота 30 МГц, другой нет. В этом блоке на частоте 30 МГц необходимо защёлкнуть значения времени, изменяющиеся с частотой 100 МГц. Поскольку частоты разные - при обычной бесхитростной реализации "в лоб" очень часто будет возникать метастабильность, гонки фронтов и т.п., в результате чего правильные значения времени будут защёлкиваться далеко не всегда. Поэтому невозможно гарантировать безошибочное защёлкивание показаний времени (пусть хотя бы с погрешностью, связанной с изменяющимся взаимным положением фронтов частот 100 МГц и 30 МГц), т.е. могут быть не только погрешности, но и грубые промахи отсчётов, когда, скажем, в результате метастабильности, неправильно защёлкнулся старший разряд.
Для подавления метастабильности зачастую используют код Грея, т.к. у него в один момент изменяется только 1 бит, и последовательно сменяющиеся значения могут приобрести ошибку всего на единицу: либо счётчик в момент защёлкивания останется в предыдущем состоянии (без изменений), либо защёлкнется новое значение. Однако применение кода Грея для борьбы с метастабильностью имеет смысл только, когда частоты сигналов приблизительно одинаковые, но фронты не синхронные.
В моём же случае частоты существенно разные: 100 МГц и 30 МГц. При использовании кода Грея я смогу получить изменение одного разряда с тактовой частотой в 2 раза ниже, чем 100 МГц, т.е. 50 МГц. А защёлкиваю я эти значения на частоте 30 МГц, т.е. ещё почти в 2 раза медленнее. Таким образом, из-за гонок фронтов, связанных с разностью длин связей отдельных разрядов шины данных, я опять не могу гарантировать отсутствие промахов (грубых ошибок) измерения временных отсчётов.
Ладно, если частота защёлкивания 30 МГц уже ближе к 50 МГц, уже можно что-то придумать. Но уже появился спортивный интерес найти универсальное решение, работающее в общем случае, не только, когда частоты близки друг к другу.
Вот тут и возникает потребность, как я писал в первом сообщении, в некоем коде Грея, только равномерном, интервал неизменности каждого разряда которого увеличивался бы с увеличением числа бит в коде. Т.е. берём 2-битный код - имеем неизменность по одной линии 2 такта. Берём 4-битный код - неизменность 4 такта. Берём 10-битный код - неизменность 10 тактов по одной линии. Ну может не так линейно, например, для 10 битов неизменность 7 или 8 тактов, но всё равно, чтобы интервал неизменности увеличивался с числом бит кода.
Ну и при этом нужно, чтобы свойство кода Грея оставалось: в каждом такте меняется только один бит.

Тогда: имея такой код, я получу тактовую частоту изменения сигнала по каждой линии шины данных в несколько раз (пусть в N) ниже исходной тактовой (в обычном коде Грея - всего в 2 раза, что меня не устраивает). В таком случае я смогу защёлкивать значения счётчика на частоте, в N раз меньшей тактовой частоты самого счётчика.

Согласны?

Цитата(petrov @ Jul 9 2010, 18:00) *
Если из нескольких слов грея такой код составить?

Например

00 00
00 01
01 01
01 11
11 11
11 10
10 10
10 00
Спасибо, судя по Вашему примеру - то, что мне нужно.
... правда я пример понял, а как это образуется, какими формулами описывается и какие свойства (правда ли на всём диапазоне счёта будет изменяться не более 1 цифры за раз, правда ли частота повторения каждого разряда во всём диапазоне счёта ниже в несколько раз тактовой частоты исходного счётчика) у такого кода - не понял. Не разжуёте немножко теорию?


Цитата(Ant_m @ Jul 9 2010, 18:14) *
Просто, мне кажется, что цифра 2 берется от того, что код бинарный. Если брать тринарный код, то цифра будет 3, т.е бит в коде будет меняться за 3 такта. Ну и так далее, т.е это число определяется реализацией системы счисления.
Видимо, не совсем так. В двоичной системе такое тоже возможно, как показал уважаемый Oldring в этом сообщении.


--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Krys   подскажите плз некий код Грея, только равномерный   Jul 9 2010, 10:12
- - Ant_m   Наверное да. Но не в бинарной логике, а например в...   Jul 9 2010, 10:18
- - Krys   надо некий компромисс в бинарной   Jul 9 2010, 10:57
- - petrov   Если из нескольких слов грея такой код составить? ...   Jul 9 2010, 11:00
- - Ant_m   ЦитатаБерём обычный 2-битный код Грея. В нём кажды...   Jul 9 2010, 11:14
- - Oldring   Цитата(Krys @ Jul 9 2010, 14:12) Т.е. бер...   Jul 9 2010, 16:13
|- - Krys   Цитата(Oldring @ Jul 9 2010, 23:13) Легко...   Jul 19 2010, 07:11
- - AndeyP   Кнут говорит что такие коды ищутся только полным п...   Jul 9 2010, 16:28
|- - Oldring   Цитата(AndeyP @ Jul 9 2010, 20:28) См. то...   Jul 9 2010, 16:31
|- - Oldring   Цитата(Krys @ Jul 19 2010, 08:51) Таким о...   Jul 19 2010, 06:33
|- - Krys   Цитата(Oldring @ Jul 19 2010, 13:33) Мне ...   Jul 19 2010, 08:42
|- - Oldring   Цитата(Krys @ Jul 19 2010, 12:27) Вот кон...   Jul 19 2010, 08:44
- - Krys   Спасибо всем за ответы, извините, что долго молчал...   Jul 19 2010, 02:59
- - Krys   Ну как минимум я хочу к этому приблизиться, наскол...   Jul 19 2010, 10:10


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 11:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01703 секунд с 7
ELECTRONIX ©2004-2016