OpenCores
URL https://opencores.org/ocsvn/ssbcc/ssbcc/trunk

Subversion Repositories ssbcc

[/] [ssbcc/] [trunk/] [core/] [9x8/] [peripherals/] [stepper_motor.py] - Diff between revs 9 and 10

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 9 Rev 10
Line 54... Line 54...
                                [modewidth=N_mode]                      \\
                                [modewidth=N_mode]                      \\
                                [FIFO=N_fifo]\n
                                [FIFO=N_fifo]\n
  Or:\n
  Or:\n
    PERIPHERAL stepper_motor    basename=name                           \\
    PERIPHERAL stepper_motor    basename=name                           \\
                                master=mastername                       \\
                                master=mastername                       \\
                                outcontrol=O_name                       \\
 
                                outrecord=O_name                        \\
                                outrecord=O_name                        \\
                                outrun=O_name                           \\
                                outrun=O_name                           \\
                                indone=I_name                           \\
                                indone=I_name                           \\
                                inerror=I_name                          \\
                                inerror=I_name                          \\
                                [FIFO=N_fifo]\n
                                [FIFO=N_fifo]\n
Line 72... Line 71...
                "i_stepper_error" for the input error signal.
                "i_stepper_error" for the input error signal.
    master=mastername
    master=mastername
      specifies a preceding stepper_motor peripheral to use for the internal
      specifies a preceding stepper_motor peripheral to use for the internal
      clock and to use for the accleration, rate, angle accumulator, and mode
      clock and to use for the accleration, rate, angle accumulator, and mode
      sizes
      sizes
 
      Note:  The "outcontrol" port from the master peripheral is used to queue
 
             the control words for its slaves.
    outcontrol=O_name
    outcontrol=O_name
      specifies the port used to assemble 8-bit control values into the stepper
      specifies the port used to assemble 8-bit control values into the stepper
      motor control word
      motor control word
      Note:  The name must start with "O_".
      Note:  The name must start with "O_".
    outrecord=O_name
    outrecord=O_name
Line 288... Line 289...
    Example:
    Example:
      Slave a second stepper motor controller peripheral to the preceding
      Slave a second stepper motor controller peripheral to the preceding
      periperal.\n
      periperal.\n
      PERIPHERAL        stepper_motor   basename=slave                  \\
      PERIPHERAL        stepper_motor   basename=slave                  \\
                                        master=stepper                  \\
                                        master=stepper                  \\
                                        outcontrol=O_slave_control      \\
 
                                        outrecord=O_slave_wr            \\
                                        outrecord=O_slave_wr            \\
                                        outrun=O_slave_go               \\
                                        outrun=O_slave_go               \\
                                        indone=I_slave_done             \\
                                        indone=I_slave_done             \\
                                        inerror=I_slave_error\n
                                        inerror=I_slave_error\n
      This controller will use the internal clock generated by the first
      This controller will use the internal clock generated by the first
Line 335... Line 335...
      'accelres',
      'accelres',
      'accelscale',
      'accelscale',
      'accumres',
      'accumres',
      'countwidth',
      'countwidth',
      'modewidth',
      'modewidth',
 
      'outcontrol',
      'ratemethod',
      'ratemethod',
      'rateres',
      'rateres',
      'ratescale',
      'ratescale',
    )
    )
    # Ensure the required parameters are provided.
    # Ensure the required parameters are provided.
    reqdParms = (
    reqdParms = (
      'basename',
      'basename',
      'indone',
      'indone',
      'inerror',
      'inerror',
      'outcontrol',
 
      'outrecord',
      'outrecord',
      'outrun',
      'outrun',
    )
    )
    if not hasattr(self,'master'):
    if not hasattr(self,'master'):
      reqdParms += tuple([me for me in masterExclude if me not in ('accumres','modewidth',)])
      reqdParms += tuple([me for me in masterExclude if me not in ('accumres','modewidth',)])
Line 392... Line 392...
    if self.modewidth > 0:
    if self.modewidth > 0:
      config.AddIO('o_%s_mode' % self.basename, 1, 'output', loc)
      config.AddIO('o_%s_mode' % self.basename, 1, 'output', loc)
    config.AddIO('i_%s_error'  % self.basename, 1, 'input',  loc)
    config.AddIO('i_%s_error'  % self.basename, 1, 'input',  loc)
    config.AddSignal('s__%s__done' % self.basename, 1, loc)
    config.AddSignal('s__%s__done' % self.basename, 1, loc)
    self.ix_outcontrol = config.NOutports()
    self.ix_outcontrol = config.NOutports()
 
    if not hasattr(self,'master'):
    config.AddOutport((self.outcontrol,
    config.AddOutport((self.outcontrol,
                       False,
                       False,
                       # empty list
                       # empty list
                      ),loc)
                      ),loc)
    self.ix_outrecord = config.NOutports()
    self.ix_outrecord = config.NOutports()
Line 439... Line 440...
    if self.modewidth == 0:
    if self.modewidth == 0:
      body = re.sub(r'@OUTMODE_BEGIN@.*?@OUTMODE_END@\n','',body,flags=re.DOTALL)
      body = re.sub(r'@OUTMODE_BEGIN@.*?@OUTMODE_END@\n','',body,flags=re.DOTALL)
    else:
    else:
      body = re.sub(r'@OUTMODE_BEGIN@\n','',body)
      body = re.sub(r'@OUTMODE_BEGIN@\n','',body)
      body = re.sub(r'@OUTMODE_END@\n','',body)
      body = re.sub(r'@OUTMODE_END@\n','',body)
 
    masterBasename = self.basename if not hasattr(self,'master') else self.master.basename
    for subpair in (
    for subpair in (
      ( r'@ACCEL_WIDTH@',               str(self.accelwidth),           ),
      ( r'@ACCEL_WIDTH@',               str(self.accelwidth),           ),
      ( r'@ACCEL_RES@',                 str(self.accelres),             ),
      ( r'@ACCEL_RES@',                 str(self.accelres),             ),
      ( r'@ACCEL_SCALE@',               str(self.accelscale),           ),
      ( r'@ACCEL_SCALE@',               str(self.accelscale),           ),
      ( r'@ACCUM_RES@',                 str(self.accumres),             ),
      ( r'@ACCUM_RES@',                 str(self.accumres),             ),
Line 467... Line 469...
      ( r'@RATE_WIDTH@',                str(self.ratewidth),            ),
      ( r'@RATE_WIDTH@',                str(self.ratewidth),            ),
      ( r'\bL__',                       'L__%s__' % self.basename,      ),
      ( r'\bL__',                       'L__%s__' % self.basename,      ),
      ( r'\bi__',                       'i_%s_' % self.basename,        ),
      ( r'\bi__',                       'i_%s_' % self.basename,        ),
      ( r'\bo__',                       'o_%s_' % self.basename,        ),
      ( r'\bo__',                       'o_%s_' % self.basename,        ),
      ( r'\bs__',                       's__%s__' % self.basename,      ),
      ( r'\bs__',                       's__%s__' % self.basename,      ),
      ( r'@S__CLK_EN@',                 's__%s__clk_en' % (self.basename if not hasattr(self,'master') else self.master.basename), ),
      ( r'@S__CLK_EN@',                 's__%s__clk_en' % masterBasename, ),
 
      ( r'@S__INPUT_CONTROL_WORD_PACKED@', 's__%s__input_control_word_packed' % masterBasename, ),
    ):
    ):
      body = re.sub(subpair[0],subpair[1],body)
      body = re.sub(subpair[0],subpair[1],body)
    body = self.GenVerilogFinal(config,body)
    body = self.GenVerilogFinal(config,body)
    fp.write(body)
    fp.write(body)
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.