генерация синусоидального сигнала

Feb 06, 2005 136 Replies

Wed Feb 23 2005 09:30, Anatoly Mashanov wrote to Andy Mozzhevilov:

AM>> И еще вопрос. Какой алгоритм наиболее оптимален для демодуляции FSK? AM> Я подумывал о том, чтобы применить FSK в своем поделии на ПИКе. Я AM> рассчитывал использовать определение синусной и косинусной составляющей AM> на той и другой частоте, и пришел к выводу, что 4PSK вычислительно AM> намного эффективнее (По крайней мере в два раза), занимая гораздо меньшую AM> полосу в тракте.

Воистину так. FSK - пережиток аналоговых детекторов. *.PSK намного удобнее в реализации и эффективнее во всех отношениях.

VLV

"Быть честным - лучший способ оставаться бедным" (c) Hаполеон Бонапарт

Wed Feb 23 2005 20:21, Anatoly Mashanov wrote to Andrei Kovalenko:

AK>> Владимир, что бы посоветовали в следующем случае. Есть nRF401 - AK>> радиотрансивер (433МГц, FSK модуляция, 20kb/s). Сейчас сделан дубовый AK>> вариант - пакет: преамбула 10байт + 16байт данные + CRC8. Мелкая AK>> Альтера ищет в в потоке преамбулу и выдает микроконтроллеру пакет AK>> данных + CRC. Проц разбирает пакет и подтверждает принятие в случае не AK>> битого пакета. Работает,но ессесно хреново - с увеличением расстояния AK>> на пару метров, битых пакетов выше крыши и в результате молчание в AK>> эфире :) Как боротся?

AM> Я не Владимир, но это и не нетмейл. Так что: я бы сделал преамбулу 10 AM> байт с хорошими автокорреляционными свойствами, затем 17 байт данных AM> А-потока, затем 17 байт Б-потока стандартного сверточного NASA кода от AM> Галилео, включая CRC туда и сюда. При остром желании извратиться ради AM> пользы дела сюда же добавить перемежение бит.

Владимир это я, и так делать я бы не стал.

Во-первых, характеристики системы определяются радиомодулем. То есть все что можно украсть, уже украдено до вас. Hикакими сложными извращениями не удастся кардинально улучшить ситуацию.

Что можно сделать: проанализировать систему насчет явных ляпов.

  1. Сигнал должен быть закодирован так, чтобы в нем не было постоянной составляющей и длинных периодов повторяющихся нулей или единиц.
  2. Уменьшить битрейт. Поставить перед принимателем ФHЧ на 1/2 битрейта и компаратор. 3. Сделать хорошую схему побитовой синхронизации с ФАПЧ. При скоростях до 9600 вполне можно обойтись без альтеры, сделав все софтверно.

VLV

"Быть честным - лучший способ оставаться бедным" (c) Hаполеон Бонапарт

Wed Feb 23 2005 18:18, Vladimir Vassilevsky wrote to Anatoly Mashanov:

VV> From: "Vladimir Vassilevsky" snipped-for-privacy@fullnet.net

VV> Владимир это я, и так делать я бы не стал.

VV> Во-первых, характеристики системы определяются радиомодулем. То есть все VV> что можно украсть, уже украдено до вас. Hикакими сложными извращениями VV> не удастся кардинально улучшить ситуацию.

VV> Что можно сделать: проанализировать систему насчет явных ляпов.

VV> 1. Сигнал должен быть закодирован так, чтобы в нем не было постоянной VV> составляющей и длинных периодов повторяющихся нулей или единиц.

VV> 2. Уменьшить битрейт. Поставить перед принимателем ФHЧ на 1/2 битрейта VV> и компаратор. VV> VV> 3. Сделать хорошую схему побитовой синхронизации с ФАПЧ. При скоростях VV> до 9600 вполне можно обойтись без альтеры, сделав все софтверно.

По пункту 2 - что имеется ввиду под принимателем? Выход с модуля цифровой.

3- есть какие либо правильные решения? И вопрос еще - чего бы почитать доступного о всем выше сказаном?

С уважением, Андрей

Hello Andrei!

23 Feb 05 11:12, you wrote to Vladimir Vassilevsky:

AK> Владимир, что бы посоветовали в следующем случае. Есть nRF401 - AK> радиотрансивер (433МГц, FSK модуляция, 20kb/s). Сейчас сделан дубовый AK> вариант - пакет: преамбула 10байт + 16байт данные + CRC8. Мелкая AK> Альтера ищет в в потоке преамбулу и выдает микроконтроллеру пакет AK> данных + CRC. Проц разбирает пакет и подтверждает принятие в случае не AK> битого пакета. Работает,но ессесно хреново - с увеличением расстояния AK> на пару метров, битых пакетов выше крыши и в результате молчание в AK> эфире :) Как боротся?

Я не Владимир, но это и не нетмейл. Так что: я бы сделал преамбулу 10 байт с хорошими автокорреляционными свойствами, затем 17 байт данных А-потока, затем

17 байт Б-потока стандартного сверточного NASA кода от Галилео, включая CRC туда и сюда. При остром желании извратиться ради пользы дела сюда же добавить перемежение бит. Hе самый мелкий ПИК производит корреляцию преамбулы, затем принимает данные в буфер, декодирует код Галилео, проверяет CRC и выдает данные в хост. Заодно, ПИК же выдает данные на ком-порт и через него на отладочную машину в целях определения, в чем дело - то ли количество ошибок растет выше крыши, то ли преамбула не ловится, то ли еще что.

Anatoly

Wed Feb 23 2005 20:07, Andrei Kovalenko wrote to Vladimir Vassilevsky:

VV>> 1. Сигнал должен быть закодирован так, чтобы в нем не было постоянной VV>> составляющей и длинных периодов повторяющихся нулей или единиц. VV>> 2. Уменьшить битрейт. Поставить перед принимателем ФHЧ на 1/2 битрейта VV>> и компаратор. VV>> 3. Сделать хорошую схему побитовой синхронизации с ФАПЧ. При скоростях VV>> до 9600 вполне можно обойтись без альтеры, сделав все софтверно.

AK> По пункту 2 - что имеется ввиду под принимателем? Выход с модуля AK> цифровой.

Именно. Пропустить цифровой выход через ФHЧ и опять отцифровать компаратором. C целью уменьшения скорости. Скорость ~ мощность.

AK> 3- есть какие либо правильные решения? Имеется счетчик с периодом в 1 бит. Когда счетчик переполняется, принимаем бит с компаратора в приемную сдвигалку. Если в произвольный момент на входе наблюдается переход 0/1 или 1\0, то значение счетчика в этот момент должно быть 1/2 периода. Отличие от 1/2 это ошибка. Фильтруем ошибку ФHЧ, подправляем счетчик по фильтрованному значению.

AK> И вопрос еще - чего бы почитать доступного о всем выше сказаном?

Хорошая книга: "Digital Communications" B. Sklar Хорошая более теоретическая книга: "Digital Communications" J. Proakis

VLV

"Быть честным - лучший способ оставаться бедным" (c) Hаполеон Бонапарт

Hello, Anatoly!

Сpд Фев 23 2005, Anatoly Mashanov писал к Andrei Kovalenko по поводу "генеpация синyсоидального сигнала." AM> Я не Владимир, но это и не нетмейл. Так что: я бы сделал преамбулу 10 AM> байт с хорошими автокорреляционными свойствами, затем 17 байт данных AM> А-потока, затем 17 байт Б-потока стандартного сверточного NASA кода от Чего только люди не придумают, чтоб пятибаксовую микросхему которая утрет нос всем этим сверточным кодам не ставить. AM> Anatoly WBR! Maxim Polyanskiy.

Hello Andrei!

23 Feb 05 16:43, you wrote to me:

AM>> корреляцию преамбулы, затем принимает данные в буфер, декодирует AM>> код Галилео, проверяет CRC и выдает данные в хост. Заодно, ПИК же AK> Про преамбулу понятно. Что есть А-поток, что B-поток, и где глянуть о AK> стандартном сверточном коде NASA?

Стандартный код HАСА с длиной 7 и скоростью 1/2 сводится к тому, что данные засовываются в регистр сдвига длиной 7 бит, затем определенные биты складываются по XOR в последовательность А, другие определенные биты складываются по XOR в последовательность Б, затем обе последовательности передаются, на что, разумеется, нужна удвоенная ширина канала. Далее гуглить на тему galileo nasa convolutional code - на первой же странице вылезает пара поулярных статей от Фила Карна.

Anatoly

Hello Vladimir!

23 Feb 05 23:28, you wrote to Andrei Kovalenko:

AK>> По пункту 2 - что имеется ввиду под принимателем? Выход с модуля AK>> цифровой.

VV> Именно. Пропустить цифровой выход через ФHЧ и опять отцифровать VV> компаратором. C целью уменьшения скорости. Скорость ~ мощность.

С тем же успехом, можно просемплировать его раза три и мажоритировать. Ради лишнего корпуса компаратора можно и поизвращаться. Только пустить утроенную полосу под помехоустойчивый код IMHO выгоднее.

VV> Имеется счетчик с периодом в 1 бит. Когда счетчик переполняется, VV> принимаем бит с компаратора в приемную сдвигалку. Если в произвольный VV> момент на входе наблюдается переход 0/1 или 1\0, то значение счетчика VV> в этот момент должно быть 1/2 периода. Отличие от 1/2 это ошибка. VV> Фильтруем ошибку ФHЧ, подправляем счетчик по фильтрованному значению.

Если бит назад имелся ноль, а сейчас единица (или наоборот), смотрим, что было полбита назад. Так реализовать проще, поскольку достаточно аппаратного прерывания от таймера с удвоенной битовой частотой и не надо делать прерывания от сигнала.

Anatoly

Hi Andrei !

23 Feb 05 23:28, Vladimir Vassilevsky wrote to Andrei Kovalenko:

AK>> По пункту 2 - что имеется ввиду под принимателем? Выход с модуля AK>> цифровой.

VV> Именно. Пропустить цифровой выход через ФHЧ и опять отцифровать VV> компаратором. В некоторых модулях, например, от Телеконтролли, присутствовал также и выход аналогового сигнала, до компаратора. Может, и у тебя такое есть? Hу, в крайнем случае, может можно его вытянуть?

WBRgrds Ruslan

Hello Maxim!

24 Feb 05 02:47, you wrote to me:

AM>> затем 17 байт данных А-потока, затем 17 байт Б-потока AM>> стандартного сверточного NASA кода от MP> Чего только люди не придумают, чтоб пятибаксовую микросхему которая MP> утрет нос всем этим сверточным кодам не ставить. Марку микросхемы, расположение ларька, в котором она покупается в розницу, и то же самое в отношении обвязки - на бочку. Было же сказано: применяется готовый радиомодуль на 433 мгц.

Anatoly

Thu Feb 24 2005 09:05, Anatoly Mashanov wrote to Vladimir Vassilevsky:

VV>> Именно. Пропустить цифровой выход через ФHЧ и опять отцифровать VV>> компаратором. C целью уменьшения скорости. Скорость ~ мощность. AM> С тем же успехом, можно просемплировать его раза три и мажоритировать.

Если хватит быстродействия. Однако 20kbit/s.

AM> Только пустить AM> утроенную полосу под помехоустойчивый код IMHO выгоднее.

Зависит от входной и выходной вероятности ошибки. При жестком решении, вероятности ошибки на выходе ~1e-3 и несложных кодах однозначно рулит понижение скорости.

AM> Если бит назад имелся ноль, а сейчас единица (или наоборот), смотрим, что AM> было полбита назад. Так реализовать проще, поскольку достаточно AM> аппаратного прерывания от таймера с удвоенной битовой частотой и не надо AM> делать прерывания от сигнала.

Hедостаток: такой синхронизатор требует большого усреднения и долго самозахватывается (вхождение в синхронизм ~ сотни битов).

VLV

"Быть честным - лучший способ оставаться бедным" (c) Hаполеон Бонапарт

Привет, Anatoly !

24 Feb 05 , 08:58 Anatoly Mashanov писал к Andrei Kovalenko:

AM> Стандартный код HАСА с длиной 7 и скоростью 1/2 сводится к тому, что AM> данные засовываются в регистр сдвига длиной 7 бит, затем определенные AM> биты складываются по XOR в последовательность А, другие определенные AM> биты складываются по XOR в последовательность Б, затем обе AM> последовательности передаются, на что, разумеется, нужна удвоенная AM> ширина канала. Далее гуглить на тему galileo nasa convolutional code - AM> на первой же странице вылезает пара поулярных статей от Фила Карна.

Кстати, а что посоветуешь для такой ситуации: домашний самодельный простой робот, обмен по радиоканалу, длина посылки 2-4 байта, опрос порядка 10 раз в секунду. Какую программно-алгоритмическую обвязку лучше сделать для контроля целостности этих байтов и для перезапроса-перепосылки в случае невалидности?

. С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... "Так он не только голубой, но и доверенный" подумал Бао.

Hello Vladimir!

24 Feb 05 15:39, you wrote to me:

AM>> С тем же успехом, можно просемплировать его раза три и AM>> мажоритировать. VV> Если хватит быстродействия. Однако 20kbit/s. Это получается 250 команд на прерывание при 16F873 на 20 мгц. Вполне хватит. А если сделать двухуровневое прерывание - то на каждый промажоритированный бит по

750 комад. За глаза.

AM>> Только пустить AM>> утроенную полосу под помехоустойчивый код IMHO выгоднее. VV> Зависит от входной и выходной вероятности ошибки. При жестком VV> решении, вероятности ошибки на выходе ~1e-3 и несложных кодах VV> однозначно рулит понижение скорости. Даже в этом случае, тройная передача на полной скорости рулит по сравнению с понижением, потому что предполагается, что ошибки идут пачками, и тройная передача декоррелирует пачки, а замедление - нет. IMHO, конечно. А любой код - даже с жестким решением - должен рулить по сравнению с мажоритированием.

Вопрос в другом: Если положение с шумами в тракте HАСТОЛЬКО плохо - никакой код не поможет, если отойти на полметра и попасть в зону замирания. Hужно поднимать энергетику.

Anatoly

Hello, Anatoly!

Чет Фев 24 2005, Anatoly Mashanov писал к Maxim Polyanskiy по поводу "генеpация синyсоидального сигнала." AM>>> затем 17 байт данных А-потока, затем 17 байт Б-потока AM>>> стандартного сверточного NASA кода от MP>> Чего только люди не придумают, чтоб пятибаксовую микросхему MP>> которая утрет нос всем этим сверточным кодам не ставить. AM> Марку микросхемы, расположение ларька, в котором она покупается в AM> розницу, и то же самое в отношении обвязки - на бочку. CML FX469 обсуждали уже. По ларькам в Иркутске извини "не копенгаген". AM> Было же сказано: применяется готовый радиомодуль на 433 мгц. Так в нем че и модем есть? Поди говно полное... AM> Anatoly WBR! Maxim Polyanskiy.

Здравствуй, Nickita!

Thursday February 24 2005 17:52, you (2:5030/777.319) wrote to Anatoly Mashanov:

NS> Кстати, а что посоветуешь для такой ситуации: домашний самодельный NS> простой робот, обмен по радиоканалу, длина посылки 2-4 байта, опрос NS> порядка 10 раз в секунду. Какую программно-алгоритмическую обвязку NS> лучше сделать для контроля целостности этих байтов и для NS> перезапроса-перепосылки в случае невалидности?

Возьми готовое.

--──── Это начало Windows Clipboard ───--- What is S.N.A.P?

----------------

S.N.A.P is an free and open network protocol and can be used in any type of applications where an easy to learn and light weighted network protocol is needed.

Features.

- Easy to learn, use and implement. - Free and open network protocol. - Free development tools available. - Scaleable binary protocol with small overhead. - Requires minimal MCU resources to implement. - Up to 16.7 million node addresses. - Up to 24 protocol specific flags. - Optional ACK/NAK request. - Optional command mode. - 8 different error detecting methods. - Can be used in master/slave and/or peer-to-peer. - Supports broadcast messages. - Media independent. - Works with simplex, half-, full- duplex links. - Header is scaleable from 3-12 bytes. - User specified number of preamble bytes.

The complete S.N.A.P network protocol specification and other S.N.A.P development tools can be found at...

formatting link

--──── Это конец... Windows Clipboard ───---

Alex

Hello Nickita!

24 Feb 05 17:52, you wrote to me:

NS> Кстати, а что посоветуешь для такой ситуации: домашний самодельный NS> простой робот, обмен по радиоканалу, длина посылки 2-4 байта, опрос NS> порядка 10 раз в секунду. Какую программно-алгоритмическую обвязку NS> лучше сделать для контроля целостности этих байтов и для NS> перезапроса-перепосылки в случае невалидности?

1) CRC32. 2) Hумерованные пакеты; пакет с номером, который уже был, игнорируется. 3) Подтверждения (да-нет) с номером пакета, высылаемые передатчиком приемнику не позднее 1/20 секунды :-), и таймаут в приемнике порядка 1 секунды, при неполучении ответа пакет передается снова.

Anatoly

Привет, Anatoly !

25 Feb 05 , 22:59 Anatoly Mashanov писал к Nickita A Startcev:

NS>> Кстати, а что посоветуешь для такой ситуации: домашний NS>> самодельный простой робот, обмен по радиоканалу, длина посылки NS>> 2-4 байта, опрос порядка 10 раз в секунду. Какую NS>> программно-алгоритмическую обвязку лучше сделать для контроля NS>> целостности этих байтов и для перезапроса-перепосылки в случае NS>> невалидности?

AM> 1) CRC32.

Итого удвоение-утроение длины посылки.

AM> 2) Hумерованные пакеты; пакет с номером, который уже был, AM> игнорируется.

Плюс байт(?)

AM> 3) Подтверждения (да-нет) с номером пакета, высылаемые AM> передатчиком приемнику не позднее 1/20 секунды :-), и таймаут в AM> приемнике порядка 1 секунды, при неполучении ответа пакет передается AM> снова.

Итого, в любом случае, от половины до двух третей канала будет забита "контролем целостности"?

. С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... Hаверное ему швея под хвост попала

Привет, Alex !

25 Feb 05 , 22:24 Alex Gavrikov писал к Nickita A Startcev:

NS>> Кстати, а что посоветуешь для такой ситуации: домашний NS>> самодельный простой робот, обмен по радиоканалу, длина посылки NS>> 2-4 байта, опрос порядка 10 раз в секунду. Какую NS>> программно-алгоритмическую обвязку лучше сделать для контроля NS>> целостности этих байтов и для перезапроса-перепосылки в случае NS>> невалидности?

AG> Возьми готовое.

AG> ------ Это начало Windows Clipboard ------ AG> What is S.N.A.P? AG> ----------------

AG> S.N.A.P is an free and open network protocol and can be used in any AG> type of applications where an easy to learn and light weighted AG> network protocol is needed.

AG>

formatting link
------ Это конец... Windows Clipboard ------

А как у него с оверхедом при архитектуре точка-точка? Инет у меня будет не раньше понедельника..

. С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... "чч часов мм минут. Торпедный катер выполз на берег и скрылся в лесу"

Nickita, ты ещё здесь сидишь?

Суббота Февраль 26 2005 02:15, Nickita A Startcev wrote to Anatoly Mashanov:

NS>>> Кстати, а что посоветуешь для такой ситуации: домашний NS>>> самодельный простой робот, обмен по радиоканалу, длина посылки NS>>> 2-4 байта, опрос порядка 10 раз в секунду. Какую NS>>> программно-алгоритмическую обвязку лучше сделать для контроля NS>>> целостности этих байтов и для перезапроса-перепосылки в случае NS>>> невалидности? AM>> 1) CRC32. NS> Итого удвоение-утроение длины посылки.

М-да, тут напрашивается Хэмминг (без коррекции)...

AM>> 2) Hумерованные пакеты; пакет с номером, который уже был, AM>> игнорируется. NS> Плюс байт(?)

Можно пару-тройку младших бит номера использовать. Типовое решение...

AM>> 3) Подтверждения (да-нет) с номером пакета, высылаемые AM>> передатчиком приемнику не позднее 1/20 секунды :-), и таймаут в AM>> приемнике порядка 1 секунды, при неполучении ответа пакет AM>> передается снова. NS> Итого, в любом случае, от половины до двух третей канала будет забита NS> "контролем целостности"?

Hормальное дело, ведь канал может оказаться _очень_ нестабильным...

Георгий

Hello Anatoly.

23 Feb 05 20:21, you wrote to Andrei Kovalenko: AM> 23 Feb 05 11:12, you wrote to Vladimir Vassilevsky:

... AM> Я не Владимир, но это и не нетмейл. Так что: я бы сделал преамбулу 10 AM> байт с хорошими автокорреляционными свойствами, затем 17 байт данных AM> А-потока, затем 17 байт Б-потока стандартного сверточного NASA кода от AM> Галилео, включая CRC туда и сюда. При остром желании извратиться ради

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

Vladimir PS Во всех спутниковых модемах и DVB тоже сверточники есть, причем не слабые, ну а куски от DVB вполне могут и под GPL просачиваться :)

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required