![](http://datasheet.mmic.net.cn/Microchip-Technology/ENC624J600T-I-PT_datasheet_97264/ENC624J600T-I-PT_87.png)
2007 Microchip Technology Inc.
DS39599G-page 85
PIC18F2220/2320/4220/4320
8.0
8 X 8 HARDWARE MULTIPLIER
8.1
Introduction
An 8 x 8 hardware multiplier is included in the ALU of
the PIC18F2X20/4X20 devices. By making the multiply
a hardware operation, it completes in a single instruc-
tion cycle. This is an unsigned multiply that gives a
16-bit result. The result is stored into the 16-bit product
register pair (PRODH:PRODL). The multiplier does not
affect any flags in the STATUS register.
Making the 8 x 8 multiplier execute in a single-cycle
gives the following advantages:
Higher computational throughput
Reduces code size requirements for multiply
algorithms
The performance increase allows the device to be used
in applications previously reserved for Digital Signal
Processors.
Table 8-1 shows a performance comparison between
enhanced devices using the single-cycle hardware
multiply and performing the same function without the
hardware multiply.
8.2
Operation
unsigned multiply. Only one instruction is required
when one argument of the multiply is already loaded in
the WREG register.
multiply. 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
TABLE 8-1:
PERFORMANCE COMPARISON
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
Routine
Multiply Method
Program
Memory
(Words)
Cycles
(Max)
Time
@ 40 MHz
@ 10 MHz
@ 4 MHz
8 x 8 unsigned
Without hardware multiply
13
69
6.9
μs
27.6
μs
69
μs
Hardware multiply
1
100 ns
400 ns
1
μs
8 x 8 signed
Without hardware multiply
33
91
9.1
μs
36.4
μs
91
μs
Hardware multiply
6
600 ns
2.4
μs6 μs
16 x 16 unsigned
Without hardware multiply
21
242
24.2
μs
96.8
μs242 μs
Hardware multiply
28
2.8
μs11.2 μs28 μs
16 x 16 signed
Without hardware multiply
52
254
25.4
μs102.6 μs254 μs
Hardware multiply
35
40
4.0
μs
16.0
μs
40
μs