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

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аполеон Бонапарт

Reply to
Vladimir Vassilevsky
Loading thread data ...

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аполеон Бонапарт

Reply to
Vladimir Vassilevsky

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- есть какие либо правильные решения? И вопрос еще - чего бы почитать доступного о всем выше сказаном?

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

Reply to
Andrei Kovalenko

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

Reply to
Anatoly Mashanov

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аполеон Бонапарт

Reply to
Vladimir Vassilevsky

Hello, Anatoly!

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

Reply to
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

Reply to
Anatoly Mashanov

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

Reply to
Anatoly Mashanov

Hi Andrei !

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

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

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

WBRgrds Ruslan

Reply to
Ruslan Mohniuc

Hello Maxim!

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

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

Anatoly

Reply to
Anatoly Mashanov

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аполеон Бонапарт

Reply to
Vladimir Vassilevsky

Привет, 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 ... "Так он не только голубой, но и доверенный" подумал Бао.

Reply to
Nickita A 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

Reply to
Anatoly Mashanov

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.

Reply to
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

Reply to
Alex Gavrikov

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

Reply to
Anatoly Mashanov

Привет, 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аверное ему швея под хвост попала

Reply to
Nickita A Startcev

Привет, 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 ... "чч часов мм минут. Торпедный катер выполз на берег и скрылся в лесу"

Reply to
Nickita A 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ормальное дело, ведь канал может оказаться _очень_ нестабильным...

Георгий

Reply to
George Shepelev

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 просачиваться :)

Reply to
Vladimir V. Teplouhov

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.