С Новым годом! Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.99/78: Рейтинг темы: голосов - 78, средняя оценка - 4.99
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 11
1

Модель IQ модулятора/демодулятора

06.08.2013, 11:46. Показов 14601. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Случилась у меня такая проблема - пытаюсь смоделировать работу квадратурного модулятора, но сталкивают то ли с непониманием его работы то ли с неверно составленной программой.
Пример:
Требуется вести передачу сигналом на частоте 500 МГц, модуляция BPSK, обработка сигнала ведется квадратурными модулятором/демодулятором, входы/выходы в виде I и Q.

В примере дается тестовая комбинация из 4х кусков сигнала (0,π/2,π,3π/2);
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
clear;clc;close;
carrier = 500e6;
Fs = carrier*100;
Ts = 1/Fs;
t = 0:Ts:1/carrier;
 
signal1 = sin (2*pi*carrier*t + 0);
signal2 = sin (2*pi*carrier*t + pi/2);
signal3 = sin (2*pi*carrier*t + pi);
signal4 = sin (2*pi*carrier*t + 3*pi/2);
 
wholeSignal = cat(2,signal1,signal2,signal3,signal4);
 
analyticSignal = hilbert(wholeSignal,2^nextpow2(length(wholeSignal)));
plot (real(analyticSignal)); hold on; plot(imag(analyticSignal),'r'); ylim([-3 3]);
Однако, как видите I и Q примерно одинаковы по амплитуде, хотя согласно представлению I*cos + Q*sin их амплитуда должна меняться значительно (пример π/2 - I = 1, Q = 0 и т.д.).
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.08.2013, 11:46
Ответы с готовыми решениями:

Оптимальный алгоритм амплитудного демодулятора
Доброго времени суток. Возникла задача - детектирование АМ сигнала с синусоидальной несущей в 4...

Реализация демодулятора АМ-сигналов с использованием коррелятора
Здравствуйте. Кратко попытаюсь объяснить, что уже имеется. - Есть генератор чисел (0 или 1), он...

Усиление сигнала от FM-модулятора
в общем имеется вот такой простенький фм модулятор - удалено - . питаю я его от блока для...

Расчет амплитудного модулятора
Разработать схему амплитудного модулятора . Рассчитать режим транзистора в модулятор , с...

14
Эксперт по электронике
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,489
06.08.2013, 11:55 2
Цитата Сообщение от Genshiken Посмотреть сообщение
t = 0:Ts:1/carrier;
Может быть маловато одного периода?...
0
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 11
06.08.2013, 12:23  [ТС] 3
Да нет, пробовал подставлять 100 - все осталось как есть.

Добавлено через 23 минуты
(пример π/2 - I = 1, Q = 0 и т.д.)
Ошибся, π/2 - I = 0, Q = 1
0
5243 / 3571 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
06.08.2013, 12:54 4
Вот мой вариант
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
clear;clc;close;
 
fc = 500e6;
Fs = fc*100;
Ts = 1/Fs;
t = 0:Ts:1/fc; % масив времени
 
d = [1 0]; % данные
fprintf('Отправленные данные: %d %d\n', d)
I = d(1); Q = d(2); % квадратуры
% сигнал
S = I*sin(2*pi*fc*t) + Q*cos(2*pi*fc*t);
 
% прием
ZI = S.*sin(2*pi*fc*t);
ZQ = S.*cos(2*pi*fc*t);
Ir = 2*abs( mean( ZI ) );
Qr = 2*abs( mean( ZQ ) );
% принятые данные
Dr = [Ir, Qr];
fprintf('Полученные данные: %f %f\n', Dr)
Er = abs(d-Dr);
fprintf('Ошибка: %e %e\n', Er)
Результат:
Matlab M
1
2
3
Отправленные данные: 1 0
Полученные данные: 0.990099 0.000000
Ошибка: 9.900990e-003 4.186722e-017
Добавлено через 4 минуты
mean - это усреднение, которое тут вместо интегратора. А двоечка - это подгониан ^__^" Иначе квадратуры получаются 0.5 .
1
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 11
06.08.2013, 14:42  [ТС] 5
Так отрицательные компоненты передать не получается (π,3π/2). Еще непонятно - если сигнал изменяется - придется ставить интегратор или как-то по-другому можно обойтись? Потому что mean все срежет в одно значение.
0
5243 / 3571 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
06.08.2013, 14:48 6
Genshiken, если допустить, что данные меняются в диапазоне [-1 1], то отрицательные компоненты будут появляться автоматом.
А вообще я квадратурную модуляцию перепутал с манипуляцией QPSK4
0
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 11
06.08.2013, 14:57  [ТС] 7
Genshiken, если допустить, что данные меняются в диапазоне [-1 1], то отрицательные компоненты будут появляться автоматом.
Да, но тогда расстояние между точками созвездия будет π/2, а не π, что серьезно скажется на помехоустойчивости.
Тем более, исходя из диапазона фаз сигнала 0-1, если передавать π , то Q = 0, т.к. вектор идет вдоль реальной оси и I = 0 (крайнее левое положение вектора из возможных) - получается отсутствие сигнала
0
5243 / 3571 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
06.08.2013, 15:14 8
Какие созвездия, если ты собираешься передавать непрерывные данные?
Расстояние в пи будет только в случае двоичной фазовой манипуляции (BPSK) в случае 4х точечного созвездия расстояние будет:
sqrt( (п/2)^2 + (п/2)^2 ) = п/sqrt(2) ~ п/1.41

Цитата Сообщение от Genshiken Посмотреть сообщение
получается отсутствие сигнала
Разве отсутствие сигнала это не сигнал?
можно всю систему повернуть на п/4
0
5243 / 3571 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
06.08.2013, 15:26 9
Вот, набросал
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
clear, clc
 
fc = 500e6;
Fs = fc*100;
Ts = 1/Fs;
t = 0:Ts:1/fc; % масив времени
 
I = t*fc-0.5; 
Q = sin(pi*fc*t); % квадратуры
% сигнал
S = I.*sin(2*pi*fc*t) + Q.*cos(2*pi*fc*t);
subplot(221)
plot(t,I)
title('Отправленная I')
subplot(222)
plot(t,Q)
title('Отправленная Q')
 
 
% прием
Ir = S.*sin(2*pi*fc*t);
Qr = S.*cos(2*pi*fc*t);
 
subplot(223)
plot(t,Ir)
title('Принятая I')
subplot(224)
plot(t,Qr)
title('Принятая Q')
В приемнике просто идет перемножения композитного сигнала с опорным колебанием?
Миниатюры
Модель IQ модулятора/демодулятора  
1
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 11
07.08.2013, 15:32  [ТС] 10
Какие созвездия, если ты собираешься передавать непрерывные данные?
Расстояние в пи будет только в случае двоичной фазовой манипуляции (BPSK)
Пример:
Требуется вести передачу сигналом на частоте 500 МГц, модуляция BPSK,

Разве отсутствие сигнала это не сигнал?
Ну вобщем нет, это его отсутствие) Иначе разделительные паузы в передаче тоже за сигнал сойдут)

Вот, набросал
Большое спасибо. Я вот подставил дискретные значения и собственно получил то же, с чего и начинал - на входе дискретные значения - на выходе гармонические колебания.
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
clear, clc
 
fc = 500e6;
Fs = fc*100;
Ts = 1/Fs;
t = 0:Ts:1/fc; % масив времени
 
I = zeros(1,length(t))-1; 
Q =  zeros(1,length(t))-1; % квадратуры
% сигнал
S = I.*sin(2*pi*fc*t) + Q.*cos(2*pi*fc*t);
subplot(221)
stem(t,I)
title('Отправленная I')
subplot(222)
stem(t,Q)
title('Отправленная Q')
 
 
% прием
Ir = S.*sin(2*pi*fc*t);
Qr = S.*cos(2*pi*fc*t);
 
subplot(223)
stem(t,Ir)
title('Принятая I')
subplot(224)
stem(t,Qr)
title('Принятая Q')
0
5243 / 3571 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
07.08.2013, 16:40 11
я еще пробовал ввести сдвиг на п/4 в строках 11 и 21,22, но толкового ничего не вышло
Кстать, тебе не будет сложно привести блок-схему приемника? меня очень интересует, что идет после смесителей.
0
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 11
08.08.2013, 10:29  [ТС] 12
Вот, как пример, квадратурный демодулятор ADRF6850. Входы - дифференциальные RFI.
Миниатюры
Модель IQ модулятора/демодулятора  
Вложения
Тип файла: pdf ADRF6850 Квадратурный демодулятор.pdf (1.13 Мб, 78 просмотров)
0
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 11
08.08.2013, 11:07  [ТС] 13
Все, похоже разобрался . Твой метод здесь Модель IQ модулятора/демодулятора был почти полностью правильный, за исключением того, что ты взял mean по модулю, за счет чего отрицательные значения и не передавались. Большое спасибо за помощь, Зосима . Теперь все стало понятнее.
0
5243 / 3571 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
08.08.2013, 15:53 14
Genshiken, я действовал по наитию - что-то мне стукнуло, что нужно смесь сигнала и опорного колебания нужно интегрировать
На здоровьечко! Самому было любопытно разобраться
0
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 11
08.08.2013, 17:20  [ТС] 15
С интеграцией как раз было все в порядке - модуль был лишним
0
08.08.2013, 17:20
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.08.2013, 17:20
Помогаю со студенческими работами здесь

График АМ модулятора Chart
s(t)=A(t) cos〖2πft〗, где A(t)=∑_(k=-∞)〖d_k U_(T_s ) (t-kT_s)〗; (1.2)...

Расчет балансного модулятора
Добрый вечер! помогите пожалуйста реализовать схему балансного модулятора в microcap! у меня эта...

Расчет схемы Амплитудного модулятора?
Есть схема Амплитудного модулятора на Micro Cap В ней Несущая имеет параметры A=0.1 и f=250K И...

Нужна схема фазо-импульсного модулятора на ОУ
Нужна схема ФАЗО-ИМПУЛЬСНОГО модулятора на операционном усилителе. (если уже есть схема дайте...

Спектр сигнала на выходе универсального квадратурного модулятора
Формулы, описывающие действия квадратурного модулятора: На входах модулятора имеем sin(...

Моделирование частотного модулятора (модулирующий сигнал - последовательность прямоугольных импульсов)
Помогите сделать сам не могу додуматься


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов. . . .
С чего начать программировать микроконтроллер­­ы
raxper 06.01.2025
Введение в мир микроконтроллеров Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­­­­­­­­­­­­­­­­­­­­­­­­­х­р­о­н­­н­­­ы­­й счётчик с управляющим сигналом зад
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru