数字定时误差检测算法系列之 ———时域Gardner算法

1.Gardner 算法简介

        Gardner 算法是一种非数据辅助,实现复杂度低,广泛应用于实际工程中的一种定时误差检测算法。Gardner 算法具有如下特点:

1). 工作于2倍采样率,每个码元需要两个采样点;

2). 适用于BPSK(NRZ)/QPSK 基带或通带系统。在通带系统中,Gardner 算法与载波相位无关

3). 适用于具有40%~100%的额外带宽(相对于奈奎斯特带宽)的信号系统。

2. Gardner 算法的基本原理

        应用于QPSK系统的Gardner算法框图如图1所示。对于BPSK系统,Q路输出为0。图示1中的定时误差检测即采用的Gardner 算法。

图示 1

        假设符号发送间隔为T,接收端采样时间间隔为T/2,则采样率为fs = 2/T。系统奈奎斯特带宽为B。则有 fs = 4B。 记采样时刻为 (0,1),(2,3)...,(r-1,r-1/2), (r,r+1/2),...,则Gardner 算法鉴相误差输出为:

       u(r) = y_I(r-1/2)*[y_I(r)-y_I(r-1)] + y_Q(r-1/2)*[y_Q(r)-y_Q(r-1)]        (1)

其中yi表示图示1中的I路输出,yq表示Q路输出。r表示第r个接收码元,(r-1, r -1/2) 表示一个码元的两个连续采样点。对于BPSK系统,yq输出为0。

实现电路图如图2所示:

图示 2

 2.1 从公式(1)对Gardner算法的直观理解

图示 3

        如图3所示,在码元类型发生变化时(比如从1 到 -1),如果采样时间没有偏差,中间采样点的值y(r-1/2),在时间平均上应该为0。若不为0,说明有采样偏差,其绝对值大小 |y(r-1/2)| 提供了采样偏差的大小,其正负符号 sign(y(r-1/2)) 只能提供一半的采样超前或者滞后的方位信息,无法区分图是3中(b或c)中码元由1到-1转变或者-1到1的转变。而y(r) - y(r-1)的差值提供了另一半的方位信息。两者结合就能区分图示3中(b)和(c)所示的4种情况。在实际工程中,也常用sign(y(r) - y(r-1))替代y(r) - y(r-1)。好处在于节省了乘法运算和规避了噪声对y(r) - y(r-1)的影响。

2.2 从Gardner鉴相器的S曲线理解Gardner算法

        考虑 NRZ 基带系统,假设图示1中的接收信号为:

                          x(t) = \sum a_pg(t-pT),                                                              (2)

其中a_p = \{\pm 1\} 表示NRZ序列,g(t)表示从发送到接收的系统时域冲激响应,T表示单个码元持续时间。

假设采样时刻为\tau(0\leqslant \tau\leqslant T)) 表示基带采样时刻,g(t) 的频域响应为G(f)。Gardner 推导出公式(1)中,鉴相误差u(r)期望的另外一种数学表达式(即Gardner鉴相器的S曲线表达式):

U(\tau) = E\{u(r)\} = -(4/T)sin2\pi\tau/T \int_{0}^{1/T}G(f))*G(1/T-f) sin\pi fT df           (3)   

上式中,Gardner 假设两倍奈奎斯特以外的频带为0。从(3)式可以看出Gardner鉴相器的S曲线与采样时刻\tau(0\leqslant \tau\leqslant T))的关系为正弦曲线。在码元持续时间T固定的情况下,鉴相灵敏度取决于(3)式中的积分式,确切的说,取决于系统响应G(f)。如下图所示:

图示 4

        仅当G(f) 和 G(1/T - f) 有交叠的时候,G(f) * G(1/T - f) 才不为0。根据采样定理,我们知道,当以1/T的采样率进行采样时,奈奎斯特以外的频带必然会发生混叠,即能保证G(f) 和 G(1/T - f) 有交叠。从图中我们可以看出,系统频域响应G(f) 带外频谱越大,G(f) * G(1/T - f)越大,鉴相灵敏度越高。假设,G(f) 为升余弦滚降成型的频谱函数,则不同滚降系数a下的Gardner算法 S 曲线如下图所示:

图示 5

         当a = 0时,系统响应为理想低通响应,此时鉴相器无法提取出定时误差;

         当 a = 0.99时,G(f)带外频谱很大,鉴相器相对灵敏。

         通常,Gardner算法适用于具有40%~100%的额外带宽的系统。

【参考文献】

[1] M.Gardner. A BPSK/QPSK timing-error detector for sampled receivers. IEEE Trans. Comm..

[2] 崔丽娜. 全数字接收机中的位同步技术研究[D]. 重庆大学.

思考题:

(1) 为什么Gardner算法和载波相位无关?

(2) 图示4中G(f) 的交叠的本质是啥?为什么它会影响到Gardner算法S曲线的灵敏度?

(3) Gardner算法 是否适用于更高阶的调制系统?

生成MFSK信号可以通过以下步骤实现: 1. 生成基带信号 MFSK信号的基带信号是一串数字信号,可以使用MATLAB中的randi函数生成指定长度的随机数字序列。 2. 生成调制信号 将基带信号进行MFSK调制,生成频率分别为$f_1, f_2, ..., f_n$的MFSK信号。调制可以使用MATLAB中的cos函数实现,例如: ``` fs = 10000; % 采样频率 T = 1/fs; % 采样时间 t = 0:T:(length(data)-1)*T; % 时域序列 f = [1000, 2000, 3000]; % 频率序列 M = length(f); % 调制阶数 s = zeros(1, length(t)); % 初始化调制信号 for i = 1:M s = s + cos(2*pi*f(i)*t).*(data==i); end ``` 其中,data为基带信号,f为频率序列,M为调制阶数,s为调制信号。 3. 产生载波 MFSK信号需要在载波上进行调制,可以使用MATLAB中的cos函数生成指定频率的正弦波。 ``` fc = 4000; % 载波频率 c = cos(2*pi*fc*t); % 载波信号 ``` 4. 进行调制 将调制信号和载波信号相乘,即可得到MFSK信号。 ``` x = s.*c; % MFSK信号 ``` 至此,MFSK信号的生成过程完成。 关于MFSK信号的解调算法研究和仿真,可以参考以下步骤: 1. 产生接收信号 在仿真中,可以将MFSK信号通过信道传输,模拟接收信号。接收信号可以采用AWGN信道模拟加性高斯白噪声,也可以加入多径衰落等复杂信道效应。 2. 进行解调 对接收信号进行解调,可以采用相干解调或非相干解调。相干解调需要已知调制信号的频率和相位信息,可以使用FFT或Goertzel算法进行频率估计,进而解调信号。非相干解调则不需要知道调制信号的信息,但解调性能较相干解调差。常见的非相干解调算法包括Foster-Seeley检测器、Gardner算法等。 3. 进行解码 对解调后的信号进行解码,可以得到原始的数字信号。解码过程需要根据MFSK调制的规则,将不同频率的信号映射为数字信号。例如,对于2FSK调制,可以将频率分别为$f_1$和$f_2$的信号映射为数字1和2,解码时根据接收信号的频率进行判断即可。 以上是MFSK信号的解调算法研究和仿真的基本步骤,具体实现可以根据具体情况进行调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值