සංඥා සැකසීම සඳහා ෆූරියර් පරිවර්තනයේ ප්රායෝගික යෙදුම. ARM7 මයික්‍රොකොන්ට්‍රෝලර් ෆූරියර් ට්‍රාන්ස්ෆෝම් avr මත ඩිජිටල් සංඥා සැකසීම

ෆූරියර්ගේ ප්‍රමේයය පවසන්නේ ඕනෑම සංඥාවක් ආවර්තිතා සංඥාවේ සංඛ්‍යාතයේ ගුණාකාර සංඛ්‍යාත සහිත ආවර්තිතා ශ්‍රිතවල (උදාහරණයක් ලෙස සයිනස් සහ කෝසයින) ශ්‍රේණියක් බවට ප්‍රසාරණය කළ හැකි බවයි. මේ අනුව, සංඥාවක වර්ණාවලි විශ්ලේෂණය පදනම් වී ඇත්තේ බර කිරීමේ සංගුණක සෙවීම මත ය (සාමාන්‍ය අවස්ථාවෙහිදී, සංකීර්ණ), එහි මොඩියුලය සියලුම හාර්මොනික් වල සාමාන්‍ය සුපිරි ස්ථානයට හඳුන්වා දුන් අනුරූප හර්මොනික් වල දෝලන බලයේ කොටසට අනුරූප වේ.

වේගවත් ෆූරියර් පරිවර්තනය

ෆාස්ට් ෆූරියර් ට්‍රාන්ස්ෆෝම් යනු විවික්ත ෆූරියර් ට්‍රාන්ස්ෆෝම් (ඩීඑෆ්ටී) හි අනවශ්‍ය ගණනය කිරීම් වළක්වා ගැනීම සඳහා ත්‍රිකෝණමිතික ශ්‍රිතවල ආවර්තිතා ගුණාංග සාර්ථකව උපයෝගී කර ගන්නා ගණනය කිරීමේ ඇල්ගොරිතමයකි, එමඟින් ෆූරියර් ප්‍රසාරණයේ සංගුණක සොයා ගැනීම වේගවත් කරයි. විවික්ත පරිවර්තනයේ ප්‍රධාන වෙනස වන්නේ සංඛ්‍යාත්මක අගයන් (ඇල්ගොරිතම) ගණනය කිරීමේ ක්‍රමයේ මිස සංඥා සැකසීමේ දී නොවේ. FFT සහ DFT යන දෙකෙහිම ගණනය කිරීම් වල ප්‍රතිඵලය සමාන වේ. FFT ඇල්ගොරිතම සඳහා එකම අවශ්‍යතාවය N = 2L හි ගුණාකාරයක් වන නියැදි ප්‍රමාණයකි, මෙහි L යනු ඕනෑම ධන නිඛිලයකි. වඩාත් සුලභ Base-2 FFT ඇල්ගොරිතම නම්: කාලය-ඩිසිමේටඩ් සහ සංඛ්‍යාත-ඩිසිමේටඩ්.

මෙම කාර්යයේදී, කාලය තුනී කිරීම (කූලි-ටුකී ඇල්ගොරිතම) සහිත radix-2 FFT ඇල්ගොරිතමයක් ක්රියාත්මක වේ. සමහර DFT නීති අධ්යයනය කිරීමෙන් එය ලබා ගැනීම පහසුය. අපි ඊනියා භ්රමණ සංගුණකය හඳුන්වා දෙමු:

මෙම අවස්ථාවේදී, DFT හි, සංඥා අගයන් ගණනාවක් සඳහා ෆූරියර් සංගුණක (f0,f1,...,fN-1) සම්බන්ධය මගින් ප්‍රකාශ කරනු ලැබේ:

අගයන් 4 ක සංඥා මාලාවක් සලකා බලන්න: (f0,f1,f2,f3). අපි ෆූරියර් පරිණාමනය අනුකෘති ආකාරයෙන් ඉදිරිපත් කරමු (සාමාන්‍යකරණ සංගුණකය 1/N ප්‍රකාශනයේ දකුණු පස ඇති Cij තීරුවේ දෛශිකයේ ඇතුළත් වේ):

ඉයුලර්ගේ සූත්‍රය භාවිතයෙන් භ්‍රමණ සංගුණක ලියා k = 0, 1, 2, .. 9 සඳහා ඒවායේ අගයන් තීරණය කිරීමෙන්, ඔබට රූප සටහනක් (රූපය 2) සෑදිය හැකිය, එයින් පුනරාවර්තන සංගුණක රටාව දැකිය හැකිය.

රූපය 2. N=4 සඳහා බල ශ්‍රේණි w

සංඛ්‍යාත්මක අගයන් (4) වෙත ආදේශ කිරීමෙන් අපට ලැබෙන්නේ:

එනම්, w4 සිට ආරම්භ වන w හි අගයන් w0 සිට w3 දක්වා අනුරූප අගයට සමාන වේ. ඊළඟට, අපි න්‍යාස සමීකරණය (4) සම්මත නොවන ආකාරයෙන් නැවත ලියන්නෙමු (තවත් මෙහෙයුම්වල පැහැදිලිකම සඳහා සමාන අංක හඳුන්වා දෙනු ලැබේ):

අපි අනුකෘතියේ තීරු මාරු කරමු, එය කණ්ඩායම් දෙකකට බෙදන්න: ඉරට්ටේ f0, f2 සහ ඔත්තේ f1, f3 දර්ශක:

අපි wk+1 = wkw1 බව සැලකිල්ලට ගනිමු, එවිට ප්‍රකාශනය (6) මෙසේ නැවත ලියනු ලැබේ:

අනුපාත භාවිතා කිරීම:

සෛල අගයන් සහිත තීරු දෛශිකයක ආකාරයෙන් අවශ්‍ය ප්‍රසාරණ සංගුණක අපි ලබා ගනිමු:

ඇල්ගොරිතමයේ චිත්රක නිරූපණය (රූපය 3) විවෘත පියාපත් සහිත සමනලයෙකු මෙන් පෙනේ, මෙම ගණනය කිරීමේ ක්රමය "සමනලයා" ලෙස හැඳින්වේ.

රූපය 3. පද 4 ක මාලාවක් සඳහා සමනල ප්‍රස්තාරය

එබැවින්, ඇල්ගොරිතමයේ පළමු පියවරේදී, සංඥා අගයන් ගණනාවක සාමාජිකයන් ඉරට්ටේ සහ ඔත්තේ දර්ශකවලට බෙදා ඇත. එවිට "සමනල" ප්රස්ථාරය ක්රියාත්මක වේ; එය අදියර දෙකකින් සමන්විත වේ, ඔවුන්ගේ සංඛ්යාව නියැදි ප්රමාණයෙන් දෙකක බලයට සමාන වේ (N = 4 = 22). සෑම අදියරකදීම, "සමනලුන්" දෙකක් සිදු කරනු ලබන අතර ඔවුන්ගේ මුළු සංඛ්යාව නොවෙනස්ව පවතී. සෑම සමනල මෙහෙයුමක්ම එක් ගුණ කිරීමේ මෙහෙයුමකට අනුරූප වේ. සංසන්දනය කිරීම සඳහා: ඩීඑෆ්ටී නියැදීම (f0,f1,f2,f3) සමඟින්, ගුණ කිරීමේ මෙහෙයුම 4×4 = 16 වතාවක් සිදු කළ යුතු අතර, FFT නම් 4 වතාවක් පමණි.

මෙම ලිපි මාලාව මෙසේද ලිවිය හැක.

(2),
එහිදී, k-th සංකීර්ණ විස්තාරය.

සංගුණක (1) සහ (3) අතර සම්බන්ධතාවය පහත සූත්‍ර මගින් ප්‍රකාශ වේ:

ෆූරියර් මාලාවේ මෙම නිරූපණ තුනම සම්පූර්ණයෙන්ම සමාන බව සලකන්න. සමහර විට, ෆූරියර් ශ්‍රේණි සමඟ වැඩ කරන විට, සයින සහ කෝසයින වෙනුවට මනඃකල්පිත තර්කයේ ඝාතකයන් භාවිතා කිරීම වඩාත් පහසු වේ, එනම් ෆූරියර් පරිණාමනය සංකීර්ණ ස්වරූපයෙන් භාවිතා කරන්න. නමුත් අපට සූත්‍රය (1) භාවිතා කිරීම පහසු වේ, එහිදී ෆූරියර් ශ්‍රේණිය අනුරූප විස්තාරය සහ අදියර සමඟ කෝසයින එකතුවක් ලෙස ඉදිරිපත් කරයි. ඕනෑම අවස්ථාවක, සැබෑ සංඥාවක ෆූරියර් පරිණාමනය සංකීර්ණ සුසංයෝග විස්තාරය ඇති කරයි යැයි පැවසීම වැරදිය. විකි නිවැරදිව පවසන පරිදි, "ෆූරියර් පරිණාමය (?) යනු සැබෑ විචල්‍යයක එක් ශ්‍රිතයක් තවත් ශ්‍රිතයක් සමඟ සම්බන්ධ කරන මෙහෙයුමකි, එසේම සැබෑ විචල්‍යයකි."

මුළු:
සංඥා වර්ණාවලි විශ්ලේෂණය සඳහා ගණිතමය පදනම වන්නේ ෆූරියර් පරිවර්තනයයි.

ෆූරියර් පරිණාමනය මඟින් ත්‍රිකෝණමිතික ශ්‍රිතවල (සයින් සහ/හෝ කෝසයින්) අනන්ත සංඛ්‍යා (අනන්ත ශ්‍රේණි) එකතුවක් ලෙස කොටසේ (0, ටී) අර්ථ දක්වා ඇති f(x) (සංඥා) අඛණ්ඩ ශ්‍රිතයක් නිරූපණය කිරීමට ඔබට ඉඩ සලසයි. විස්තාරය සහ අදියර, කොටසෙහි (0, T) ද සලකා බලනු ලැබේ. එවැනි මාලාවක් ෆූරියර් මාලාවක් ලෙස හැඳින්වේ.

අපි තවත් කරුණු කිහිපයක් සටහන් කරමු, ෆූරියර් පරිවර්තනය සංඥා විශ්ලේෂණයට නිවැරදිව යෙදීම සඳහා අවශ්‍ය වන අවබෝධය. අපි මුළු X-අක්ෂයේම ෆූරියර් ශ්‍රේණිය (සිනුසොයිඩ් එකතුව) සලකා බැලුවහොත්, ඛණ්ඩයෙන් පිටත (0, ටී) ෆූරියර් ශ්‍රේණියෙන් නිරූපණය වන ශ්‍රිතය වරින් වර අපගේ ශ්‍රිතය පුනරුච්චාරණය කරන බව අපට දැක ගත හැකිය.

උදාහරණයක් ලෙස, Fig. 7 හි ප්‍රස්ථාරයේ, මුල් ශ්‍රිතය කොටස (-T\2, +T\2) මත අර්ථ දක්වා ඇති අතර, ෆූරියර් ශ්‍රේණිය මුළු x-අක්ෂයේම අර්ථ දක්වා ඇති ආවර්තිතා ශ්‍රිතයක් නියෝජනය කරයි.

මෙය සිදු වන්නේ sinusoids ආවර්තිතා ශ්රිතයන් වන අතර, ඒ අනුව ඔවුන්ගේ එකතුව ආවර්තිතා ශ්රිතයක් වනු ඇත.


Fig.7 ෆූරියර් ශ්‍රේණියක් මගින් ආවර්තිතා නොවන මුල් ශ්‍රිතයක් නිරූපණය කිරීම

මේ අනුව:

අපගේ මුල් කාර්යය අඛණ්ඩ, ආවර්තිතා නොවන, දිග T හි නිශ්චිත කොටසක අර්ථ දක්වා ඇත.
මෙම ශ්‍රිතයේ වර්ණාවලිය විවික්ත වේ, එනම්, එය අනන්‍ය වූ සුසංයෝගී සංරචක මාලාවක ස්වරූපයෙන් ඉදිරිපත් කෙරේ - ෆූරියර් ශ්‍රේණිය.
ඇත්ත වශයෙන්ම, ෆූරියර් ශ්‍රේණිය අපගේ කොටසෙහි (0, ටී) සමග සමපාත වන යම් ආවර්තිතා ශ්‍රිතයක් නිර්වචනය කරයි, නමුත් අපට මෙම ආවර්තිතා සැලකිය යුතු නොවේ.

හාර්මොනික් සංරචකවල කාල පරිච්ඡේද යනු මුල් ශ්‍රිතය f(x) අර්ථ දක්වා ඇති කොටසේ (0, T) අගයේ ගුණාකාර වේ. වෙනත් වචන වලින් කිවහොත්, හර්මොනික් කාල පරිච්ඡේද යනු සංඥා මැනීමේ කාලසීමාවෙහි ගුණාකාර වේ. උදාහරණයක් ලෙස, ෆූරියර් ශ්‍රේණියේ පළමු හාර්මොනික් කාල පරිච්ඡේදය f(x) ශ්‍රිතය අර්ථ දක්වා ඇති අන්තර T ට සමාන වේ. ෆූරියර් ශ්‍රේණියේ දෙවන හාර්මොනික් කාල සීමාව T/2 අන්තරයට සමාන වේ. සහ එසේ මත (රූපය 8 බලන්න).


Fig.8 ෆූරියර් ශ්‍රේණියේ හාර්මොනික් සංරචකවල කාලපරිච්ඡේද (සංඛ්‍යාත) (මෙහි T = 2?)

ඒ අනුව, හර්මොනික් සංරචකවල සංඛ්‍යාත 1/T ගුණාකාර වේ. එනම්, හරාත්මක සංරචක Fk හි සංඛ්‍යාත Fk = k\T ට සමාන වේ, එහිදී k 0 සිට? දක්වා පරාසයක පවතී, උදාහරණයක් ලෙස k = 0 F0 = 0; k=1 F1=1\T; k=2 F2=2\T; k=3 F3=3\T;... Fk= k\T (ශුන්‍ය සංඛ්‍යාතයේදී - නියත සංරචකය).

අපගේ මුල් ශ්‍රිතය T=1 තත්ත්‍වය තුළ වාර්තා කරන ලද සංඥාවක් වේවා. එවිට පළමු හාර්මොනිකයේ කාලසීමාව අපගේ සංඥාවේ T1=T=1 තත්පරයට සමාන වන අතර හාර්මොනික් සංඛ්‍යාතය 1 Hz වේ. දෙවන හාර්මොනික් කාලසීමාව 2 (T2=T/2=0.5 තත්පර) න් බෙදූ සංඥා කාලසීමාවට සමාන වන අතර සංඛ්‍යාතය 2 Hz වේ. තුන්වන හාර්මොනික් T3=T/3 තත්පර සඳහා සහ සංඛ්‍යාතය 3 Hz වේ. සහ යනාදි.

මෙම නඩුවේ හාර්මොනික්ස් අතර පියවර 1 Hz වේ.

මේ අනුව, තත්පර 1 ක කාලසීමාවක් සහිත සංඥාවක් 1 Hz සංඛ්යාත විභේදනයක් සහිත සුසංයෝගී සංරචක (වර්ණාවලියක් ලබා ගැනීම) බවට වියෝජනය කළ හැක.
විභේදනය 2 ගුණයකින් 0.5 Hz දක්වා වැඩි කිරීම සඳහා, ඔබ මිනුම් කාලය 2 ගුණයකින් වැඩි කළ යුතුය - තත්පර 2 දක්වා. තත්පර 10 ක් පවතින සංඥාවක් 0.1 Hz සංඛ්‍යාත විභේදනයකින් හාර්මොනික් සංරචක බවට වියෝජනය කළ හැකිය (වර්ණාාවලියක් ලබා ගැනීම සඳහා). සංඛ්යාත විභේදනය වැඩි කිරීමට වෙනත් ක්රම නොමැත.

සාම්පල අරාවට ශුන්‍ය එකතු කිරීමෙන් සංඥාවක කාලසීමාව කෘතිමව වැඩි කිරීමට ක්‍රමයක් තිබේ. නමුත් එය සැබෑ සංඛ්‍යාත විභේදනය වැඩි නොකරයි.

3. විවික්ත සංඥා සහ විවික්ත ෆූරියර් පරිවර්තනය

ඩිජිටල් තාක්‍ෂණයේ දියුණුවත් සමඟ මිනුම් දත්ත (සංඥා) ගබඩා කිරීමේ ක්‍රම ද වෙනස් වී ඇත. මීට පෙර සංඥාවක් ටේප් රෙකෝඩරයක සටහන් කර ඇනලොග් ආකාරයෙන් ටේප් මත ගබඩා කළ හැකි නම්, දැන් සංඥා ඩිජිටල්කරණය කර සංඛ්‍යා (නියැදි) ලෙස පරිගණක මතකයේ ගොනු තුළ ගබඩා කර ඇත.

සංඥාවක් මැනීම සහ ඩිජිටල් කිරීම සඳහා සුපුරුදු යෝජනා ක්රමය පහත පරිදි වේ.


Fig.9 මිනුම් නාලිකාවේ රූප සටහන

සිට සංඥා මිනුම් පරිවර්තකය T කාල සීමාව තුළ ADC වෙත පැමිණේ. T කාලය තුළ ලබාගත් සංඥා සාම්පල (නියැදි) පරිගණකයට මාරු කර මතකයේ ගබඩා කර ඇත.


රූපය 10 සංඛ්‍යාංක සංඥාව - T කාලය තුළ ලැබුණු N සාම්පල

සංඥා ඩිජිටල්කරණ පරාමිතීන් සඳහා වන අවශ්යතා මොනවාද? ආදාන ඇනලොග් සංඥාවක් විවික්ත කේතයක් බවට පරිවර්තනය කරන උපාංගයක් ( ඩිජිටල් සංඥාව) analog-to-digital converter (ADC, English Analog-to-digital converter, ADC) (Wiki) ලෙස හැඳින්වේ.

ADC හි ප්‍රධාන පරාමිතිවලින් එකක් වන්නේ උපරිම නියැදීමේ සංඛ්‍යාතය (හෝ නියැදීමේ අනුපාතය, ඉංග්‍රීසි නියැදි අනුපාතය) වේ - එය නියැදීමේදී කාල-අඛණ්ඩ සංඥාවක නියැදි අනුපාතය. එය හර්ට්ස් වලින් මනිනු ලැබේ. ((විකි))

කොටෙල්නිකොව්ගේ ප්‍රමේයයට අනුව, අඛණ්ඩ සංඥාවකට Fmax සංඛ්‍යාතයෙන් සීමා වූ වර්ණාවලියක් තිබේ නම්, එය කාල අන්තරවලදී ගන්නා ලද විවික්ත සාම්පලවලින් සම්පූර්ණයෙන්ම සහ නිසැක ලෙස ප්‍රතිනිර්මාණය කළ හැකිය. , i.e. සංඛ්යාත Fd සමඟ? 2*Fmax, Fd යනු නියැදි සංඛ්‍යාතය වේ; Fmax - සංඥා වර්ණාවලියේ උපරිම සංඛ්යාතය. වෙනත් වචන වලින් කිවහොත්, සංඥා ඩිජිටල්කරණ සංඛ්‍යාතය (ADC නියැදි සංඛ්‍යාතය) අපට මැනීමට අවශ්‍ය සංඥාවේ උපරිම සංඛ්‍යාතයට වඩා අවම වශයෙන් 2 ගුණයක් වැඩි විය යුතුය.

අපි Kotelnikov ගේ ප්‍රමේයයට අවශ්‍ය ප්‍රමාණයට වඩා අඩු සංඛ්‍යාතයකින් සාම්පල ලබා ගත්තොත් කුමක් සිදුවේද?

මෙම අවස්ථාවෙහිදී, "අන්වර්ථක" ආචරණය සිදු වේ (ස්ට්‍රොබොස්කොපික් ආචරණය, මෝයර් ආචරණය ලෙසද හැඳින්වේ), එහිදී අධි-සංඛ්‍යාත සංඥාවක්, ඩිජිටල්කරණයෙන් පසුව, අඩු සංඛ්‍යාත සංඥාවක් බවට පත්වන අතර, එය ඇත්ත වශයෙන්ම නොපවතී. රූපයේ. 5 රතු අධි සංඛ්‍යාත සයින් තරංගය සැබෑ සංඥාවකි. අඩු සංඛ්‍යාතයක නිල් සයිනසයිඩ් යනු නියැදීමේ කාලය තුළ අධි-සංඛ්‍යාත සංඥාවේ කාලපරිච්ඡේද භාගයකට වඩා වැඩි කාලයක් ගත වීමට කාලය තිබීම හේතුවෙන් පැන නගින කල්පිත සංඥාවකි.


සහල්. 11. ප්‍රමාණවත් නොවන ඉහළ නියැදි අනුපාතයකින් ව්‍යාජ අඩු සංඛ්‍යාත සංඥාවක පෙනුම

අන්වර්ථ ආචරණය වළක්වා ගැනීම සඳහා, විශේෂ ප්‍රති-අන්වර්ථ පෙරහනක් ADC ඉදිරිපිට තබා ඇත - අඩු-පාස් පෙරහන (LPF), එය ADC නියැදීමේ සංඛ්‍යාතයෙන් අඩකට වඩා අඩු සංඛ්‍යාත පසුකර ඉහළ සංඛ්‍යාත කපා දමයි.

සංඥාවක වර්ණාවලිය එහි විවික්ත සාම්පල වලින් ගණනය කිරීම සඳහා, විවික්ත ෆූරියර් පරිවර්තන (DFT) භාවිතා වේ. "නිර්වචනය අනුව" විවික්ත සංඥාවක වර්ණාවලිය Fmax නියැදි සංඛ්‍යාතයෙන් අඩකට වඩා අඩු සංඛ්‍යාතයකින් සීමා වන බව නැවත වරක් සටහන් කරමු. එබැවින්, අඛණ්ඩ සංඥාවක ෆූරියර් ශ්‍රේණියේ අසීමිත එකතුවට ප්‍රතිවිරුද්ධව, විවික්ත සංඥාවක වර්ණාවලිය අසීමිත විය හැකි, සීමිත හාර්මොනික් සංඛ්‍යාවක එකතුවෙන් නිරූපණය කළ හැක. Kotelnikov ගේ ප්‍රමේයයට අනුව, හාර්මොනික් එකක උපරිම සංඛ්‍යාතය අවම වශයෙන් සාම්පල දෙකක් සඳහා වගකිය යුතු විය යුතුය, එබැවින් හාර්මොනික් සංඛ්‍යාව විවික්ත සංඥාවක සාම්පල සංඛ්‍යාවෙන් අඩකට සමාන වේ. එනම්, සාම්පලයේ N සාම්පල තිබේ නම්, වර්ණාවලියේ ඇති හාර්මොනික් ගණන N/2 ට සමාන වේ.

අපි දැන් විවික්ත ෆූරියර් පරිවර්තනය (DFT) සලකා බලමු.

ෆූරියර් මාලාව සමඟ සංසන්දනය කිරීම

ඒවා සමපාත වන බව අපට පෙනේ, DFT හි කාලය ස්වභාවයෙන්ම විවික්ත වන අතර හාර්මොනික්ස් ගණන N/2 කින් සීමා වේ - සාම්පල සංඛ්‍යාවෙන් අඩක්.

DFT සූත්‍ර ලියා ඇත්තේ මාන රහිත පූර්ණ සංඛ්‍යා විචල්‍ය k, s, මෙහි k යනු සංඥා සාම්පල සංඛ්‍යා, s යනු වර්ණාවලි සංරචක සංඛ්‍යා වේ.
අගය s පෙන්නුම් කරන්නේ T කාලපරිච්ඡේදය (සංඥාව මැනීමේ කාලසීමාව) තුළ සම්පූර්ණ සුසංයෝග දෝලනය වීමයි. විවික්ත ෆූරියර් පරිණාමනය සංඛ්‍යාත්මක ක්‍රමයක් භාවිතා කරමින් හාර්මොනික් වල විස්තාරය සහ අවධීන් සොයා ගැනීමට භාවිතා කරයි, i.e. "පරිගණකයේ"

ආරම්භයේ දී ලබාගත් ප්රතිඵල වෙත ආපසු යාම. ඉහත සඳහන් කළ පරිදි, ආවර්තිතා නොවන ශ්‍රිතයක් (අපගේ සංඥාව) ෆූරියර් ශ්‍රේණියක් බවට ප්‍රසාරණය කරන විට, ප්‍රතිඵලයක් ලෙස ලැබෙන ෆූරියර් ශ්‍රේණිය ඇත්ත වශයෙන්ම T කාල පරිච්ඡේදය සමඟ ආවර්තිතා ශ්‍රිතයකට අනුරූප වේ (රූපය 12).


Fig. 12 ආවර්තිතා ශ්‍රිතය f(x) T0 කාල පරිච්ඡේදය සමඟ, මිනුම් කාලය T>T0 සමඟ

රූප සටහන 12 හි දැකිය හැකි පරිදි, f(x) ශ්‍රිතය T0 කාල පරිච්ඡේදය සමඟ ආවර්තිතා වේ. කෙසේ වෙතත්, මිනුම් සාම්පලයේ කාලසීමාව T0 ශ්‍රිතයේ කාලපරිච්ඡේදය සමඟ නොගැලපෙන නිසා, ෆූරියර් ශ්‍රේණියක් ලෙස ලබාගත් ශ්‍රිතය T ලක්ෂ්‍යයේ විරාමයක් ඇත. එහි ප්‍රතිඵලයක් ලෙස, මෙම ශ්‍රිතයේ වර්ණාවලියේ අඩංගු වේ. අධි-සංඛ්‍යාත හාර්මොනික්ස් විශාල සංඛ්‍යාවක්. මිනුම් සාම්පලයේ කාලසීමාව T0 ශ්‍රිතයේ කාලසීමාව සමඟ සමපාත වූවා නම්, ෆූරියර් පරිවර්තනයෙන් පසුව ලබාගත් වර්ණාවලියේ f(x) ශ්‍රිතයේ සිට පළමු හාර්මොනික් (නියැදි කාලසීමාවට සමාන කාල සීමාවක් සහිත sinusoid) පමණක් අඩංගු වේ. sinusoid වේ.

වෙනත් වචන වලින් කිවහොත්, DFT වැඩසටහන අපගේ සංඥාව "sinusoid කෑල්ලක්" බව "නොදනී", නමුත් ශ්‍රේණියක ස්වරූපයෙන් ආවර්තිතා ශ්‍රිතයක් නිරූපණය කිරීමට උත්සාහ කරයි, එය තනි තනි කොටස්වල නොගැලපීම හේතුවෙන් විරාමයක් ඇත. sinusoid.

එහි ප්‍රතිඵලයක් වශයෙන්, වර්ණාවලියේ හාර්මොනික්ස් දිස්වන අතර, මෙම අඛණ්ඩතාව ඇතුළුව ශ්‍රිතයේ හැඩය සාරාංශ කළ යුතුය.

මේ අනුව, විවිධ කාල පරිච්ඡේද සහිත sinusoids කිහිපයක එකතුවක් වන සංඥාවක "නිවැරදි" වර්ණාවලිය ලබා ගැනීම සඳහා, එක් එක් sinusoid වල කාල පරිච්ඡේදවල නිඛිල සංඛ්යාවක් සංඥා මිනුම් කාල සීමාවට ගැලපීම අවශ්ය වේ. ප්රායෝගිකව, සංඥා මැනීමේ ප්රමාණවත් දිගු කාලයක් සඳහා මෙම කොන්දේසිය සපුරාලිය හැකිය.


රූපය 13 ගියර් පෙට්ටියේ චාලක දෝෂ සංඥාවේ ක්‍රියාකාරීත්වය සහ වර්ණාවලියේ උදාහරණය

කෙටි කාලයක් සමඟ, පින්තූරය "නරක" ලෙස පෙනෙනු ඇත:


රූපය 14 රොටර් කම්පන සංඥාවක ශ්‍රිතයේ සහ වර්ණාවලියේ උදාහරණය

ප්‍රායෝගිකව, සංරචකවල බහු නොවන කාල පරිච්ඡේද සහ සංඥා නියැදීමේ කාලසීමාව හෝ සංඥා හැඩයේ "පැනීම සහ බිඳීම්" නිසා ඇති වන “සැබෑ සංරචක” සහ “කෞතුක වස්තු” කොතැනද යන්න තේරුම් ගැනීම දුෂ්කර විය හැකිය. . ඇත්ත වශයෙන්ම, "සැබෑ සංරචක" සහ "කෞතුක වස්තු" යන වචන උද්ධෘත ලකුණු තුළ තබා ඇත්තේ හේතුවක් ඇතුවයි. වර්ණාවලි ප්‍රස්ථාරයේ බොහෝ ප්‍රතිමූර්තිය තිබීමෙන් අදහස් වන්නේ අපගේ සංඥාව ඇත්ත වශයෙන්ම ඒවායින් "ඇති" බව නොවේ. මෙය 3 සහ 4 ඉලක්කම්වල අංක 7 "අඩංගු" යැයි සිතීම හා සමාන වේ. අංක 7 3 සහ 4 යන අංකවල එකතුව ලෙස නිරූපණය කළ හැකිය - මෙය නිවැරදියි.

එබැවින් අපගේ සංඥාව... හෝ ඒ වෙනුවට "අපගේ සංඥාව" නොවේ, නමුත් අපගේ සංඥාව (නියැදීම) පුනරුච්චාරණය කිරීමෙන් සෑදෙන ආවර්තිතා ශ්‍රිතයක් යම් යම් විස්තාර සහ අවධීන් සහිත හාර්මොනික්ස් (සයින් තරංග) එකතුවක් ලෙස නිරූපණය කළ හැක. නමුත් ප්රායෝගිකව සඳහා වැදගත් වන බොහෝ අවස්ථාවන්හිදී (ඉහත රූප බලන්න), එය සැබැවින්ම චක්රීය ස්වභාවයක් ඇති සැබෑ ක්රියාවලීන් සමඟ වර්ණාවලියේ ලබා ගත් හරස් හා සංඥා හැඩයට සැලකිය යුතු දායකත්වයක් ලබා දිය හැකිය.

සමහර ප්රතිඵල

1. T තත්පර කාලසීමාවක් සහිත සැබෑ මනින ලද සංඥාවක්, ADC මගින් ඩිජිටල්කරණය කරන ලද, එනම්, විවික්ත සාම්පල (N කෑලි) කට්ටලයකින් නියෝජනය වන, විවික්ත ආවර්තිතා නොවන වර්ණාවලියක් ඇති අතර, එය හර්මොනික් කට්ටලයකින් (N/ 2 කෑලි).

2. සංඥාව සැබෑ අගයන් සමූහයකින් නිරූපණය වන අතර එහි වර්ණාවලිය සැබෑ අගයන් සමූහයකින් නිරූපණය කෙරේ. හාර්මොනික් සංඛ්යාත ධනාත්මක වේ. ගණිතඥයින්ට සෘණ සංඛ්‍යාත භාවිතා කරමින් සංකීර්ණ ස්වරූපයෙන් වර්ණාවලිය නියෝජනය කිරීම වඩාත් පහසු වන්නේ “මෙය නිවැරදි” සහ “මෙය සැමවිටම කළ යුතු” බව නොවේ.

3. T time interval එකකින් මනින සංඥාවක් T time interval එකකින් පමණයි T අපගේ නඩුවේදී, එය සිත්ගන්නා සුළු නොවේ. කාල සීමා සහිත සංඥාවක DFT එහි "සැබෑ" වර්ණාවලිය ලබා දෙයි, එනම්, යම් යම් තත්වයන් යටතේ, එහි සංරචකවල විස්තාරය සහ සංඛ්යාතය ගණනය කිරීමට කෙනෙකුට ඉඩ සලසයි.

භාවිතා කරන ද්රව්ය සහ අනෙකුත් ප්රයෝජනවත් ද්රව්ය.

දර්ශන උපාංගයක් ලෙස පේළි දෙකක අක්ෂර LCD දර්ශකයක් භාවිතා කරයි. මෙම ව්‍යාපෘතිය ක්‍රියාත්මක කිරීමේ ප්‍රධාන කරුණ වන්නේ දෘඪාංග නොව මෘදුකාංගය, වඩාත් නිවැරදිව 8-bit microcontroller මත විවික්ත ෆූරියර් පරිණාමනය (DFT) ක්‍රියාත්මක කිරීමයි. කතුවරයා මෙම ක්ෂේත්‍රයේ ප්‍රවීණයෙකු නොවන බව වහාම සටහන් කළ යුතු අතර එබැවින් මූලික කරුණු සමඟ ආරම්භ විය - සරල විවික්ත ෆූරියර් පරිවර්තනයක් සමඟ. වේගවත් ෆූරියර් පරිවර්තන ඇල්ගොරිතම වේගවත් පමණක් නොව තරමක් සංකීර්ණ වේ.

Discrete Fourier Transform (ඉංග්‍රීසි සාහිත්‍යයේ DFT, Discrete Fourier Transform) යනු ඩිජිටල් සංඥා සැකසුම් ඇල්ගොරිතමවල බහුලව භාවිතා වන ෆූරියර් පරිවර්තන වලින් එකකි (එහි වෙනස් කිරීම් MP3 හි ශ්‍රව්‍ය සම්පීඩනය, JPEG හි රූප සම්පීඩනය, ආදිය), මෙන්ම විවික්ත (උදාහරණයක් ලෙස, ඩිජිටල් කළ ඇනලොග්) සංඥාවක සංඛ්‍යාත විශ්ලේෂණයට අදාළ අනෙකුත් ක්ෂේත්‍ර. විවික්ත ෆූරියර් පරිවර්තනයට ආදානය ලෙස විවික්ත ශ්‍රිතයක් අවශ්‍ය වේ. එවැනි ශ්‍රිත බොහෝ විට නිර්මාණය වන්නේ නියැදීම (අඛණ්ඩ ශ්‍රිත වලින් අගයන් නියැදීම) මගිනි.

වර්ණාවලි විශ්ලේෂකයක ක්‍රමානුරූප රූප සටහන ශබ්ද සංඥාවඉතා සරල වන අතර දළ වශයෙන් ඩිජිටල් සහ ඇනලොග් කොටස් වලට බෙදිය හැකිය.

ඩිජිටල් කොටස සෑදී ඇත්තේ ක්ෂුද්‍ර පාලකයක් සහ එයට සම්බන්ධ LCD දර්ශකයක් මගිනි. ක්ෂුද්‍ර පාලකය ඔරලෝසු කර ඇත ක්වාර්ට්ස් අනුනාදකය 16 MHz, +5 V හි සැපයුම් වෝල්ටීයතාවය ක්ෂුද්ර පාලකයේ ADC සඳහා යොමු වෝල්ටීයතාවයක් ලෙස භාවිතා කරයි.
LCD දර්ශකයේ දත්ත බසය ක්ෂුද්‍ර පාලකයේ C වරායට සම්බන්ධ වේ (ආදාන / ප්‍රතිදාන රේඛා PC0-PC3), පාලක බස් රථය ක්ෂුද්‍ර පාලකයේ D (PD5, PD6) වරායට සම්බන්ධ වේ. දර්ශකය 4-bit ආකාරයෙන් ක්රියාත්මක වේ. ප්‍රතිවිරුද්ධතාව සකස් කිරීම සඳහා 4.7 kOhm නාමික අගයක් සහිත විචල්‍ය ප්‍රතිරෝධයක් භාවිතා කරයි. දර්ශකය සමඟ වැඩ කිරීම සඳහා, විශ්ලේෂකයේ තිරස් තීරු 8 ක් පෙන්වීමට අභිරුචි සංකේත නිර්මාණය කරන ලදී; මෙම අභිරුචි සංකේත LCD දර්ශකයේ RAM බයිට් 64ම ගනී.

ක්ෂුද්‍ර පාලකය බාහිර 16 MHz ක්වාර්ට්ස් අනුනාදකයකින් ක්‍රියා කරයි.

උපාංගයේ ඇනලොග් කොටස වඩාත් වැදගත් කොටස වන අතර ඉලෙක්ට්‍රෙට් මයික්‍රොෆෝන සංඥාවේ පූර්ව ඇම්ප්ලිෆයර් එකක් වන අතර එහි ප්‍රතිදානය ක්ෂුද්‍ර පාලකය තුළට ගොඩනගා ඇති ADC හි ADC0 නාලිකාවට සම්බන්ධ වේ. අපි ADC ආදානයේ ශුන්‍ය මට්ටම හරියටම යොමු වෝල්ටීයතාවයෙන් අඩකට සැකසිය යුතුය, i.e. 2.5 V. මෙම අවස්ථාවෙහිදී, අපට සංඥාවේ ධනාත්මක සහ සෘණ අර්ධ තරංගය භාවිතා කළ හැකිය, නමුත් එහි විස්තාරය ස්ථාපිත සීමාව නොඉක්මවිය යුතුය, i.e. අධික බර පැටවීම වැළැක්වීම සඳහා ලාභය මනාව සකස් කළ යුතුය. ඉහත සඳහන් සියලු කොන්දේසි පොදු අඩු බලැති ක්රියාකාරී ඇම්ප්ලිෆයර් ක්ෂුද්ර පරිපථයක් මගින් සපුරා ඇත.

වේගවත් ෆූරියර් ට්‍රාන්ස්ෆෝම් එකට සාපේක්ෂව DFT ඇල්ගොරිතම තරමක් මන්දගාමී වේ. නමුත් අපගේ වර්ණාවලි විශ්ලේෂකය සඳහා අධික වේගයක් අවශ්‍ය නොවන අතර, එය තත්පරයකට රාමු 30 ක පමණ යාවත්කාලීන අනුපාතයක් සැපයිය හැකි නම්, ශ්‍රව්‍ය සංඥාවක වර්ණාවලිය දෘශ්‍යමාන කිරීමට මෙය ප්‍රමාණවත් වේ. ඕනෑම අවස්ථාවක, අපගේ අනුවාදයේ තත්පරයට රාමු 100 ක වේගයක් ලබා ගත හැකිය, නමුත් මෙය දැනටමත් පේළි දෙකක අක්ෂර LCD දර්ශකයක් සඳහා පරාමිති අගය ඉතා ඉහළ මට්ටමක පවතින අතර එය නිර්දේශ නොකරයි. ලක්ෂ්‍ය 32ක විවික්ත ෆූරියර් පරිවර්තන සඳහා නියැදි සංඛ්‍යාතය 20 kHz වන අතර පරිවර්තන ප්‍රතිඵලය සමමිතික වන බැවින්, අපට භාවිත කිරීමට අවශ්‍ය වන්නේ පළමු භාගය පමණි, i.e. පළමු ප්‍රතිඵල 16. එබැවින්, අපට 10 kHz දක්වා සංඛ්යාත වර්ණාවලිය පෙන්විය හැකි අතර විශ්ලේෂක විභේදනය 10 kHz/16 = 625 Hz වේ.

මෝස්තරයේ කතුවරයා DFT ගණනය කිරීම් වල වේගය වැඩි කිරීමට උත්සාහ කළේය. මෙම පරිවර්තනයට N ලකුණු තිබේ නම්, අපි සයින් සහ කොසයින් වල N2/2 අගයන් සොයා ගත යුතුය. අපගේ ලක්ෂ්‍ය 32 පරිවර්තනය සඳහා අපට සයින් සහ කොසයින් අගයන් 512ක් සොයාගත යුතුය. නමුත්, ඒවා සොයා ගැනීමට පෙර, අපි කෝණය (අංශක) ගණනය කිරීමට අවශ්ය වන අතර, යම් CPU කාලයක් ගතවනු ඇත, එබැවින් මෙම ගණනය කිරීම් සඳහා අගය වගු භාවිතා කිරීමට තීරණය විය. ක්ෂුද්‍ර පාලක වැඩසටහනේ ගණනය කිරීමේදී පාවෙන ලක්ෂ්‍යය සහ ද්විත්ව නිරවද්‍යතා සංඛ්‍යා භාවිතා නොකෙරේ, මෙය 8-bit ක්ෂුද්‍ර පාලකයක සැකසීමට වැඩි කාලයක් ගතවනු ඇත. ඒ වෙනුවට, බැලීමේ වගු වල අගයන් 16-bit පූර්ණ සංඛ්‍යා දත්ත 10000 කින් ගුණ කරයි. පසුව, පරිවර්තනය සිදු කිරීමෙන් පසු, ප්‍රතිඵල 10000 න් බෙදනු ලැබේ. මෙම ප්‍රවේශය සමඟ, තත්පරයකට ලක්ෂ්‍ය 32 පරිවර්තන 120 ක් සිදු කළ හැකිය. , එය අපගේ උපාංග සඳහා ප්‍රමාණවත් තරම් වැඩිය.

ATmega32 ක්ෂුද්‍ර පාලකයක වර්ණාවලි විශ්ලේෂකයක ක්‍රියාකාරිත්වය නිරූපණය කිරීම

බාගත කිරීම්

මූලාශ්‍ර කේතය (ක්ෂුද්‍ර පාලක වැඩසටහන, සයින්, කෝසයින් සහ කෝණ දත්ත වගු) -

  • AVR එකක ආලෝකය සහ සංගීතයට වඩා ඉදිරියට යාමට අපහසු බව පැහැදිලිය, පරාමිතීන් නිවැරදි නොවේ. නමුත් බොහෝ කාර්යයන් සඳහා තත්පරයට ලකුණු 32 පරිවර්තන 120ක් ප්‍රමාණවත් විය හැක. ඔබට ඇත්ත වශයෙන්ම, 625Hz හි තවත් නියැදියක් ගත හැකිය, නැතහොත් නැවුම් අනුපාතය නැති කර ගත හැකිය. එම්කේට නරකක් දැනෙනු ඇති බව සඳහන් කිරීම වටී; කාර්ය සාධනය අනුව, ඔබට එය ඇලවිය හැකි තවත් අල්පයකි. නමුත් මෙහිදී ඔබට දෘඪාංග දත්ත හුවමාරු ක්‍රම භාවිතයෙන් ප්‍රතිඵලයේ ප්‍රතිදානය සංවිධානය කළ හැක. එවිට එය සහායක ක්ෂුද්‍ර පාලකයක් වනු ඇති අතර, ප්‍රධාන එක එයින් දත්ත පමණක් ලබා ගන්නා අතර එය වෙනත් ක්‍රියාවලීන් සමඟ අනුකූල වේ. විශාල වශයෙන්, එය තවමත් ප්රොසෙසරයේ සංඛ්යාතය මත රඳා පවතී. වරෙක මෙගා 20 MHzට වඩා අධිස්පන්දනය කිරීමට හැකි විය, නමුත් මෙම කාර්යයන් සඳහා අපට බොහෝ විට දෝෂ ලැබෙන්නේ ඉහළ සංඛ්‍යාතවලදී පමණි. අදහස හොඳයි, තවත් ගණිත කොටස් පමණක් ලියන්නේ නම් ... එය MK මත එය ක්රියාත්මක කිරීමයි
  • මම වඩාත් රසවත් විශ්ලේෂක ද සාදා ඇත: යූ ටියුබ් හෝ වර්ණ LCD අනුවාදයක්: යූ ටියුබ් පදනම් වී ඇත්තේ සුප්‍රසිද්ධ චෙන් පුස්තකාලය මත ය :)
  • “අපි කෝණය (අංශක) ගණනය කළ යුතුයි” මෙම වගු සඳහා අගයන් ගණනය කරන්නේ කෙසේදැයි වඩාත් විස්තරාත්මකව යමෙකුට පැවසිය හැකිද?
  • සයිනස් සහ කොසයින් වගුව සමඟ සියල්ල පැහැදිලිය. Degree_lookup වගුවේ අගයන් ගණනය කරන්නේ කෙසේද යන්න පැහැදිලි නැත?

සියලුම සංඥා, ඔබ ඒවා සෑදුවද හෝ විශ්වයේ ඒවා නිරීක්ෂණය කළද, සැබවින්ම විවිධ සංඛ්‍යාතවල සරල සයින් තරංගවල එකතුවකි.

මම 16x2 LCD එකකින් සහ ATmega32 microcontroller එකකින් කුඩා ශ්‍රව්‍ය වර්ණාවලිය විශ්ලේෂකයක් (0 - 10 kHz) හැදුවා. මම සරල DFT (Discrete Fourier Transform) වලින් පටන් ගත්තා. FFT (Fast Fourier Transform) DFT වලින් වෙනස් වන්නේ වැඩි වේගයකින් සහ තරමක් සංකීර්ණ ඇල්ගොරිතමයකින් පමණි, මම එය භාවිතා නොකළෙමි, සමහර විට මම එය පසුව එකතු කරමි.

FFT හා සසඳන විට DFT මන්දගාමී වේ. මගේ LCD වර්ණාවලි විශ්ලේෂකය FFT මඟින් ලබා දිය හැකි අධික වේගය අවශ්‍ය නොවන අතර, තිරයේ ඇති රූපය තත්පරයට රාමු 30ක පමණ වේගයකින් වෙනස් වන්නේ නම්, ශ්‍රව්‍ය වර්ණාවලිය දෘශ්‍යමාන කිරීමට මෙය ප්‍රමාණවත් වේ. නමුත් මට දැනටමත් 100 fps පමණ ලබා ගත හැක, කෙසේ වෙතත්, LCD සඳහා වැඩි නැවුම් අනුපාතයක් නිර්දේශ නොකරයි. 20 kHz වලදී ශ්‍රව්‍ය නියැදි DFT ලකුණු 32ක් නිපදවයි. පරිවර්තන ප්‍රතිඵලය සමමිතික බැවින්, මට භාවිත කිරීමට අවශ්‍ය වන්නේ පළමු ප්‍රතිඵල 16 පමණි. ඒ අනුව, උපරිම සංඛ්යාතය 10 kHz වේ. මේ අනුව, 10kHz/16 = 625Hz.

මම DFT ගණනය කිරීමේ වේගය වැඩි කිරීමට උත්සාහ කළෙමි. N DFT ලක්ෂ්‍යයක් තිබේ නම්, අපි සයින් සහ කෝසයින් (N^2)/2 සොයා ගත යුතුය. ලක්ෂ්‍ය 32 DFT සඳහා, අපි 512 හි සයින් සහ කෝසයින් සොයා ගත යුතුය. සයින් සහ කෝසයින් සොයා ගැනීමට පෙර, අපි යම් CPU කාලයක් ගත කරන කෝණය (අංශක) සොයා ගත යුතුයි. මෙය සිදු කිරීම සඳහා, මම සයින් සහ කොසයින් සඳහා වගු සෑදුවෙමි. මම සයින් සහ කොසයින් 16-බිට් විචල්‍ය සෑදුවේ සයින් සහ කොසයින් අගයන් 10000 න් ගුණ කිරීමෙනි. පරිවර්තනයෙන් පසු මට සෑම ප්‍රතිඵලයක්ම 10000 න් බෙදිය යුතුය. දැන් මට තත්පරයට ලක්ෂ්‍ය 32 ඩීඑෆ්ටී 120 ක් ගණනය කළ හැකිය, එය ඊට වඩා වැඩිය. වර්ණාවලිය විශ්ලේෂකය සඳහා ප්රමාණවත් වේ.

ප්රදර්ශනය කරන්න

මම ඔන්බෝඩ් LCD මතකයේ බයිට් 64කට පටවන ලද අභිරුචි LCD අක්ෂර භාවිතා කළෙමි. 16x2 LCD එකක් වර්ණාවලීක්ෂ විශ්ලේෂක සංදර්ශකයක් ලෙස භාවිතා කරන වීඩියෝවක් මම අන්තර්ජාලයෙන් දැක එම අදහස භාවිතා කළෙමි.

ශ්රව්ය ආදානය

වර්ණාවලි විශ්ලේෂකයක වැදගත්ම අංගයක් වන්නේ ඉලෙක්ට්‍රෙට් මයික්‍රෆෝනයකින් සංඥා ලබා ගැනීමයි. සංවර්ධනය කෙරෙහි විශේෂ අවධානය යොමු කළ යුතුය preampමයික්රෆෝනය සඳහා. අපි ADC ආදානයේ ශුන්‍ය මට්ටම සහ සැපයුම් වෝල්ටීයතාවයෙන් අඩකට සමාන උපරිම මට්ටම සකස් කළ යුතුය, i.e. 2.5V එය -2.5V සිට +2.5V දක්වා වෝල්ටීයතාවයකින් සැපයිය හැකිය. මෙම සීමාවන් ඉක්මවා නොයන ලෙස පූර්ව ඇම්ප්ලිෆයර් වින්‍යාසගත කළ යුතුය. මම මයික්‍රෆෝන ප්‍රීඇම්ප් එකක් ලෙස LM324 op amp එකක් භාවිත කළා.

විකිරණ මූලද්රව්ය ලැයිස්තුව

තනතුරු ටයිප් කරන්න නිකාය ප්රමාණය සටහනසාප්පු යන්නමගේ notepad එක
ප්රදර්ශනය කරන්න
MK AVR 8-bit

ATmega32

1 Notepad වෙත
ධාරිත්රකය22 pF2 Notepad වෙත
ධාරිත්රකය0.1 μF1 Notepad වෙත
විද්යුත් විච්ඡේදක ධාරිත්රකය100 μF1 Notepad වෙත
ප්රතිරෝධක

100 ඕම්

1 Notepad වෙත
ට්‍රයිමර් ප්‍රතිරෝධකය4.7 kOhm1 Notepad වෙත
ක්වාර්ට්ස් අනුනාදකය16 MHz1 Notepad වෙත
LCD සංදර්ශකය16x21 Notepad වෙත
බලශක්ති ඒකකය5 V1 Notepad වෙත
ශ්රව්ය ආදානය
U1 මෙහෙයුම් ඇම්ප්ලිෆයර්

LM324

1 Notepad වෙත
C1 ධාරිත්රකය1 μF1 Notepad වෙත
C8 ධාරිත්රකය0.01 µF1 Notepad වෙත
R1 ප්රතිරෝධක

220 kOhm

1 Notepad වෙත
R2, R3 ප්රතිරෝධක

10 kOhm

2 Notepad වෙත
R4, R9 ප්රතිරෝධක

1 kOhm

2 Notepad වෙත
R5 ප්රතිරෝධක

Texas Instruments TMS320 ශ්‍රේණියේ DSP වැනි ඩිජිටල් සංඥා සැකසුම් (DSP) සඳහා බොහෝ විශේෂිත ප්‍රොසෙසර ඇත, ඒවාට සරල පූර්ණ සංඛ්‍යා හරයන් සහ පාවෙන ලක්ෂ්‍ය දත්ත සකසන C6000 පවුලේ උප පවුල වැනි රාක්ෂයන් ඇතුළත් වේ. ඇනලොග් උපාංග වලින් සම්පූර්ණ ADSP මාලාවක් ඇත (එයට වැඩි හෝ අඩු විශ්වීය BlackFin ඇතුළත් වේ), තවත් ඒවා තිබේ සරල විසඳුම් MicroChip වෙතින් - dsPIC.

කෙසේ වෙතත්, විශේෂිත DSP හොඳයි, නමුත් එය සෑම විටම අවශ්යද? ඔව්, තොරතුරු විශාල ප්‍රවාහයක් සමඟ එය ප්‍රතිස්ථාපනය කළ නොහැකි නමුත් සරල සැකසුම් කාර්යයන් ද ඇත. නිශ්චිතවම, ද්විත්ව පරිවර්තනය කිරීමේ කාර්යය ගැන මම උනන්දු විය - ශ්රව්ය සංඥාව සංකෝචනය වන අතර, එමගින් වර්ණාවලියක් ලබා ගැනීම, එවිට වර්ණාවලියේ ඕනෑම මෙහෙයුමක් සිදු කළ හැකි අතර ප්රතිලෝම පරිවර්තනය සිදු කළ හැකි අතර, එමගින් සැකසූ සංඥාවක් ලබා ගත හැකිය. මේ සියල්ල තත්‍ය කාලීනව කළ යුතු අතර දුරකථනයේ ගුණාත්මක භාවයට වඩා අඩු ගුණාත්මක බවක් ලබා ගත යුතුය.

මෙය 2000 වර්ෂය නොවේ, ඉහළ ක්‍රියාකාරීත්වයකින් යුත් ARM7/Cortex-M3 මධ්‍යයන් මත පදනම් වූ තනි චිප විසඳුම් ඇත, ඒවා මිලෙහි සැලකිය යුතු ලෙස පහත වැටී ඇත; ඒවා 32-bit, 32-bit ගුණ කිරීමේ මෙහෙයුමක දෘඪාංග ක්‍රියාත්මක කිරීමක් ඇත (තවද , පාහේ DSP ගුණ කිරීමේ-සමුච්චය මෙහෙයුමක් සහ 64 bit ප්රතිඵලය), සහ Cortex-M3 දෘඪාංග අංශය ද ඇතුළත් වේ.

සං signal ා සැකසීම මගේ විශේෂත්වය නොවන බව මට වහාම ඔබට අනතුරු ඇඟවීමට අවශ්‍යය, සියලුම දැනුම (හෝ ඒ වෙනුවට, මූලධර්ම පිළිබඳ අවබෝධය) ආයතනයෙන් සංරක්ෂණය කර ඇත, නමුත් දැන් මට අවශ්‍ය වූයේ එය පරීක්ෂා කර ක්‍රියාත්මක කිරීමට පමණි. මම අදහස් කරන්නේ විස්තරය, සංකල්ප ආදේශ කිරීම යනාදිය වැරදි විය හැකි බවයි. ඇත්ත වශයෙන්ම, ශාස්ත්‍රීය නිරවද්‍යතාවය මට එතරම් කරදර කළේ නැත.

ඕනෑම DSP සඳහා, ඉහත දක්වා ඇති කාර්යය සරල සහ සරල ය. නමුත් සාමාන්‍ය RISC හරයක් ඒ මත හැසිරෙන්නේ කෙසේද? අපි AVR හෝ PIC ලෙස සලකන්නේ නම්, ඒවා ප්රමාණවත් නොවේ. 8-bit සහ අඩු ඔරලෝසු සංඛ්‍යාතය බලපෑමක් ඇති කරයි. කෙසේ වෙතත්, Elm-Chan සතුව AVR මත FFT මෙහෙයවන සහ සංඥා වර්ණාවලිය ඇද ගන්නා මෝස්තර ඇත. කෙසේ වෙතත්, මෙම අවස්ථාවෙහිදී, තත්‍ය කාලීනව, සරලව දෘශ්‍යකරණය සිදු කරනු ලැබේ (අවම සැකසුම් නිරවද්‍යතාවයකින්), සහ පිළිගත හැකි ශ්‍රව්‍ය ගුණාත්මක භාවයෙන් සංඥා සැකසීම සම්පූර්ණ නොවේ.

LPC2146 ARM7TDMI-S හරය මත පදනම්ව පර්යේෂණාත්මක චිපයක් ලෙස තෝරාගෙන ඇති අතර උපරිම ඔරලෝසු සංඛ්‍යාතය 60 MHz (ප්‍රායෝගිකව, එය 72 හෝ 84 MHz දී පවා ක්‍රියා නොකරයි). ඇයි? පළමුව, මට ඒ සඳහා දෝශ නිරාකරණ පුවරුවක් ඇත, දෙවනුව, ADC සහ DAC පුවරුවේ ඇත, i.e. අවම බාහිර සැරසිලි අවශ්ය වේ.

පොඩි න්‍යායක්

පළමුවෙන්ම, ARM ක්ෂුද්‍ර පාලක මත FFT (ෆාස්ට් ෆූරියර් ට්‍රාන්ස්ෆෝම්) කාර්ය සාධනය ඇගයීමට ලක් විය. මෙම තක්සේරුව මත පදනම්ව, ශ්‍රව්‍ය දත්ත ප්‍රවාහයක් සැකසීමට එයට ප්‍රමාණවත් වේගයක් තිබේද, සහ එවැනි ක්ෂුද්‍ර පාලකයක් මත නියැදි සංඛ්‍යාතය සහ නාලිකා කීයක් සැකසිය හැකිද යන්න සහිත සංඥාව අපට නිගමනය කළ හැකිය.

ෆූරියර් පරිවර්තනය මත පදනම්ව, ඔබට දක්ෂ පෙරහන් (ඉතා ආකර්ෂණීය ලක්ෂණ සහිත) ගොඩනගා ගත හැකිය. සංඥාවෙහි ස්වරය වෙනස් කිරීම (වර්ණාවලිය ඉහළ නැංවීම සහ අඩු කිරීම) සහ වර්ණාවලිය "පිළිබිඹු කිරීම" යන ගැටළු පිළිබඳව මම මූලිකවම උනන්දු විය. LSB පහළ පැතිබෑන්ඩ් රේඩියෝ විකාශනවලට සවන් දීමට SDR රේඩියෝවල දෙවැන්න අවශ්‍ය වේ.

මම ඔබට න්‍යාය පටවන්නේ නැති අතර ෆූරියර් ට්‍රාන්ස්ෆෝම් යනු කුමක්දැයි පැහැදිලි නොකරමි; මා භාවිතා කළ දෙයින් මෙම මාතෘකාව පිළිබඳ බොහෝ ද්‍රව්‍ය තිබේ: විකි සහ ඉතා හොඳ සහ තොරතුරු සහිත පොතකින් පරිච්ඡේදයක්.

මෘදුකාංග ක්රියාත්මක කිරීම

FFT හි මෘදුකාංග ක්‍රියාත්මක කිරීම් රාශියක් ඇත, කෙසේ වෙතත්, මම මගේම ලිව්වෙමි. මා අනුගමනය කළ ප්‍රධාන ඉලක්කය වූයේ නිශ්චිත ගෘහ නිර්මාණ ශිල්පයක් සඳහා කේතය ප්‍රශස්ත කිරීමයි. පළමුව, මම වහාම 32-bit වෙත අවධානය යොමු කළෙමි, දෙවනුව, පූර්ණ සංඛ්යා ගණනය කිරීම් පමණක් අවශ්ය වූ අතර බෙදීමේ මෙහෙයුම වළක්වා ගැනීම යෝග්ය විය. මෙම අවශ්‍යතා සපුරාලීම සඳහා සූදානම් කළ දෙයක් සොයා ගැනීම දැනටමත් ගැටළු සහගතය.

කල්තියා ගණනය කළ හැකි සියලුම නියතයන් ගණනය කර වගු තුළ තබා ඇත (බොහෝ විට ත්‍රිකෝණමිතික ශ්‍රිතවල අගයන්). ඇල්ගොරිතමයේ ප්‍රධාන ප්‍රශස්තිකරණය මෙයයි, එසේ නොමැතිනම් එය විස්තර කර ඇති ඇල්ගොරිතම සම්පූර්ණයෙන්ම පාහේ පුනරාවර්තනය කරයි.

වඩාත්ම වැදගත් වන්නේ පූර්ණ සංඛ්යා ගණනය කිරීම් සඳහා අවශ්යතාවයයි. ක්‍රියාත්මක කිරීමේ ක්‍රියාවලියේදී, 32-bit loop විචල්‍ය වලින් එකක පිටාර ගැලීමක් ඇති කළ දෝෂයක් පවා ඇති විය. එපමණක් නොව, එය සියලු පරීක්ෂණ දත්ත මත නොපෙන්වයි, එබැවින් එය සොයා ගන්නා තෙක් එය තරමක් හිසරදයක් විය.

මම සියලුම මූලාශ්‍ර පෙළ එක් ලේඛනාගාරයක එකතු කළෙමි. ක්‍රියාත්මක කිරීම අවසාන නොවේ, අනුපිටපත් ගණනය කිරීම් ඇත (වර්ණාවලිය සහ අදියර සමමිතිය සැලකිල්ලට නොගනී), සහ දැනට ගණනය කිරීම් සඳහා බොහෝ දේ භාවිතා කරන බැවින්, බෆර භාවිතය ප්‍රශස්ත කිරීම අවශ්‍ය වේ. අහඹු ප්රවේශ මතකය(ලකුණු 1024ක පරිවර්තනයකට ආසන්න වශයෙන් 12k).

පළමු පරීක්ෂණ

ඩ්‍රම් රෝල්: මම ලකුණු 1024 ක නියැදියක් සඳහා පරිවර්තන වේගය පරීක්ෂා කරමි, ප්‍රොසෙසර හර සංඛ්‍යාතය 60 MHz වේ. පරීක්ෂණය සිදු කරන ලද්දේ ඉමියුලේටරයක ය, එබැවින් එය 100% නිවැරදි යැයි නොකියයි, නමුත් මෙම ප්‍රති result ලය දර්ශකයක් ලෙස භාවිතා කළ හැකිය (මගේ පෙර අත්දැකීමේදී, ඉමුලේටරය බොරු කීවද, එය එතරම් නොවේ). කේතයේ පළමු අනුවාදය පරීක්ෂා කිරීම, RealView MDK සම්පාදකය, O3 ප්‍රශස්තිකරණ විකල්පය, ARM කේත උත්පාදන මාදිලිය.

ඉතින් අපි දකින දේ:

එක් එක් පරිවර්තනය සඳහා 6ms, වට-සංචාර පරිවර්තනය සඳහා 12ms කට වැඩි මුළු එකතුවක් සඳහා. නියැදි සංඛ්‍යාතය 44100Hz (ශ්‍රව්‍ය සඳහා සම්මත) සහ බිටු 16 දක්වා විභේදනයක් සහිත සාම්පල සමඟ, පිරිසිදු ගණනය කිරීම් ~44*12ms = 528ms ගතවනු ඇත. තවද මෙය ස්ථිරාංගයේ අතරමැදි අනුවාදයක ඇත, සමහර කේත ප්‍රශස්තිකරණයන් තවමත් සම්පූර්ණ කර නොමැති විට (ඇස්තමේන්තු වලට අනුව, ඇල්ගොරිතම 2 ගුණයකින් පමණ වේගවත් කළ හැකිය)! මගේ මතය අනුව, එය විශිෂ්ට දර්ශකයක් පමණි.

සමස්තයක් වශයෙන්, මූලික භාරය 50% ක් පමණ වනු ඇතැයි අපේක්ෂා කෙරේ, ADCs, DACs සහ අනෙකුත් දත්ත හුවමාරු කිරීම් සමඟ වැඩ කිරීමේදී වර්ණාවලිය සහ පොදු කාර්ය පිරිවැය මත පරිවර්තන සඳහා තවත් 50% ක් ඉතිරි වේ. ඔබ නියැදීමේ සංඛ්‍යාතය “දුරකථන” මට්ටමට (4800-9600Hz පමණ) අඩු කළහොත්, මූලික භාරය ඊටත් වඩා අඩු වනු ඇත (15-30% පමණ).

එබැවින්, ගණිතමය කොටස අඩු වැඩි වශයෙන් පැහැදිලි වේ. කොන්ක්රීට් ක්රියාත්මක කිරීම සඳහා ඔබට ඉදිරියට යා හැකිය.

යකඩ

පරීක්ෂණ වේදිකාව සඳහා, අපි ස්පීකරයක් සහිත Keil MCB2140 සංවර්ධන පුවරුවක් භාවිතා කළෙමු. උපාංගයේ රේඛීය ප්‍රතිදානයට සම්බන්ධ කිරීම සඳහා මිනි-ජැක් ලණුවක් පෑස්සුම් කර සරල ආදාන දාමයක් එකලස් කර ඇත. දැනටමත් සඳහන් කර ඇති පරිදි, පුවරුව දැනටමත් ක්ෂුද්ර පාලකයේ ඇනලොග් ප්රතිදානයට සම්බන්ධ වන ස්පීකරයක් ඇති අතර පාලනයන් (බොත්තම සහ පොටෙන්ටෝමීටරය) ඇත.

ආදාන පරිපථයේ දළ සටහනක් මෙන්න:


මෘදුකාංගයේ නිදොස්කරණය අදියර වශයෙන් සිදු විය:

  1. අවශ්‍ය සියලුම උපාංග නිදොස් කිරීම: ADC, DAC, ටයිමර්, LED ඇඟවීම.
  2. සංඥා ඩිජිටල්කරණය සමඟ පරීක්ෂා කරන්න: මම දත්ත අවශ්‍ය වේගයට ඩිජිටල් කර එය බෆරයකට දමමි, පසුව මම බෆරයෙන් දත්ත උපුටා ගෙන සංඥාව ධාවනය කරමි. එම. කිසිදු පරිවර්තනයකින් තොරව කාලය තුළ සරල සංඥා මාරු කිරීම. මෙම අදියරේදී, වැඩිදුර වැඩ සඳහා අවශ්ය බෆර 2 ක් සමඟ වැඩ කිරීමේ යාන්ත්රණය පරීක්ෂා කරනු ලැබේ.
  3. දක්වා පෙර අනුවාදයසෘජු සහ ප්රතිලෝම ෆූරියර් පරිවර්තන එකතු කරනු ලැබේ. මෙම පරීක්ෂණය අවසානයේ FFT කේතයේ නිවැරදි ක්‍රියාකාරිත්වය තහවුරු කරයි, එසේම කේතය පවතින කාර්ය සාධනය තුළට ගැලපෙනවාද යන්න පරීක්ෂා කරයි.
  4. මෙයින් පසු, යෙදුමේ ප්රධාන ඇටසැකිල්ල සිදු කරනු ලැබේ, ඔබට ප්රායෝගික යෙදුම් වෙත ගමන් කළ හැකිය.

කේතයට FFT එකතු කිරීමෙන් පසුව ගැටළුව මතු විය: බාහිර ශබ්දය සහ විස්ල් සංඥාව තුළ දිස් විය. පොදුවේ ගත් කල, මෙම හැසිරීම මට තරමක් අමුතු බවක් පෙනෙන්නට තිබුණි, මන්ද ... පරිවර්තනයකින් තොරව, ඩිජිටල් මාර්ගය හරහා ගමන් කරන සංඥාව තරමක් පිරිසිදුව පැවතුනි. මෙයට පළමු හේතුව: ඇනලොග් පරිපථයෙන් පසුව, ADC හි සංඥා විස්තාරය සම්පූර්ණ නොවීය (0-3.3V), නමුත් ක්‍රීඩකයාගේ උපරිම පරිමාවේ දී 0.5-2V තුළ පමණි, දෙවැන්න: පූර්ණ සංඛ්‍යාව නිසා තරමක් ප්‍රබල ශබ්දය ගණනය කිරීම් (+-1 ඒකකය, එය ඇසෙන බාධා ඇති කිරීමට ප්‍රමාණවත් විය).

පළමු ගැටළුවට එරෙහිව සටන් කිරීම සඳහා, ඇනලොග් කොටස සකස් කිරීම ආරම්භ කිරීමට තීරණය විය. සහ ශබ්දය සමඟ ගැටළුව විසඳීමට, lowpass ෆිල්ටරයක් ​​භාවිතා කිරීමට උත්සාහ කරන්න.

යෙදුම 1: සංඥාවේ ස්වරය වෙනස් කිරීම

පුවරුවේ පොටෙන්ටියෝමීටරයක් ​​ඇත ( විචල්ය ප්රතිරෝධකය), එය පාලනය සඳහා භාවිතා කළ හැක. මෙම අවස්ථාවෙහිදී, එය ඔබගේ ප්රියතම සංයුති "පරිවර්තනය" කිරීමට ප්රමාණවත් තරම් ඉහළ සහ පහළට මාරු කිරීම සඳහා සංඥා වර්ණාවලිය සකසයි.

සංඛ්‍යාත වසම තුළ සිදුවන දේ මෙන්න:


මෙම අවස්ථාවේදී, පරිවර්තන ප්රතිඵලය 2 බෆර වල අඩංගු වේ. එක් බෆරයක් සැබෑ කොටස වන අතර අනෙක මනඃකල්පිත කොටසයි. ඒවායේ ලබාගත් සංඛ්‍යාවල භෞතික අර්ථය: සැබෑ කොටසෙහි හරස්වල අගයන් අඩංගු වේ, මනඃකල්පිත කොටසෙහි මෙම හාර්මොනික්ස් සඳහා අදියර මාරුව අඩංගු වේ. එපමණක් නොව, ඔබට පෙනෙන පරිදි, ආරම්භක සංඥාව N-අගයන් මගින් විස්තර කර ඇති අතර, පරිවර්තනයෙන් පසුව, 2N-අගය ලබා ගනී. තොරතුරු ප්‍රමාණය වෙනස් නොවන අතර, දත්ත ප්‍රමාණයෙහි 2 ගුණයකින් වැඩි වීම සිදුවන්නේ අගයන් අනුපිටපත් කිරීමේ ආකාරයෙන් බෆර දත්තවල අතිරික්තතාවයක් තිබීම හේතුවෙනි.




ඉහල