数字信号处理循环移位

2025-01-02 版权声明 我要投稿

数字信号处理循环移位(精选3篇)

数字信号处理循环移位 篇1

循环移位器

2012019120008江明杰

一、设计要求

设计一个8位的循环移位器:输入8位二进制数据X[7:0],在控制输入N[2:0]和D的控制下进行向左或向右循环移位,N和D分别表示移位的位数和方向。例如:输入字为abcdefgh,若N=011, D=0,则表示向左移动3位,则输出字为defghabc。

要求:分别用’151和’157两种方式实现,并比较两种实现方式的优劣;完成设计输入和仿真验证。

二、设计分析

根据功能表,当 S1和S0取不同的二进制数时,输出F就选择A和B组成的不同的表达式。解决方案:

利用74LS151多路复用器的特点,S1和S0作为数据选择端。A和B通过不同的门电路组成不同的表达式,再将其结果输入至74LS151的数据输入端。因此,S1和S0就可以选择A与B不同的表达式进行输出。原理图:

三、设计结果

功能仿真:

数字信号处理循环移位 篇2

国家无线电监管部门对空中短波信号的监测属于非协作通信, 在日常的短波常规监测过程中, 经常截收到完全未知参数的数字信号, 因此, 对数字信号进行调制参数估计成为日常监测中的重点工作。通过数字信号处理, 估计调制方式、调制进制、载波频率和波特率等调制参数。其中, 波特率的准确估计对于识别调制方式和信号解调都具有重要意义。

2 循环谱分析

2.1 循环谱定义

对于一个在时间上连续的二阶随机过程{x (t) ;t∈ (-∞, +∞) }, 如果信号的自相关函数具有周期特性, 则可以通过Fourier变换求得信号的循环谱相关函数, 即

式中, α称为循环频率;[-T, T]为感兴趣的时间段。对循环谱相关函数求Fourier变换即可得到循环谱密度函数, 即

当α=0时, 式 (1) 和式 (2) 退化为通常的自相关函数和谱密度函数, 所以循环谱相关函数和循环谱密度函数是自相关函数和功率谱密度函数的延伸。

2.2 循环谱的特点

循环谱相关具有以下几个特点:具有相同功率谱密度 (BPSK, QPSK等) 而调制类型不同的信号具有不同的谱相关函数;平稳噪声和干扰信号没有谱相关特性, 即谱相关函数值恒等于零;谱相关函数包含与调制信号时间参数相关联的相位和频率信息;信号中谱相关参数相互关联, 故可以利用信号中某些已知谱元素参数估计其他参数。

实际上, 各种振幅键控、频移键控和相移键控调制信号, 都具有循环平稳特性, 即循环谱相关 (简称谱相关) 。通过对解析信号进行谱相关处理, 可以使信号的特征更加明显, 再利用谱相关的特点, 可以有效的估计数字信号的调制参数。

2.3 循环谱估计波特率的原理

数字信号的基本调制方式包括:ASK (幅度键控) 、FSK (频移键控) 和PSK (相移键控) 。在短波频段, ASK信号主要以MORSE (OOK) 信号形式出现, 可以直接测量短音频谱的脉宽来估计波特率。下面, 我们以MPSK信号为例, 说明采用循环谱估计信号波特率的原理。

由式 (3) 可以看出, MPSK信号循环谱在载频处的频谱截面, 仅在α=0或±1/Tb三处存在非零值α=0时为第一峰值, α=±1/Tb时为次峰值。因为平稳噪声并不具备循环平稳特性, 其循环谱只在α=0时出现非零值。所以, 我们可以通过查找循环谱截面上循环频率α>0, 且谱线最高的循环频率值来估计M PSK信号的波特率。同理, 对FSK信号, 也得到了同样的结论, 表达式为

3 波特率估计流程

波特率估计流程包括输入信号、变换为解析信号、信号预处理、谱相关分析和估计波特率值五个步骤。如图1所示。

首先要将输入信号变换为解析信号, 这主要是因为解析信号的特征参数更加明显;然后进行信号预处理, 包括滤波和频谱搬移, 去除干扰、噪声的影响。对信号进行谱相关分析, 通过查找次峰值谱线的频率, 估计信号的波特率。

在日常监测过程中, 由于截收的信号量比较大, 通常是先将数字信号进行录音, 然后再集中进行分析。如果对信号声音特别敏感, 可以通过声音来大致区分信号类型, 再掌握一些常见的典型短波数字通信体制, 对常见数字信号的参数做到心中有数, 对于正确盲估计信号的波特率具有一定的指导作用, 可以保证不会出现太大的估计误差。

4 典型短波数字信号波特率估计

对四种典型的短波数字信号进行波特率估计, 其中PACTOR-III为多路信号。

4.1 PSK-31

1998年12月, PSK-31由英国业余无线电爱好者Peter Martinez发明并引入业余无线电数字通信领域。PSK-31的波特率为31.25Baud, 是一种广泛应用于短波业余无线电频段的数字通信体制。这种通信方式可以通过占用极窄的带宽、较低的发射功率, 实现高性能的数据传输, 尤其在复杂的电磁环境中可以保持稳定、可靠的通信。下面采用循环谱估计PSK-31的波特率, 如图2所示。该信号的波特率估计值为31.08Baud, 与真实值31.25相差0.17Baud。

4.2 PACTOR-III

PACTOR-III是目前世界短波频段最具专业水准的数据通信方式之一, 从简单的任意语言的文字对话, 到更先进的任意文件传输, PACTOR-III都可以通过极窄的带宽来满足用户的要求。由于采用了现代控制理论的连接技术, 其可以建立连接的最低信噪比已达-20d B, 这个数字意味着人耳已经完全听不到信号的存在了, 其在军事领域的应用具有重要意义。PACTOR-III的调制参数为:波特率10 0Bau d, 2、6、14、16、18路DBPSK和D QPSK调制信号, 载波间隔120Hz。下面采用循环谱估计波特率, 如图3所示。在α>0的部分, 没有看到明显的次峰值。再看一下PACTOR-III信号频谱图, 如图4所示, 很明显, 它是一个多路信号。

4.3 SITOR

SITOR是水上移动业务中使用的窄带直接打印无线电报系统, 共包括SITOR-A和SITOR-B两种子通信体制, 其中, SITOR-A用于点对点链路, SITOR-B用于广播链路。 SITOR信号的主要参数为:波特率10 0Baud、FSK调制方式、频率间隔170 H z。下面采用循环谱估计其波特率, 如图5所示。波特率估计值为96.28Baud。

4.4 CHU

CHU是加拿大国家授时台, 位于安大略省渥太华市, 隶属于加拿大国家研究委员会。1923年开始广播, 主要覆盖北美洲, 在3330、7850、14670k Hz短波频率提供世界时 (UT1) 和协调世界时 (UTC) 的时间信号服务。它的主要参数为:波特率300Baud, F SK调制方式, 频率间隔2 0 0 H z。还是采用循环谱估计其波特率, 如图6所示, 该CHU信号的波特率估计值为300.25Baud。

4.5 结果分析

通过以上采用循环谱对四种典型的短波数字信号进行波特率估计, 可以看出循环谱无法估计多路信号的波特率, 但是可以比较准确地估计单路信号的波特率。实验结果证明了循环谱估计单路FSK, P S K信号波特率的有效性。另外, 波特率估计都会存在一定的误差, 但只要不影响调制方式识别和解调就可以了。

5 结束语

短波数字信号是目前短波频段内常见的通信形式, 对其监管也成为无线电监管部门的一项重要工作。本文给出了基于循环谱估计短波数字信号波特率的流程, 并结合实验结果, 证明了循环谱估计单路数字信号波特率的有效性。对于多路数字信号的波特率估计, 尚需要进一步研究。

摘要:本文首先介绍了循环谱定义与特点、波特率估计原理, 然后给出了采用循环谱算法估计信号波特率的流程, 结合实验数据, 证明了循环谱算法对估计单路典型短波数字信号波特率的有效性。

关键词:循环谱,波特率,数字信号

参考文献

[1]谢然, 张效义等.一种基于循环谱的MPSK信号符号速率估计方法[J].成都:计算机应用研究, 2011

数字信号处理循环移位 篇3

快速傅里叶变换 (FFT) 在雷达、通信和电子对抗等领域有广泛应用。近年来现场可编程门阵列 (FPGA) 的飞速发展, 与DSP技术相比, 由于其并行信号处理结构, 使得FPGA能够很好地适用于高速信号处理系统。由于Altera等公司研制的FFT IP核, 价钱昂贵, 不适合大规模应用, 在特定领域中, 设计适合于自己领域需要的FFT处理器是较为实际的选择。

本文设计的FFT处理器, 基于FPGA技术, 由于采用移位寄存器流水线结构, 实现了两路数据的同时输入, 相比传统的级联结构, 提高了蝶形运算单元的运算效率, 减小了输出延时, 降低了芯片资源的使用。在OFDM系统的实际应用中[1], 因它可以采用快速傅里叶变换, 能方便快捷地实现调制和解调, 故结合MIMO技术, 设计的FFT处理器结构, 可以很好地应用于2根天线的MIMO-OFDM系统中。

1FFT处理的应用及DIF FFT算法原理

图1给出一个2根天线MIMO-OFDM系统中FFT的使用。快速傅里叶变换算法基本上分为两大类:时域抽取 (DIT) 和频域抽取 (DIF) [2], 这里设计的FFT处理器采用基-2 DIF算法。

对于N点序列x (N) , 其傅里叶变换定义为:

X (k) =n=0Ν-1x (n) WΝnkk=0, 1, 2, , Ν-1, WΝ=e-j2πΝ (1)

x (n) 分成上、下两部分, 得:

X (k) =n=0Ν/2-1x (n) WΝnk+n=0Ν/2-1x (n+Ν/2) WΝnkWΝΝk/2 (2)

分别令k=2r, k=2r+1, r=0, 1, 2, …, N/2-1, 得:

X (2r) =n=0Ν/2-1[x (n) +x (n+Ν2) ]WΝ/2nr (3) X (2r+1) =n=0Ν/2-1[x (n) -x (n+Ν2) ]WΝ/2nrWΝn (4)

这样将两个N点的DFT分成两个N/2点的DFT, 分的方法是将X (k) 按序号k的奇、偶分开。通过这种方式继续分下去, 直到得到两点的DFT。采用DIF方法设计的FFT, 其输入是正序, 输出是按照奇偶分开的倒序。

2移位寄存器流水线结构的FFT

在传统流水线结构的FFT中, 需要将全部数据输入寄存器后, 可开始蝶形运算。在基-2 DIF算法中[3]可以发现, 当前N/2个数据进入寄存器后, 运算便可以开始, 此后进入的第N/2+1个数据与寄存器第一个数据进行蝶形运算, 以此类推。

由于采用频域抽取法, 不需要对输入的数据进行倒序处理, 简化了地址控制, 这样, 可以采用移位寄存器的方式, 依次将前N/2个数据移入移位寄存器, 在N/2+1时刻, 第一个数据移出移位寄存器, 参与运算。相对于传统的RAM读写方式, 采用移位寄存器存储结构综合后的最大工作频率为500 MHz, 远大于RAM方式的166 MHz。

当移位寄存器相继有数据移出时, 在移位寄存器中会出现空白位。此时, 引入第二路数据, 在第一路数据依次移出进行蝶算时, 第二路数据依次补充到移位寄存器的空白位中, 为运算做准备。通过这样一种类似“乒乓操作”的结构, 可以使蝶形运算模块中的数据不间断地输入, 运算效率达到100%。不同于传统的“乒乓操作”结构, 由于使用移位寄存器, 不需要两块RAM, 可以省掉一半的寄存器。图2为256点FFT处理器的第一级结构。

基于上述基本原理, 将这种移位寄存器结构扩展到整个FFT系统的各级, 可以发现各级使用的移位寄存器数量是递减的。现使用一个8点结构来进行说明。

如图3所示, 数据由输入1和输入2进入第一级。通过开关进行选通控制。由于是N=8的运算, 所以各级分别加入4级、2级和1级的移位寄存器。

分两路来说明运算过程:

将K1打到位置①, 第一路数据进入移位寄存器, 待第一路的前4个数据存入4级移位寄存器后, 第一路进入的第5个数据与移位寄存器移出的第1个数据进行蝶形运算。

由于输出结果有上下两路, 第二级是一个四点的DFT, 所以对于上路的输出结果x0 (0) +x0 (4) 类似于第一级, 直接存入下一级寄存器, 为四点运算做准备, 下路的输出, (x0 (0) -x0 (4) ) WΝ0先存入本级2级移位寄存器中, 等到上路的四点运算开始, 第二级的移位寄存器有空白位时, 移入第二级, 为下路的四点运算做准备。所以第一级蝶形运算上路输出前N/4=2个进入下一级寄存器, 下路输出的数据依次存入本级移位寄存器中。

当第一级的输出前N/4=2个数据x0 (0) +x0 (4) 和x0 (1) +x0 (5) 存入第二级移位寄存器时, 运算便可以开始, 这时开关K2打到位置②, 此时第一级上路输出的数据x0 (2) +x0 (6) , 即第一级上路输出的第三个数据与第二级移位寄存器移出的第一个数据, 即x0 (0) +x0 (4) 进行蝶形运算, 输出的第四个数据x0 (3) +x0 (7) 与x0 (1) +x0 (5) 进行蝶算。在这个运算过程中, 第一级的2级移位寄存器移出数据依次移位存入到第二级的移位寄存器产生的空白位中。

两个时钟后, 第一级上路输出的四个数据完成了蝶形运算, K2打到位置①, 在接下来的两个时钟里, 第一级中2级移位寄存器的输出依次与此时第二级中2级移位寄存器的输出数据进行蝶形运算, 即 (x0 (0) -x0 (4) ) WΝ0与 (x0 (2) -x0 (6) ) WΝ2, (x0 (2) -x0 (6) ) WΝ1与 (x0 (3) -x0 (7) ) WΝ3, 完成第一级下路输出的四个数据的蝶形运算。

此时, 第一路在第一级运算后的输出数据, 在第二级完成了全部的蝶形运算。第二级的输出结果同第一级一样, 蝶形运算的上路输出前N/8=1个进入下一级寄存器, 后一个数据直接进入后一级进行碟算, 下路输出的数据存入本级移位寄存器中。

第三级的运算与第二级和第一级类似, 即移入1级寄存器的数据与其后一个数据进行碟算, 同时使前一级寄存器的输出数据进入后一级寄存器的空白位中, 然后开关打到位置②, 对下路输出数据进行碟算。

对于第二路数据, 通过开关控制, 在第二级中, 待第一路第一级下路输出数据进行蝶形运算时, 移入寄存器的空白位, 为运算做准备, 由于前级运算周期是后级运算周期的两倍, 对于第二级碟算模块而言, 数据仍然是不间断输入的。

通过这样两路数据的交替运算和存储, 实现“乒乓操作”, 从而提高了蝶形运算模块的运算效率。图4是256点FFT的具体运算输入和输出时序图。

对于只有一路数据的应用场合, 可以在前级加入, 门控开关和数据缓冲寄存器分成两路数据, 实现一路数据的不间断读入。

由于采用移位寄存器结构, 各级寄存器使用的数量都是固定的, 即为N/2+N/4。其中, N为该级DFT运算的点数, 各级使用的移位寄存器深度逐级递减, 从而大大降低了寄存器的使用数量。

此外, 由于各级结构固定, 所以大点数FFT只是小点数FFT基础上级数的增加, 而且由于移位寄存器的输出相对于RAM而言不需要复杂的地址控制, 所以这种结构的FFT处理器具有非常好的可扩展性。比如需要实现512点的FFT, 只需要在256点的基础上增加一级即可。

3具体模块的设计

3.1 控制与地址产生模块

由于两路数据同时输入, 为了防止发生两路数据间的串扰, 对数据的控制显得极其关键。从上面的算法结构分析中知道, 由于后级的DFT运算点数是前一级的一半, 所以后一级的开关转换周期也是前一级的一半, 基于这种关系, 可以使用一个8位计数器的每一位状态来对各级开关进行控制。最高位控制第一级, 同时由于上一级数据进入下一级需要一个时钟, 所以下一级的开关转换时刻要比上一级延迟一个时钟周期。

对于移位寄存器, 在实现时, 各级的前级移位寄存器深度为N/2-1, 从本质而言, 是使运算开始的时钟上升沿到来时, 数据已经出现在碟算模块输入线上, 而不需要下一个时钟的驱动来移出寄存器, 比如第二级移位寄存器的级数为63。这样, 运算周期正好是2的倍数, 从而方便使用计数器的各位直接对开关进行控制。

同时, 计数器还可以用来产生所需旋转因子的RAM地址。根据各级蝶形运算所需旋转因子的规律, 可以利用计数器的高位补零来产生查找表的地址。比如, 对于第一级, 因为需要在最低位第一次出现1时提供W0N, 第二次出现1时提供W1N, …, 以此类推, 周期为128, 所以可以使用计数器的低七位作为地址。对于第二级, 由于所需要的地址为偶数, 可以由计数器的[6:1]和最低位置0产生。表1为8点时使用三位计数器输出旋转因子的地址情况。

控制和地址产生模块的仿真结果如图5所示, 其中sel代表开关控制, addr代表产生的地址。

3.2 蝶形运算模块

蝶算模块由一个复数加法器, 一个复数减法器和一个旋转因子的复数乘法器构成, 如图6所示。

旋转因子乘法器通常由4次实数乘法和2次加/减法运算实现, 但因为cos和sin的值可以预先存储, 通过下面的算法[4]可以简化复数乘法器:

(1) 存储如下三个系数:C, C+S, C-S

(2) 计算:E=X-YZ=C*E=C* (X-Y)

(3) 用R= (C-S) *Y+Z, I= (C+S) *X-Z, 得到需要的结果。

这种算法使用了3次乘法, 1次加法和2次减法, 但是需要使用存储3个表的ROM资源。

设计中数据的输入为16位复数, 所以将旋转因子cos (2kπ/N) , sin (2kπ/N) 量化成带符号数的16位二进制数后, 存储到ROM中, 由于值域不同, 需要注意C+SC-S的表要比C表多1位精度。

运算后的结果需要除以量化时乘以的倍数16b0111111111111111。具体实现时由于除法运算在FPGA器件需要消耗较多的资源, 设计中采用二进制数移位的方法来实现除法运算。为了防止数据溢出, 设计对输出结果除以2。图7为蝶形运算模块的RTL级结构图。

3.3 倒序输出模块

由频域抽取的基-2算法可知, 运算结果需要倒序输出。可以先将结果存储到RAM中, 然后使用0~255的二进制数倒序产生RAM读取地址, 依次将结果读出, 其中实现一个8位二进制数倒序的算法如下:

(1) 将8位数字的相邻两位交换位置;

(2) 将相邻的两位看作1组, 相邻两组交换位置;

(3) 将相邻的4位看作1组, 相邻两组交换位置。

经过这样的交换位置后, 输出即为原来8位二进制数的倒序。

举例对于8位二进制数10110110来说, 第一次交换位置的结果是01111001, 第二次交换位置的结果是11010110, 最后交换位置的结果是01101101。可见正好是原来数字的倒序。

另外, 由于设计的是两路数据同时写入, 一路数据读出, 所以读取的频率是写入频率的2倍, 使用PLL实现原始时钟的二倍频, 用来读取RAM。倒序模块仿真结果如图8所示。

最终生成的FFT处理器模块图如图9所示。

4仿真结果

各级间数据时序情况如图10所示, 设计的FFT处理器仿真结果如图11所示。采用一路阶梯递增信号和另一路XXXX信号进行仿真, 通过与Matlab计算结果进行对比, 结果基本一致, 可以满足系统要求。系统总的延时由延时最大的第一级决定, 为第一级运算的延时加上倒序输出的延时, 总共是 (256+128) ×clk, 相对于一般流水线结构 (256×读入周期+7×128×蝶算周期+128×读入周期) , 系统延时大为减少。

通过仿真可知, 系统最大频率由蝶形运算模块的最大工作频率决定。使用Quartus Ⅱ软件时序仿真后, 得到处理器的工作频率为72 MHz。

5结语

通过采用移位寄存器流水线结构, 可以有效地提高FFT处理器中蝶形运算单元的效率, 减少寄存器的使用数量, 并且简化了地址控制, 提高处理器的工作频率, 具有良好的可扩展性, 同时可以实现两路数据的同时输入, 从而增大了一倍的数据吞吐量。 对于工作频率要求较高, 数据吞吐量较大, 尤其对于需要两路数据输入的场合, 比如两天线的MIMO-OFDM系统, 具有很大的实用价值。

参考文献

[1]崔新瑞, 张捷, 张晶, 等.OFDM系统原理及仿真实现[J].信息安全与通信保密, 2007 (12) :68-69.

[2]丁玉美, 高西全.数字信号处理[M].西安:西安电子科技大学出版社, 2001.

[3]戴明桢.数字信号处理的硬件实现[M].北京:航空工业出版社, 1998.

[4]Uwe Meyer-Baese.数字信号处理的FPGA实现[M].刘凌, 译.北京:清华大学出版社, 2002.

[5]Samir Palnitkar.Verilog HDL数字设计与综合[M].夏宇闻, 胡燕祥, 刁岚松, 译.北京:电子工业出版社, 2004.

[6]尹长川, 罗涛, 乐光新.多载波宽带无线通信技术[M].北京:北京邮电大学出版社, 2004.

[7]李小进, 初建民, 赖宗声, 等.高速基2FFT处理器的结构设计与FPGA实现[J].电路与系统学报, 2005, 10 (5) :49-53.

[8]余景华, 郭亨群.OFDM系统中64点FFT的FPGA设计[J].通信技术, 2008 (12) :109-111.

[9]王诚, 吴继华.Altera FPGA/CPLD设计 (基础篇) [M].北京:人民邮电出版社, 2005.

上一篇:土方工程承揽合同书下一篇:辽宁省环境保护及相关产业基本情况调查报告