Biblioteka DSP dla mikrokontrolerów LPC1700 i LPC1300 firmy NXP
Odejmowanie wektorów
Prototyp funkcji VectSub16:
void vF_dspl_vectsub16(int *psi_z, int *psi_x, int *psi_y, int i_VectorLen);
Prototyp funkcji VectSub32:
void vF_dspl_vectsub32(int *pi_z, int *pi_x, int *pi_y, int i_VectorLen);
Wydajność obliczeń przedstawiono w tabeli 4.
Tab. 4. Odejmowanie wektorów
Mnożnik zegara pamięci 1 | Mnożnik zegara pamięci 2 | Mnożnik zegara pamięci 3 | ||||
Odejmowanie wektorów | (20 MHz maks.) | (40 MHz maks.) | (60 MHz maks.) | |||
Cykle | Czas (μs) | Cykle | Czas (μs) | Cykle | Czas (μs) | |
16 bitów | 309 | 15,450 | 343 | 7,825 | 317 | 5,283 |
32 bitów | 341 | 17,050 | 346 | 8,650 | 351 | 5,850 |
Mnożnik zegara pamięci 4 | Mnożnik zegara pamięci 5 | Mnożnik zegara pamięci 6 | ||||
Odejmowanie wektorów | (80 MHz maks.) | (100 MHz maks.) | (120 MHz maks.) | |||
Cykle | Czas (μs) | Cykle | Czas (μs) | Cykle | Czas (μs) | |
16 bitów | 321 | 4,013 | 352 | 3,260 | 326 | 2,717 |
32 bitów | 385 | 4,475 | 363 | 3,630 | 365 | 3,042 |
Dodawanie stałej do wektora
Prototyp funkcji VectAddConst16:
void vF_dspl_vectaddconst16(int *psi_y, int *psi_x, int si_c, int i_VectorLen);
Prototyp funkcji VectAddConst32:
void vF_dspl_vectaddconst32(int *pi_y, int *pi_x, int i_c, int i_VectorLen);
Wydajność obliczeń przedstawiono w tabeli 5.
Tab. 5. Dodawanie stałej do wektora
Mnożnik zegara pamięci 1 | Mnożnik zegara pamięci 2 | Mnożnik zegara pamięci 3 | ||||
Dodawanie stałej | (20 MHz maks.) | (40 MHz maks.) | (60 MHz maks.) | |||
Cykle | Czas (μs) | Cykle | Czas (μs) | Cykle | Czas (μs) | |
16 bitów | 274 | 13,700 | 278 | 6,950 | 282 | 4,700 |
32 bitów | 274 | 13,700 | 280 | 7,000 | 287 | 4,783 |
Mnożnik zegara pamięci 4 | Mnożnik zegara pamięci 5 | Mnożnik zegara pamięci 6 | ||||
Dodawanie stałej | (80 MHz maks.) | (100 MHz maks.) | (120 MHz maks.) | |||
Cykle | Czas (μs) | Cykle | Czas (μs) | Cykle | Czas (μs) | |
16 bitów | 287 | 3,588 | 292 | 2,920 | 292 | 2,433 |
32 bitów | 295 | 3,688 | 303 | 3,030 | 303 | 2,525 |
Mnożenie wektorów element po elemencie
Prototyp funkcji VectMulElement16:
void vF_dspl_vectaddconst32(int *pi_y, int *pi_x, int i_c, int i_VectorLen);
Prototyp funkcji VectMulElement32:
void vF_dspl_vectmulelement32(int *pi_z, int *pi_x, int *pi_y, int i_VectorLen);
Wydajność obliczeń przedstawiono w tabeli 6.
Tab. 6. Mnożenie wektorów
Mnożnik zegara pamięci 1 | Mnożnik zegara pamięci 2 | Mnożnik zegara pamięci 3 | ||||
Mnożenie wektorów | (20 MHz maks.) | (40 MHz maks.) | (60 MHz maks.) | |||
Cykle | Czas (μs) | Cykle | Czas (μs) | Cykle | Czas (μs) | |
16 bitów | 277 | 13,850 | 280 | 7,000 | 283 | 4,717 |
32 bitów | 309 | 15,450 | 312 | 7,800 | 315 | 5,250 |
Mnożnik zegara pamięci 4 | Mnożnik zegara pamięci 5 | Mnożnik zegara pamięci 6 | ||||
Mnożenie wektorów | (80 MHz maks.) | (100 MHz maks.) | (120 MHz maks.) | |||
Cykle | Czas (μs) | Cykle | Czas (μs) | Cykle | Czas (μs) | |
16 bitów | 286 | 3,575 | 290 | 2,900 | 290 | 2,417 |
32 bitów | 320 | 4,000 | 325 | 3,250 | 325 | 2,708 |