` 本帖最后由 eehome 于 2013-1-5 10:10 编辑
(一)DDC数字下变频
1、DDC设计的原理和结构
DDC在软件无线电中有着重要的作用,一般情况下其处理的流程如附件图1所示。数字下变频器(DDC)由数控振荡器(NCO)、混频器、低通滤波器(LPF)和抽取器组成。数控振荡器(NCO)产生两路正交信号 和 ,与AD采样得到的数据混频,将混频后的信号进行抽取,再通过低通滤波器(LPF)滤波,得到所需的信号。
2、本设计采取的DDC结构和方法
对于本设计中,中频信号为窄带30MHz,AD6644的采样时钟为40MHz。通过系数产生模块来代替NCO的功能,产生与采样信号相乘的系数。由于需要10M的正弦和余弦信号,而采样时钟即采样率是40M,所以,系数可简化为余弦系数:1,0,-1,0,1,0,-1,0….正弦系数:0,1,0,-1,0,1,0,-1….根据此规律,系数产生模块只要按照40M数据率正确产生系数即可,本设计中,系数产生模块,通过简单的状态机实现,用两位有符号数表示0,1,-1。
由于本设计中数据处理速度比较低,且只需处理一路信号,因此FPGA乘法器资源满足需要,不需要通过CIC和HB进行抽取,只需通过低通FIR滤波器即可。这样本设计中DDC的框图为附件图2所示。
3、FPGA设计的要点
在FPGA的程序设计过程中,Coefficients generation模块用来产生正弦系数和余弦系数。由于正弦系数和余弦系数的周期性,我们可以通过如附件图3所示四个状态机产生所需的系数:
系数与AD采样数据相乘时采用FPGA自带的乘法器完成,Multiplier的端口设定为A[13:0](对应AD采样数据宽度),B[1:0](对应系数宽度),P[15:0](输出),Data Type 设定为Signed。如附件图4所示。
FIR滤波器的设计通过FPGA的FIR Compiler核实现。滤波器的系数有matlab的fdatool工具根据设计指标生成,其指标为:通带100KHz,阻带2MHz,阻带衰减60dB(如果滤波器的指标不够好,会降低基带的信噪比;但如果设计过于苛刻,滤波器阶数过大则乘法器资源不够用)。FIR的冲击相应如附件图5所示
将fdatool设计好的滤波器系数生成.coe文件导入FIR Compiler即可。导入后FIR Compiler生成后即可使用。导入后FIR Compiler的界面如附件图6所示
图6 FIR Compiler设置界面
各部分设计完毕后,按照图2所示的流程就行模块级联即可完成DDC处理部分。
(二)I、Q数据平均去噪声
对采样数据进行DDC数字下变频后,得到I、Q支路基带信号。通过采样组件30M中频信号,在Chipscope上可以看到相应的采样以及基带信号如图1所示:(蓝色代表AD6644采样数据,浅蓝色代表对应的I支路信号,红色代表Q支路信号) 我们知道,在AD采样的数据中不可避免地存在高斯噪声,因此,需要对I、Q支路进行1024次平均,以降低噪声的影响。 具体在实现的过程中,通过调用Adder Subtracter来分别对I、Q支路基带信号进行1024次累加,累加次通过控制Adder Subtracter的CE端口和SCLR端口实现,即将CE控制的宽度设定为1024时钟宽度,保持一段时间后随即对SCLR置1以清除本次数据方便下次累加。在保持的时间内对输出取高15位输出,同时拉高data_valid已表明有有效数据输出,即完成平均功能。(程序中利用data_clear控制SCLR,data_en控制CE,data_valid标明数据有效。 累加控制截图如图2所示 放大如图3所示
`
|