用TMS320 DSP和FPGA实现电能质量监测
内容摘要:提出用TMS320LF2407和FPGA实现电能监测的一种方案,阐述各模块的设计和实现方法,本方案中,FPGA用于采样16路交流信号并进行64次谐波分析;DSP和于电力参数的计算。为了提高其通用性,还用FPGA设计了与外界通信的并口、串口模块,并实现了同TMS320LF2407的并行和串行通信。
随着人们对电能质量要求的日益提高,如何保证电能质量就成为一个热门话题。电能质量监测的一项主要内容是谐波检测,即对多路模拟信号进行采集并进行谐波分析。本系统对16路50Hz模块信号进行采样并进行64次谐波分析。如果仅仅依靠一个MCU(单片机或控制型DSP)来进行处理,往往达不到实时性要求,所以采用DSP和FPGA相结合的方法。利用DSP对电力参数进行计算,利用FPGA进行谐波分析。
系统主要包括数据采集电路、ADC模块、FPGA模块、DSP模块及上位机显示模块,其结构如图1所示。
1 数据采集电路和ADC模块
2 FPGA模块
FPGA模块主要完成通信、数据采集、ADC模块的数据读取、保存及底层的信号预处理计算——谐波分析。FPGA工作流程如图2所示。其子模块有:ADC控制模块、ADC采样数据保存区、FFT工作RAM、FFT运算结果保存区、开方修改正表、开方运算单元、谐波系数存放区以及串行、并行通信控制模块。
(1)ADC控制模块
图3所示ADC控制模块除了完成对MAX125、MAX306及SMP04的控制外,还要响应MAX125的中断(INT)来读取转换结果,并将其保存到ADC采样数据保存区。如图3所示,为了更准确地产生控制时序,对系统的采样周期及相位的锁定都采取了相应的处理。待采样信号先经过方波转换电路,将其转换成0~+3.3V的方波信号,再经过FPGA中的数字锁相环模块,根据外部时钟和计数器测量出其周期,作为下一个待采样信号的采样周期。这样就减小了由于待采样信号频率的漂移而带来的采样周期的误差。本系统采用的数字锁相环在FPGA中实现,其具体的性能为:锁相环的捕捉带Δfmax=12.5Hz,锁相频率为50Hz±12.5Hz=37.5~62.5Hz,随后产生的采样周期Ts能够满足实际应用的要求。同时,根据多路开关信号和计数器,产生ADC采样数据保存区地址,保存来自MAX125的14位数字量。
(2)谐波分析模块
本系统中,采用快速傅里叶变换(FFT)进行谐波分析,主要因为FFT使N点DFT的乘法计算由N2次减少到(N/2)log2N次。由FFT工作流程图可知,本系统在分析64次谐波时,整个运算分6级。在第一级蝶形运算中,蝶形运算单元根据算法控制模块的控制信号,从ADC采样数据保存区取出原始数据,从旋转因子ROM中取出旋转因子,进行FFT的第一级蝶形运算,并将结果存入FFT工作RAM。在以后的各级蝶形运算中,蝶形运算单元从FFT工作RAM中取出间数据,从旋转因子ROM中取出旋转因子,进行运算,直至第六级蝶形运算结束,并将结果存放到运算结果保存区,以便进行各次谐波系数计算。
在进行FPGA设计中,为了节省器件的内部资源,其计算内核采用复用技术进行设计,其基本原理如图4所示。
在FFT运算中,一个蝶形运算单元和一组工作RAM被重复使用,其中最重要的是FFT工作控制逻辑的实现。它主要完成从ADC采样数据保存区取出数据、向FFT工作RAM中写入和读取数据以及向FFT结果存放区存放结果等工作。
根据FFT运算的结果z=dinr+jdini,计算各次谐波的系数(其中,dinr为结果的实路,dini为结果的虚部,
。在进行开方运算时,若设计64M×13位长度的存储器进行查表计算,对于现有的可编程逻辑器件来说是很难实现的。因此,本次设计中采用了修正查表算法:将待开方的数据z=(dinr2+dini2)左移m次(m为偶数),直到其最高两位不全为0,此时z变为z1;取z1的高8位来查表(此时表长为2 8=256个字)得到t1;使用牛顿一次迭代公式t=(t1+z1/t1)/2,对t1进行修正得到t;最后将t右移m/2次,得到开方结果。实验证明,上述修正后的查表法误差在允许的范围内,对本系统来说是可行的。
(3)通信接口模块
以于并行通信,如系统框图所示,根据规划好的LF2407扩展I/O空间,由LF2407的高位地址线的逻辑组合来产生FPGA选片信号,低位地址线向LF2407输出要访问数据的地址,在IS引脚的下降沿,FPGA中的数据传输到LF2407的数据总线。值得注意的是,在编写FPGA的并行通信模块时,除了编写相应的控制程序以外,还要利用LF2407的IS引脚来选通FPGA的三态总线进行数据输出,这样可以避免FPGA与LF2407的数据接口影响LF2407的工作。
如果利用FPGA进行串行通信,则可以完善已有的电力监测系统。为了使其能和现有的设备更好的进行连接,还设计了TMS320LF2407和FPGA之间的串行通信。本系统中,LF2407包含了可以直接利用RS232通信的串行通信接口(SCI)模块,所以对FPGA编写串行通信接口模块时,要保证和LF2407相同的通信格式。本系统在实际设计中采用的通信格式为:1个起始位,8个数据位,1个奇/校验位,1个停止位。TMS320LF2407的串口通讯电路如图5所示。
FPGA的UART模块中,确定相同通信格式的同时,还要确定相同的波特率,并根据波特率产生发送、接收时钟。对于数据的发送,FPGA监测txrdy(发送就绪)信号。如果txrdy=“1”,就从待发送数据区中取出数据写入UART的数据总线,随后产生一位起始位。然后,利用发送时钟触发移位寄存器,将待发送数据送到内部寄存器,将数据依次送到发送端(TX)。最后,根据发送数据的“1”的个数,加上校验位和停止位,就实现了数据的串行发送。
FPGA的监测单元监测到RX的下降沿,则启动接收单元。在采样时钟的上升沿对接收信号进行采样,高电平为“1”,低电平为“0”。然后通过移位寄存器,将串行数据转换成并行的8位数据,完成数据的接收。
3 DSP模块
根据算法的分配,高层的信号处理量小,但控制结构复杂,适合用处理速度较快的DSP来处理。本系统中,DSP主要是根据FPGA中模拟量的采样结果和运算结果,计算电力参数以及发出相应的控制信号。如有必要,还可以用液晶来显示结果。
对于LF2407和FPGA的并行通信,使用LF2407的扩展I/O来读取FPGA中ADC采样数据保存区和各次谐波系数放区中数据。LF2407可以直接使用IN和OUT指令对FPGA进行读写。
对于串行通信,LF2407向FPGA发送数据。只要查询SCICTL2的7号位,来判断发送器是否为高。如果为空,LF2407就可以向FPGA发送数据(命令),控制FPGA的运行。同样,LF2407采用中断方式接收从FPGA发送来的数据。LF2407接收中断的向量地址为INT1(0002H),外围中断向量为0006H。
4 总结
本系统已完成实验室样机制作与调试,证明设计正确,可以完成对电力质量进行监测的任务。在电力监测系统中,通过FPGA和DSP相结合,可使测量更灵活、控制更方便。本系统有选择地进行并行通信或串行通信,使设计更加灵活多变,有利于系统的扩展,方便与其它电力测控系统直接相边,而且适于模块化设计,提高算法效率,缩短开发周期。
评论