噪声建模
SNR 与 Eb/n0 的关系
本文用到的符号表示:
:比特能量,单位
:噪声的功率谱密度,单位
:无量纲
:信号功率,单位
:噪声功率,单位
带宽
:信噪比,无量纲
:比特速率,单位 ;:传输每比特所需的时间
:符号速率,单位
:码片速率,单位
:调制星座点个数
:扩频比
:根升余弦成型滤波器的滚降因子
:内插系数
SNR(Signal Noise Radio)表示信噪比, 表示传输
信息所需要的能量与噪声功率谱密度的比值。对于数字信号来说,用时间长度为
的波形表示码元,每个码元的平均功率为 ,因此不能用功率描述数字信号,因此采用码元能量来描述数字信号波形。
其中带宽 ,比特能量与符号能量满足关系 ,则
最终得到,
注:
在常规通信系统中,
是仿真中的采样速率与 符号速率 之比;
在扩频通信系统中,
是仿真中的采样速率与 码片速率 之比;
参考资料
What are
SNR and Eb/No?
GEL7014 -
Week 6e - EBN0 vs SNR
离散傅里叶变换
预备知识
傅里叶级数
傅里叶变换是 以时间
为自变量的时域信号 和 以频率 为自变量的频域函数
之间的变换关系。
对于周期为 的连续时间信号
,其频谱 是离散非周期函数
其中
为离散频谱两谱线间的角频率间隔,
为谐波序号。
对于连续的非周期时间信号 ,其频谱
是一个连续的非周期函数。满足
对于离散非周期信号,其频谱 是连续周期信号
其中 是数字角频率,满足
。
可以看出,时间域的周期造成频谱的离散,时间域的非周期造成频谱的连续。
不过,上面的三种傅里叶变换总有一个域是连续的,这不能利用计算机辅助计算。
周期序列的离散傅里叶级数(DFS)
离散非周期信号的频谱是连续的,将连续的傅里叶变换
点采样后,频域离散,时域周期延拓。因此,离散傅里叶级数对周期序列才存在。
设 是周期为 的一个离散周期序列
由离散时间傅里叶变换(DTFT)可知,该周期序列可以表示为
其中
是离散傅里叶级数的系数,
并且
也是周期序列。因此,时域的离散周期序列的离散傅里叶级数(DFS)在频域也是离散的周期序列。
令 ,离散傅里叶级数可表示为
连续周期信号与离散周期序列的对 ...
m序列
原理
m 序列长度为 ,具有强自相关性和低互相关性,具体体现为对极化之后相关运算的峰均比。
m 序列由线性反馈移位寄存器(Linear Feedback Shift
Register,LFSR)生成,,取决于 LFSR
的阶数和生成种子(寄存器初始状态)。
阶数
例如阶数为 时,本原多项式
为 ,则多项式共有 位,对应 LSFR 有 个寄存器,
阶数为 6 的 LFSR
生成种子
生成种子不能为全 ,否则输出永远是 .
MATLAB 仿真
12345678910111213141516function [pn] = mseq(coe) len = 2 ^ (length(coe) - 1)-1; pn = zeros(1, len); lfsr = randi([0 1], 1, (length(coe) - 1)); % lfsr = [zeros(1, length(coe) - 2) 1]; for i = 1: len pn(i) = lfsr(end); lfsr_front = 0; ...
超外差结构的干扰
图 1 超外差发射机模型图
镜频干扰
首先只考虑发送 路的情况,
其中 为本振频率, 为中频,信号频率 ,在频谱仪上观察射频信号的频谱图,会发现关于 对称的两个频率分量,如下图所示
图 2 镜频干扰与交调干扰的现象
镜像现象的 MATLAB 仿真代码:
123456789101112131415161718close all;clear;clc;freq_baseband = 10e6;freq_carrier = 50e6;fs = freq_carrier * 8;t = 0:1/fs:1e-5;baseband_i = cos(2 * pi * t * freq_baseband);carrier_i = cos(2 * pi * t * freq_carrier);baseband_i = [baseband_i, zeros(1, 10000)]; % Suppress the fence effect(≧∇≦)ノcarrier_i = [carrier_i, zeros(1, 10000)];rf_i = baseband_i .* carr ...
IQ调制
假设要发送的基带码元为 ,其中 是同相分量, 是正交分量。首先对码元做上变频
取其实部得到调制后的信号为
接收端收到的信号为
进行下变频
再通过积分器或者低通滤波器
得到原始码元 .
DDS Compiler
设计原理
一个正弦波 的幅度不是随时间
线性变化的,但是相位 是时间
的线性函数。因此可以考虑用一个线性递增的变量存储相位,再将相位转换成相应的正弦波幅度。
首先存储一个周期的正弦波,然后将相位 用 比特量化,即平均分成 份,以 的频率每始终周期转动 ,则可以得到输出频率为 的信号,
可以看出,输出频率
是参考时钟频率 、相位量化位宽 、和相位增量(频率控制字)
的函数。增加频率控制字,将得到更高频率的信号。
根据奈奎斯特采样定律,为了使波形不失真,需要满足 ,则有
始终小于 ,不妨将其看成是一个分频器,通过修改频率控制字分频参考时钟
,获得所需要的频率。
组成结构
如图,直接式数字频率合成器(Direct Digital Synthesizer,DDS)主要由
相位累加器、波形查找表、数模转换器和低通滤波器
等部分组成。
其中的核心部分是相位累加器,由一个 位累加器和
位寄存器构成,在每个参考时钟上升沿,累加器将频率控制字与累加寄存器的输出相加,结果作为寄存器新的输入。如此反复,
当累加器累加满时, 就会发生溢出,完成一个周期, 即 DDS
合成 ...
侵入式链表
设计思想
常用的链表是非侵入式链表,它的
每个节点包含数据和指向下一个节点的指针(和一个指向前一个节点的指针)
12345struct ListNode { int data; struct ListNode *next; struct ListNode *prev;}ListNode;
在这种链表结构中,data
是固定的,即一个链表中,每个节点存储的数据类型必须相同,这样的链表泛化能力比较差。
注:C++语言可以使用模板实现通用:
12345template <typename T>struct ListNode { struct ListNode *next; // link 区域 T data; // data 区域};
但这只不过是将重写代码的工作交给编译器完成,本质上数据和链表仍然是
耦合 的。
侵入式链表是在其内部直接包含链表节点:
12345678struct ListLink { struct ListLink *next, *prev;}ListLink;struct ListNode { ...
二进制相移键控
基础
BPSK 的时域表达式是
:待发送的二进制信息
:符号周期
:成型滤波器的冲激响应
:载波中心频率
:未必整数倍
MATLAB 仿真
按照上图流程进行 MATLAB 仿真
调制与解调
设定参数:系统时钟频率为 ,根升余弦滤波器滚降系数 ,其它参数可修改
1234567sys_clk = 160e6;Rb = 5e6; % //FIXMERs = Rb; Ts = 1 / Rs;usmp_rate = sys_clk / Rs; % //FIXMEfc = 20e6; % //FIXMEhrc = 'rrc'; % //FIXME
随机生成 num 个二进制数,并对极化处理:
1234num = round(100000 * 10 ^ (EbNo / 10));b = randi([0 1], 1, num);b_sign = 1 - 2 * b;% b_sign = exp(1j * pi * b) % 1: cos(-\pi)=-1 / 0: cos(\pi)= ...
锁相环
时钟生成
晶振可以产生稳定的时钟周期,但频率只能是在兆赫兹的量级。PLL
利用晶振作为参考时钟,可以输出一个更高频率的时钟信号,提供给时序电路使用。
如图所示,锁相环(Phase-Locked
Loop,PLL)由鉴相器(PD)、环路滤波器(LF)和压控振荡器(VCO)三部分组成。实现的是输出
与输入
相等,最终得到稳定的输出频率 .
PLL 的原理是其中的 VCO
的振荡频率随着输入电压变化而变化,它的输出就是整个 PLL
的输出,也就是我们最终拿到的时钟信号。VCO
的输出会反馈回 PLL,由 PD 比较他们两
者的相位。如果晶振相位稍快,就把 VCO
输入电压调低,如果晶振相位稍慢,就把 VCO
输入电压调高,从而得到稳定的高频时钟信号。
数据重定时
PLL
还可以用来做时钟恢复和数据重定时。
如图所示,经过传输线后的信号波形变得不稳定。可以考虑将数据作为参考,输入到
PLL 中,恢复
一个与数据同步的时钟,用该时钟信号和 D 触发器重新对数据采样,得到新的
重定时数据。
参考资料
张肃文.高频电子线路.第 5 版 [M].高等教育出版社,2009.432-458
时序分析
时序约束
建立时间 :在时钟上升沿的 时间前数据必须是稳定的;
保持时间 :时钟上升沿之后的 时间内数据必须是稳定的;
传播延迟 :时钟上升沿到输出端信号稳定所需要的时间;
污染延迟 :时钟上升沿到输出端信号开始变化所需要的时间;
建立时间与保持时间
如左图所示,对 的输入要在
之前稳定,因此要满足关系:
如右图所示,在
接收数据后要保持
时间,这段时间内不能被干扰,因此组合逻辑的输入必须在 之后,因此要满足关系:
时钟偏移与抖动
时钟偏移(Clock
Skew)
时钟信号到达各寄存器的时间不同,将 定义为两个时钟边沿的间隔。
如左图,由于 CLK2 比 CLK1 早了 ,因此输入到来要更提前,需满足关系
如右图,CLK2 比 CLK1 晚了 ,因此前面组合逻辑的输出要再晚一段时间到达
,才能保证不干扰 本来的数据,需满足关系
注:相反的时钟信号关系不会影响上述的时序约束。
时钟抖动(Clock Jitter)
Skew
会改变时钟边沿的顺序,不会改变时钟信号的占空比;时钟抖动会改变时钟信号的占空比。
考虑时钟抖动时,要考虑 “最差的情况”。分析过 ...