8. Hardware Multiplier

 

8.1    기본사항

 

하드웨어 곱셈기는 MSP430의 CPU와는 별도로 동작합니다. 계산은 부호 있는 곱셈, 부호 없는 곱셈, 부호 있는 곱셈 accumulate , 부호 있는 곱셈 accumulate를 이용합니다. 연산 단위는 16*16bit ,16*8bit , 8*16bit , 8*8 bit가 수행 될 수 있습니다.

 

그림 8 - 1

8.2    Hardware Multiplier 사용

 

하드웨어 곱셈기를 사용하기 위해 2개의 16bit 연산 레지스터(operand register) 가 존재하며 그것은 OP1, OP2 이다. 3개의 연산결과를 출력하는 레지스터 RESLO,RESHI,SUMEXT 가 있다. RESLO는 결과 word의 low값, RESHI는 결과 word의 high 값, SUMEXT는 확장된 결과값을 나타낸다. 결과는 OP2에 쓰고 난후 다음 명령에서 읽어 질수 있다. 그러나 간접 어드레스 지정 모드에서는 제외된다.

OP1은 MPY,MPYS,MAC,MACS 의 어드레스를 나타낸다. 각각의 어드레스는 그림8-2와 같다.

그림 8 - 2

OP1에 어드레스를 선택하는 것은 명령형식을 선택 하지만 명령을 처리 하지는 않습니다. OP2에 값을 넣는 것으로 연산을 시작합니다. 결과는 RESLO,RESHI,SUMEXT에 저장 됩니다. OP1의 값이 계속 연산에 사용된다면 다시 OP1에 값을 넣을 필요는 없습니다.

RESHI 값은 그림 8-3과 같이 넣어 질 수 있다.

그림 8 - 3

SUMEXT는 그림 8-4와 같이 나타난다.

그림 8 - 4

 

곱셈기는 MACS 모드에서는 underflow 또는 overflow 를 검사하지 않습니다.

정수의 범위는 0 – 0x7FFFFFFF 까지 이며 0x80000000 - 0xFFFFFFFF 까지 입니다. SUMEXT는 오버 플로우 일 때 0xFFFF를 표시합니다. 곱셈기 사용 중 에는 인터럽트를 사용하지 마십시오

 

; 16x16 Unsigned Multiply

MOV #01234h,&MPY ; Load first operand

MOV #05678h,&OP2 ; Load second operand

; ... ; Process results

 

; 8x8 Unsigned Multiply. Absolute addressing.

MOV.B #012h,&0130h ; Load first operand

MOV.B #034h,&0138h ; Load 2nd operand

; ... ; Process results

 

; 16x16 Signed Multiply

MOV #01234h,&MPYS ; Load first operand

MOV #05678h,&OP2 ; Load 2nd operand

; ... ; Process results

 

; 8x8 Signed Multiply. Absolute addressing.

MOV.B #012h,&0132h ; Load first operand

SXT &MPYS ; Sign extend first operand

MOV.B #034h,&0138h ; Load 2nd operand

SXT &OP2 ; Sign extend 2nd operand

; (triggers 2nd multiplication)

 

; ... ; Process results

; 16x16 Unsigned Multiply Accumulate

MOV #01234h,&MAC ; Load first operand

MOV #05678h,&OP2 ; Load 2nd operand

; ... ; Process results

 

; 8x8 Unsigned Multiply Accumulate. Absolute addressing

MOV.B #012h,&0134h ; Load first operand

MOV.B #034h,&0138h ; Load 2nd operand

; ... ; Process results

 

; 16x16 Signed Multiply Accumulate

MOV #01234h,&MACS ; Load first operand

MOV #05678h,&OP2 ; Load 2nd operand

; ... ; Process results

 

 

; 8x8 Signed Multiply Accumulate. Absolute addressing

MOV.B #012h,&0136h ; Load first operand

SXT &MACS ; Sign extend first operand

MOV.B #034h,R5 ; Temp. location for 2nd operand

SXT R5 ; Sign extend 2nd operand

MOV R5,&OP2 ; Load 2nd operand

; ... ; Process results

 

 

; Access multiplier results with indirect addressing

MOV #RESLO,R5 ; RESLO address in R5 for indirect

MOV &OPER1,&MPY ; Load 1st operand

MOV &OPER2,&OP2 ; Load 2nd operand

NOP ; Need one cycle

MOV @R5+,&xxx ; Move RESLO

MOV @R5,&xxx ; Move RESHI

 

 

; Disable interrupts before using the hardware multiplier

DINT ; Disable interrupts

NOP ; Required for DINT

MOV #xxh,&MPY ; Load 1st operand

MOV #xxh,&OP2 ; Load 2nd operand

EINT ; Interrupts may be enable before

; Process results

 

 

'공부 > MSP430' 카테고리의 다른 글

[MSP430] MSP430 자료 9  (0) 2012.11.15
[MSP430] MSP430 자료 8  (0) 2012.11.15
[MSP430] MSP430 자료 6  (0) 2012.11.15
[MSP430] MSP430 자료 5  (0) 2012.11.15
[MSP430] MSP430 자료 4  (0) 2012.11.15

+ Recent posts