FPGA实现频率相位及幅度跟踪的SPWM波

上传人:人*** 文档编号:485509791 上传时间:2023-11-03 格式:DOCX 页数:9 大小:103.12KB
返回 下载 相关 举报
FPGA实现频率相位及幅度跟踪的SPWM波_第1页
第1页 / 共9页
FPGA实现频率相位及幅度跟踪的SPWM波_第2页
第2页 / 共9页
FPGA实现频率相位及幅度跟踪的SPWM波_第3页
第3页 / 共9页
FPGA实现频率相位及幅度跟踪的SPWM波_第4页
第4页 / 共9页
FPGA实现频率相位及幅度跟踪的SPWM波_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《FPGA实现频率相位及幅度跟踪的SPWM波》由会员分享,可在线阅读,更多相关《FPGA实现频率相位及幅度跟踪的SPWM波(9页珍藏版)》请在金锄头文库上搜索。

1、FPGA实现频率、相位及幅度跟踪的SPWM波单相逆变电源需要采用FPGA来产生SPWM波。要求为,对输入正弦信号进行DC-DC、 DC-AC后输出一路正弦信号,并保证输入和输出信号间的频率、相位及幅度一致。要完成同频同相,则需要对输入输出信号间的频率、相位及幅度进行检测,以之做为 SPWM波的输入控制部分,输出的SPWM波用于控制DC-AC部分来保证输出信号频率、 相位及幅度一致。一.SPWM波产生电路输入输出信号根据以上原理上的分析,可以对SPWM波产生电路的输入输出信号如下分析:1. 输入:(1) .频率控制信号:为一个矩形脉冲信号。STD_LOGIC类型。它是对输入正弦信号 进行整流及过

2、零检测,产生出正弦信号的过零矩形脉冲,以之确定输入信号的频率。具体过 程为:对输入整形信号进行高、低跳变检测,在高、低跳变间进行计数,确定其输入信号的 频率,其实质是数字频率计的功能;计数输出为一个多位二进制数,此值应该为一个较小的值,为保证精度,计数输出信号 暂定为12位二进制数;设定为fq_ctrl(11 DOWNTO 0)。(2) .相位控制信号:为两路矩形脉冲信号。STD_LOGIC类型。它是对初始正弦信号 A、输出正弦信号B进行整流后所得到两路矩脉冲。具体过程:对两路矩形脉冲的上升沿进 行检测,并在两个跳变沿间进行计数。计数输出为一个多位二进制数,此值应该为一个较小的值,为保证精度,

3、计数输出信号 暂定为12位二进制数;设定为phs_ctrl(11 DOWNTO 0)。(3) .幅度控制信号:为一个直流信号;对其进行AD7819采样,输出为12位二进制 数。输出信号为12位二进制数,设定为:ap_ctrl(11 DOWNTO 0)。2. 输出:(1) .SPWM波形:为一个脉冲信号。以之控制DC-AC部分,保证输出信号与输入信 号间频率、相位及幅度一致。二SPWM波产生电路模块设计根据前面的分析可以对FPGA电路模块进行设计。1. 频率、相位测量电路:完成对输入、输出信号间的频率、相位进行测量。输入信号为频率控制信号、相位控制 信号。输出信号频率控制字fq_ctrl(27

4、DOWNTO 0),相位控制字phs_ctrl(27 downto 0)。 为什么设定为28位二进制数,后面会进行详细分析。2. AD7819采样电路:AD7819的硬件电路,有现成的模块可用。3. AD7819控制模块:完成对输入、输出信号间幅度差值的采样。输入信号为直流信号,输出信号为ap_ctrl(11 DOWNTO 0)。4. SPWM波产生模块:根据已经获得的频率、相位及幅度参数对SPWM产生电路进行控制,输出所需的SPWM 波形。输入信号为:fq_ctrl(27 DOWNTO 0)、phs_ctrl(27 downto 0)及 ap_ctrl(11 DOWNTO 0), 输出为SP

5、WM波,1位2进制数。SPWM波产生电路又包括以下部分:(1) .正弦信号、三角波信号ROM表:由于此电路中使用的ROM表并不多,因此可 以存放正弦信号、三角波信号的一个周期内的采样点。设置采样点个数均为2048个。甚至 更多点。(2) .ROM表地址产生电路:完成的功能为,根据输入的fq_ctrl(27 DOWNTO 0)、 phs_ctrl(11 downto 0)信号进行计算,获得对ROM表的连续的读地址;根据输入的ap_ctrl(11 DOWNTO 0)信号控制每个地址的持续时间,以完成对输出的SPWM波脉宽的控制。(3) .输出电压比较电路:完成对输出的ROM表中的正弦、三角波形的数

6、据进行比较, 输出符合要求的SPWM波。三.SPWM波产生电路参数计算1. SPWM波产生原理简单分析SPWM波产生原理不作详述,这里只对主要参数进行总结如下。(1) .第m个脉冲的相位宽度。:m0 = -m cos( m 1) 一 cos m m UPPD(2) .第m个脉冲的时间宽度 t :mA t = m = 1m cos( m 1) cos m m 2兀fUPPD(3) .两个脉冲间的相位差值A0 :兀A0 =P(4) .两个脉冲间的时间差值At :A01A t =2 兀 f 2 P以上两个参数与u 1、Ud及f有关,当不需要进行频率、相位和幅度反馈调整时,只 要它们确定,即可产生相应

7、的SPWM波用于DC-AC的控制。而当需要进行频率、相位及 幅度控制时,SPWM波则是U1、U及f的函数,可记如下。spwm = s (U , U , f)2. SPWM波的Matlab仿真进行SPWM波的仿真时,先设定固定的正弦信号幅度气、输出脉冲幅度UD和正弦信号频率f进行计算,其计算的Matlab程序及仿真波形见附录。设定U1 = 1.涉,这是由于隔离变压器给出的正弦信号幅度最大值为1.8V ;U = 3.3 V,这是由于使用FPGA产生的高电平为3.3V; f = 50Hz,这是由于隔离变压 器输出的信号频率为50Hz。设定P=10,这个参数要由输出信号的精度要求来定,暂时尚未 弄清楚

8、到底P取大,它对程序的设计影响不大,它只是一个循环量,暂定为10。用它们进行SPWM波的计算,现将得到的主要参数列出如下。(1) .第 m 个脉冲的相位宽度9 : 0.026696445657189,0.077476102865567,m0.120671859317713 , 0.152055413409560 , 0.168554724204517 , 0.168554724204517 , 0.152055413409560,0.120671859317713, 0.077476102865567, 0.026696445657189。单位为 rad/so(2) .第 m 个脉冲的时间宽度

9、 t : 84.977425786515800,246.6140948510227, 384.1104580500771, 484.0074133602612,536.5263507727997,536.5263507727997, 484.0074133602612,384.1104580500771,246.6140948510230,84.977425786515800。单位 为USo(3) .输出脉冲间的时间间隔 t : 0.001,单位为s,即为1ms。也就是说每隔1ms就要输出一个脉冲。这里的时间间隔点为脉冲的中心点,以之为中心点,生成一个宽度为 tm 的脉冲。这个时间间隔是一个常

10、数,它与是否进行频率、相位及幅度等参数的调整与否没有 关系,只与所取的P值有关。以上的参数为正弦信号幅度U1 输出脉冲幅度U。和正弦信号频率f固定时所计算出 来的值。虽然要实现的是频率、相位及幅度可跟踪的SPWM波,即所产生的SPWM波并不 是固定的,但进行以上参数计算非常必要,因为它是进行频、相及幅跟踪时所要知道的标准 值,要进行调整将以它们为固定值点来进行大小的调整。3. SPWM波的计算与FPGA设计的参数映射分析完成了以上参数计算后,需要确定的是如何将这些参数映射到FPGA设计的模块当中, 以之来控制相应的SPWM波的输出。(1).频率控制:设输出信号频率为50Hz时,即其周期为T =

11、0.02 s=20 ms ;设定时钟频率为150MHz,即其周期为T =0.0066666667 us,则在一个周期内计数个数为:clk 1fq _ Ctrl = fcrrr = ( 3000000 ) = (1011011100011011000000);f102o因此频率控制字至少应该为22位二进制数。为了保证输出信号频率计算不出现太大的 误差,可以设定频率控制字为28位的二进制数。即设定为:fq_ctrl(27 DOWNTO 0)。此时 能测量的最低输出信号频率可以达到21Hz;最高可以测量的频率为至少可精确到50KHz(即 一个周期内计数值为3000次数,精度可以相当高了)。因此设计此

12、频率控制字的长度是肯定 足够。因为输入信号频率不可能在低至21Hz,也不可能高达50KHz,那样的话,早就不在 市电的工作频率范围了。当输出信号频率为50Hz时,即计数值为fq _ Ctrl = (1011011100011011000000)2 时,DDS模块中的频率步进K也就是标准值,不需要做任何修改。当频率计数值并不是fq _ Ctrl =(1011011100011011000000)时,则需要调整DDS模块中的频率步进K。如2何调整需要先首先搞清楚DDS模块中输出信号频率与步进K、系统时钟之间的关系。DDS模块中输出信号f通式为:f = Kf尿2/N = Kf庆2/2 n,其中K为频

13、率步进,N 为采样点个数,设定为232个,至于K值如何去控制DDS中的地址等则是DDS模块中完成 的工作,在本设计中不需要再考虑。这里只需要将步进计算出来送给DDS模块即可。根据此通式,当要输出f = 50 Hz的信号时,频率步进K计算值为:K = Nf / f = 232 f / f = 2 32 D50 Hz /150 MHz - 1432 。搞清楚要输出50Hz的信号时,步进K应该设定为1432后,应找到频率测量值fq _ ctrl =(11110100001001000000)与之的对应关系。故联立以上fq_ctrl和K的计算2ffq _ ctrl = cik 1:f -K = 232

14、 f / f1o clk 2公式如下,将两个表达式中的f消去,即可找到fq_ctrl与K之间的关系:K232 fk232 MHz232fq _ ctrl ffq _ ctrl D150 MHz fq _ ctrl从上面的分析可以看得出来,K与所测得的频率fq_ctrl间的关系非常简单。如果DDS 的工作频率与测频电路采用相同的时钟,则:232K =fq _ ctrl显然采用相同的工作频率不仅可以提高运算速度,还可以提高K值的精度。因此测频 电路与DDS模块均采用同一个时钟,即150MHz的频率,这个频率由晶振的50MHz进行3 倍频即可做到。验证数据如下:50Hz时,频率测量值为:fq _ c

15、trl = Zkr =( 3000000)=(1011011100011011000000);f102o则所得K值与fq_ctrl的关系式可求得:2 322 32fq _ ctrl 3000000 与两者单独分析时,数据是一致的。也显然应该一致。结论:当DDS模块工作频率与频率测量模块时钟频率一致时(设定为150MHz),则 测频模块所得频率测量值fq_ctrl(27 DOWNTO 0)与DDS模块的频率步进K(27 DOWNTO 0) 的关系为:232fq _ ctrl2. 相位控制:为保证输出信号的相位与输入信号的相位一致,则需要根据测频测相模所测得的相位 差值phs_ctrl(27 downto 0)来控制DDS模块中的起始位置。前面在进行频率控制时,并不需要清楚DDS中的地址是如何产生,而为保证相位的一 致,则需要考虑地址。但并不需要对DDS模块进行大的修改,只需对DDS模块的加一个初 始地址的输入端。即一个地址锁存端口。再考虑phs_ctrl(27 DOWNTO 0)的位宽。由于输入输出信号间的相差最大值也就是一个 周期。故phs_ctrl(27 DOWNTO 0)这个计数值最大也就是50Hz的信号一个周期内

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号