基于NiosII的多通道PWM信号测量/产生器节点设计
具体实现的流程如下:
·根据具体需要依次配置每个通道为PWM测量或者产生通道,由PWM配置控制器实现,该控制器与NiosII处理器的PWM控制器相连。
·使用一个基准地址计数器给出的循环地址信号对所有的RAM读写进行同步,该基准地址计数器给出不同延迟周期的地址计数,以修正RAM读取产生的延时。
·PWM产生:将高/低电平周期数写入预置高/低电平计数器,计数器自加器按基准地址计数器给出的修正延迟的地址读出计数并+1后重新写入计数器RAM;比较器按基准地址计数器给出的修正延迟地址计数读出预置高/低电平周期数进行比较决定输出的是高/低电平。
这种方法得到频率为:
其中为该模块的时钟频率,为预置数计数器,采用循环方式时一个周期的时间为通道数与预置数和之积;本节点中,因此,满足测速测距模块0~10KHz的设计需要;若需要更高频率,可以提高fCLK或者进行通道分组,以降低每组的Nch,占空比的精度与频率有关,频率越低,可调精度越高。
·PWM测量:是PWM产生的逆过程,测量的精度与产生的PWM信号的精度相同。每隔一个脉冲更新一次测得的周期和占空比值,因此可用于周期快速变化PWM信号的测量。
·死区控制器:仅仅对应于PWM产生部分,该模块输出的PWM信号初始间隔为1个TCLK,根据具体的需要配置相应的延时即可。
节点软件设计
上位机通过RS-485发送命令包来控制智能节点的动作,该命令包顺序由8bit标识码,8bit包长度,16bit目标节点号,16bit包编号,命令区和16bit CRC16校验码组成,NiosII处理器负责解包,校验CRC码是否正确,并且根据命令动作PWM控制器。当需要读取PWM周期和占空比测量值时,NiosII处理器还需要把从高/低电平计数保存器RAM读出的值组包发送给上位机。
NiosII处理器采用中断方式接受通过RS-485总线发来的命令包,中断处理通过状态机的方式处理每一个接收到的字节,具体功能描述如下:
·检查标识码,检查是否为智能PWM节点类型的命令包,启动状态机,并打开定时器,防止当命令包不完整时接受状态机无法回到初始状态;
·读取包长度信息,检查是否目标为本节点,是则记录包编号;
·如果标识码不是智能PWM节点类型的命令包则不对命令进行处理,是则将命令放入缓冲中待处理;
·检查CRC校验码是否正确,如正确,则将缓冲中的命令写入命令队列;如果不正确,则将错误信息写入待发送信息队列。
命令包括配置某位为PWM测量/产生,配置某位的预置数计数器,读取某位的计数保存器三类。
主循环中完成的工作是:
·检查命令队列中是否有未处理的命令并处理;
·检查待发送信息队列长度是否达到预定值,是则启动一次发送,将待发送信息打包发送给上位机。
实验结果
使用ModelSim进行仿真,配置使用了10通道作为PWM信号输出,随机赋值了给每个通道不同的周期和占空比,得到的仿真结果如图4所示。
图4 智能PWM信号产生器仿真结果图
将这10个通道与另外配置为PWM信号测量的10个通道相连接,进行周期和占空比测量,得到的高低电平周期测量结果与实际值误差限为,由此导致的频率误差为:
当取f=10KHz时,Δf≈200Hz;取f=1KHz时,Δf≈2Hz,频率越低,测量精度越高。
结语
针对于列车控制系统半实物仿真平台测速测距模块的多通道PWM信号测量/产生的要求,本文提出了一种利用NiosII软核处理器替代通讯用MCU的智能多通道PWM信号测量/产生器的设计方案,给出了利用FPGA实现多通道PWM信号测量/产生器模块的方法,并且编写了NiosII处理器的通讯控制软件。
本设计将应用在北京全路通通信信号研究设计院列控实验室的实物测控接口平台中,连接测速测距模块,将仿真端与实物端相连。除此之外,本设计还可应用在多电机控制等领域。
参考文献:
1. 徐光辉、程东旭、黄如等,基于FPGA的嵌入式开发与应用,电子工业出版社, 2006.
2. 李旭、谢运祥,PWM技术实现方法综述,电源技术应用,2005,02:40~43
pwm相关文章:pwm原理
评论