一种伺服驱动器的控制方法及装置的制造方法_3

文档序号:9546392阅读:来源:国知局
[0076]第二输入寄存器DW_RAM[x] (x = 0,1,...,η)即为本次数据更新周期中本次更新数据。
[0077]步骤S502:若所述DSP端针对所述第二输入寄存器执行完毕写操作,将所述第二输入寄存器中的数据对应转存至第二中间寄存器。
[0078]然后,将第二输入寄存器DW_RAM[x] (x = 0,1,...,η)中的本次更新数据,对应存储至第二中间寄存器F2_RAM[x] (X = 0,1,...,n)中。具体而言为,将DW_RAM[0]中的数据存储至F2_RAM[0]中,将DW_RAM[1]中的数据存储至F2_RAM[1]中,以此类推,将DW_RAM[n]中的数据存储至F2_RAM[n]中。
[0079]步骤S503:在太网协议栈端针对第二输出寄存器执行完成读操作之后,允许DSP端针对输出寄存器执行读操作。
[0080]下面具体介绍第一端读取第二端传输数据的具体过程,第一端需要在DPRAM中读取数据。参见图6,本申请提供了一种伺服驱动器的控制方法,具体包括以下步骤:
[0081]步骤S601:在第一端针对输出寄存器执行读数据操作过程中,持续判断所述第一端针对所述输出寄存器是否执行完毕读操作。
[0082]由图3所示的内容可知,FPGA可以将第二端向第一端的传输数据存储至中间寄存器中。即,在中间寄存器中存储有本次更新数据。
[0083]由于输出寄存器可能存储有上一数据更新周期的上次更新数据,为了保证上次更新数据不被破坏,因此将本次更新数据转存至输出寄存器之前,第一端可以针对输出寄存器进行读操作,以便读取输出寄存器中的上次更新数据。
[0084]步骤S602:在第一端针对所述输出寄存器执行完毕读操作之后,将中间寄存器的更新数据转存至输出寄存器。
[0085]因此FPGA在确定第一端已经对输出寄存器执行完毕读操作之后,再将中间寄存器的本次更新数据转存至输出寄存器中,以便第一端可以对输出寄存器本次更新数据进行读操作。
[0086]步骤S603:在第一端对输出寄存器进行读操作完毕之后,允许第二端针对输入寄存器执行写操作。
[0087]在第一端针对输出寄存器执行完毕读操作之后,可以允许第二端针对输入寄存器进行写操作。具体写操作的执行过程可参见图3所示的过程。在此不再赘述。
[0088]针对第二端读取第一端传输数据的过程,与第一端读取第二端传输数据的过程一致,在此不再赘述。
[0089]由以上内容可以看出,本申请具有以下有益效果:
[0090]由于第一端与第二端的数据更新周期不一致,所以,导致一端在读数据时候另一端在写数据,从而导致数据不同步的问题。因此,本申请在第一端进行读操作时候,禁止第二端进行写操作,只有第一端进行读操作完毕之后,才允许第二端进行写操作,从而保证两者数据的完整性。
[0091]在第一端为以太网协议栈端、第二端为DSP端的情况下,图6所示的执行过程,具体详见图7:
[0092]步骤S701:在以太网协议栈端针对第一输出寄存器执行读数据操作过程中,持续判断所述以太网协议栈端针对所述第一输出寄存器是否执行完毕读操作。
[0093]以太网协议栈端针对第一输出寄存器PR_RAM[x] (x = 0,1,...,m)执行写操作,在第一输入寄存器的所有数据单元PR_RAM[0]、PR_RAM[1]……PR_RAM[m]均已经读完毕之后,则说明以太网协议栈端对第一输入寄存器已经执行完毕读操作。
[0094]步骤S702:在以太网协议栈端针对所述输出寄存器执行完毕读操作之后,将中间寄存器的更新数据转存至输出寄存器。
[0095]然后,将第一中间寄存器Fl_RAM[x] (x = 0,1,...,m)中的本次更新数据转存至第一输出寄存器PR_RAM[x] (X = 0,1,...,m)中。具体而言为,将F1_RAM[0]中的数据存储至PR_RAM[0]中,将F1_RAM[1]中的数据存储至PR_RAM[1]中,以此类推,将Fl_RAM[m]中的数据存储至PR_RAM[m]中。
[0096]步骤S703:在以太网协议栈端针对第一输出寄存器执行完成读操作之后,允许DSP端针对输入寄存器执行写操作。
[0097]在第一端为DSP端、第二端为以太网协议栈端的情况下,图6所示的执行过程,具体详见图8:
[0098]步骤S801:在DSP端针对第二输出寄存器执行读数据操作过程中,持续判断所述以太网协议栈端针对所述第二输出寄存器是否执行完毕读操作。
[0099]在DSP端对第二输出寄存器DR_RAM[x] (x = 0,1,...,η)执行读操作时,FPGA持续判断第二输出寄存器DR_RAM[x] (X = 0,1,...,η)所有输入数据单元DR_RAM[0]、DR_RAM[1]……DR_RAM[n]是否均已经读完毕,如果读完毕,则说明DSP端针对第二输出寄存器DR_RAM[x] (x = O, I,..., η)执行读操作完毕。
[0100]步骤S802:在DSP端针对所述输出寄存器执行完毕读操作之后,将中间寄存器的更新数据转存至输出寄存器。
[0101]然后,将第二中间寄存器F2_RAM[x] (x = 0,1,...,η)中的本次更新数据,对应存储至第二输出寄存器DR_RAM[x] (X = 0,1,...,n)中。具体而言为,将F2_RAM[0]中的数据存储至DR_RAM[0]中,将F2_RAM[1]中的数据存储至DR_RAM[1]中,以此类推,将F2_RAM[n]中的数据存储至DR_RAM[n]中。
[0102]步骤S803:在DSP端针对第一输出寄存器执行完成读操作之后,允许以太网协议栈端针对输入寄存器执行写操作。
[0103]在本申请中,对于数据更新过程的读操作,数据更新周期的第一个脉冲上升沿,中间寄存器Fl_RAM[x]与F2_RAM[x]对分别对第一输出寄存器DR_RAM[x]与第二输出寄存器PR_RAM[x]的数据进行更新;对于数据更新过程的写操作,在确定写操作执行完毕之后,在第一个时钟上升沿将第一输入寄存器PW_RAM[x]与第二输入寄存器DW_RAM[x]中的数据对应存储至第一中间寄存器F1_RAM [x]与第二中间寄存器F2_RAM [x]。
[0104]由于本申请对于一次数据更新过程,先进行读操作再进行写操作,或者先进行写操作再进行读操作,而非读写操作交替进行。因此,可以避免一端在执行更新操作的过程中,另一端也在执行数据更新操作,从而导致两端的数据不同步的问题。
[0105]此外,本申请还可以提高读写效率,详细内容参见下述:
[0106]根据DSP的数据手册,DSP采用通用模式(General purpose mode)对DPRAM进行读写,其读写访问时间分别为两个时钟周期(rd2cyc = I, wr2cyc = I),具体读时序如图9a所示,写时序参见图9b所示。
[0107]如图9a和9b所示,读写时序中数据总线需要在读或者写信号有效后的一个时钟周期的上升沿输出或者读入有效的数据信号,并维持读数据信号一个时钟周期,因此针对该特点通过Verilog编写读写状态机实现DPRAM的DSP端时序控制,其DSP端读操作的状态机如图1Oa所示,DSP端写操作的
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1