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

 
 
> Как грамотно принять цифровой сигнал
ArAhis
сообщение May 24 2006, 16:17
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 19
Регистрация: 8-09-05
Пользователь №: 8 387



Есть на входе (в ПЛИС) цифровой сигнал, поступающий с определенной частотой (ну, скажем 10МГц), только этот самый тактовый сигнал НЕ ПОСТУПАЕТ (так сделано в приемопередатчике MLX90121 (режим Direct Reception))! Посоветуйте как грамотно принять этот цифровой сигнал, имея при этом свой (внутренний) тактовый сигнал любой частотой??? Тупо брать тактовый сигнал той же частоты, с которой поступает цифровой сигнал не получится, т.к. фронты обоих сигналов могут совпасть и получим неправильно принятый сигнал!!!
Если я не правильно понял datasheet на MLX90121, поправьте меня. Хотя по другому его понять сложно! Если что, datasheet находится здесь: http://www.melexis.com/Asset.aspx?nID=4755


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sK0T
сообщение May 24 2006, 22:09
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 241
Регистрация: 22-12-04
Пользователь №: 1 610



Цитата(ArAhis @ May 24 2006, 20:17) *
Посоветуйте как грамотно принять этот цифровой сигнал, имея при этом свой (внутренний) тактовый сигнал любой частотой??? Тупо брать тактовый сигнал той же частоты, с которой поступает цифровой сигнал не получится, т.к. фронты обоих сигналов могут совпасть и получим неправильно принятый сигнал!!!


Тут надо поступить довольно просто. Теоретически достаточно сэмплировать входящий сигнал с двойной скоростью. Практически это врядли оправдано. Сэмплируем входной сигнал в k раз большей частотой. Приведу пример для k=3.

Сигнал: 1010
Принимаем: 111000111000

Синхронизируем приём по переходу 0-1 входящего сигнала, записываем n отсчётов в буфер и анализируем его, зная что каждые k бит буфера соответствуют одному биту принимаемого сигнала. Если преобладают единицы в окне бита — значит единица на линии, если нули, значит ноль. Обязательно делать это короткими окнами, синхронизированными по переходу входящего сигнала. Если входящий сигнал имеет малую энтропию (например могут быть сплошные нули в течении длительного времени), то надо думать дальше. :-)

Ещё вариант питать источник Вашего сигнала клоками с ПЛИС частотой f/2, а семплировать на частоте f. Тогда синхронизация будет «автоматической». ;-)
Go to the top of the page
 
+Quote Post
ArAhis
сообщение May 24 2006, 22:38
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 19
Регистрация: 8-09-05
Пользователь №: 8 387



Цитата(sK0T @ May 25 2006, 02:09) *
Сэмплируем входной сигнал в k раз большей частотой. Приведу пример для k=3.

Сигнал: 1010
Принимаем: 111000111000

Не факт, что принимаемый сигнал будет 111000111000! Если один из фронтов тактового сигнала совподет с фронтом входного сигнала, то может получиться следующее: пусть, например, фронт входного сигнала совпадает с каждым 3-м фронтом синхросигнала, тогда по этому фронте мы можем принять, либо '1' либо '0', причем не факт, что входной сигнал на этом фронте всегда будет искажаться в одну сторону, например, мы можем принять любой из следующих сигналов:
110000111001 или
111000110000 и т.д.
Т.е. на каждом 3-м фронте тактового сигнала, мы можем принять как '1', так и '0', не зависимо от фронта входного сигнала (1->0 или 0->1)!!!

Вообще, меня интересует такой общий вопрос: как грамотно (наиболее просто, с наименьшими затратами) принять (в регистр) цифровой сигнал (1 битовый), поступающий с известной заданной частотой, при условии, что тактовый сигнал не поступает, имея в распоряжении все возможности ПЛИС? Может быть уже существуют оптимальные методы, я не в курсе!!!

Сообщение отредактировал ArAhis - May 24 2006, 22:39


--------------------
Go to the top of the page
 
+Quote Post
sK0T
сообщение May 25 2006, 00:43
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 241
Регистрация: 22-12-04
Пользователь №: 1 610



Цитата(ArAhis @ May 25 2006, 02:38) *
Не факт, что принимаемый сигнал будет 111000111000! Если один из фронтов тактового сигнала совподет с фронтом входного сигнала, то может получиться следующее: пусть, например, фронт входного сигнала совпадает с каждым 3-м фронтом синхросигнала, тогда по этому фронте мы можем принять, либо '1' либо '0', причем не факт, что входной сигнал на этом фронте всегда будет искажаться в одну сторону, например, мы можем принять любой из следующих сигналов:
110000111001 или
111000110000 и т.д.
Т.е. на каждом 3-м фронте тактового сигнала, мы можем принять как '1', так и '0', не зависимо от фронта входного сигнала (1->0 или 0->1)!!!


Вообще-то там дальше было написано про подсчёт единиц или нулей, ага?
110 000 111 001 — 2 0 3 1 — 1 0 1 0
111 000 110 000 — 3 0 2 0 — 1 0 1 0

Если k взять побольше, всё будет с приличной вероятностью. «Идеальный» приём сигнала в таких условиях представляется задачей в общем случае не разрешимой. Если два устройства питаются независимыми синхросигналами, то синхронизовать их в общем случае без передачи синхросигналов нельзя. Например передаётся ноль. За какое-то время генераторы в устройствах разойдутся так, что сказать сколько нулевых бит прошло между двумя моментами времени достоверно будет нельзя и никакие ресурсы ПЛИС тут не помогут.

Единственный вариант — делать сверх-семплирование способом, который я уже описал и надеятся на то, что по каналу пробегает достаточно ноликов и единичек для переодической синхронизации буфера.
Go to the top of the page
 
+Quote Post
ArAhis
сообщение May 25 2006, 09:30
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 19
Регистрация: 8-09-05
Пользователь №: 8 387



Цитата(sK0T @ May 25 2006, 04:43) *
Цитата(ArAhis @ May 25 2006, 02:38) *

Не факт, что принимаемый сигнал будет 111000111000! Если один из фронтов тактового сигнала совподет с фронтом входного сигнала, то может получиться следующее: пусть, например, фронт входного сигнала совпадает с каждым 3-м фронтом синхросигнала, тогда по этому фронте мы можем принять, либо '1' либо '0', причем не факт, что входной сигнал на этом фронте всегда будет искажаться в одну сторону, например, мы можем принять любой из следующих сигналов:
110000111001 или
111000110000 и т.д.
Т.е. на каждом 3-м фронте тактового сигнала, мы можем принять как '1', так и '0', не зависимо от фронта входного сигнала (1->0 или 0->1)!!!


Вообще-то там дальше было написано про подсчёт единиц или нулей, ага?
110 000 111 001 — 2 0 3 1 — 1 0 1 0
111 000 110 000 — 3 0 2 0 — 1 0 1 0

Если k взять побольше, всё будет с приличной вероятностью. «Идеальный» приём сигнала в таких условиях представляется задачей в общем случае не разрешимой. Если два устройства питаются независимыми синхросигналами, то синхронизовать их в общем случае без передачи синхросигналов нельзя. Например передаётся ноль. За какое-то время генераторы в устройствах разойдутся так, что сказать сколько нулевых бит прошло между двумя моментами времени достоверно будет нельзя и никакие ресурсы ПЛИС тут не помогут.

Единственный вариант — делать сверх-семплирование способом, который я уже описал и надеятся на то, что по каналу пробегает достаточно ноликов и единичек для переодической синхронизации буфера.

Размышлял тут по поводу сверх-семплирования и пришел к следующим выводам:
- сверх-семплирование с частотами большими в 2, 4, 6, 8,... раз частоты входного сигнала не поможет, поскольку в анализируемых 2, 4, 6, 8,...-битных выборках может быть равное число '1' и '0', и тогда не понятно какой сигнал выбирать - '1' или '0';
- сверх-семплирование с частотами в 3, 5, 7,... раз больше частоты входного сигнала также непонятно: может возникнуть ситуация, когда фронт сигнала совпадет с центральным отсчетом сверх-семплированного сигнала; например, сигнал 01, сверх-семплированный с частотой в 5 раз больше может приняться как сигнал 00011 или как сигнал 00111 (центральный бит попал на фронт перехода 0->1) и тогда не понятно, что брать - '1' или '0'.


--------------------
Go to the top of the page
 
+Quote Post
sK0T
сообщение May 25 2006, 09:52
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 241
Регистрация: 22-12-04
Пользователь №: 1 610



Цитата(ArAhis @ May 25 2006, 13:30) *
Размышлял тут по поводу сверх-семплирования и пришел к следующим выводам:
- сверх-семплирование с частотами большими в 2, 4, 6, 8,... раз частоты входного сигнала не поможет, поскольку в анализируемых 2, 4, 6, 8,...-битных выборках может быть равное число '1' и '0', и тогда не понятно какой сигнал выбирать - '1' или '0';
- сверх-семплирование с частотами в 3, 5, 7,... раз больше частоты входного сигнала также непонятно: может возникнуть ситуация, когда фронт сигнала совпадет с центральным отсчетом сверх-семплированного сигнала; например, сигнал 01, сверх-семплированный с частотой в 5 раз больше может приняться как сигнал 00011 или как сигнал 00111 (центральный бит попал на фронт перехода 0->1) и тогда не понятно, что брать - '1' или '0'.


Тут надо, что-бы соблюдалось такое соотношение: за время исчерпания буфера сверх-семплирования в сигнале должен присутствовать хотя-бы один переход состояний. По этому переходу и синхронизироваться. Ведь вне зависимости от наличия синхроимпульса можно сделать триггер, переключаемый логическим переходом. Каждый такой переход возле конца буфера будет давать искомую синхронизацию. Например:

00010 01010

(не синхронизированный буфер) 000 000 001 (поймали переход)111 000 (кончился буфер, начали сначала, но уже синхронизированно) 000 111 000 111 000
Go to the top of the page
 
+Quote Post
ArAhis
сообщение May 25 2006, 10:36
Сообщение #7


Участник
*

Группа: Новичок
Сообщений: 19
Регистрация: 8-09-05
Пользователь №: 8 387



Вопрос: есть ли вероятность того, сигнал 00, сверх-семплированный, допустим в 5 раз быстрее будет принят как 00001 00000, при условии, что 5-й бит попадет на переход 1-й ноль -> 2-й ноль?


--------------------
Go to the top of the page
 
+Quote Post
sK0T
сообщение May 30 2006, 19:49
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 241
Регистрация: 22-12-04
Пользователь №: 1 610



Цитата(ArAhis @ May 25 2006, 14:36) *
Вопрос: есть ли вероятность того, сигнал 00, сверх-семплированный, допустим в 5 раз быстрее будет принят как 00001 00000, при условии, что 5-й бит попадет на переход 1-й ноль -> 2-й ноль?


Э-э-э? А почему у меня переход ноль—ноль не вызывает на осцилограмме ну никаких отклонений от прямой? :-)
Go to the top of the page
 
+Quote Post
ArAhis
сообщение May 30 2006, 20:04
Сообщение #9


Участник
*

Группа: Новичок
Сообщений: 19
Регистрация: 8-09-05
Пользователь №: 8 387



Цитата(sK0T @ May 30 2006, 23:49) *
Цитата(ArAhis @ May 25 2006, 14:36) *

Вопрос: есть ли вероятность того, сигнал 00, сверх-семплированный, допустим в 5 раз быстрее будет принят как 00001 00000, при условии, что 5-й бит попадет на переход 1-й ноль -> 2-й ноль?


Э-э-э? А почему у меня переход ноль—ноль не вызывает на осцилограмме ну никаких отклонений от прямой? :-)

эт хорошо!
это справедливо для всех внутренних сигналов ПЛИС?


--------------------
Go to the top of the page
 
+Quote Post
sK0T
сообщение May 30 2006, 20:27
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 241
Регистрация: 22-12-04
Пользователь №: 1 610



Цитата(ArAhis @ May 31 2006, 00:04) *
Цитата(sK0T @ May 30 2006, 23:49) *

Цитата(ArAhis @ May 25 2006, 14:36) *

Вопрос: есть ли вероятность того, сигнал 00, сверх-семплированный, допустим в 5 раз быстрее будет принят как 00001 00000, при условии, что 5-й бит попадет на переход 1-й ноль -> 2-й ноль?


Э-э-э? А почему у меня переход ноль—ноль не вызывает на осцилограмме ну никаких отклонений от прямой? :-)

эт хорошо!
это справедливо для всех внутренних сигналов ПЛИС?


Ну как Вы наверное понимаете, гарантий того, что какая-то линия внутри ПЛИС будет строго ноль нет ни у кого. ;-)

А вот то, воспринимать единичный бит за переход или нет — вопрос конкретных статистических характеристик сигнала и устройства…
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ArAhis   Как грамотно принять цифровой сигнал   May 24 2006, 16:17
- - rezident   Что-то я не совсем понял проблемы. Интерфейс-то си...   May 24 2006, 16:55
- - maksya   Датащит качать влом, но насколько Я понял связь ме...   May 24 2006, 17:39
- - rezident   Да есть там синхро! Только они раздельные. Для...   May 24 2006, 17:47
|- - net   Цитата(rezident @ May 24 2006, 21:47) Да ...   May 24 2006, 19:23
- - rezident   Пардон! Не обратил внимание, что указан конкре...   May 24 2006, 19:36
|- - ArAhis   Цитата(rezident @ May 24 2006, 23:36) Пар...   May 24 2006, 22:01
|- - Jools   Цитата(ArAhis @ May 25 2006, 02:01) Так в...   May 25 2006, 04:18
|- - net   Цитата(ArAhis @ May 25 2006, 02:38) Цитат...   May 25 2006, 04:07
- - sazh   ///Если я не правильно понял datasheet на MLX90121...   May 25 2006, 07:35
- - sazh   Остается спросить. А как это сделать по рекомендов...   May 25 2006, 10:01
- - Gate   Похожая задача обсуждалась пару месяцев назад в те...   May 25 2006, 14:11


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 19:19
Рейтинг@Mail.ru


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