Microchip Technology MA160014 Data Sheet

Page of 560
 2010-2012 Microchip Technology Inc.
DS41412F-page 111
PIC18(L)F2X/4XK22
8.0
8 x 8 HARDWARE MULTIPLIER
8.1
Introduction
All PIC18 devices include an 8 x 8 hardware multiplier
as part of the ALU. The multiplier performs an unsigned
operation and yields a 16-bit result that is stored in the
product register pair, PRODH:PRODL. The multiplier’s
operation does not affect any flags in the STATUS
register.
Making multiplication a hardware operation allows it to
be completed in a single instruction cycle. This has the
advantages of higher computational throughput and
reduced code size for multiplication algorithms and
allows the PIC18 devices to be used in many applica-
tions previously reserved for digital signal processors.
A comparison of various hardware and software
multiply operations, along with the savings in memory
and execution time, is shown in 
8.2
Operation
 shows the instruction sequence for an 8 x 8
unsigned multiplication. Only one instruction is required
when one of the arguments is already loaded in the
WREG register.
 shows the sequence to do an 8 x 8 signed
multiplication. To account for the sign bits of the
arguments, each argument’s Most Significant bit (MSb)
is tested and the appropriate subtractions are done.
EXAMPLE 8-1:
8 x 8 UNSIGNED 
MULTIPLY ROUTINE    
EXAMPLE 8-2:
8 x 8 SIGNED MULTIPLY 
ROUTINE 
MOVF
ARG1, W
MULWF
ARG2
; ARG1 * ARG2 -> 
; PRODH:PRODL 
MOVF
ARG1, W    
MULWF
ARG2
; ARG1 * ARG2 -> 
; PRODH:PRODL 
BTFSC
ARG2, SB
; Test Sign Bit 
SUBWF
PRODH, F
; PRODH = PRODH 
;         - ARG1 
MOVF
ARG2, W
BTFSC
ARG1, SB
; Test Sign Bit 
SUBWF
PRODH, F
; PRODH = PRODH 
;         - ARG2 
TABLE 8-1:
PERFORMANCE COMPARISON FOR VARIOUS MULTIPLY OPERATIONS
Routine
Multiply Method
Program
Memory
(Words)
Cycles
(Max)
Time
@ 64 MHz @ 40 MHz @ 10 MHz
@ 4 MHz
8 x 8 unsigned
Without hardware multiply
13
69
4.3 
s
6.9 
s
27.6 
s
69 
s
Hardware multiply
1
1
62.5 ns
100 ns
400 ns
s
8 x 8 signed
Without hardware multiply
33
91
5.7 
s
9.1 
s
36.4 
s
91 
s
Hardware multiply
6
6
375 ns
600 ns
2.4 
s
s
16 x 16 unsigned
Without hardware multiply
21
242
15.1 
s
24.2 
s
96.8 
s
242 
s
Hardware multiply
28
28
1.8 
s
2.8 
s
11.2 
s
28 
s
16 x 16 signed
Without hardware multiply
52
254
15.9 
s
25.4 
s
102.6 
s
254 
s
Hardware multiply
35
40
2.5 
s
4.0 
s
16.0 
s
40 
s