Biblioteka DSP dla mikrokontrolerów LPC1700 i LPC1300 firmy NXP
Wydajność kontroli PID przedstawiono w tabeli 11.
Tab. 11. Kontrola PID
Mnożnik zegara pamięci 1 | Mnożnik zegara pamięci 2 | Mnożnik zegara pamięci 3 | ||||
(20 MHz maks.) | (40 MHz maks.) | (60 MHz maks.) | ||||
Cykle | Czas (μs) | Cykle | Czas (μs) | Cykle | Czas (μs) | |
PID | 47 | 2,350 | 49 | 1,225 | 52 | 0,867 |
Mnożnik zegara pamięci 4 | Mnożnik zegara pamięci 5 | Mnożnik zegara pamięci 6 | ||||
(80 MHz maks.) | (100 MHz maks.) | (120 MHz maks.) | ||||
Cykle | Czas (μs) | Cykle | Czas (μs) | Cykle | Czas (μs) | |
PID | 56 | 0,700 | 60 | 0,600 | 60 | 0,500 |
Generator liczb losowych
W bibliotece zaimplementowano asemblerową wersję generatora ciągu losowego „ Linear Congruential ”. Jeśli potrzebny jest wynik krótszy, niż 32-bitowy, lepiej wybrać starsze bity zwróconego słowa, ponieważ są one „bardziej losowe” od bitów młodszych.
Wzór opisujący liczbę losową:
Gdzie:
Yn jest nową liczbą w generowanym ciągu
Xn jest wartością ziarna
c jest odpowiednio dobraną stałą
a jest odpowiednio dobranym stałym mnożnikiem
m jest odpowiednio dobranym dzielnikiem modulo
W naszej implementacji m = 2^32, zatem wykorzystaliśmy tylko podstawowa arytmetykę
c = 32767
a = 16644525
Prototyp funkcji generatora liczb losowych:
int iF_RandomNumber(int i_Seed);
Wskazówka: aby utworzyć ciąg liczb losowych, należy wykorzystać poprzedni wynik jako ziarno dla następnego wywołania.
Wydajność generatora liczb losowych przedstawiono w tabeli 12.
Tab. 12. Generator liczb losowych
Mnożnik zegara pamięci 1 | Mnożnik zegara pamięci 2 | Mnożnik zegara pamięci 3 | ||||
Generator | (20 MHz maks.) | (40 MHz maks.) | (60 MHz maks.) | |||
liczb losowych | Cykle | Czas (μs) | Cykle | Czas (μs) | Cykle | Czas (μs) |
23 | 1,150 | 26 | 0,650 | 30 | 0,500 | |
Mnożnik zegara pamięci 4 | Mnożnik zegara pamięci 5 | Mnożnik zegara pamięci 6 | ||||
Generator | (80 MHz maks.) | (100 MHz maks.) | (120 MHz maks.) | |||
liczb losowych | Cykle | Czas (μs) | Cykle | Czas (μs) | Cykle | Czas (μs) |
34 | 0,425 | 38 | 0,380 | 38 | 0,317 |
Opracowanie wykonane na podstawie noty aplikacyjnej NXP AN1091:3 DSP library for LPC1700 and LPC1300 ; Rev. 3 — czerwiec 2010.
Bibliografia
[1]Knuth, The Art of Computer Programming Vol. 2, Semi-numerical Algorithms, Chapter 3 – Random Numbers[2]Rabiner and Gold, Theory & Application of Digital Signal Processing
[3]Proakis and Manolakis, Digital Signal Processing, Principles, Algorithms, and Applications