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

 
 
> BPSK(QPSK) модулятор-демодулятор и гидроакустический модем
Acvarif
сообщение Feb 2 2018, 06:47
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850



Просьба подсобить с общим пониманием как можно построить несложный гидроакустический модем учитывая то, что несущая частота = 35 кГц, а частота передачи данных = 1200 бод/сек (1.2 кГц) Протокол предполагается UART. Проще говоря на несущей нужно передавать последовательный цифровой код (единички и нолики) с частотой 1.2 кГц.

Можно-ли это организовать на базе BPSK?
Как примерно будет выглядеть структура такого устройства?

Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Rst7
сообщение Feb 5 2018, 12:24
Сообщение #2


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



QUOTE
Возможно, что если тот код для 1200бод переложить на ассемблер современного Cortex-M примерно на 200МГц, то он вытянул-бы. biggrin.gif


Не хочу Вас расстраивать, но делал я как-то как раз гидроакустический модем, там была OFDM, скорость данных порядка 140кбит/с, полный дуплекс с несущими 500кГц и 1МГц (аплинк и даунлинк соответственно). Ну справедливости ради там перемножители были внешние. И внешний АЦП (банальный аудио-АЦП двухканальный), цифровать квадратуры уже после смесителя.

Работало это на 100МГц Cortex-M3 без особых проблем, без всякой плавающей точки, с загрузкой проца где-то в 30-40 процентов. Да-да, с Фурье вперед и назад, с эквалайзером и прочими необходимыми для OFDM пирогами.

А еще был другой, там именно GMSK был, на канале управления жил. Тоже, правда, с внешним АЦП, прямо цинично пьезокерамика на дифференциальный вход AK5384 была подключена. И несущая как раз была в районе 40кГц. Цифровал себе спокойно всю полосу, и дальше все по классике. Ну совсем же смешное было
CODE

#define F_CPU (100000000ULL)
#define RXLS_SAMPLE_RATE (97655ULL)

#pragma inline=forced
static long long QMULL(REG32 a, REG32 b, REG32 c, REG32 d)
{
long long r;
asm("SMULL %L0,%H0,%1,%2":"=Rp"®:"r"(a),"r"(cool.gif);
asm("SMLAL %L0,%H0,%1,%2":"+Rp"®:"r"©,"r"(d));
//return ((long long)a * cool.gif + ((long long)c * d);
return r;
}

static long long FMULADD64(long long r, long long a, UREG32 k)
{
asm("SMLAL %L0,%H0,%H1,%2":"+Rp"®:"Rp"(a),"r"(k));
asm("UMULL %L0,%H0,%L0,%1":"+Rp"(a):"r"(k));
a+=0x80000000;
asm("ADDS %L0,%L0,%H1":"+Rp"®:"r"(a):"cc");
asm("ADC %H0,%H0,#0":"+Rp"®);
return r;
}

static long long FMULSUB64(long long r, long long a, UREG32 k)
{
asm("SMLAL %L0,%H0,%H1,%2":"+Rp"®:"Rp"(a),"r"(-k));
asm("UMULL %L0,%H0,%L0,%1":"+Rp"(a):"r"(k));
a+=0x80000000;
asm("SUBS %L0,%L0,%H1":"+Rp"®:"r"(a):"cc");
asm("SBC %H0,%H0,#0":"+Rp"®);
return r;
}

#pragma inline=forced
static inline REG32 EXPDIVfast(long long f, unsigned long long a)
{
UREG ea;
UREG32 a32=a>>32;
REG32 f32=f>>32;
if (a32)
{
ea=__CLZ(a32);
a32=(a32<<ea)|((unsigned long)a>>(32-ea));
ea--;
f32=(f32<<ea)|((unsigned long)f>>(32-ea));
}
else
{
a32=a;
f32=f;
ea=__CLZ(a32);
a32=a32<<ea;
ea--;
f32=f32<<ea;
}
a32>>=16+1;
if (a32)
return (f32/(REG32)a32)<<8;
else
return 0;
}

#define DEFAULT_FREQ_HZ (32010ULL)
#define DEFAULT_FREQ ((DEFAULT_FREQ_HZ<<32)/RXLS_SAMPLE_RATE)
UINT32 freq_a=DEFAULT_FREQ;
UINT32 phase_a;
#define CHLPF_SHIFT (27)
#define CHLPF_PREGAIN_SHIFT (27)
//1.5kHz, 1dB, 5 poles, Z-transform
#define CHLPF_K0 ( 961)
#define CHLPF_K1 ( 98213853)
#define CHLPF_K2 ( 521724849)
#define CHLPF_K3 ( 1109599598)
#define CHLPF_K4 ( 1181066974)
#define CHLPF_K5 ( 629195138)
void I2S_IRQHandler(void)
{
REG32 rxsig;
rxsig=I2SRXFIFO;
REG32 I;
REG32 Q;
UREG32 vo=phase_a;
I=rxsig*SIN8[(vo+0x00000000)>>24];
Q=rxsig*SIN8[(vo+0x40000000)>>24];
phase_a=vo+freq_a;
//Filter I
{
static signed long long y1,y2,y3,y4,y5;
signed long long result;
result=(long long)I*CHLPF_K0;
result=FMULADD64(result, y1,CHLPF_K1);
result=FMULSUB64(result,y1=y2,CHLPF_K2);
result=FMULADD64(result,y2=y3,CHLPF_K3);
result=FMULSUB64(result,y3=y4,CHLPF_K4);
result=FMULADD64(result,y4=y5,CHLPF_K5);
y5=result<<(32-CHLPF_SHIFT);
I=(INT32)(result>>(CHLPF_SHIFT-1));
}
//Filter Q
{
static signed long long y1,y2,y3,y4,y5;
signed long long result;
result=(long long)Q*CHLPF_K0;
result=FMULADD64(result, y1,CHLPF_K1);
result=FMULSUB64(result,y1=y2,CHLPF_K2);
result=FMULADD64(result,y2=y3,CHLPF_K3);
result=FMULSUB64(result,y3=y4,CHLPF_K4);
result=FMULADD64(result,y4=y5,CHLPF_K5);
y5=result<<(32-CHLPF_SHIFT);
Q=(INT32)(result>>(CHLPF_SHIFT-1)); //Без одного защитного бита
}
//Demodulation
{
static INT32 I1,Q1;
REG32 id,qd;
id=I-I1; I1=I;
qd=Q-Q1; Q1=Q;
long long f=QMULL(-I,qd,Q,id);
unsigned long long a=QMULL(I,I,Q,Q);
lsrx_lvl_a=a;
//Qdata=-EXPDIVfast(f,a);
Qdata=f>0?-0x200000:0x200000;
}

... все, тут уже разбор чисто с цифровым потоком, 0/1 это Qdata<0 или >0

}


QUOTE
Передатчик лучше ЦАП-ом.


Нафиг он там не нужен. Делаются таблички для для плавного по Гауссу изменения фазы ШИМ в вариантах переходов бит 0->1 и 1->0 и все.

QUOTE
И 12 бит разрядности АЦП (которая обычно бывает в МК) может не хватить для обеспечения динамического диапазона и чувствительности.


Для такого АЦП да, АРУ надо делать.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
petrov
сообщение Feb 13 2018, 12:50
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(Rst7 @ Feb 5 2018, 15:24) *
полный дуплекс с несущими 500кГц и 1МГц (аплинк и даунлинк соответственно)


А как развязка передатчика и приёмника осуществляется, чтобы не было перегрузки приёмника, это какие-то акустические фильтры?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Acvarif   BPSK(QPSK) модулятор-демодулятор и гидроакустический модем   Feb 2 2018, 06:47
- - Rst7   Тут подробности нужны. А то многое зависит от глуб...   Feb 2 2018, 09:32
|- - Acvarif   Цитата(Rst7 @ Feb 2 2018, 12:32) Тут подр...   Feb 5 2018, 08:26
||- - jcxz   Цитата(Acvarif @ Feb 5 2018, 10:26) Если ...   Feb 5 2018, 11:58
|- - jcxz   Цитата(Rst7 @ Feb 2 2018, 11:32) Передатч...   Feb 5 2018, 12:08
- - litv   вот такой продается http://rfdsp.ru/modem_ga.html   Feb 2 2018, 10:21
- - Rst7   QUOTE Как примерно будет выглядеть структурная схе...   Feb 5 2018, 12:04
|- - jcxz   Цитата(Rst7 @ Feb 5 2018, 14:24) Работало...   Feb 5 2018, 12:40
||- - Acvarif   Да... Я действительно далек от темы. Придется шту...   Feb 5 2018, 13:09
||- - jcxz   Цитата(Acvarif @ Feb 5 2018, 15:09) 1. Ес...   Feb 5 2018, 13:22
||- - Acvarif   Цитата(jcxz @ Feb 5 2018, 17:22) PS: У Ва...   Feb 6 2018, 06:30
||- - jcxz   Цитата(Acvarif @ Feb 6 2018, 08:30) Нет-л...   Feb 6 2018, 14:17
||- - megajohn   Цитата(Acvarif @ Feb 6 2018, 10:30) Нет-л...   Feb 15 2018, 08:42
|- - SemperAnte   Цитата(Rst7 @ Feb 5 2018, 15:24) Не хочу ...   Feb 13 2018, 07:58
|- - jcxz   Цитата(petrov @ Feb 13 2018, 14:50) А как...   Feb 13 2018, 13:11
|- - SemperAnte   Цитата(jcxz @ Feb 13 2018, 16:11) А что м...   Feb 13 2018, 13:24
|- - jcxz   Цитата(SemperAnte @ Feb 13 2018, 15:24) Я...   Feb 13 2018, 14:24
|- - SemperAnte   Цитата(jcxz @ Feb 13 2018, 17:24) А где т...   Feb 14 2018, 07:37
- - Rst7   QUOTE Конечно наверное можно обойтись. Но зачем? ...   Feb 5 2018, 12:47
|- - jcxz   Цитата(Rst7 @ Feb 5 2018, 14:47) А зачем ...   Feb 5 2018, 13:01
- - Kluwert   Если канал распространения глубоководный, то (если...   Feb 12 2018, 09:21
- - Rst7   QUOTE Какую дальность обеспечивал модем? На таких...   Feb 13 2018, 11:30
- - SemperAnte   Так вы компанию baltrobotics представляете? Это он...   Feb 13 2018, 11:44
- - Rst7   QUOTE Так вы компанию baltrobotics представляете? ...   Feb 13 2018, 12:09
- - Rst7   QUOTE А как развязка передатчика и приёмника осуще...   Feb 13 2018, 12:59
- - bve   Возьмите и присвойте какому-либо набору частот циф...   Feb 14 2018, 20:55
|- - Acvarif   Цитата(bve @ Feb 14 2018, 23:55) Возьмите...   Feb 15 2018, 19:49
- - Rst7   QUOTE А если вообще по самому минимому то минималь...   Feb 15 2018, 20:02
|- - Acvarif   Цитата(Rst7 @ Feb 15 2018, 23:02) Эээ, Вы...   Feb 16 2018, 20:20
|- - Acvarif   Подскажите пожалуйста где можно найти исходники дл...   Feb 18 2018, 18:29
|- - megajohn   Цитата(Acvarif @ Feb 18 2018, 21:29) Подс...   Feb 19 2018, 07:21
|- - Acvarif   Цитата(megajohn @ Feb 19 2018, 10:21) ну ...   Feb 28 2018, 17:20
|- - Grizzzly   Цитата(Acvarif @ Feb 28 2018, 20:20) Спас...   Feb 28 2018, 18:09
|- - Acvarif   Цитата(Grizzzly @ Feb 28 2018, 21:09) Это...   Mar 8 2018, 15:17
|- - Grizzzly   Цитата(Acvarif @ Mar 8 2018, 18:17) 1. В ...   Mar 8 2018, 17:52
|- - petrov   Цитата(Acvarif @ Mar 8 2018, 18:17) Читая...   Mar 8 2018, 18:38
|- - Acvarif   Цитата(petrov @ Mar 8 2018, 21:38) Статья...   Mar 8 2018, 19:59
|- - petrov   Цитата(Acvarif @ Mar 8 2018, 22:59) как в...   Mar 8 2018, 21:14
|- - Acvarif   Цитата(petrov @ Mar 9 2018, 00:14) Надо и...   Mar 9 2018, 08:02
- - Grizzzly   Я бы, как посоветовал petrov, в вашем случае осуще...   Mar 9 2018, 10:04
|- - Acvarif   Цитата(Grizzzly @ Mar 9 2018, 13:04) Я бы...   Mar 9 2018, 10:13
|- - Grizzzly   Цитата(Acvarif @ Mar 9 2018, 13:13) Где м...   Mar 9 2018, 11:47
|- - Acvarif   Цитата(Grizzzly @ Mar 9 2018, 15:47) Neza...   Mar 9 2018, 18:14
- - Grizzzly   Схема Костаса должна работать с непрерывным потоко...   Mar 9 2018, 18:30
|- - Acvarif   Цитата(Grizzzly @ Mar 9 2018, 22:30) Схем...   Mar 9 2018, 19:01
|- - quato_a   Цитата(Acvarif @ Mar 9 2018, 22:01) Спаси...   Mar 13 2018, 10:11
|- - petrov   Цитата(quato_a @ Mar 13 2018, 13:11) Да, ...   Mar 13 2018, 11:26
|- - quato_a   Цитата(petrov @ Mar 13 2018, 14:26) А есл...   Mar 14 2018, 17:29
|- - petrov   Цитата(quato_a @ Mar 14 2018, 20:29) Дела...   Mar 14 2018, 18:05
|- - quato_a   Цитата(petrov @ Mar 14 2018, 21:05) Делал...   Mar 15 2018, 06:09
|- - petrov   Цитата(quato_a @ Mar 15 2018, 09:09) Это ...   Mar 15 2018, 10:07
|- - quato_a   Цитата(petrov @ Mar 15 2018, 13:07) Всё с...   Mar 16 2018, 12:04
|- - Rst7   QUOTE (petrov @ Mar 15 2018, 12:07) сразу...   Mar 16 2018, 12:37
|- - petrov   Цитата(Rst7 @ Mar 16 2018, 15:37) А можно...   Mar 16 2018, 13:44
|- - Rst7   QUOTE (petrov @ Mar 16 2018, 15:44) preco...   Mar 16 2018, 13:55
|- - petrov   Цитата(Rst7 @ Mar 16 2018, 16:55) А есть ...   Mar 16 2018, 14:34
- - qxov   Банк согласованных с преамбулой для различных вели...   Mar 12 2018, 05:12


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

 


RSS Текстовая версия Сейчас: 15th June 2025 - 16:41
Рейтинг@Mail.ru


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