1.3 系统软件设计
1.3.1 操作系统的选择
在Xilinx SOPC嵌入式系统中,操作系统的介绍已经在上一篇博文中提到了。 在本文SVPWM调制算法的实现过程中,软件的主要任务是根据参考电压矢量来计算扇区、基本矢量作用时间,并完成对IP核的控制,软件任务相对简单,不需要采用复杂的操作系统,故采用Standalone的方式。
1.3.2 应用程序的设计
在系统的软硬件分工中,将扇区判别以及作用时间计算这两个模块交给MicroBlaze软核来处理,最后将处理后的结果送入定制的IP核,从而产生PWM波。在采用C语言对MicorBlaze进行编程时,只需要通过PLB总线向定制的IP核写入如下信息即可:
[1]. 配置res寄存器,给出IP核的初始化脉冲。
[2]. 写入计算后的扇区值,即配置Sector寄存器。
[3]. 写入计算后的开关器件的触发时刻Ta、Tb 和Tc。
[4]. 写入调制周期Ts,从而为三角波产生模块提供周期。
[5]. 写入死区时间deadtime,从而在死区产生模块产生相应长度的死区时间。
[6]. 配置HL寄存器,从而决定开关器件是高有效还是低有效。HL=1, 高电平触发;HL=0,低电平触发。
[7]. 配置enalbe寄存器,决定PWM输出端口的状态。enable=1,正常工作;enable=0,高阻态,封锁PWM输出。
[8]. 写入start信号,从而启动PWM_IPcore开始工作,输出PWM波。
系统软件的流程如图5所示。

图5 MicroBlaze处理器软件任务流程图
至此,SVPWM调制算法就在单片FPGA芯片上得到了实现。从实现结果看,EDK实现的算法其资源占用比system generator要强不少,同样的SVPWM算法在XC3S400上可以用EDK实现,而用system generator时程序已经overloaded了,使用了XC3S500E才能完成。这里不知道是不是因为system generator生成的程序更严谨?
1.4 实验验证
使用SOPC与使用Verilog HDL编写和使用System Generator生产的代码,其实验结果没有显著区别,再次不再详细描述了。欢迎大家交流!
|