电子综合实验报告数字化失真度测量仪的设计(有完整程序)_第1页
电子综合实验报告数字化失真度测量仪的设计(有完整程序)_第2页
电子综合实验报告数字化失真度测量仪的设计(有完整程序)_第3页
电子综合实验报告数字化失真度测量仪的设计(有完整程序)_第4页
电子综合实验报告数字化失真度测量仪的设计(有完整程序)_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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参考文献17217摘要:失真度表征一个信号偏离纯正弦信号的程度,是无线电信号的一个重要参数。在无线电计量测试中,许多参数的准确测量都涉及失真度测量问题。例如:在检定电压表、功率表和交流数字式电压表时,为了减小不同检波式仪表的波形误差、提高检定的准确度,就必须减小信号源的失真。基于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、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、显示

6、失真度在LCD屏上显示失真度,或者将失真度通过串口上传至PC机显示。9、数字化失真度测量仪的测试步骤9.1.设置函数/任意波形发生器,使其输出频率为1MHz,直流电平为0V,峰峰值为1V的正弦波,用数字示波器测量该信号,确认信号的个参数与设定值相同后,将函数/任意波形发生器的输出信号接入HTDB-ADA板的某一个ADC通道;9.2.连续记录10次数字化失真度测量仪的测量结果,统计测量结果的平均值和方差;9.3.设置函数/任意波形发生器,使其输出频率为1MHz,直流电平为0V,峰峰值为1V的方波,用数字示波器测量该信号,确认信号的个参数与设定值相同后,将函数/任意波形发生器的输出信号接入HTDB

7、-ADA板的某一个ADC通道;9.4.连续记录10次数字化失真度测量仪的测量结果,统计测量结果的平均值和方差;9.5.设置函数/任意波形发生器,使其输出频率为1MHz,直流电平为0V,峰峰值为1V的三角波,用数字示波器测量该信号,确认信号的个参数与设定值相同后,将函数/任意波形发生器的输出信号接入HTDB-ADA板的某一个ADC通道;9.6.连续记录10次数字化失真度测量仪的测量结果,统计测量结果的平均值和方差;三、设计要求设计要求包括基本要求和提高要求两部分,基本要求如下:1.AD采样频率为50MHz,输入信号频率大于1MHz,输入信号幅度1Vp-p;2.失真度测量范围050%;3.测量精度

8、优于5%;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法失真度测量精度的主要因素。当前,一般通过加窗方法减小频率泄漏。频谱泄漏与窗函数频谱的两侧旁瓣有关,对于窗函数的选用总的原则是,要从保持最大信息和消除旁瓣的综合效果出发来考虑问题,要使窗函数频谱的主瓣宽度尽可能窄,以获得较陡的过渡带;使旁瓣衰减尽量大,以提高阻带的衰减。通常,这两个要求是相互矛盾的,不能同时得到满足。信号的加窗处理,重要的问题是要根据被测信号的性质和研究目的来选用窗函数。对于失真度测量仪来说,其输入是窄带信号,应选用旁瓣幅度小的窗函数,如汉宁窗、三角窗等。在本实验中,我们选择三角窗。五、功能模

11、块设计1、AD采样 DE2-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

12、_sig);3、加窗后的信号做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(1'b1) ,/ input reset_n_sig.

13、inverse(1'b0) ,/ input 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(24'd0) ,/ input 23:0 sink_imag_sig.sink_error(2'b00) ,/

14、 input 1:0 sink_error_sig.source_ready(1'b1) ,/ 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_val

15、id) ,/ output source_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_sig5、寻找最大模值对应的索引用寄存器data_max记录出现最大值的索引,从复数乘法器输出有效信号开始,后一个数与前一个数比较,若大于前者,将此最大值的索引赋给data_max,经过1024个时钟后比较结束,得到最终

16、的data_max。 reg 2:0 con1;reg 44:0 data1,data2,data3,data4,data_max;always (posedge clk)begincase(con1)3'd0: begin data1 = q_out44:0; end3'd1: begin data2 = q_out44:0; end3'd2: begin data_max = q_out44:0; end3'd3: begin data3 = q_out44:0; end3'd4: begin data4 = q_out44:0; endendcas

17、eend6、计算基波功率和总功率基波功率是窗函数主瓣宽度内所有频率分量的总功率,因此,将最大模值邻近的N点累加作为基波功率,其中,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 ( pow

18、er_funda ),.result ( result_power_funda );DIVIDE_ALTFPDIVIDE_ALTFP_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 (

19、clk ),.dataa ( result_sqrt ),.datab ( 64'h408f400000000000 ), / multiply 1000.result ( result_mult );CONVERT2CONVERT2_inst (.clock ( clk ),.dataa ( result_mult ),.result ( result_final ); reg result_final_valid;always (posedge clk)begin if (con3 > 10'd582)begin result_final_valid <= 1&

20、#39;b1;endelsebegin result_final_valid <= 1'b0;endend8、显示失真度在LCD屏上显示失真度output7:0LCD_DATA; output LCD_RW,LCD_EN,LCD_RS; output LCD_BLON,LCD_ON;reg rst_first;always (posedge clk)begin if (!ena)begin rst_first <= 1'b0;endif (con3 = 10'd800)begin rst_first <= 1'b1;endendreg 9:0

21、result_display;always (posedge result_final_valid)begin if (!rst_first)begin result_display <= result_final9:0;endend / just 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 ( 4'd10 ),.numer ( result_display),

22、.quotient ( q1 ),.remain ( n1 );DIVIDE_TENDIVIDE_TEN_inst1 (.denom ( 4'd10 ),.numer ( q1 ),.quotient ( q2 ),.remain ( n2 );DIVIDE_TENDIVIDE_TEN_inst2 (.denom ( 4'd10 ),.numer ( q2 ),.quotient ( q3 ),.remain ( n3 );DIVIDE_TEN_14DIVIDE_TEN_inst3 (.denom ( 4'd10 ),.numer ( frequency ),.quot

23、ient ( p1 ),.remain ( d1 );DIVIDE_TEN_14DIVIDE_TEN_inst4 (.denom ( 4'd10 ),.numer ( p1 ),.quotient ( p2 ),.remain ( d2 );DIVIDE_TEN_14DIVIDE_TEN_inst5 (.denom ( 4'd10 ),.numer ( p2 ),.quotient ( p3 ),.remain ( d3 );DIVIDE_TEN_14DIVIDE_TEN_inst6 (.denom ( 4'd10 ),.numer ( p3 ),.quotient (

24、 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(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) ,/ input 3:0 d3_sig.d2(d2) ,/ input 3:0 d2_sig.d1(d1) / input 3:0 d1_sig);六、仿真与调

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论