电子综合实验报告数字化失真度测量仪的设计(有完整程序) - 图文

更新时间:2023-03-17 18:19:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

南京理工大学

电类综合实验报告

——数字化失真度测量仪的设计

作者: 学院(系):

指导老师:

学 号: 电光学院

刘光祖老师

实验日期:20150510-20150515

1

摘要: .............................................................................................................................................. 3 一、实验目的 ................................................................................................................................... 3 二、实验内容 ................................................................................................................................... 3

1、AD采样 ............................................................................................................................... 4 2、信号加窗 ............................................................................................................................. 4 3、加窗后的信号做FFT .......................................................................................................... 4 4、FFT求模 .............................................................................................................................. 5 5、寻找最大模值对应的索引 ................................................................................................. 5 6、计算基波功率和总功率 ..................................................................................................... 5 7、计算失真度 ......................................................................................................................... 5 8、显示失真度 ......................................................................................................................... 5 9、数字化失真度测量仪的测试步骤 ..................................................................................... 5 三、设计要求 ................................................................................................................................... 6 四、方案论证 ................................................................................................................................... 6 五、功能模块设计 ........................................................................................................................... 8

1、AD采样 ............................................................................................................................... 8 2、信号加窗 ............................................................................................................................. 8 3、加窗后的信号做FFT .......................................................................................................... 8 4、FFT求模 .............................................................................................................................. 8 5、寻找最大模值对应的索引 ................................................................................................. 9 6、计算基波功率和总功率 ................................................................................................... 10 7、计算失真度 ....................................................................................................................... 10 8、显示失真度 ....................................................................................................................... 11 六、仿真与调试 ............................................................................................................................. 14 七、实测结果 ................................................................................................................................. 15 八、思考题..................................................................................................................................... 16 九、收获与感想 ............................................................................................................................. 16 参考文献......................................................................................................................................... 16

2

摘要:

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

基于FPGA开发板(DE2-115)和AD/DA板(THDB-ADA),采用加三角窗的FFT法,在QUARTUS ii 环境下实现了数字化失真度测量仪的设计和仿真工作。对正弦信号、方波信号、三角波信号的实测结果具有较高的精度,并能在LCD上显示失真度。

一、实验目的

1. 熟练掌握一种硬件描述语言,能用硬件描述语言实现较为复杂的时序逻辑电路;

2. 掌握失真度测量的原理,了解模拟法和数字化方法的优缺点,基于FPGA设计数字化失真度测量仪;

3. 掌握EDA电路设计软化和电路仿真软件的使用,能够熟练运用FPGA的IP核来设计电路,增强时序电路的稳定性,提高设计效率。

二、实验内容

本实验基于FPGA开发板(DE2-115)和AD/DA板(THDB-ADA)设计数字化失真度测量仪,实现方法上采用加窗的FFT法,其基本信号处理流程如图1所示。

3

被测信号AD采样加窗FFT求模找最大值对应的索引求基波功率和总功率计算失真度 图1 数字化失真度测量仪的流程图

显示失真度1、AD采样

DE2-115提供三个50MHz时钟,利用任意一个时钟,通过PLL可以产生任意频率时钟提供给ADC作为采样时钟,AD采样得到14位偏移码,将高位取反即可得到信号的补码形式。 2、信号加窗

选用汉宁窗或三角窗对AD采样信号做加权处理。 3、加窗后的信号做FFT

Altera提供FFT的核,该核为串行输入串行输出,设置输入输出为自然数顺序。以做1024点FFT为例,首先需要设置控制信号sink_valid,sink_sop,sink_eop,sink_valid为高1024个时钟,sink_sop第一个时钟为1其他为0,sink_eop第1024个时钟为1其余为0,可以设计一个计数器来实现。通过改变着sink_valid有效

4

的频率,可以控制出结果的频率,例如1s测试一次,计数器记到50e6(50MHz时钟)清零。 4、FFT求模

复数乘法器(real+j*imag)*(real-j*imag),注意乘法器有延迟。 5、寻找最大模值对应的索引

例如用寄存器count_max记录出现最大值的索引,从复数乘法器输出有效信号开始,后一个数与前一个数比较,若大于前者,将此最大值的索引赋给count_max,经过1024个时钟后比较结束,得到最终的count_max。 6、计算基波功率和总功率

基波功率是窗函数主瓣宽度内所有频率分量的总功率,因此,将最大模值邻近的N点累加作为基波功率,其中,N的值取决于主瓣宽度。总功率是所有谱线的幅度累加。 7、计算失真度

按照式(1)计算失真度。

??

P?P1?P1?Pn?2?nP1(1)

8、显示失真度

在LCD屏上显示失真度,或者将失真度通过串口上传至PC机显示。 9、数字化失真度测量仪的测试步骤

9.1. 设置函数/任意波形发生器,使其输出频率为1MHz,直流电平为0V,峰峰值为1V的正弦波,用数字示波器测量该信号,确认信号的个参数与设定值相同后,将函数/任意波形发生器的输出信号接入HTDB-ADA板的某一个ADC通道;

5

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、失真度的定义与测量方法论证

失真度表征一个信号偏离纯(正弦)信号的程度,是无线电信号的一个重要参数。失真度的技术术语为总谐波失真(Total Harmonic Distortion,THD),其定义为信号中全部谐波分量的功率与基波功率之比的平方根值,即

6

??P?P1?P1?Pn?2?nP1(1)

式中,?为失真度,P为信号总功率,P1为基波信号的功率,Pn为第n次谐波的功率。

如果负载与信号频率无关,则信号的失真度也可以定义为全部谐波电压的有效值与基波电压的有效值之比并以百分数表示,即

22U2?U32???Un???U1?Un?2?2nU1?100%(2)

式中,?为失真度,P为信号总功率,P1为基波信号的功率,U1为基波电压的有效值,U2~Un为谐波电压有效值。由式(2)可见,失真度仅与信号中所含的基波及各次谐波的电压有效值相关,而与他们之间的相位无关。失真度是一个无量纲的比例系数,常用百分数或者分贝数表示。

2、FFT法的论证

数字化方法是指首先通过数据采集卡将被测信号量化,再对测量数据处理,最后计算出失真度的测量方法,如图2所示。根据失真度的计算方法可分为曲线拟合法和FFT法。在本实验中,我们采用的是FFT法。

被测信号信号调理

图2数字化失真度测试仪的原理框图

ADC数字化失真度测量算法显示设备采用FFT对量化后的被测信号处理,获得基波和各次谐波的电压,从而计算出失真度。由于在实际的数据采集很难做到整周期采样,由此导致FFT分析泄漏引入方法误差。频谱泄漏引入的误差是影响FFT法失真度测量精度的主要因素。当前,一般通过加窗方法减小频率泄漏。

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

7

五、功能模块设计

1、AD采样

DE2-115提供三个50MHz时钟,利用任意一个时钟,通过PLL可以产生任意频率时钟提供给ADC作为采样时钟,AD采样得到14位偏移码,将高位取反即可得到信号的补码形式。 2、信号加窗

选用三角窗对AD采样信号做加权处理。 wire [22:0] q_window; windowing windowing_inst ( );

3、加窗后的信号做FFT

做1024点的FFT。 4、FFT求模

复数乘法器(real+j*imag)*(real-j*imag)。 wire sink_sop, sink_eop, sink_valid, sink_ready; (

.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

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

8

.reset_n(1'b1) , // input reset_n_sig

.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_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) , // 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) , .source_eop(source_eop) , .source_exp(source_exp) , .source_real(source_real) ,

// output source_sop_sig // output source_eop_sig // output [5:0] source_exp_sig // output [23:0] source_real_sig

.source_valid(source_valid) , // output source_valid_sig

.source_imag(source_imag) // output [23:0] source_imag_sig

5、寻找最大模值对应的索引

用寄存器data_max记录出现最大值的索引,从复数乘法器输出有效信号开始,后一个数与前一个数比较,若大于前者,将此最大值的索引赋给data_max,经过1024个时钟后比较结束,得到最终的data_max。

reg [2:0] con1;

reg [44:0] data1,data2,data3,data4,data_max; always @(posedge clk) begin

case(con1)

3'd0: begin data1 = q_out[44:0]; end 3'd1: begin data2 = q_out[44:0]; end 3'd2: begin data_max = q_out[44:0]; end 3'd3: begin data3 = q_out[44:0]; end 3'd4: begin data4 = q_out[44:0]; end endcase

end

9

6、计算基波功率和总功率

基波功率是窗函数主瓣宽度内所有频率分量的总功率,因此,将最大模值邻近的N点累加作为基波功率,其中,N的值取决于主瓣宽度。总功率是所有谱线的幅度累加。

assign power_funda = (data2 > data3) ? data1 + data2 +data_max + data3 : data2+data_max+data3 + data4;

assign power_harmo = power - power_funda; 7、计算失真度

CONVERT1 CONVERT1_power_harmo (

.clock ( clk ),

.dataa ( power_funda ), .result ( result_power_funda ) );

DIVIDE_ALTFP .clock ( clk ),

.dataa ( result_power_harmo ), .datab ( result_power_funda ), .result ( result_divide ) );

SQRT_ATLFP SQRT_ATLFP_inst ( .clock ( clk ), .data ( result_divide ), .result ( result_sqrt ) );

MULT_ALTFP MULT_ALTFP_inst ( .clock ( clk ), .dataa ( result_sqrt ),

.datab ( 64'h408f400000000000 ), // multiply 1000 .result ( result_mult )

10

DIVIDE_ALTFP_inst (

本文来源:https://www.bwwdw.com/article/r18f.html

Top