基于FPGA的模拟电机电压信号在环测试系统设计
2023-12-19李建文陈金鹤李志伟
李建文,谢 鹏,刘 娜,陈金鹤,李志伟
(1.天津市复杂系统控制理论及应用重点实验室,天津理工大学,天津 300384;2.国家汽车电气零部件产品质量监督检验中心,浙江瑞安 325204)
0 引言
永磁同步电机广泛应用于汽车、家电、医疗器械等领域[1]。其控制方法主要包括矢量控制、直接转矩控制和场定向控制。矢量控制通过测量电机的速度、位置以及电枢线圈的电流,计算得出下一步需要施加的磁场方向进而转换为三相电压值[2]。所以电机相电流的采样对于矢量控制来说是不可或缺的,只有保证相电流的采样正确,才能精准实现对电机的转速和转矩控制。本文设计了模拟电机电压信号在环测试系统,系统通过上位机发送电压指令输出相对应的电压信号,以供AN9238进行采样,FPGA将采集的数据经过解码、重组等处理通过UART发送至上位机直接显示。
较为成熟的数模转换方案一般是DAC+单片机或者DAC+DSP的解决方案,但是在一些高度实时性和高精度的场景中,单片机的性能无法满足要求,DSP也因为其程序为顺序执行,当多路数据输入时可能会造成数据拥堵无法完成实时处理[3]。FPGA(现场可编程门阵列)内部有着丰富的逻辑资源,输入到输出的时间延迟也更小,拥有强大的性能、低延时性、高并行性、高精度等优点[4],在此系统中作为主控制器,与多个模块进行数据交换和并行处理,能够为不同的应用场景定制化解决方案。
1 系统方案设计与器件选型
1.1 系统总体方案设计
为了验证在环测试系统能否模拟电机正确输出电压范围内自定义任意电压,在系统整体方案上分为2部分,一部分是模拟电机两相电压输出,另一部分为AN9238数据采集。首先上位机通过UART传输将电压指令发送至寄存器存储,然后FPGA将接收的电压指令通过SPI传输至DAC部分生成2个通道的电压,其次由PLL产生数据采样所需要的时钟,并将通道电压读取、解码后存入FIFO,最后通过UART将电压信息传输至上位机显示,形成一个闭环电压信号在环测试系统。系统的总体设计框图如图1所示。
图1 系统总体设计框图
1.2 器件选型
1.2.1 数模转换器
在模拟电压输出部分中,数模转换器是核心器件,考虑到实际输出需求和使用简便性,选择使用DA5689,DA5689是低功耗、双通道、16位缓冲电压输出的数模转换器,其内部集成了SPI接口,并可使用增益引脚扩大输出范围。在时钟信号的作用下,将离散的数字信号送到数字锁存器电路,完成数据同步,再经过数模转换电路,将数字信号转换为模拟信号,经过模拟缓冲电路输出连续的模拟信号[5]。由于其出色的直流性能和高相对精度,该数模转换器可用于光收发器、基站功率放大器、工业自动化等领域。图2为DA5689硬件电路设计,其中J4、J5增益选择可以改变电压输出范围。
图2 DA5689硬件电路设计图
1.2.2 模数转换器
数据采集部分使用AD9238作为采样芯片,采样速率最大为65 MHz,精度为12位,它是双通道模数转换器,且具有输出纠错逻辑的多级差分流水线架构,与驱动运算放大器配合可以给医疗成像、多通道通信等高端应用提供完整的解决方案[6]。AN9238模块包含单端输入、运放电路、单端转差分等,它的2路通道都是独立的时钟和数据,单端输入通过SMA接口传入AD8065和分压电阻,将电压范围缩小至-1~+1 V,然后由AD8138将单端信号转为差分信号,最后AD9238输出12位AD数据,具体的原理流程如图3所示。
图3 AN9238原理设计框图
1.2.3 FPGA选型
在FPGA选型时主要在3方面综合考量:片上资源、封装和速度等级。片上资源方面要留有一定的余量以供后期修改增加,封装方面需要考虑可用的I/O口数量和封装尺寸,速度等级方面要根据实际设计所能综合出来的最高运行频率和需求的运行频率做比较。综合这3个方面的考虑,FPGA芯片选用Spartan-7系列的主流FPGA xc7s50fgga484,系统时钟为50 MHz,拥有52 160个逻辑单元,逻辑资源使用情况如表1所示,该FPGA能够实现此系统的全部功能。
表1 系统逻辑资源使用情况
2 系统逻辑设计
模拟电压输出部分的逻辑设计主要分为UART传输和SPI的配置,DA5689需要配置寄存器才能正常工作,FPGA使用SPI协议传输24位数据来配置DA5689。数据采集部分的逻辑设计也可分为数据采集和转换2部分,由FPGA提供2路采样时钟,AN9238在时钟的上升沿对数据进行采样,将二进制电压信号转换成直观的电压数据,通过UART传输至上位机显示。
2.1 模拟电压输出部分的逻辑设计
2.1.1 SPI配置逻辑设计
FPGA使用SPI协议配置DA5689寄存器。在配置逻辑中,将SCLK、SYNC、SDO和SDIN与FPGA相连,采用SPI的Mode 0模式。该模式下,SCLK端口在空闲状态为低电平,数据在下降沿阶段进行更新,在上升沿进行数据采样。当SPI使能信号拉低时,SCLK不断翻转,进入数据传输,SPI配置时序如图4所示。
图4 SPI配置时序图
2.1.2 UART传输逻辑设计
在本系统中,为了使电压信号更加直观地显示,并考虑到操作的便捷性,加入UART模块与上位机进行通讯,上位机通过UART将3字节电压指令发送至FPGA,随后将电压指令整合后发送DAC模块进行转换输出。由于UART的传输速率的一般为20 kbit/s,而SPI的传输速率为10 Mbit/s~20 Mbit/s,所以在此系统中二者之间的传输速率并不匹配。为了解决这个问题,本文在软件设计方面增加了一个等待状态,使用状态机来控制转换时序[7],只有当电压指令全部发送完成后才能开始传输,否则一直处于空闲状态。UART传输工作流程如图5所示。
图5 UART传输逻辑流程图
2.2 数据采集逻辑设计
AN9238双通道AD的数字输出为+3.3 V的CMOS输出模式,该模块主要负责数据采集和转换,因此可分为2个小模块,其模块功能如图6所示,ad模块接收2个通道的模拟信号,由FPGA提供2路时钟信号,将电压接收并存放至寄存器内,Volt_cal模块将二进制数值转变成更为直观的电压数据,其中8位的ch_sig寄存器输出电压的正负号,20位的ch_dec寄存器输出电压的数值。
图6 AN9238模块功能示意图
3 系统测试
为了验证模拟电机两相电压输出和数据采集模块的正确性,对在环测试系统进行实验测试。系统测试分为2个步骤,首先测试上位机发送电压指令能否正确输出相对应的电压信号,然后与AN9238相连接,进行整体测试,观察回读的电压数值是否与万用表所量数值相对应。数据传输的信号波形使用Vivado自带的IP核ILA(集成逻辑分析仪)来抓取,数据采集的信号波形使用示波器来抓取更为直观和有效。系统整体的RTL view视图如图7所示,clk_wiz_0模块生成各模块所需要的时钟,uart_test模块通过TX将电压指令发送给DAC模块传输生成模拟电压信号,ad9238模块不断采样2个通道的电压值,并将通道电压信息发送返回至uart_test模块,由FPGA处理转换后传输至上位机显示。由此,形成一个闭环的电压信号在环测试系统。
图7 系统RTL视图
3.1 模拟电机两相电压输出模块测试
ILA功能允许用户在FPGA设备上执行系统内调试后实现的设计,还可以使用此功能在硬件事件和系统速度捕获数据时触发。在此模块功能测试中,首先上位机一次发送多字节数据,通过改进后的UART逻辑传输至FPGA,ILA对传输的数据进行抓取,抓取结果如图8所示。通过读取端口O_spi_mosi_OBUF的数值,与预先发送的数值对比后,发现二者数值完全一致,证明UART发送模块功能正确。
图8 ILA抓取结果
由硬件设计原理分析,将DA5689配置为手动模式后,只需进行SPI配置即可。为了防止电压过大损坏其他模块,在此实验中需要将DA5689的电压输出范围通过增益降低至0~2.5 V。在该模块中输入时钟信号和SPI总线的SCLK、CS、MISO和MOSI信号,在一个通讯周期中,CS提前拉低,由计数器生成的SCLK不断翻转,开始发送数据,一个周期结束CS置回高电位。示波器抓取SPI传输结果如图9所示,将数据端和SCLK时钟端波形读取出来,经过验证分析可知该模块传输正确,能够输出正确的模拟电压数值。
图9 示波器抓取波形示意图
3.2 数据采集验证测试
为了验证AN9238能否连续不间断地进行数据采样,使用信号发生器对AN9238输出信号,并使用专用的信号采集线对数据信号采样。经过调整信号发生器的频率和幅度,对该模块进行了采样测试和波形抓取。系统采样频率为65 MHz,采样端数据为2字节,通过以太网将采集数据发送到上位机,具体的采样波形如图10所示。
图10 数据采样波形
验证AN9238采集的正确性需结合上位机,通过读取分析上位机软件的数据,与万用表测量所得的数据相对比。在采集过程中,AN9238不断采样2个通道数据,但是由于模拟信号容易受到外界讯号干扰,回读的数据会有一定的偏差。本系统能够随意输出电压范围内的任意电压,只需更改上位机发送的电压指令,上位机收发情况如图11所示,上位机通过发送电压指令317FFF,则通道1的电压直接从0 V变为2.5 V。
图11 上位机接收数据截图
3.3 误差分析
在误差分析实验中,系统连续发送20组电压指令,通过记录上位机串口所接收的数据和预期的电压数值进行对比,误差结果如图12所示,真实的电压数据与预期的数据会有一定的误差,但是误差结果较小,在此系统中基本可以忽略。
4 结论
针对模拟电机输出两相电压信号及AN9238采集验证电压数据的需求,以FPGA为处理器,设计了模拟电机电压信号在环测试系统,利用FPGA并行处理和逻辑资源多的优势,对系统分别进行了测试,将数据结果与预期相对比,能够稳定在误差范围内,测试结果良好。系统能够直接在上位机发送电压指令和回读电压数据,测试简便,并且可移植性强,能够对不同的ADC进行数据采集测试,模拟电压输出稳定,达到设计需求。
图12 误差结果分析图