《电子综合实验报告数字化失真度测量仪设计(有完整程序).docx》由会员分享,可在线阅读,更多相关《电子综合实验报告数字化失真度测量仪设计(有完整程序).docx(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、优质文本南 京 理 工 大 学电类综合实验报告 数字化失真度测量仪的设计作 者:学 号:学院(系):电光学院刘光祖老师 指导老师: 实验日期: 20150510-20150515 摘要:3一、实验目的3二、实验内容31、AD采样42、信号加窗43、加窗后的信号做FFT44、FFT求模55、寻找最大模值对应的索引56、计算基波功率和总功率57、计算失真度58、显示失真度59、数字化失真度测量仪的测试步骤5三、设计要求6四、方案论证6五、功能模块设计81、AD采样82、信号加窗83、加窗后的信号做FFT84、FFT求模85、寻找最大模值对应的索引96、计算基波功率和总功率107、计算失真度108、
2、显示失真度11六、仿真与调试14七、实测结果15八、思考题16九、收获与感想16参考文献17优质文本优质文本摘要:失真度表征一个信号偏离纯粹弦信号的程度,是无线电信号的一个重要参数。在无线电计量测试中,许多参数的准确测量都涉及失真度测量问题。例如:在检定电压表、功率表和交流数字式电压表时,为了减小不同检波式仪表的波形误差、提高检定的准确度,就必须减小信号源的失真。基于FPGA开发板DE2-115和AD/DA板THDB-ADA,采用加三角窗的FFT法,在QUARTUS ii 环境下实现了数字化失真度测量仪的设计和仿真工作。对正弦信号、方波信号、三角波信号的实测结果具有较高的精度,并能在LCD上显
3、示失真度。一、实验目的1.熟练掌握一种硬件描述语言,能用硬件描述语言实现较为复杂的时序逻辑电路;2.掌握失真度测量的原理,了解模拟法和数字化方法的优缺点,基于FPGA设计数字化失真度测量仪;3.掌握EDA电路设计软化和电路仿真软件的使用,能够熟练运用FPGA的IP核来设计电路,增强时序电路的稳定性,提高设计效率。二、实验内容本实验基于FPGA开发板DE2-115和AD/DA板THDB-ADA设计数字化失真度测量仪,实现方法上采用加窗的FFT法,其根本信号处理流程如图1所示。图1 数字化失真度测量仪的流程图1、AD采样 DE2-115提供三个50MHz时钟,利用任意一个时钟,通过PLL可以产生任
4、意频率时钟提供应ADC作为采样时钟,AD采样得到14位偏移码,将高位取反即可得到信号的补码形式。2、信号加窗选用汉宁窗或三角窗对AD采样信号做加权处理。3、加窗后的信号做FFTAltera提供FFT的核,该核为串行输入串行输出,设置输入输出为自然数顺序。以做1024点FFT为例,首先需要设置控制信号sink_valid,sink_sop,sink_eop,sink_valid为高1024个时钟,sink_sop第一个时钟为1其他为0,sink_eop第1024个时钟为1其余为0,可以设计一个计数器来实现。通过改变着sink_valid有效的频率,可以控制出结果的频率,例如1s测试一次,计数器记
5、到50e650MHz时钟清零。4、FFT求模复数乘法器(real+j*imag)*(real-j*imag),注意乘法器有延迟。5、寻找最大模值对应的索引例如用存放器count_max记录出现最大值的索引,从复数乘法器输出有效信号开始,后一个数与前一个数比拟,假设大于前者,将此最大值的索引赋给count_max,经过1024个时钟后比拟结束,得到最终的count_max。6、计算基波功率和总功率基波功率是窗函数主瓣宽度内所有频率分量的总功率,因此,将最大模值邻近的N点累加作为基波功率,其中,N的值取决于主瓣宽度。总功率是所有谱线的幅度累加。7、计算失真度按照式1计算失真度。 18、显示失真度在
6、LCD屏上显示失真度,或者将失真度通过串口上传至PC机显示。9、数字化失真度测量仪的测试步骤9.1.设置函数/任意波形发生器,使其输出频率为1MHz,直流电平为0V,峰峰值为1V的正弦波,用数字示波器测量该信号,确认信号的个参数与设定值相同后,将函数/任意波形发生器的输出信号接入HTDB-ADA板的某一个ADC通道;9.2.连续记录10次数字化失真度测量仪的测量结果,统计测量结果的平均值和方差;9.3.设置函数/任意波形发生器,使其输出频率为1MHz,直流电平为0V,峰峰值为1V的方波,用数字示波器测量该信号,确认信号的个参数与设定值相同后,将函数/任意波形发生器的输出信号接入HTDB-ADA
7、板的某一个ADC通道;9.4.连续记录10次数字化失真度测量仪的测量结果,统计测量结果的平均值和方差;9.5.设置函数/任意波形发生器,使其输出频率为1MHz,直流电平为0V,峰峰值为1V的三角波,用数字示波器测量该信号,确认信号的个参数与设定值相同后,将函数/任意波形发生器的输出信号接入HTDB-ADA板的某一个ADC通道;9.6.连续记录10次数字化失真度测量仪的测量结果,统计测量结果的平均值和方差;三、设计要求设计要求包括根本要求和提高要求两局部,根本要求如下:1.AD采样频率为50MHz,输入信号频率大于1MHz,输入信号幅度1Vp-p;2.失真度测量范围050%;3.测量精度优于5%
8、;4.在LCD上显示失真度。提高要求如下:1.能够测量并显示被测信号频率;2.失真度测量精度优于1%;3.将失真度测量结果上传至PC机显示;4.其他设计创意。四、方案论证1、失真度的定义与测量方法论证失真度表征一个信号偏离纯正弦信号的程度,是无线电信号的一个重要参数。失真度的技术术语为总谐波失真Total Harmonic Distortion,THD,其定义为信号中全部谐波分量的功率与基波功率之比的平方根值,即 1式中,为失真度,为信号总功率,为基波信号的功率,为第n次谐波的功率。如果负载与信号频率无关,那么信号的失真度也可以定义为全部谐波电压的有效值与基波电压的有效值之比并以百分数表示,即
9、 2式中,为失真度,为信号总功率,为基波信号的功率,为基波电压的有效值,为谐波电压有效值。由式2可见,失真度仅与信号中所含的基涉及各次谐波的电压有效值相关,而与他们之间的相位无关。失真度是一个无量纲的比例系数,常用百分数或者分贝数表示。2、FFT法的论证数字化方法是指首先通过数据采集卡将被测信号量化,再对测量数据处理,最后计算出失真度的测量方法,如图2所示。根据失真度的计算方法可分为曲线拟合法和FFT法。在本实验中,我们采用的是FFT法。图2 数字化失真度测试仪的原理框图采用FFT对量化后的被测信号处理,获得基波和各次谐波的电压,从而计算出失真度。由于在实际的数据采集很难做到整周期采样,由此导
10、致FFT分析泄漏引入方法误差。频谱泄漏引入的误差是影响FFT法失真度测量精度的主要因素。当前,一般通过加窗方法减小频率泄漏。频谱泄漏与窗函数频谱的两侧旁瓣有关,对于窗函数的选用总的原那么是,要从保持最大信息和消除旁瓣的综合效果出发来考虑问题,要使窗函数频谱的主瓣宽度尽可能窄,以获得较陡的过渡带;使旁瓣衰减尽量大,以提高阻带的衰减。通常,这两个要求是相互矛盾的,不能同时得到满足。信号的加窗处理,重要的问题是要根据被测信号的性质和研究目的来选用窗函数。对于失真度测量仪来说,其输入是窄带信号,应选用旁瓣幅度小的窗函数,如汉宁窗、三角窗等。在本实验中,我们选择三角窗。五、功能模块设计1、AD采样 DE
11、2-115提供三个50MHz时钟,利用任意一个时钟,通过PLL可以产生任意频率时钟提供应ADC作为采样时钟,AD采样得到14位偏移码,将高位取反即可得到信号的补码形式。2、信号加窗选用三角窗对AD采样信号做加权处理。 wire 22:0 q_window; windowing windowing_inst(.clk(clk) ,/ input clk_sig.sop(wrfull) ,/ input sop_sig.data_in(q) ,/ input 13:0 data_in_sig.data_out(q_window) / output 22:0 data_out_sig);3、加窗后的
12、信号做FFT做1024点的FFT。4、FFT求模复数乘法器(real+j*imag)*(real-j*imag)。wire sink_sop, sink_eop, sink_valid, sink_ready;wire source_error, source_sop, source_eop, source_valid, source_exp;wire 23:0 source_real, source_imag; FFT FFT_inst(.clk(clk) ,/ input clk_sig.reset_n(1b1) ,/ input reset_n_sig.inverse(1b0) ,/ i
13、nput inverse_sig.sink_valid(sink_valid) ,/ input sink_valid_sig.sink_sop(sink_sop) ,/ input sink_sop_sig.sink_eop(sink_eop) ,/ input sink_eop_sig.sink_real(q_window22,q_window) ,/ input 23:0 sink_real_sig.sink_imag(24d0) ,/ input 23:0 sink_imag_sig.sink_error(2b00) ,/ input 1:0 sink_error_sig.source
14、_ready(1b1) ,/ input source_ready_sig.sink_ready(sink_ready) ,/ output sink_ready_sig.source_error(source_error) ,/ output 1:0 source_error_sig.source_sop(source_sop) ,/ output source_sop_sig.source_eop(source_eop) ,/ output source_eop_sig.source_valid(source_valid) ,/ output source_valid_sig.source
15、_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_sig5、寻找最大模值对应的索引用存放器data_max记录出现最大值的索引,从复数乘法器输出有效信号开始,后一个数与前一个数比拟,假设大于前者,将此最大值的索引赋给data_max,经过1024个时钟后比拟结束,得到最终的data_max。 reg 2:0 con1;reg 44:0 dat
16、a1,data2,data3,data4,data_max;always (posedge clk)begincase(con1)3d0: begin data1 = q_out44:0; end3d1: begin data2 = q_out44:0; end3d2: begin data_max = q_out44:0; end3d3: begin data3 = q_out44:0; end3d4: begin data4 = q_out44:0; endendcaseend6、计算基波功率和总功率基波功率是窗函数主瓣宽度内所有频率分量的总功率,因此,将最大模值邻近的N点累加作为基波功率
17、,其中,N的值取决于主瓣宽度。总功率是所有谱线的幅度累加。assign power_funda = (data2 data3) ? data1 + data2 +data_max + data3 : data2+data_max+data3 + data4;assign power_harmo = power - power_funda;7、计算失真度CONVERT1CONVERT1_power_harmo (.clock ( clk ),.dataa ( power_funda ),.result ( result_power_funda );DIVIDE_ALTFPDIVIDE_ALTFP
18、_inst (.clock ( clk ),.dataa ( result_power_harmo ),.datab ( result_power_funda ),.result ( result_divide );SQRT_ATLFPSQRT_ATLFP_inst (.clock ( clk ),.data ( result_divide ),.result ( result_sqrt );MULT_ALTFPMULT_ALTFP_inst (.clock ( clk ),.dataa ( result_sqrt ),.datab ( 64h408f400000000000 ), / mul
19、tiply 1000.result ( result_mult );CONVERT2CONVERT2_inst (.clock ( clk ),.dataa ( result_mult ),.result ( result_final ); reg result_final_valid;always (posedge clk)begin if (con3 10d582)begin result_final_valid = 1b1;endelsebegin result_final_valid = 1b0;endend8、显示失真度在LCD屏上显示失真度output7:0LCD_DATA; ou
20、tput LCD_RW,LCD_EN,LCD_RS; output LCD_BLON,LCD_ON;reg rst_first;always (posedge clk)begin if (!ena)begin rst_first = 1b0;endif (con3 = 10d800)begin rst_first = 1b1;endendreg 9:0 result_display;always (posedge result_final_valid)begin if (!rst_first)begin result_display = result_final9:0;endend / jus
21、t display first resultwire 3:0 n1,n2,n3;wire 9:0 q1,q2,q3;wire 3:0 d1,d2,d3,d4;wire 13:0 p1,p2,p3,p4;DIVIDE_TENDIVIDE_TEN_inst (.denom ( 4d10 ),.numer ( result_display),.quotient ( q1 ),.remain ( n1 );DIVIDE_TENDIVIDE_TEN_inst1 (.denom ( 4d10 ),.numer ( q1 ),.quotient ( q2 ),.remain ( n2 );DIVIDE_TE
22、NDIVIDE_TEN_inst2 (.denom ( 4d10 ),.numer ( q2 ),.quotient ( q3 ),.remain ( n3 );DIVIDE_TEN_14DIVIDE_TEN_inst3 (.denom ( 4d10 ),.numer ( frequency ),.quotient ( p1 ),.remain ( d1 );DIVIDE_TEN_14DIVIDE_TEN_inst4 (.denom ( 4d10 ),.numer ( p1 ),.quotient ( p2 ),.remain ( d2 );DIVIDE_TEN_14DIVIDE_TEN_in
23、st5 (.denom ( 4d10 ),.numer ( p2 ),.quotient ( p3 ),.remain ( d3 );DIVIDE_TEN_14DIVIDE_TEN_inst6 (.denom ( 4d10 ),.numer ( p3 ),.quotient ( p4 ),.remain ( d4 );lcd_main lcd_main_inst(.CLOCK_50(clk) ,/ input CLOCK_50_sig.RST_N(ena) ,/ input RST_N_sig.LCD_BLON(LCD_BLON) ,/ output LCD_BLON_sig.LCD_DATA
24、(LCD_DATA) ,/ output 7:0 LCD_DATA_sig.LCD_RW(LCD_RW) ,/ output LCD_RW_sig.LCD_EN(LCD_EN) ,/ output LCD_EN_sig.LCD_RS(LCD_RS) ,/ output LCD_RS_sig.LCD_ON(LCD_ON) ,/ output LCD_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) ,/
25、input 3:0 d3_sig.d2(d2) ,/ input 3:0 d2_sig.d1(d1) / input 3:0 d1_sig);六、仿真与调试实验仪器:1. 200MHz数字示波器泰克TBS-1202B-EDU2. 函数/任意波形发生器EE1661开发板型号:FPGA开发板DE2-115和AD/DA板THDB-ADA七、实测结果1、输出频率为1MHz,峰峰值为1V的正弦波次数12345678910失真度5.6%5.3%5.5%5.7%5.5%5.4%5.5%5.6%5.3%5.3%十次测量结果的平均值为5.47%,方差为0.000181%2、输出频率为1MHz,峰峰值为1V的方波
26、 次数 1 2 3 4 5 6 7 8 9 10失真度47.7%48.3%47.1%47.7%47.5%47.7%47.4%47.7%47.8%47.7% 十次测量结果的平均值为47.66%,方差为0.000844%3、输出频率为0.5MKHz,峰峰值为1V的三角波 次数 1 2 3 4 5 6 7 8 9 10失真度12.9%14.9%16.6%13.4%13.2%12.9%24.8%13.2%13.2%12.9%十次测量结果的平均值为14.8%,方差为0.12372%八、思考题1、本实验采用的方法所测得的失真度与失真度的定义有何区别?答:由于在实际的数据采集很难做到整周期采样,由此导致FFT分析泄漏引入方法误差。频谱泄漏引入的误差是影响FFT法失真度测量精度的主要因素。虽然对实测数据进行三角窗加权来压低旁瓣、减少频谱泄露,但由于存在过渡带,不能完全消除频谱泄露的影响,并且会造成主瓣展宽。实验中将主瓣宽度内的频率分量全部视做基频,而失真度定义里的基频是对应某一特定频率点的。2、哪些因素会影响数字化失真度测量仪的测量精度?答: 影响测量精度的因素有:信号源的稳定性、实验操作环境、AD采样频率、计算谐波功率时的选取基波附近采样点的个数、窗函数的选取等。减小这些影响的方式:采用更为稳定的信号源、选择适宜的采样频率、在基波附近尽可能多的选点计算谐波功率等。九、收获与感想参考文献