仿真波形,如上面的仿真图所示,本模块已实现了所需要的功能,当将所有的输入数均设为1并且在使能load(load=0)信号的时候,所收到的速度控制数据为220-1=1048575,收到的相位控制数据为210-1=1023.而在将使能信号设为非使能状态(load=1)时,收到的数据便被锁存在指定的寄存信号中,不再接收数据了,这样就保证了我们的模块正常地处理接收数据模块和驱动模块的合理工作。
串行数据输入的过程(dload=0时)串行数据输入的结果(dload=1时)电机转速调节模块在本系统中使用了DDS原理相位累加部分用来生成控制步进电机转速控制的脉冲分配。本设计中对于步进电机的频率控制字的计算公式如下:FPGA的工作频率为24MHz,经分频计分频后为4MHz.而相位累加器的长度为N位即为2N.电机的转动采用8拍驱动,则电机的转动频率为:f=4×106×82N
c因为一个相位溢出为8拍,所以频率值乘了一个8,其中N为相位累加器的位数,c为频率控制字。通过单片机计算好控制字,而本模块的功能则是利用接收来的控制字进行累加送出驱动步进电机的驱动脉冲。
程序如下,他主要做的就是对相位累加器进行累加:process(clk6)//相位累加器variablephase:std_logic_vector(22downto0);//相位累加寄存器beginifclk6′eventandclk6=′1′thenphase(22downto0):=phase(22downto0)+invv(19downto0);cconter<=phase(22downto20);//输出计时器clkcter<=phase(19);endif;endprocess;其中,phase为相位累加器,他要做的任务只是本身不断的累加,然后将自身的高3位传给cconter计数器,溢出时便将溢出位抛弃,然后继续累加。
输出译码模块这个模块是主程序不可缺少的重要模块,他要完成的功能是将由相位累加器通过信号cconter传送到con的计数数值译码输出,以形成驱动步进电机的驱动脉冲。
定位模块定位模块所要完成的功能是通过编写程序控制FP2GA芯片从而来控制步进按照想要设定的步数来进行转动。一旦设定步数到达,那步进电机的动作也就结束了,用一个计数器来实现这一个功能,当然也就是对这个计数器在给定步数内进行不断的累加,当该计数器到达设定的步数后,便可能通过这个计数器断开模块程序的动行。使得驱动输出的停止,以求达到准确定位的目的。