摘 要 在DSP+FPGA实现的级联H桥型多电平逆变电路中,首要任务是实现DSP与FPGA的通信。本文设计了DSP+FPGA系统的硬件电路连接方式及通信软件,由DSP作为上位机,FPGA作为下位机,使用外部接口XINTF将DSP与FPGA二者相连。设计了DSP侧的主程序与中断服务程序,在FPGA内构造FIFO储存数据,编写FIFO的读写接口逻辑单元代码。最后用内嵌逻辑分析仪采集了XINTF各信号线及FIFO各引脚的数据,验证了该并行通信方式的可行性。
【关键词】DSP FPGA XINTF FIFO 并行通信
1 引言
级联H桥型多电平逆变电路在高压大功率变流及交流传动系统中有十分广泛的应用。但是在数字控制的实现中,单片DSP芯片提供的PWM路数有限。一个三相七电平级联H桥型逆变电路就需要36路驱动脉冲,一片DSP上PWM脉冲数显然不能满足需要,而多片DSP并行工作又要考虑时钟同步问题。因此多采用DSP+FPGA系统生成多路驱动脉冲,其中DSP负责采样计算并定时发送多路脉宽数据到FPGA,FPGA产生多路三角载波并与脉宽数据实时比较生成SPWM波。实现该方法首要步骤是解决DSP与FPGA之间并行通信的问题。选用合适的DSP与FPGA芯片,构建实验平台并设计并行通信方式,通过外部接口XINTF进行通信,实现了DSP对FPGA内构造的FIFO中数据的读写,并为基于DSP+FPGA的多电平逆变器驱动脉冲生成系统设计提供了依据。
2 总体结构设计
采用TI公司的TMS320F28335型32位浮点数字信号处理器与Altera Cyclone III系列的EP3C5E144C8N型现场可编程门阵列,构建通信系统。因为DSP与FPGA使用不同的时钟信号,选择在FPGA内构造FIFO进行数据缓存,编写FIFO读写程序,通过DSP的外部接口XINTF实现DSP与FPGA的并行通信,这一系统的硬件连接示意图如图1所示,各信号线的方向在图中列出。DSP将区域0的片选信号线XZCS0、写操作选通线XWE0、读操作选通线XRD、19位地址总线XA0~XA18、16位双向数据总线XD0~XD15等信号线与FPGA的通用I/O口建立起连接。同时将FPGA的一个I/O引脚定义为中断信号线连接至DSP的通用输入/输出引脚GPIO0,作为XINT2的中断源,触发DSP中断。
使用CPU计时器0每秒产生定时中断,DSP响应该中断,向FPGA中的FIFO中发送10个整型数,用来代表调制波脉宽等数据。FIFO写满10个数据后产生外部中断信号XINT2给DSP,DSP响应这个外部中断,将之前写入的10个数据读出并写到外扩RAM存储器,读出外扩RAM存储器内的数据,可以验证DSP写入数据的正确性,从而实现DSP与FPGA两种芯片的双向并行通信。
3 DSP与FPGA通信程序设计
掌握TMS320F28335型DSP外部接口XINTF的工作时序及FIFO存储器IP核的访问方式是实现DSP与FPGA通信的基础。DSP的外部接口XINTF分为三个区域,分别是ZONE0、ZONE6、ZONE7。访问这三个区域所指向的外部空间就像访问DSP外扩RAM或FLASH存储器一样方便。三个区域对应三个不同范围的地址,有各自独立的片选信号线。对某一区域访问时,将相应的地址送到地址线,该区域片选信号变为低电平,对该区域的访问有效。每个XINTF区域的读写访问时序都可以分成三个阶段,建立(Lead)、有效(Active)、跟踪(Trail),每个阶段的时间都可以配置,以满足不同速度外部设备的时序要求。对XZCS0区域进行写操作时,XZCS0信号首先拉低,写选通信号XWE0随之拉低,数据送到数据总线XD上;进行读操作时,XZCS0信号首先拉低,读选通信号XRD随之拉低,将数据从数据总线XD锁存到DSP中。片选信号XZCS0在读写访问时序的三个阶段中均为低电平,但读选通信号XRD与写选通信号XWE0仅在有效(Active)阶段时为低电平。
3.1 FPGA内FIFO与读写接口逻辑设计
为了实现预期的通信功能,需要结合FIFO存储器IP核的使用方法编写FPGA侧读写接口逻辑代码。FIFO即先进先出存储器,特别适用于彼此异步的两系统间进行数据缓存、传输等场合。FIFO不同于双口RAM,它没有地址线,只能对其顺序地写入和读出数据,通过对内部的地址指针连续进行加减,依次访问连续的数据。从而实现对FIFO的读写操作。使用Quartus II 13.1中的MegaWizard Plug-in Manager插件管理器,可以方便地例化FIFO存储器IP核并配置其数据位宽、深度、空标志、满标志、读时钟、写时钟信号等参数。选用双时钟FIFO(DCFIFO)作为数据存储器,FIFO的位数设置为16bits×256words,表示可以储存256个数据,每个数据长度为一字节。rdclk、wrclk分别为读写时钟信号,均是上升沿触发,data信号作为FIFO的数据输入端口,q作为FIFO的数据输出端口,rdreq、wrreq分别为读写操作请求确认信号。wrusedw、rdusedw显示在FIFO内存储的数据个数,初始状态下为0。rdempty为FIFO空标记信号。data、wrreq、wrusedw等信号与wrclk同步;q、rdreq、rdusedw等信号与rdclk同步。
DSP读写数据接口逻辑代码可以在Quartus II 13.1开发环境下使用Verilog HDL硬件描述語言设计编写。DSP读写数据接口逻辑又可以分为DSP写FIFO接口逻辑与DSP读FIFO接口逻辑两部分如图2所示。
3.2 DSP程序设计
DSP程序由主程序、定时中断子程序、外部中断子程序三部分组成。DSP初始化后循环等待,定时响应CPU定时器0的中断,该定时中断子程序向一个固定地址连续写入10个数据,DSP写FIFO接口逻辑将这10个数据依次经过data端口存储到FIFO中,在这个过程中DSP读FIFO接口逻辑一直接收来自FIFO的rdusedw信号,并在该信号值为10的时刻,令信号dsp_int由1变为0,产生下降沿,表示FIFO已经写满10个数据,该信号连接至DSP的通用输入/输出端口GPIO0,作为外部中断XINT2,触发执行读中断子程序。读中断子程序主要实现DSP从FIFO中读出10个数据的功能。每当XINTF的地址总线XA值为区别于定时中断子程序中的另一个固定地址时,DSP读FIFO接口逻辑顺次从FIFO端口q读出一个数据,置于XINTF的数据总线XD上,DSP将锁存其并依次写入DSP的外扩RAM内。完成了一个周期的操作。DSP的主程序流程如图3所示。
4 实验结果
将程序下载到DSP+FPGA开发板上,使用CCS6.0编写调试DSP程序,使用Quartus II 13.1内置逻辑分析仪Signaltap II Logic Analyzer,采集XINTF接口的时序信号,对理论分析进行验证,DSP写、读FIFO数据的采集结果如图4、图5所示。在图4中,wrreq首次为高电平时,空FIFO开始写入数据,rdempty信号产生下降沿,DSP依次向FIFO内写入2Eh~37h共10个连续数据, rdusedw及wrusedw的值由0递增到10,定时中断子程序执行结束,dsp_int产生下降沿,触发DSP的外部中断子程序。
在图5中,dsp_int恢复为高电平,rdreq首次为高电平时,开始从FIFO中读出数据。DSP依次从FIFO中读出10个连续数据2Eh~37h,与定时中断子程序中写入FIFO的数据相同,实现了先进先出功能。在这一过程中rdusedw及wrusedw的值由10递减为0,最终rdempty信号由低电平变为高电平,代表FIFO中数据已全部读出。同时,在外部中断子程序执行过程中,通过CCS6.0的Memory Browser中读取外扩RAM中的数据如图6所示,该结果验证了通信方式的正确性。
5 结论
为了解决DSP与FPGA的通信问题,本文分析了外部接口XINTF的工作原理,针对FIFO存储器IP核的结构及参数,设计了DSP读写FIFO的接口逻辑代码。编写了DSP程序,实现了通过FIFO完成DSP與FPGA之间的通信,为基于DSP+FPGA的多路PWM驱动脉冲发生电路的设计提供了参考。
参考文献
[1]丁凯,邹云屏,张贤等.级联多电平逆变器研究[J].电力电子技术,2002,36(02):16-19.
[2]戴珂,徐晨,丁玉峰等.载波轮换调制在级联H桥型STATCOM中的应用[J].中国电机工程学报,2013,33(12):99-106.
[3]李建林,王立乔,李彩霞等.基于现场可编程门阵列的多路PWM波形发生器[J].中国电机工程学报,2005,25(10):55-59.
[4]周京华,李正熙.多载波水平调制策略的谐波分析及数字化实现[J].电气传动,2008,38(12):27-32.
[5]姜楠,马迎建,冯翔.DSP和FPGA并行通信方法研究[J].电子测量技术,2008,31(10):146-148.
[6]陈林军,刘鹏,姜智译.DSP和FPGA的双核并行通信方法设计与应用[J].单片机与嵌入式系统应用,2016,16(01):4-7.
[7]Texas Instruments.TMS320x2833x,2823x External Interface (XINTF) Reference Guide (Rev.D)[ EB/OL].2010.
[8]刘东华.Altera系列FPGA芯片IP核详解[M].电子工业出版社,2014.
作者简介
刘源康(1992-),男,河北省保定市人。硕士研究生。主要研究方向为大容量中频逆变技术。
作者单位
华东交通大学电气与自动化工程学院 江西省南昌市 330013