Order this document by TPUPN01/D
© MOTOROLA INC, 1997
SEMICONDUCTOR MOTOROLA PROGRAMMING NOTE
Queued Output Match TPU Function (QOM)
By Jeff Wright
1 Functional Overview
2 Detailed Description
The reference time from which the first match in a sequence is scheduled can be the immediate value
Pin response (high or low transition) when a match occurs is fully programmable. Pin response is de-termined
The function can operate in single-shot mode, in which a sequence of match outputs is generated once;
In single-shot mode and in loop mode, the event time of the last match in the queue is written back into
If adjacent queue offset values are programmed for the same pin response, duration of an output event
A detailed description of the QOM algorithm, including a state diagram, is provided for reference at the
3 Function Code Size
41 m instructions + 8 entries = 49 long words
4 Function Parameters
4.1 BIT_A
4.2 LAST_OFF_ADDR
4.3 BIT_B
An immediate TCR value
4.4 REF_ADDR
4.5 OFF_PTR
4.6 BIT_C
An immediate TCR value
4.7 LOOP_CNT
4.8 LAST_MATCH_TIM
4.9 OFFSET_N
There can be from one to fourteen queue entries, depending upon which TPU channels are assigned
Offsets in the queue are used in sequence, starting with OFFSET_1. OFFSET_1 must always be the
5 Host Interface to Function
6 Function Configuration
1. The appropriate channel priority bits are cleared, disabling the channel.
After initialization, the TPU makes an interrupt service request. If the appropriate TPU interrupt enable
To reinitialize the QOM function after completion of a sequence of matches, the CPU must first refill the
7 Performance and Use of Function
The QOM function generates complex pulse trains without CPU intervention using a sequence of output
matches. An output match causes a programmable pin response when a user-defined value is matched
by the value of a free-running counter. QOM generates multiple output matches using a queue of offset
times and pin responses in parameter RAM. Queue size can vary from application to application. Vari-ous
modes of queued operation are supported.
Entries in the QOM queue are incremental match offsets, not absolute match times. The next match
time in a sequence is calculated by adding the next queued offset to the time of the last match. If the
match is the first match in a sequence, the first offset value in the queue is added to a selectable refer-ence
time.
of the selected TCR, the time of the last match of a previous sequence, or a time contained in parameter
RAM. Using the time of the last match of a previous sequence as a reference allows a series of se-quences
to be chained together. Using a time value from parameter RAM allows a chain of output
matches to be referenced to a time derived by another TPU channel.
by the value of bit 0 in each queue entry.
in loop mode, in which a sequence of match outputs is generated a specified number of times (1 to 256),
or in continuous mode; in which the entire sequence repeats until the channel is disabled or the TPU
receives a new host service request. Linked operation allows the function to be triggered by a link from
another TPU channel. All loop modes can be used in conjunction with linked operation.
parameter RAM for the CPU to access. Three host service states allow the function to be initiated with
the output pin high, low, or with no change in state.
can effectively be extended beyond the normal $8000 TCR-count limit imposed by the TPU greater-than-
or-equal-to comparator.
end of this document.
Total TPU function code size determines what combination of functions can fit into a given ROM or em-ulation
memory microcode space. QOM function code size is:
This section provides detailed descriptions of function parameters stored in channel parameter RAM.
Figure 1
shows TPU parameter RAM address mapping. Figure 2
shows the parameter RAM assignment used by the function.
In the diagrams, Y = M111, where M is the value of the module mapping bit
(MM) in the system integration module configuration register (Y = $7 or $F).
Figure 1 TPU Channel Parameter RAM CPU Address Map
Figure 2 QOM Function Parameter RAM Assignment
This control bit determines which of the two TPU timer counters is used as a timebase for an output
match sequence. The timer counter is selected during the host service request states and the link state
(states 1, 2, 3, 4). When BIT_A is equal to zero, TCR1 is selected as the timebase. When BIT_A is equal
to one, TCR2 is selected.
This parameter contains the upper seven bits of the PRAM address of the last entry in the match offset
queue (for example, a value of% 0001101 indicates parameter 5 of channel 1 is the last queue entry). It
is used during the match state (state 5) to determine when the end of the queue has been reached.
This control bit and BIT_C are used during the host service and link states (states 1, 2, 3, 4) to determine
the reference time for the first match after initialization. Reference time can be:
A value in parameter RAM pointed to by REF_ADDR
The event time of the last match in the previous sequence of matches.
When the values of BIT_B and BIT_C select a value in parameter RAM as a reference time for the first
match after initialization, this parameter contains the upper seven bits of the PRAM address of the value
to be used. When an immediate TCR reference or last event reference is selected, it is unnecessary to
provide a REF_ADDR value.
This 7-bit parameter is normally used as a queue pointer. It is updated by the TPU after each match
occurs. OFF_PTR value also determines whether linked operation is selected. If OFF_PTR contains a
non-zero value during a host service state, linked operation is selected. In single-shot mode or loop
mode, OFF_PTR is overwritten by LAST_MATCH_TIM at the end of the match sequence.
This control bit and BIT_B are used during the host service and link states (states 1, 2, 3, 4) to determine
the reference time for the first match after initialization. Reference time can be:
A value in parameter RAM pointed to by REF_ADDR
The event time of the last match in the previous sequence of matches.
This parameter is used as a counter during loop mode operation. The value in LOOP_CNT determines
how many times the queued match sequence is repeated. LOOP_CNT is initialized by the CPU and
decremented toward zero by the TPU. When LOOP_CNT reaches $00 after decrementing, the function
stops and LOOP_CNT is overwritten by LAST_MATCH_TIM. If LOOP_CNT is initialized to $00, the
function loops 256 times.
This parameter stores the time of the last match event in a sequence. The TPU stores the value after
completion of a match sequence during single-shot mode or loop mode operation. OFF_PTR,
LOOP_CNT and BIT_C are overwritten by the LAST_MATCH_TIM value. LAST_MATCH_TIM is writ-ten
after the last match has occurred but before the TPU requests interrupt service from the CPU.
These parameters form the match offset queue. The 15 upper bits of each parameter contain a shifted
offset. The offset value is shifted right once before being used. This means that the maximum offset
from a previous match time or reference time is $7FFF TCR counts. Bit 0 of the offset parameter deter-mines
whether a pin goes high or low as a result of a match event. When bit 0 is equal to zero, the pin
goes low; when it is equal to one, the pin goes high. To program a pin to go high $1000 TCR counts
after the previous match, for example, the CPU must store a value of $2001 in the appropriate
OFFSET_N parameter.
to the QOM function. When channels 0 to 13 are used, the maximum number of entries is four; when
channels 14 and 15 are used, the maximum number of entries is normally six. Table length is deter-mined
by the value of LAST_OFF_ADDR, which points to the last queue entry. There is one special
case Ñ when channel 15 is not being used, the channel 14 LAST_OFF_ADDR pointer can be set to
point into channel 15 PRAM, providing up to 14 table queue entries.
third parameter in QOM channel parameter RAM.
This section provides information concerning the TPU host interface to the QOM function. Figure 3 is a
TPU address map. Detailed TPU register diagrams follow the figure. In the diagrams, Y = M111, where
M is the value of the module mapping bit (MM) in the system integration module configuration register
(Y = $7 or $F).
Figure 3 TPU Address Map
The CPU configures the QOM function as follows.
2. The QOM function number is written to the channel function select bits.
3. BIT_A, BIT_B, BIT_C, LAST_OFF_ADDR, REF_ADDR (if required), OFF_PTR, LOOP_CNT
and queue values OFFSET_1 through OFFSET_N are written to channel parameter RAM.
4. The host sequence bits are written, selecting the desired mode of operation.
5. An HSR is issued to initialize the function and set the channel pin to the desired initial output
state.
6. The channel priority bits are written to enable the function and assign channel priority.
7. The TPU executes the selected initialization state.
bit is set, the CPU recognizes and services the request. In single shot and loop modes, another interrupt
service request is made after completion of the match sequence.
match table with new values, then reinitialize LOOP_CNT, OFF_PTR and BIT_C. LAST_OFF_ADDR
must be changed if the new queue is a different size from the last. Finally the CPU must issue the ap-propriate
HSR.
7.1 Performance
Like all TPU functions, QOM function performance in an application is to some extent dependent upon
the service time (latency) of other active TPU channels. This is due to the operational nature of the
scheduler. When a single QOM channel is in use and no other TPU channels are active, the minimum
time between successive matches is 36 CPU clock cycles in single shot and continuous modes and 44
CPU clocks in loop mode. When more TPU channels are active, performance decreases. However,
worst-case latency in any TPU application can be closely estimated. To analyze the performance of an
application that appears to approach the limits of the TPU, use the guidelines given in the TPU refer-ence
manual and the information in the QOM state timing table below.
State Number | Name | Max. CPU Clock Cycles | RAM Accesses by TPU |
S1 | QOM_HI Linked operation Normal modes | 12 48 | 2 7 |
S2 | QOM_LO Linked operation Normal modes | 14 50 | 2 7 |
S3 | QOM_NC Linked operation Normal modes | 14 50 | 2 7 |
S4 | QOM_LNK | 36 | 6 |
S5 | QOM_M Single Shot Loop Continuous | 22 30 22 | 4 4 4 |
7.2 Using QOM for Pulse-Width Modulation
7.3 Initialization to First Match Delay
7.4 Linked Operation
7.5 Changing Mode
7.6 Using the REF_ADDR Parameter
8 Queued Output Match Examples
8.1 Example A
8.1.2 Initialization
OFFSET_1 = $500
REF_TIME
OFFSET_2
HSR %11
10
8.1.3 Output Waveform
8.2.1 Initialization
OFFSET_1 = $400, OFFSET_2 = $7FFF, OFFSET_3 = ($ E000 Ð $7FFF) = $6001
Table 3 QOM Channel Parameter RAM
QOM EX A TIM
$500 TCR2 CLOCKS
HSR %10, LOOP_CNT = 2 MATCH MATCH MATCH,
OFFSET_1 OFFSET_2 OFFSET_1 OFFSET_2 OFFSET_3
QOM EX B TIM
OFF-SET_3
11
8.3 Example C
8.3.2 Initialization
OFFSET_1 = $1000, OFFSET_2 = $280, OFFSET_3 = $3000, REF_ADDR = $62
Table 4 QOM Channel Parameter RAM
HSR %11 REF_TIME
QOM EX C TIM
12
8.4 Example D
8.4.2 Initialization
OFFSET_1 = $2000, OFFSET_2 = $5100
Table 5 QOM Channel Parameter RAM
HSR %10
8.5 Example E
8.5.2 Initialization
OFFSET_1 = $500, OFFSET_2 = $7FFF, OFFSET_3 = $7FFF, OFFSET_4 = $5002
Table 6 QOM Channel Parameter RAM
HSR %01 LINK RECEIVED
MATCH MATCH MATCH MATCH, MATCH TIME -> $YFFF42,
OFFSET_1
QOM EX E TIM
14
8.6 Example F
8.6.2 Initialization
OFFSET_1, OFFSET_5, OFFSET_9, OFFSET_10, OFFSET_11, OFFSET_12, OFFSET_13 = $0100
8.6.3 Output Waveform
Table 7 QOM Channel Parameter RAM
OFFSET_1
OFFSET_3
OFFSET_6
OFFSET_7
OFFSET_10
OFFSET_11
OFFSET_12
OFFSET_1
TABLE
QOM EX F TIM
8.7 Example G
8.7.2 Initialization
OFFSET_1, OFFSET_3, OFFSET_4 = $0200
8.7.3 PRAM Content After Completion of First Sequence
OFFSET_1, OFFSET_3, OFFSET_4 = $0200
8.7.4 Reload Queue
Table 8 QOM Channel Parameter RAM
Table 9 QOM Channel Parameter RAM
OFFSET_1', OFFSET_4' = $0600
8.7.5 Output Waveform
Table 10 QOM Channel Parameter RAM
HSR %10
MATCH MATCH MATCH
OFF-OFFSET_4'
HSR %01 MATCH, MATCH TIME ->$ YFFF42, IRQ TO CPU
SET_3'
17
9 Queued Output Match Algorithm
The queued output match function consists of five states, which are described below. In the state de-scriptions,
9.1 STATE1 ÑQOM_HI
The channel pin is configured as an output
9.2 STATE2 ÑQOM_LO
9.3 STATE3 Ñ QOM_NC
9.4 STATE4 Ñ QOM_LNK
BIT_A is tested to determine the timebase for the match sequence
9.5 STATE5 Ñ QOM_M
9.6 Single-Shot Mode
9.7 Loop Mode
9.8 Continuous Mode
Figure 6 QOM Function State Flow Diagram
KEY: HSR1, HSR0, M/ TSR, LSR, PIN, FLAG0 = %XXXXXX
S1 QOM_HI
S5 QOM_M
HSR %11 FROM ANY STATE
LSR = 1 FLAG0 = 1 (OFF_PTR ¹ 0) LSR = 1 FLAG0 = 1 (OFF_PTR ¹ 0)
MATCH
%11XXXX
S2 QOM_LO
HSR %01 FROM ANY STATE
S4 QOM_LNK
%0010XX
QOM STATE
The QOM function can be used to generate a pulse-width modulated output in systems that do not have
a dedicated TPU PWM function. A PWM output is generated using continuous mode and two match
offsets. One offset is configured to generate a rising edge, and the other is configured to generate a
falling edge. The offset that generates the rising edge is the low-time parameter and the offset that gen-erates
the falling edge is the high-time parameter. Modulation is achieved by varying the offset values
in the queue. Example D shows PWM setup and output. 100% and 0% duty cycles are easily obtained
by configuring both offsets to generate either a rising edge (100% duty cycle) or a falling edge (0%).
When an immediate TCR value is used as a reference for the first queued match time, there is a delay
between the time that the channel pin is initialized and the time that the TCR is read. This delay is
caused by TPU code execution during states 1 and 2. The delay causes the period between pin initial-ization
and the output caused by the first match event to be longer than the period specified by the offset
value in the first queue entry. The additional time is equivalent to 16 CPU clocks when TCR1 is the time
base and 18 CPU clocks when TCR2 is the time base. If the duration of the initial pin state is critical, it
may be necessary to take this additional time into account when the first offset value is specified.
During linked operation, if an additional link is received after the function has started scheduling match-es,
state 5 (QOM_LNK) is re-executed. Executing state 5 again causes OFF_PTR to be reset to the
start of the queue, and thus restarts the match sequence. When this happens, any pending match is
replaced by a new scheduled match that is OFFSET_1 counts from the last match event. If an additional
link is received while a loop is executing, the sequence repeats, but LOOP_CNT is not reset to the initial
value. When a complete match sequence has been executed and the function has stopped, additional
link requests are ignored.
The host sequence bits are used to select QOM function operating mode. Change host sequence bit
values only when the function is stopped or disabled (channel priority bits =% 00). Disabling the channel
before changing mode avoids conditions that cause indeterminate operation, such as selecting loop
mode without initializing the LOOP_CNT parameter.
Although the examples in this note that use a reference time pointed to by REF_ADDR have reference
times that occur before the HSR or link that initiates the function, this need not be the case. A first match
is scheduled correctly when the HSR or link occurs before the reference time, as shown in Figure 4.
Figure 4 Scheduling of First Match When HSR Occurs Before Reference Time
When (REF_TIME + OFFSET_1) is outside the range {Current TCR to Current TCR + $8000}, an immediate
match occurs. This is due to the nature of the TPU greater-than-or-equal-to comparator. In Figure 5,
two matches are referenced to REF_TIME. The first match occurs immediately, but the second
is correctly referenced to the time (REF_TIME + OFFSET_1).
Figure 5 Scheduling An Immediate Match
7.7 Long Match Times
The QOM function can produce long apparent match times by using two or more queue entries pro-grammed
for the same pin response. This technique can extend a pin state change well beyond the
normal limit of $8000 TCR counts. Because very short match times can have an adverse effect on over-all
TPU performance, it is best to split a long match time into even segments rather than following a very
long segment with a very short segment. For example, if a total match time of $8100 counts is required,
use two $4080-count match times rather than one match time of $7FFF counts and another of $101
counts.
The QOM function is capable of generating complex output waveforms. The following examples give
an indication of the capabilities of the function. Each example includes a description of the example, a
diagram of the initial parameter RAM content, initial control bit settings, and a diagram of the output
waveform. Unless otherwise noted, all examples use TPU channel 4. The examples are simplified to
illustrate certain features of the function Ñ long match times are not split into even segments, and the
interrupt service request that is always generated after host and link states is not shown.
8.1.1 Description
Single-shot mode. Generates a single falling edge with no forced start condition and with a delay of
$500 TCR2 counts from an immediate reference.
Load parameter RAM as shown. Write HSQ =% 00, then issue HSR =% 01 to initialize and start function.
Table 2 QOM Channel Parameter RAM
15 8 0
$YFFF40 X X X X X X X0 0 1 0 0 0 1 0 1
$YFFF42 X X X X X X X X0 0 0 0 0 0 0 0
$YFFF44 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0OFFSET_1
$YFFF46 X X X X X X X X X X X X X X X X
$YFFF48 X X X X X X X X X X X X X X X X
$YFFF4A X X X X X X X X X X X X X X X X
2ND MATCH AT TIME: REF_TIME + OFFSET_1+
INITIALIZE FUNCTION AT TIME TCR = X Ð IMMEDIATE MATCH BECAUSE
X+$ 8000 < (REF_TIME + OFFSET_1) £ X
QOM EX 2 TIM
10
Page 11
12
TPU Programming Library MOTOROLA
TPUPN01/ D 11
8.2 Example B
Loop mode. Generates two active-high pulses with a duration of $E000 TCR1 clocks, separated by a
$400 TCR1 clock delay. Starts $400 clocks after an immediate reference. Uses two consecutive queue
entries programmed for the same pin response to produce a match time greater than $8000 TCR
clocks.
Load parameter RAM as shown. Write HSQ = %01, then issue HSR = %10 to initialize and start func-tion.
8.2.2 Output Waveform
15 8 0
$YFFF40 X X X X X X X0 0 1 0 0 1 0 0 0
$YFFF42 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
$YFFF44 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1OFFSET_1
$YFFF46 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1OFFSET_2
$YFFF48 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0OFFSET_3
$YFFF4A X X X X X X X X X X X X X X X X
HSR %01 MATCH, MATCH TIME -> $YFFF42,
IRQ TO CPU
LOOP_CNT = 1
MATCH MATCH MATCH, LOOP_CNT = 0,
MATCH TIME -> $YFFF42, IRQ TO CPU
11
Page 12
13
MOTOROLA TPU Programming Library
12 TPUPN01/ D
8.3.1 Description
Single-shot mode. Generates three edges (low, high, low) from a high start. Referenced to a time con-tained
in parameter 2 of channel 6. First edge occurs $1000 TCR1 clocks after reference, second edge
occurs $280 clocks after the first, and the third edge occurs $3000 clocks after the second.
Load parameter RAM as shown. Write HSQ = %00, then issue HSR = %11 to initialize and start func-tion.
8.3.3 Output Waveform
15 8 0
$YFFF40 0 1 1 0 0 0 1 1 0 1 0 0 1 0 0 0
$YFFF42 X X X X X X X X0 0 0 0 0 0 0 0
$YFFF44 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0OFFSET_1
$YFFF46 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1OFFSET_2
$YFFF48 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0OFFSET_3
$YFFF4A X X X X X X X X X X X X X X X X
OFFSET_1 OFFSET_2 OFFSET_3
MATCH MATCH MATCH, MATCH TIME ->
$YFFF42, IRQ TO CPU
12
Page 13
14
TPU Programming Library MOTOROLA
TPUPN01/ D 13
8.4.1 Description
Continuous mode. Generates active-high pulses with a high time of $5100 TCR2 counts separated by
a low time of $2000 counts. Can effectively generate a PWM waveform if the offsets are varied.
Load parameter RAM as shown. Write HSQ = %1X, then issue HSR = %10 to initialize and start func-tion.
8.4.3 Output Waveform
15 8 0
$YFFF40 X X X X X X X0 0 1 0 0 0 1 1 1
$YFFF42 X X X X X X X X0 0 0 0 0 0 0 0
$YFFF44 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1OFFSET_1
$YFFF46 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0OFFSET_2
$YFFF48 X X X X X X X X X X X X X X X X
$YFFF4A X X X X X X X X X X X X X X X X
OFFSET_1 OFFSET_2 OFFSET_1 OFFSET_2 OFFSET_1 OFFSET_2 ETC
MATCH MATCH MATCH MATCH MATCH MATCH
QOM EX D TIM
13
13
Page 14
15
MOTOROLA TPU Programming Library
14 TPUPN01/ D
8.5.1 Description
Linked single-shot operation. Generates a single long pulse of $15000 TCR1 counts duration, $500
counts after a reference time contained in parameter 2 of channel 15. Initial pin condition remains the
same as a previous condition. Uses three consecutive queue entries programmed for the same pin re-sponse
to produce a match time greater than $8000 TCR clocks.
Load parameter RAM as shown. Write HSQ = %00, then issue HSR = %01 to initialize and start func-tion.
8.5.3 Output Waveform
15 8 0
$YFFF40 1 1 1 1 0 0 1 1 0 1 0 0 1 0 1 0
$YFFF42 X X X X X X X X1X X X X X X0
$YFFF44 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1OFFSET_1
$YFFF46 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1OFFSET_2
$YFFF48 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1OFFSET_3
$YFFF4A 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0OFFSET_4
REF_TIME
IRQ TO CPU
OFFSET_2 OFFSET_3 OFFSET_4
14
Page 15
16
TPU Programming Library MOTOROLA
TPUPN01/ D 15
8.6.1 Description
Continuous mode. Shows special case where channel 15 is not used and channel 14
LAST_OFF_ADDR pointer points into channel 15 PRAM. The maximum number of edges possible (14
plus start condition) is shown. TCR1 is used as timebase.
Load parameter RAM as shown below. Initialize function with HSQ = %1X, then issue HSR = %11.
OFFSET_2, OFFSET_4, OFFSET_6, OFFSET_7, OFFSET_8, OFFSET_14 = $0200
OFFSET_3 = $0300
15 8 0
$YFFFE0 X X X X X X X0 1 1 1 1 1 1 1 0
$YFFFE2 X X X X X X X X0 0 0 0 0 0 0 0
$YFFFE4 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0OFFSET_1
$YFFFE6 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1OFFSET_2
$YFFFE8 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0OFFSET_3
$YFFFEA 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1OFFSET_4
$YFFFEC 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0OFFSET_5
$YFFFEE 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1OFFSET_6
$YFFFF0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0OFFSET_7
$YFFFF2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1OFFSET_8
$YFFFF4 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0OFFSET_9
$YFFFF6 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1OFFSET_10
$YFFFF8 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0OFFSET_11
$YFFFFA 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1OFFSET_12
$YFFFFC 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0OFFSET_13
$YFFFFE 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1OFFSET_14
HSR %11
OFFSET_2
OFFSET_4
OFFSET_5
OFFSET_8
OFFSET_9
OFFSET_13
OFFSET_14
OFFSET_2
OFFSET_3
OFFSET_4
OFFSET_5
RESET
TABLE POINTER RESET
POINTER
15
15
Page 16
17
MOTOROLA TPU Programming Library
16 TPUPN01/ D
8.7.1 Description
Single-shot mode. Generates four active-high pulses of varying width. Uses TCR2 as timebase. Shows
how the CPU can reload the queue to generate edges that are time-referenced to the previous se-quence
of matches. After the edge specified by OFFSET_4 has been generated, LAST_MATCH_TIM
is written, the TPU requests interrupt service, and the function stops. The CPU reloads parameter RAM
Ñ offset values in the queue are changed, LOOP_CNT and OFF_PTR are reinitialized, and BIT_C is
set Ñ then issues HSR %01 to restart the function. The function is reconfigured, but pin state does not
change, and the first match in the new sequence is referenced to the time of the last match
(LAST_MATCH_TIM). The second sequence of match outputs flows smoothly from the first Ñ if the
CPU continues the process, an unbroken pulse train can be maintained.
Load parameter RAM as shown below. Initialize function with HSQ = %00, then issue HSR = %10.
OFFSET_2 = $0600
LOOP_CNT, OFF_PTR, and BIT_C have been overwritten by the LAST_MATCH_TIM value.
OFFSET_2 = $0600
Load parameter RAM as shown below. Initialize function with HSQ = %00, then issue HSR = %01.
15 8 0
$YFFF40 X X X X X X X0 0 1 0 0 1 0 1 1
$YFFF42 X X X X X X X X0 0 0 0 0 0 0 0
$YFFF44 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1OFFSET_1
$YFFF46 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0OFFSET_2
$YFFF48 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1OFFSET_3
$YFFF4A 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0OFFSET_4
15 8 0
$YFFF40 X X X X X X X0 0 1 0 0 1 0 1 1
$YFFF42 LAST_MATCH_TIM
$YFFF44 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1OFFSET_1
$YFFF46 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0OFFSET_2
$YFFF48 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1OFFSET_3
$YFFF4A 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0OFFSET_4
16
16
Page 17
18
TPU Programming Library MOTOROLA
TPUPN01/ D 17
OFFSET_2' = $0700
OFFSET_3' = $0200
15 8 0
$YFFF40 X X X X X X X0 0 1 0 0 1 0 1 1
$YFFF42 X X X X X X X X0 0 0 0 0 0 0 1
$YFFF44 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1OFFSET_1'
$YFFF46 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0OFFSET_2'
$YFFF48 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1OFFSET_3'
$YFFF4A 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0OFFSET_4'
OFFSET_1 OFFSET_2 OFFSET_3 OFFSET_4 OFFSET_1' OFFSET_2'
MATCH MATCH MATCH
MATCH, MATCH TIME ->$ YFFF42,
IRQ TO CPU
QOM EX G TIM
17
Page 18
19
MOTOROLA TPU Programming Library
18 TPUPN01/ D
The following description is provided as a guide only, to aid understanding of the function. The exact
sequence of operations in microcode may be different to optimize speed and code size. TPU microcode
source listings for all functions in the TPU function library can be downloaded from the Motorola Free-ware
bulletin board. Refer to Using the TPU Function Library and TPU Emulation Mode (TPUPN00/ D)
for detailed instructions on downloading and compiling microcode.
the phrases 'last match time' and 'last event time' refer to two different things. Match time is
the value that is loaded into the match register. Event time is the value that is captured when a match
occurs. In almost all cases, these values are the same. However, when a match register update results
in an immediate match, the values differ. For example, if the current TCR value is $6000 and $5E00 is
written into the match register, an immediate match occurs. Subsequently, 'last match time' is $5E00,
but 'last event time' is $6000. Figure 6, which follows the state descriptions, is a state flow diagram of
the QOM function. For clarity, reference is made to internal channel flags 0 and 1 in the following de-scription.
These are internal TPU control bits that are not available to the user.
This state, entered as a result of HSR 11, performs initialization of the QOM function.
The pin state set high.
BIT_C is tested
If BIT_C = 0
An immediate match is generated and cleared to cancel any pending match
Flag1 is cleared
If BIT_C = 1
Flag1 is set
BIT_A is tested to determine the timebase for the match sequence
If BIT_A = 0
TCR1 is selected
If BIT_A = 1
TCR2 is selected
OFF_PTR is tested
If OFF_PTR ¹ 0
Link mode is selected
Channel flag0 is set
The TPU requests interrupt service from the CPU
The state ends
If OFF_PTR = 0
Channel flag0 is cleared
The first match is scheduled
OFF_PTR is initialized to point to OFFSET_1 (this overwrites BIT_C)
BIT_B and flag1 (BIT_C) are tested to determine reference time
%00 = Immediate TCR
%X1 = Last Event Time
%10 = Value pointed to by REF_ADDR
OFFSET_1 is right-shifted
The selected reference time is added to the shifted offset value
The sum is written to the match register
The value of OFFSET_1 bit0 is used to determine pin response to the scheduled match
The TPU requests interrupt service from the CPU
The state ends.
18
18
Page 19
20
TPU Programming Library MOTOROLA
TPUPN01/ D 19
This state is entered as a result of HSR 10. It is identical to STATE1 except that initial pin state is low.
This state is entered as a result of HSR 01. It is identical to STATE1 except that initial pin state is un-changed
from the previous state. Because STATE3 continues a previously-defined initial pin state, HSR
11 should not be used to initiate QOM operation unless it has been preceded by at least one sequence
initiated by either HSR 01 or HSR 10.
STATE4 is entered in response to a link request from another TPU channel as long as channel flag0 is
set.
If BIT_A = 0
TCR1 is selected
If BIT_A = 1
TCR2 is selected
The first match is scheduled
OFF_PTR is initialized to point to OFFSET_1 (this overwrites BIT_C)
BIT_B and flag1 (BIT_C) are tested to determine reference time
%00 = Immediate TCR
%X1 = Last Event Time
%10 = Value pointed to by REF_ADDR
OFFSET_1 is right-shifted one place
The selected reference time is added to the shifted offset value
The sum is written to the match register
The value of OFFSET_1 bit0 is used to determine pin response to the scheduled match
The TPU requests interrupt service from the CPU
The state ends.
This state is entered as a result of a match event on the QOM channel. Operation differs depending on
the mode selected:
Queue pointer OFF_PTR is compared to LAST_OFF_ADDR
If OFF_PTR = LAST_OFF_ADDR
The last event time is stored in LAST_MATCH_TIM, overwriting LOOP_CNT and OFF_PTR.
The TPU requests interrupt service from the CPU
The state ends.
If OFF_PTR ¹ LAST_OFF_ADDR
OFF_PTR is incremented by 2 (word access)
The incremented OFF_PTR value is used to obtain the next match offset from the table
A new match is scheduled
The new offset value is right-shifted one place
The shifted offset value is added to the last match time
The sum is written to the match register
Bit0 of the offset parameter is used to determine pin response to the match
The state ends.
19
19
Page 20
21
MOTOROLA TPU Programming Library
20 TPUPN01/ D
Queue pointer OFF_PTR is compared to LAST_OFF_ADDR
If OFF_PTR = LAST_OFF_ADDR
OFF_PTR is reinitialized to point to OFFSET_1
LOOP_CNT is decremented.
LOOP_CNT is tested
If LOOP_CNT = 0
The last event time is stored in LAST_MATCH_TIM, overwriting LOOP_CNT and
OFF_PTR.
The TPU requests interrupt service from the CPU
The state ends.
If LOOP_CNT ¹ 0
A new match is scheduled
The OFFSET_1 value is right-shifted one place
The shifted offset value is added to the last match time
The sum is written to the match register
Bit0 of the OFFSET_1 parameter is used to determine pin response to the match
The state ends.
If OFF_PTR ¹ LAST_OFF_ADDR
OFF_PTR is incremented by 2 (word access)
The incremented OFF_PTR value is used to obtain the next match offset from the queue
A new match is scheduled
The new offset value is right-shifted
The shifted offset value is added to the previous match time
The sum of match time and shifted offset value is written to the match register
Bit0 of the offset parameter is used to determine pin response to the scheduled match
The state ends.
Queue pointer OFF_PTR is compared to LAST_OFF_ADDR
If OFF_PTR = LAST_OFF_ADDR
OFF_PTR is reinitialized to point to OFFSET_1
A new match is scheduled
The OFFSET_1 value is right-shifted one place
The shifted offset value is added to the last match time
The sum is written to the match register
Bit0 of the OFFSET_1 parameter is used to determine pin response to the scheduled match
The state ends.
If OFF_PTR ¹ LAST_OFF_ADDR
OFF_PTR is incremented by 2 (word access)
The incremented OFF_PTR value is used to obtain the next match offset from the queue
A new match is scheduled
The new offset value is right-shifted
The shifted offset value is added to the previous match time
The sum of match time and shifted offset value is written to the match register
Bit0 of the offset parameter is used to determine pin response to the scheduled match
The state ends.
20
20
Page 21
22
TPU Programming Library MOTOROLA
TPUPN01/ D 21
LSR = 1 FLAG0 = 1
FROM ANY STATE
INITIALIZE FUNCTION WITH PIN HIGH
UPDATE/ CHECK POINTERS, SCHEDULE NEXT MATCH
LSR = 1 FLAG0 = 1 (OFF_PTR ¹ 0)
MATCH
MATCH MATCH
HSR %10 FROM ANY STATE
INITIALIZE FUNCTION WITH PIN LOW %10XXXX
S3 QOM_NC
INITIALIZE FUNCTION NO PIN CHANGE
%01XXXX
SCHEDULE FIRST MATCH %00X1X1
MATCH