1.DSB调制过程

​ DSB信号是一种双边带调幅调制信号,又叫双边带调幅,通过改变载波的振幅来实现基带数据的传输。

其函数表达式如下:

\[s(t) = m(t)*cos(2\pi ft + \varphi)
\]

其中:

m(t):表示基带信号。

\(cos(2\pi ft + \varphi )\):表示载波信号。

2.DSB的数字正交解调

​ 以下介绍的正交解调法将消除频差或者相差带来的误差,增加其解码正确率。

通过正交的方式即可解调出基带信号,其数学推导如下:

​ 假设基带信号为\(m(t)\),调制的载波频率为\(f_1\),解调的载波频率为\(f_2\),相位为\(\varphi\),LPF为低通滤波器,则:

I路:

\[I(t) = LPF(s(t)*cos(2\pi f_2t + \varphi)) = LPF(m(t)*cos(2\pi f_1t) *cos(2\pi f_2t + \varphi))
\]

根据三角函数公式:

\[\begin{split}
I(t) &= LPF(m(t)*cos(2\pi f_1t) *cos(2\pi f_2t + \varphi))\\
&= LPF(\frac{1}{2}m(t)*[cos(2\pi (f_1 + f_2)t+\varphi) + cos(2\pi (f_1 - f_2 )+ \varphi)]) \\
&= \frac{1}{2}m(t)*cos(2\pi (f_1 - f_2 )+ \varphi)) \\
\end{split}
\]

同理:Q路:

\[\begin{split}
Q(t) &= LPF(m(t)*cos(2\pi f_1t) *sin(2\pi f_2t + \varphi))\\
&= LPF(\frac{1}{2}m(t)*[cos(2\pi (f_1 + f_2)t+\varphi) - sin(2\pi (f_1 - f_2 )+ \varphi)]) \\
&= -\frac{1}{2}m(t)*sin(2\pi (f_1 - f_2 )+ \varphi)) \\
\end{split}
\]

对于解调系统来说:当\(f_1=f_2,\varphi=0\)时,

\[\begin{split}
& I(t) = \frac{1}{2}m(t) \\
& Q(t) = 0 \\
\end{split}
\]

​ 这时,就可以完美还原基带信号,但是此方法严格要求发射载波与接收载波频率相同,而且相位保持一致,相位误差与载波频率误差将严格限制解调系统的精确度,所以一下将使用其他解调方法来规避,相位差与频率差带来的解调误差。

​ 为了计算方便假设:

\[K=2\pi (f_1 - f_2 )+ \varphi
\]

则:

\[\begin{split}
& I(t) = \frac{1}{2}m(t)*cos(K) \\
& Q(t) = -\frac{1}{2}m(t)*sin(K)
\end{split}
\]

根据三角函数公式:

\[K = arctan(\frac{-Q(t)}{I(t)})
\]

注:\(arctan\)函数有作用域\((-\pi/2\space\space\space\space\pi/2)\)要求,所以将使用其他函数替代。

\[\begin{split}
& I(t) = \frac{1}{2}m(t)*cos(arctan(\frac{-Q(t)}{I(t)})) \\
& Q(t) = -\frac{1}{2}m(t)*sin(arctan(\frac{-Q(t)}{I(t)}))
\end{split}
\]

以下将是重要的地方:

向量旋转,将一个向量\((cos(\theta_1),sin(\theta_2))\),逆时针旋转\(\theta_2\),旋转后的坐标为\((cos(\theta_1-\theta_2),sin(\theta_2-\theta_2))\)。将I和Q看着一个向量,将其逆时针旋转\(arctan(\frac{-Q(t)}{I(t)})\),那么:

\[\begin{split}
& I'(t) = \frac{1}{2}m(t)*cos(arctan(\frac{-Q(t)}{I(t)}) - arctan(\frac{-Q(t)}{I(t)})) =\frac{1}{2}m(t)\\
& Q'(t) = -\frac{1}{2}m(t)*sin(arctan(\frac{-Q(t)}{I(t)}) - arctan(\frac{-Q(t)}{I(t)})) = 0
\end{split}
\]

这样就消除了相位差和频率差带来的误差,\(I'(t)\)就是我们解调的结果。其结果与频率差与相位差无关。

3.MATLAB解调

以下只展示解调过程的仿真,不展示下变频,滤波等操作:

close all;
%% 系数
figure
time = 5; fs = 100E6; % 采样率 (Hz)
len = 1E3; % 信号序列点数
f_base = 3E6;%基带信号频率
f_carr_1 = 40E6;%调制载波频率
f_carr_2 = 42E6;%解调载波频率
fi = 0.1;%解调载波初始相位
t = 0:1/fs:(len-1)/fs; % 时间向量
mt = cos(2*pi*f_base*t);
I = mt.*cos(2*pi*(f_carr_1-f_carr_2)*t-fi)/2;
Q = -mt.*sin(2*pi*(f_carr_1-f_carr_2)*t-fi)/2; %% 向量旋转
theta = atan2(Q./(-mt),I./(mt));
It = I.*cos(theta) - Q.*sin(theta);
Qt = Q.*cos(theta) + I.*sin(theta); subplot(time,1,1);
plot(mt);
title('基带信号'); subplot(time,1,2);
plot(I);
title('I路'); subplot(time,1,3);
plot(Q);
title('Q路'); subplot(time,1,4);
plot(It);
title('解调信号'); subplot(time,1,5);
plot(theta);
title('相位差');

结果:

5.FPGA解调

有空补齐FPGA解调部分代码。

DSB的数字正交解调的更多相关文章

  1. AGC电路以及AD8347正交解调芯片

    1.AGC电路的工作原理 1.1AGC电路的用途 随着电磁环境的日益恶化, 不同频段电磁信号之间的相互串扰, 以及可能出现的人为干扰, 将会导致接收机输入端口的信号动态范围较大, 一旦出现电路饱和或是 ...

  2. NCO

    NCO 摘自百度百科 (数字振荡器) 锁定 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . 数字控制振荡器(NCO,numerically controlled oscillator)是 ...

  3. 电赛总结(四)——波形发生芯片总结之AD9854

    一.特性参数 ·300M内部时钟频率 ·可进行频移键控(FSK),二元相移键控(BPSK),相移键控(PSK),脉冲调频(CHIRP),振幅调制(AM)操作 ·正交的双通道12位D/A转换器 ·超高速 ...

  4. IQ调制、整形滤波器与星座映射

    http://www.cnblogs.com/touchblue/archive/2013/01/15/2861952.html 现代通信中.IQ调制基本上属于是标准配置,由于利用IQ调制能够做出全部 ...

  5. IQ调制原理

    现代通信中,IQ调制基本上属于是标准配置,因为利用IQ调制可以做出所有的调制方式. 但是IQ调制到底是怎么工作的,为什么需要星座映射,成型滤波又是用来干嘛的.这个呢,讲通信原理的时候倒是都会泛泛的提到 ...

  6. SIMULINK的模块库介绍

    SIMILINK模块库按功能进行分为以下8类子库:Continuous(连续模块)Discrete(离散模块)Function&Tables(函数和平台模块)Math(数学模块)Nonline ...

  7. DPSK通信系统的FPGA实现

    之前接触过一些FPGA的相关知识,借着实现一个简单的DPSK系统,顺便复习和记录一下Verilog HDL的简单使用方法.准备直接用一张图展现DPSK的调制解调原理,再按照模块介绍Verilog的实现 ...

  8. DVB-C系统中QAM调制与解调仿真

    本文简单记录一下自己学习<通信原理>的时候调试的一个仿真DVB-C(Cable,数字有线电视)系统中QAM调制和解调的程序.自己一直是研究"信源"方面的东西,所以对&q ...

  9. 大毕设-matlab-AM调制解调

    博主大毕设关于数字下变频(DDC)的CUDA实现,预计工期比较长,所以留下一些文字记录. 主要分为两部分工作,Matlab仿真部分和CUDA实现. 由于很久没有仿真了,所以先用一个简单的AM调制仿真练 ...

  10. 全数字锁相环(DPLL)的原理简介以及verilog设计代码

    随着数字电路技术的发展,数字锁相环在调制解调.频率合成.FM 立体声解码.彩色副载波同步.图象处理等各个方面得到了广泛的应用.数字锁相环不仅吸收了数字电路可靠性高.体积小.价格低等优点,还解决了模拟锁 ...

随机推荐

  1. Oracle数据库安装配置详细教程汇总(含11g、12c、18c、19c、21c)

    不论你是数据库小白,还是久经沙场的技术专家,你接触和运维Oracle数据库的第一步可能都是安装配置.并且随着软硬件的升级.替换以及业务场景的变化,数据库安装也将是你常常会进行的操作之一. 这里先为大家 ...

  2. 墨天轮访谈 | SelectDB 衣国垒:Apache Doris(incubating)1.0版本特性解析与未来规划

    分享嘉宾:衣国垒 Apache Doris Committer.SelectDB 联合创始人&CTO 整理:墨天轮社区 导读 大家好,我是来自Apache Doris社区的衣国垒,也是Sele ...

  3. js有效括号匹配

    // 定义一个括号映射 const bracketMap = [ { left: '[', right: ']' }, { left: '<', right: '>' }, { left: ...

  4. 忽略某个已经托管给git的文件,防止二次提交

    # 执行命令将文件加入不提交队列 git update-index --assume-unchanged 你的文件路径 # 执行命令将文件取消加入不提交队列 git update-index --no ...

  5. js中判断数据类型的方法有哪些

    判断数据类型可以使用 typeof 但是typeof 判断数组和函数时返回的都是Object 不能具体判断,这时使用 instanceof 可以判断对象是否是另一个函数创造的 : 用法: typeof ...

  6. centos下搭建php开发环境(lamp)

    由于个人非常喜欢爱linux系开发php项目. 因为某些原因,经常需要手动搭建环境 经常在网上找到的教程经常不太一样 虽然最终都能完成搭建,但是总是觉得不太爽 还不如自己写一篇,需要的时候肯定能找到 ...

  7. vue中事件总线bus的用法

    ./util/Bus.js import Bus from 'vue'; let install = function (Vue) { // 设置eventBus Vue.prototype.bus ...

  8. Power BI使用技巧

    一.筛选器相关 1.筛选器的可选择范围不正确 在Power BI中,维度表和事实表之间的数据建模非常重要,我们在进行关系的建立的时候,PBI Desktop会根据我们的数据情况自动选择两个表之间的基数 ...

  9. 技术前沿:AI大模型在自动化测试中的应用实例

    哈喽,大家好,我是六哥!今天咱们来聊一聊如何用AI大模型(比如GPT-3.5)来做自动化测试,别看这东西听起来高大上,但也没那么神,跟着我咱们一步一步来,保证你也能轻松搞定,学会了保准让你在工作中老省 ...

  10. 一款.NET开源的屏幕实时翻译工具

    前言 今天大姚给大家推荐一款.NET开源的屏幕实时翻译工具:Translumo. 工具介绍 Translumo是一个.NET开源的高级屏幕翻译工具,能够实时检测和翻译选定区域内的文本(如字幕).Tra ...