电子综合实验报告数字化失真度测量仪的设计有完整程序文档格式.docx
《电子综合实验报告数字化失真度测量仪的设计有完整程序文档格式.docx》由会员分享,可在线阅读,更多相关《电子综合实验报告数字化失真度测量仪的设计有完整程序文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
以做1024点FFT为例,首先需要设置控制信号sink_valid,sink_sop,sink_eop,sink_valid为高1024个时钟,sink_sop第一个时钟为1其他为0,sink_eop第1024个时钟为1其余为0,可以设计一个计数器来实现。
通过改变着sink_valid有效的频率,可以控制出结果的频率,例如1s测试一次,计数器记到50e6(50MHz时钟)清零。
4、FFT求模
复数乘法器(real+j*imag)*(real-j*imag),注意乘法器有延迟。
5、寻找最大模值对应的索引
例如用寄存器count_max记录出现最大值的索引,从复数乘法器输出有效信号开始,后一个数与前一个数比较,若大于前者,将此最大值的索引赋给count_max,经过1024个时钟后比较结束,得到最终的count_max。
6、计算基波功率和总功率
基波功率是窗函数主瓣宽度内所有频率分量的总功率,因此,将最大模值邻近的N点累加作为基波功率,其中,N的值取决于主瓣宽度。
总功率是所有谱线的幅度累加。
7、计算失真度
按照式
(1)计算失真度。
(1)
8、显示失真度
在LCD屏上显示失真度,或者将失真度通过串口上传至PC机显示。
9、数字化失真度测量仪的测试步骤
9.1.设置函数/任意波形发生器,使其输出频率为1MHz,直流电平为0V,峰峰值为1V的正弦波,用数字示波器测量该信号,确认信号的个参数与设定值相同后,将函数/任意波形发生器的输出信号接入HTDB-ADA板的某一个ADC通道;
9.2.连续记录10次数字化失真度测量仪的测量结果,统计测量结果的平均值和方差;
9.3.设置函数/任意波形发生器,使其输出频率为1MHz,直流电平为0V,峰峰值为1V的方波,用数字示波器测量该信号,确认信号的个参数与设定值相同后,将函数/任意波形发生器的输出信号接入HTDB-ADA板的某一个ADC通道;
9.4.连续记录10次数字化失真度测量仪的测量结果,统计测量结果的平均值和方差;
9.5.设置函数/任意波形发生器,使其输出频率为1MHz,直流电平为0V,峰峰值为1V的三角波,用数字示波器测量该信号,确认信号的个参数与设定值相同后,将函数/任意波形发生器的输出信号接入HTDB-ADA板的某一个ADC通道;
9.6.连续记录10次数字化失真度测量仪的测量结果,统计测量结果的平均值和方差;
三、设计要求
设计要求包括基本要求和提高要求两部分,基本要求如下:
1.AD采样频率为50MHz,输入信号频率大于1MHz,输入信号幅度1Vp-p;
2.失真度测量范围0~50%;
3.测量精度优于5%;
4.在LCD上显示失真度。
提高要求如下:
1.能够测量并显示被测信号频率;
2.失真度测量精度优于1%;
3.将失真度测量结果上传至PC机显示;
4.其他设计创意。
四、方案论证
1、失真度的定义与测量方法论证
失真度表征一个信号偏离纯(正弦)信号的程度,是无线电信号的一个重要参数。
失真度的技术术语为总谐波失真(TotalHarmonicDistortion,THD),其定义为信号中全部谐波分量的功率与基波功率之比的平方根值,即
式中,
为失真度,
为信号总功率,
为基波信号的功率,
为第n次谐波的功率。
如果负载与信号频率无关,则信号的失真度也可以定义为全部谐波电压的有效值与基波电压的有效值之比并以百分数表示,即
(2)
为基波电压的有效值,
~
为谐波电压有效值。
由式
(2)可见,失真度仅与信号中所含的基波及各次谐波的电压有效值相关,而与他们之间的相位无关。
失真度是一个无量纲的比例系数,常用百分数或者分贝数表示。
2、FFT法的论证
数字化方法是指首先通过数据采集卡将被测信号量化,再对测量数据处理,最后计算出失真度的测量方法,如图2所示。
根据失真度的计算方法可分为曲线拟合法和FFT法。
在本实验中,我们采用的是FFT法。
图2数字化失真度测试仪的原理框图
采用FFT对量化后的被测信号处理,获得基波和各次谐波的电压,从而计算出失真度。
由于在实际的数据采集很难做到整周期采样,由此导致FFT分析泄漏引入方法误差。
频谱泄漏引入的误差是影响FFT法失真度测量精度的主要因素。
当前,一般通过加窗方法减小频率泄漏。
频谱泄漏与窗函数频谱的两侧旁瓣有关,对于窗函数的选用总的原则是,要从保持最大信息和消除旁瓣的综合效果出发来考虑问题,要使窗函数频谱的主瓣宽度尽可能窄,以获得较陡的过渡带;
使旁瓣衰减尽量大,以提高阻带的衰减。
通常,这两个要求是相互矛盾的,不能同时得到满足。
信号的加窗处理,重要的问题是要根据被测信号的性质和研究目的来选用窗函数。
对于失真度测量仪来说,其输入是窄带信号,应选用旁瓣幅度小的窗函数,如汉宁窗、三角窗等。
在本实验中,我们选择三角窗。
五、功能模块设计
选用三角窗对AD采样信号做加权处理。
wire[22:
0]q_window;
windowingwindowing_inst
(
.clk(clk),//inputclk_sig
.sop(wrfull),//inputsop_sig
.data_in(q),//input[13:
0]data_in_sig
.data_out(q_window)//output[22:
0]data_out_sig
);
做1024点的FFT。
复数乘法器(real+j*imag)*(real-j*imag)。
wiresink_sop,sink_eop,sink_valid,sink_ready;
wiresource_error,source_sop,source_eop,source_valid,source_exp;
wire[23:
0]source_real,source_imag;
FFTFFT_inst
.reset_n(1'
b1),//inputreset_n_sig
.inverse(1'
b0),//inputinverse_sig
.sink_valid(sink_valid),//inputsink_valid_sig
.sink_sop(sink_sop),//inputsink_sop_sig
.sink_eop(sink_eop),//inputsink_eop_sig
.sink_real({q_window[22],q_window}),//input[23:
0]sink_real_sig
.sink_imag(24'
d0),//input[23:
0]sink_imag_sig
.sink_error(2'
b00),//input[1:
0]sink_error_sig
.source_ready(1'
b1),//inputsource_ready_sig
.sink_ready(sink_ready),//outputsink_ready_sig
.source_error(source_error),//output[1:
0]source_error_sig
.source_sop(source_sop),//outputsource_sop_sig
.source_eop(source_eop),//outputsource_eop_sig
.source_valid(source_valid),//outputsource_valid_sig
.source_exp(source_exp),//output[5:
0]source_exp_sig
.source_real(source_real),//output[23:
0]source_real_sig
.source_imag(source_imag)//output[23:
0]source_imag_sig
用寄存器data_max记录出现最大值的索引,从复数乘法器输出有效信号开始,后一个数与前一个数比较,若大于前者,将此最大值的索引赋给data_max,经过1024个时钟后比较结束,得到最终的data_max。
reg[2:
0]con1;
reg[44:
0]data1,data2,data3,data4,data_max;
always@(posedgeclk)
begin
case(con1)
3'
d0:
begindata1=q_out[44:
0];
end
d1:
begindata2=q_out[44:
d2:
begindata_max=q_out[44:
d3:
begindata3=q_out[44:
d4:
begindata4=q_out[44:
endcase
assignpower_funda=(data2>
data3)?
data1+data2+data_max+data3:
data2+data_max+data3+data4;
assignpower_harmo=power-power_funda;
CONVERT1CONVERT1_power_harmo(
.clock(clk),
.dataa(power_funda),
.result(result_power_funda)
);
DIVIDE_ALTFPDIVIDE_ALTFP_inst(
.dataa(result_power_harmo),
.datab(result_power_funda),
.result(result_divide)
SQRT_ATLFPSQRT_ATLFP_inst(
.data(result_divide),
.result(result_sqrt)
MULT_ALTFPMULT_ALTFP_inst(
.dataa(result_sqrt),
.datab(64'
h408f400000000000),//multiply1000
.result(result_mult)
CONVERT2CONVERT2_inst(
.dataa(result_mult),
.result(result_final)
regresult_final_valid;
if(con3>
10'
d582)
begin
result_final_valid<
=1'
b1;
end
else
b0;
end
在LCD屏上显示失真度
output[7:
0]LCD_DATA;
outputLCD_RW,LCD_EN,LCD_RS;
outputLCD_BLON,LCD_ON;
regrst_first;
if(!
ena)
rst_first<
if(con3==10'
d800)
rst_first<
reg[9:
0]result_display;
always@(posedgeresult_final_valid)
rst_first)
result_display<
=result_final[9:
end//justdisplayfirstresult
wire[3:
0]n1,n2,n3;
wire[9:
0]q1,q2,q3;
0]d1,d2,d3,d4;
wire[13:
0]p1,p2,p3,p4;
DIVIDE_TENDIVIDE_TEN_inst(
.denom(4'
d10),
.numer(result_display),
.quotient(q1),
.remain(n1)
DIVIDE_TENDIVIDE_TEN_inst1(
.numer(q1),
.quotient(q2),
.remain(n2)
DIVIDE_TENDIVIDE_TEN_inst2(
.numer(q2),
.quotient(q3),
.remain(n3)
DIVIDE_TEN_14DIVIDE_TEN_inst3(
.numer(frequency),
.quotient(p1),
.remain(d1)
DIVIDE_TEN_14DIVIDE_TEN_inst4(
.numer(p1),
.quotient(p2),
.remain(d2)
DIVIDE_TEN_14DIVIDE_TEN_inst5(
.numer(p2),
.quotient(p3),
.remain(d3)
DIVIDE_TEN_14DIVIDE_TEN_inst6(
.numer(p3),
.quotient(p4),
.remain(d4)
lcd_mainlcd_main_inst
.CLOCK_50(clk),//inputCLOCK_50_sig
.RST_N(ena),//inputRST_N_sig
.LCD_BLON(LCD_BLON),//outputLCD_BLON_sig
.LCD_DATA(LCD_DATA),//output[7:
0]LCD_DATA_sig
.LCD_RW(LCD_RW),//outputLCD_RW_sig
.LCD_EN(LCD_EN),//outputLCD_EN_sig
.LCD_RS(LCD_RS),//outputLCD_RS_sig
.LCD_ON(LCD_ON),//outputLCD_ON_sig
.n3(n3),//input[3:
0]n3_sig
.n2(n2),//input[3:
0]n2_sig
.n1(n1),//input[3:
0]n1_sig
.d4(d4),//input[3:
0]d4_sig
.d3(d3),//input[3:
0]d3_sig
.d2(d2),//input[3:
0]d2_sig
.d1(d1)//input[3:
0]d1_sig
六、仿真与调试
实验仪器:
1.200MHz数字示波器(泰克TBS-1202B-EDU)
2.函数/任意波形发生器(EE1661)
开发板型号:
FPGA开发板(DE2-115)和AD/DA板(THDB-ADA)
七、实测结果
1、输出频率为1MHz,峰峰值为1V的正弦波
次数
1
2
3
4
5
6
7
8
9
10
失真度
5.6%
5.3%
5.5%
5.7%
5.4%
十次测量结果的平均值为5.47%,方差为0.000181%
2、输出频率为1MHz,峰峰值为1V的方波
次数
1
2
3
4
5
6
7
8
9
10
47.7%
48.3%
47.1%
47.5%
47.4%
47.8%
十次测量结果的平均值为47.66%,方差为0.000844%
3、输出频率为0.5MKHz,峰峰值为1V的三角波
12.9%
14.9%
16.6%
13.4%
13.2%
24.8%
十次测量结果的平均值为14.8%,方差为0.12372%
八、思考题
1、本实验采用的方法所测得的失真度与失真度的定义有何区别?
答:
虽然对实测数据进行三角窗加权来压低旁瓣、减少频谱泄露,但由于存在过渡带,不能完全消除频谱泄露的影响,并且会造成主瓣展宽。
实验中将主瓣宽度内的频率分量全部视做基频,而失真度定义里的基频是对应某一特定频率点的。
2、哪些因素会影响数字化失真度测量仪的测量精度?
影响测量精度的因素有:
信号源的稳定性、实验操作环境、AD采样频率、计算谐波功率时的选取基波附近采样点的个数、窗函数的选取等。
减小这些影响的方式:
采用更为稳定的信号源、选择合适的采样频率、在基波附近尽可能多的选点计算谐波功率等。
九、收获与感想
参考文献