التطبيق العملي لتحويل فورييه لمعالجة الإشارات. معالجة الإشارات الرقمية على وحدات التحكم الدقيقة ARM7 تحويل فورييه avr

تنص نظرية فورييه على أنه يمكن توسيع أي إشارة إلى سلسلة في مجموعة متعامدة من الوظائف الدورية (على سبيل المثال، الجيب وجيب التمام) بترددات هي مضاعفات تردد الإشارة الدورية. وبالتالي، يعتمد التحليل الطيفي للإشارة على البحث عن معاملات الترجيح (في الحالة العامة، معاملات معقدة)، والتي تتوافق وحدتها مع جزء من قوة التذبذب للتوافقي المقابل الذي تم إدخاله في التراكب العام لجميع التوافقيات .

تحويل فورييه السريع

تحويل فورييه السريع هو خوارزمية حسابية تستغل بنجاح الخصائص الدورية للدوال المثلثية لتجنب العمليات الحسابية غير الضرورية في تحويل فورييه المنفصل (DFT)، مما يجعل العثور على المعاملات في توسيع فورييه أسرع. والفرق الرئيسي عن التحويل المنفصل هو فقط في طريقة حساب القيم العددية (الخوارزمية)، وليس في معالجة الإشارة نفسها. سواء في حالة FFT أو في حالة DFT، فإن نتيجة الحسابات هي نفسها. الشرط الوحيد لخوارزمية FFT هو حجم العينة الذي يكون مضاعفًا لـ N = 2L، حيث L هو أي عدد صحيح موجب. خوارزميات FFT ذات الأساس 2 الأكثر شيوعًا هي: مهلك الوقت ومهلك التردد.

في هذا العمل، تم تطبيق خوارزمية radix-2 FFT مع ترقق الوقت (خوارزمية Cooley-Tukey). من السهل الحصول عليها من خلال دراسة بعض قوانين DFT. دعونا نقدم ما يسمى بمعامل الدوران:

في هذه الحالة، في DFT، يتم التعبير عن معاملات فورييه لعدد من قيم الإشارة (f0،f1،…،fN-1) بالعلاقة:

النظر في سلسلة إشارة من 4 قيم: (f0،f1،f2،f3). دعونا نقدم تحويل فورييه في شكل مصفوفة (يتم تضمين معامل التطبيع 1/N في متجه العمود Cij على الجانب الأيمن من التعبير):

بعد كتابة معاملات الدوران باستخدام صيغة أويلر وتحديد قيمها لـ k = 0، 1، 2،..9، يمكنك إنشاء مخطط (الشكل 2)، يمكن من خلاله رؤية نمط المعاملات المتكررة.

الشكل 2. سلسلة الطاقة ث لـ N = 4

باستبدال القيم العددية في (4) نحصل على:

أي أن قيم w، بدءًا من w4، تساوي القيمة المقابلة من w0 إلى w3. بعد ذلك، نعيد كتابة معادلة المصفوفة (4) في شكل غير قياسي (يتم تقديم رموز مماثلة لتوضيح العمليات الإضافية):

دعونا نبدل أعمدة المصفوفة، ونقسمها إلى مجموعتين: بواسطة مؤشرات f0 وf2 وفردية f1 وf3:

لنأخذ في الاعتبار أن wk+1 = wkw1، فسيتم إعادة كتابة التعبير (6) على النحو التالي:

استخدام النسب:

نحصل على معاملات التمدد المطلوبة في شكل متجه عمود بقيم الخلية:

يبدو التمثيل الرسومي للخوارزمية (الشكل 3) مثل الفراشة ذات الأجنحة المفتوحة، ولهذا السبب تسمى طريقة الحساب هذه "الفراشة".

الشكل 3. رسم بياني للفراشة لسلسلة من 4 مصطلحات

لذلك، في الخطوة الأولى من الخوارزمية، يتم تقسيم أعضاء عدد من قيم الإشارة إلى مؤشرات زوجية وفردية. ومن ثم يتم تنفيذ الرسم البياني "الفراشة" وهو يتكون من مرحلتين عددهما يساوي قوة مرحلتين من حجم العينة (N = 4 = 22). في كل مرحلة يتم تنفيذ "فراشتين" ويبقى عددهما الإجمالي دون تغيير. كل عملية فراشة تقابل عملية ضرب واحدة. للمقارنة: في DFT مع أخذ العينات (f0,f1,f2,f3)، يجب إجراء عملية الضرب 4×4 = 16 مرة، وفي حالة FFT 4 مرات فقط.

يمكن أيضًا كتابة هذه السلسلة على النحو التالي:

(2),
حيث السعة المعقدة k-th.

يتم التعبير عن العلاقة بين المعاملين (1) و (3) بالصيغ التالية:

لاحظ أن جميع هذه التمثيلات الثلاثة لسلسلة فورييه متكافئة تمامًا. في بعض الأحيان، عند العمل مع متسلسلة فورييه، يكون من الملائم أكثر استخدام أسس الوسيطة التخيلية بدلاً من جيب التمام وجيب التمام، أي استخدام تحويل فورييه في شكل معقد. ولكن من الملائم لنا استخدام الصيغة (1)، حيث يتم تقديم سلسلة فورييه كمجموع جيب التمام مع السعات والأطوار المقابلة. على أية حال، من غير الصحيح القول بأن تحويل فورييه للإشارة الحقيقية سيؤدي إلى اتساع توافقي معقد. كما يقول Wiki بشكل صحيح، "تحويل فورييه (؟) هو عملية تربط دالة لمتغير حقيقي مع دالة أخرى، وهي أيضًا متغير حقيقي."

المجموع:
الأساس الرياضي للتحليل الطيفي للإشارات هو تحويل فورييه.

يتيح لك تحويل فورييه تمثيل دالة مستمرة f(x) (إشارة)، محددة على المقطع (0، T) كمجموع عدد لا نهائي (سلسلة لا نهائية) من الدوال المثلثية (جيب و/أو جيب التمام) مع بعض السعات والمراحل، تعتبر أيضًا في الجزء (0، T). تسمى هذه السلسلة بسلسلة فورييه.

دعونا نلاحظ بعض النقاط الأخرى، التي يلزم فهمها للتطبيق الصحيح لتحويل فورييه لتحليل الإشارة. إذا نظرنا إلى متسلسلة فورييه (مجموع الجيوب الأنفية) على المحور السيني بأكمله، يمكننا أن نرى أنه خارج القطعة (0، T) فإن الدالة التي تمثلها متسلسلة فورييه سوف تكرر وظيفتنا بشكل دوري.

على سبيل المثال، في الرسم البياني للشكل 7، يتم تعريف الدالة الأصلية على المقطع (-T\2، +T\2)، وتمثل سلسلة فورييه دالة دورية محددة على المحور السيني بأكمله.

يحدث هذا لأن الجيوب الأنفية نفسها هي دوال دورية، وبالتالي فإن مجموعها سيكون دالة دورية.


الشكل 7: تمثيل دالة أصلية غير دورية بواسطة سلسلة فورييه

هكذا:

دالتنا الأصلية مستمرة، غير دورية، ومحددة على جزء معين من الطول T.
طيف هذه الوظيفة منفصل، أي أنه يتم تقديمه في شكل سلسلة لا حصر لها من المكونات التوافقية - سلسلة فورييه.
في الواقع، تحدد متسلسلة فورييه دالة دورية معينة تتزامن مع دالتنا على القطعة (0، T)، لكن هذه الدورية ليست مهمة بالنسبة لنا.

فترات المكونات التوافقية هي مضاعفات قيمة المقطع (0، T) الذي تم تعريف الدالة الأصلية f(x) عليه. بمعنى آخر، الفترات التوافقية هي مضاعفات مدة قياس الإشارة. على سبيل المثال، فترة التوافقي الأول من سلسلة فورييه تساوي الفترة T التي يتم تعريف الدالة f(x) عليها. فترة التوافقي الثاني من سلسلة فورييه تساوي الفترة T/2. وهكذا (انظر الشكل 8).


الشكل 8: فترات (ترددات) المكونات التوافقية لسلسلة فورييه (هنا T = 2؟)

وبناء على ذلك، فإن ترددات المكونات التوافقية هي مضاعفات 1/T. أي أن ترددات المكونات التوافقية Fk تساوي Fk = k\T، حيث تتراوح k من 0 إلى ?، على سبيل المثال k = 0 F0 = 0؛ ك=1 F1=1\T; ك=2 F2=2\T; k=3 F3=3\T;… Fk= k\T (عند تردد صفر - مكون ثابت).

دع وظيفتنا الأصلية تكون إشارة مسجلة خلال T = 1 ثانية. إذن فإن فترة التوافقي الأول ستكون مساوية لمدة إشارتنا T1=T=1 ثانية وسيكون التردد التوافقي 1 هرتز. ستكون فترة التوافقي الثاني مساوية لمدة الإشارة مقسومة على 2 (T2=T/2=0.5 ثانية) وسيكون التردد 2 هرتز. للمدروج الثالث T3=T/3 sec والتردد 3 هرتز. وما إلى ذلك وهلم جرا.

الخطوة بين التوافقيات في هذه الحالة هي 1 هرتز.

وبالتالي، يمكن تقسيم الإشارة التي تبلغ مدتها ثانية واحدة إلى مكونات توافقية (الحصول على طيف) بدقة تردد قدرها 1 هرتز.
لزيادة الدقة مرتين إلى 0.5 هرتز، تحتاج إلى زيادة مدة القياس مرتين - حتى ثانيتين. يمكن تقسيم الإشارة التي تدوم 10 ثوانٍ إلى مكونات توافقية (للحصول على طيف) بدقة تردد تبلغ 0.1 هرتز. لا توجد طرق أخرى لزيادة دقة التردد.

هناك طريقة لزيادة مدة الإشارة بشكل مصطنع عن طريق إضافة أصفار إلى مجموعة العينات. لكنه لا يزيد من دقة التردد الفعلية.

3. الإشارات المنفصلة وتحويل فورييه المنفصل

ومع تطور التكنولوجيا الرقمية، تغيرت أيضًا طرق تخزين بيانات القياس (الإشارات). إذا كان من الممكن في السابق تسجيل الإشارة على جهاز تسجيل وتخزينها على الشريط في شكل تناظري، فقد تم الآن ترقيم الإشارات وتخزينها في ملفات في ذاكرة الكمبيوتر كمجموعة من الأرقام (العينات).

المخطط المعتاد لقياس الإشارة ورقمنتها هو كما يلي.


الشكل 9 رسم تخطيطي لقناة القياس

إشارة من محول قياسيصل إلى ADC خلال فترة زمنية T. يتم نقل عينات الإشارة (أخذ العينات) التي تم الحصول عليها خلال فترة T إلى الكمبيوتر وتخزينها في الذاكرة.


الشكل 10: الإشارة الرقمية - عدد N من العينات المستلمة خلال الوقت T

ما هي متطلبات معلمات رقمنة الإشارة؟ جهاز يقوم بتحويل إشارة الإدخال التناظرية إلى رمز منفصل ( الإشارات الرقمية) يسمى محول تمثيلي إلى رقمي (ADC، محول تناظري إلى رقمي باللغة الإنجليزية، ADC) (Wiki).

إحدى المعلمات الرئيسية لـ ADC هي الحد الأقصى لتردد أخذ العينات (أو معدل أخذ العينات، معدل أخذ العينات باللغة الإنجليزية) - معدل أخذ العينات للإشارة المستمرة بمرور الوقت عند أخذ عينات منها. يتم قياسه بالهرتز. ((ويكي))

وفقًا لنظرية كوتيلنيكوف، إذا كانت الإشارة المستمرة لها طيف محدود بالتردد Fmax، فيمكن إعادة بنائها بالكامل وبشكل لا لبس فيه من عيناتها المنفصلة المأخوذة على فترات زمنية ، أي. مع التردد فد؟ 2*Fmax، حيث Fd هو تردد أخذ العينات؛ Fmax - الحد الأقصى لتردد طيف الإشارة. بمعنى آخر، يجب أن يكون تردد رقمنة الإشارة (تردد أخذ عينات ADC) أعلى مرتين على الأقل من الحد الأقصى لتردد الإشارة التي نريد قياسها.

ماذا سيحدث إذا أخذنا عينات ذات تردد أقل مما تتطلبه نظرية كوتيلنيكوف؟

في هذه الحالة، يحدث تأثير "التعرج" (المعروف أيضًا باسم التأثير الاصطرابي، تأثير تموج في النسيج)، حيث تتحول الإشارة عالية التردد، بعد الرقمنة، إلى إشارة منخفضة التردد، وهي في الواقع غير موجودة. في التين. 5 موجة جيبية حمراء عالية التردد هي إشارة حقيقية. الجيوب الأنفية الزرقاء ذات التردد المنخفض هي إشارة وهمية تنشأ بسبب حقيقة أنه خلال فترة أخذ العينات، يكون هناك وقت لتمرير أكثر من نصف فترة الإشارة عالية التردد.


أرز. 11. ظهور إشارة زائفة منخفضة التردد بمعدل أخذ عينات مرتفع بشكل غير كافٍ

لتجنب تأثير التعرج، يتم وضع مرشح خاص مضاد للتعرجات أمام ADC - مرشح تمرير منخفض (LPF)، الذي يمرر الترددات أقل من نصف تردد أخذ عينات ADC، ويقطع الترددات الأعلى.

من أجل حساب طيف الإشارة من عيناتها المنفصلة، ​​يتم استخدام تحويل فورييه المنفصل (DFT). دعونا نلاحظ مرة أخرى أن طيف الإشارة المنفصلة "بحكم التعريف" محدود بالتردد Fmax، وهو أقل من نصف تردد أخذ العينات Fd. لذلك، يمكن تمثيل طيف الإشارة المنفصلة بمجموع عدد محدود من التوافقيات، على عكس المجموع اللانهائي لسلسلة فورييه للإشارة المستمرة، والتي يمكن أن يكون طيفها غير محدود. وفقًا لنظرية كوتيلنيكوف، يجب أن يكون الحد الأقصى لتردد التوافقي بحيث يمثل عينتين على الأقل، وبالتالي فإن عدد التوافقيات يساوي نصف عدد عينات الإشارة المنفصلة. أي أنه إذا كانت هناك عينات N في العينة، فإن عدد التوافقيات في الطيف سيكون مساوياً لـ N/2.

دعونا الآن نفكر في تحويل فورييه المنفصل (DFT).

مقارنة مع سلسلة فورييه

نحن نرى أنهما متطابقان، باستثناء أن الوقت في DFT منفصل بطبيعته وعدد التوافقيات محدود بـ N/2 - نصف عدد العينات.

تتم كتابة صيغ DFT في متغيرات عددية بدون أبعاد k، s، حيث k هي أعداد عينات الإشارة، s هي أعداد المكونات الطيفية.
توضح القيمة s عدد التذبذبات التوافقية الكاملة خلال الفترة T (مدة قياس الإشارة). يتم استخدام تحويل فورييه المنفصل للعثور على اتساع وأطوار التوافقيات باستخدام طريقة عددية، أي. "على الحاسوب"

العودة إلى النتائج التي تم الحصول عليها في البداية. كما ذكر أعلاه، عند توسيع دالة غير دورية (إشارتنا) إلى سلسلة فورييه، فإن سلسلة فورييه الناتجة تتوافق فعليًا مع دالة دورية ذات الفترة T (الشكل 12).


الشكل 12 الدالة الدورية f(x) مع الفترة T0، مع فترة القياس T>T0

وكما يتبين في الشكل 12، تكون الدالة f(x) دورية خلال الفترة T0. ومع ذلك، نظرًا لأن مدة عينة القياس T لا تتزامن مع فترة الدالة T0، فإن الدالة التي تم الحصول عليها كسلسلة فورييه لها انقطاع عند النقطة T. ونتيجة لذلك، سيحتوي طيف هذه الدالة على عدد كبير من التوافقيات عالية التردد. إذا تزامنت مدة عينة القياس T مع فترة الدالة T0، فإن الطيف الذي تم الحصول عليه بعد تحويل فورييه سيحتوي فقط على التوافقي الأول (الجيبي مع فترة تساوي مدة أخذ العينات)، لأن الدالة f(x) هو الجيوب الأنفية.

وبعبارة أخرى، فإن برنامج DFT "لا يعرف" أن إشارتنا هي "قطعة من الجيوب الأنفية"، ولكنه يحاول تمثيل دالة دورية في شكل سلسلة، والتي لها انقطاع بسبب عدم تناسق القطع الفردية من الجيوب الأنفية.

ونتيجة لذلك، تظهر التوافقيات في الطيف، والتي ينبغي أن تلخص شكل الدالة، بما في ذلك هذا الانقطاع.

وبالتالي، من أجل الحصول على الطيف "الصحيح" للإشارة، وهو مجموع عدة جيوب جيبية ذات فترات مختلفة، من الضروري أن يتناسب عدد صحيح من فترات كل جيب جيبي مع فترة قياس الإشارة. ومن الناحية العملية، يمكن استيفاء هذا الشرط لفترة طويلة بما فيه الكفاية لقياس الإشارة.


الشكل 13: مثال على وظيفة وطيف إشارة الخطأ الحركي لعلبة التروس

مع مدة أقصر، ستبدو الصورة "أسوأ":


الشكل 14: مثال على وظيفة وطيف إشارة اهتزاز العضو الدوار

من الناحية العملية، قد يكون من الصعب فهم أين هي "المكونات الحقيقية" وأين هي "المصنوعات" الناتجة عن الفترات غير المتعددة للمكونات ومدة أخذ عينات الإشارة أو "القفزات والفواصل" في شكل الإشارة . بالطبع، تم وضع الكلمتين "المكونات الحقيقية" و"القطع الأثرية" بين علامتي اقتباس لسبب ما. إن وجود العديد من التوافقيات على الرسم البياني للطيف لا يعني أن إشارتنا "تتكون" منها بالفعل. هذا هو نفس الاعتقاد بأن الرقم 7 "يتكون" من الرقمين 3 و 4. يمكن تمثيل الرقم 7 كمجموع الرقمين 3 و 4 - وهذا صحيح.

لذا فإن إشارتنا... أو بالأحرى ليست "إشارتنا"، بل يمكن تمثيل دالة دورية مكونة من تكرار إشارتنا (أخذ العينات) كمجموع التوافقيات (موجات جيبية) بسعات وأطوار معينة. ولكن في العديد من الحالات المهمة للممارسة (انظر الأشكال أعلاه)، فمن الممكن بالفعل ربط التوافقيات التي تم الحصول عليها في الطيف بعمليات حقيقية ذات طبيعة دورية وتساهم بشكل كبير في شكل الإشارة.

بعض النتائج

1. إشارة حقيقية مُقاسة مدتها T ثانية، مُرقمنة بواسطة ADC، أي مُمثلة بمجموعة من العينات المنفصلة (N قطع)، لها طيف غير دوري منفصل، مُمثل بمجموعة من التوافقيات (N/ 2 قطعة).

2. يتم تمثيل الإشارة بمجموعة من القيم الحقيقية وطيفها يمثل بمجموعة من القيم الحقيقية. الترددات التوافقية إيجابية. حقيقة أنه من الأفضل لعلماء الرياضيات تمثيل الطيف في شكل معقد باستخدام الترددات السلبية لا تعني أن "هذا صحيح" و"يجب القيام بذلك دائمًا".

3. الإشارة المقاسة خلال فترة زمنية T يتم تحديدها فقط خلال فترة زمنية T. ما حدث قبل أن نبدأ في قياس الإشارة، وما سيحدث بعد ذلك، غير معروف للعلم. وفي حالتنا، هذا ليس مثيرا للاهتمام. يعطي DFT لإشارة محدودة الوقت طيفها "الحقيقي"، بمعنى أنه يسمح، في ظل ظروف معينة، بحساب سعة وتردد مكوناتها.

المواد المستخدمة وغيرها من المواد المفيدة.

يتم استخدام مؤشر LCD المكون من سطرين كجهاز عرض. النقطة الرئيسية في تنفيذ هذا المشروع ليست الأجهزة، ولكن البرنامج، وبشكل أكثر دقة، تنفيذ تحويل فورييه المنفصل (DFT) على متحكم دقيق 8 بت. تجدر الإشارة على الفور إلى أن المؤلف ليس خبيرًا في هذا المجال، وبالتالي بدأ بالأساسيات - بتحويل فورييه المنفصل البسيط. خوارزمية تحويل فورييه السريعة ليست سريعة فحسب، بل إنها معقدة أيضًا.

تحويل فورييه المنفصل (في الأدب الإنجليزي DFT، تحويل فورييه المنفصل) هو أحد تحويلات فورييه المستخدمة على نطاق واسع في خوارزميات معالجة الإشارات الرقمية (تستخدم تعديلاته في ضغط الصوت في MP3، وضغط الصور في JPEG، وما إلى ذلك)، وكذلك في تتعلق المجالات الأخرى بتحليل الترددات في إشارة منفصلة (على سبيل المثال، التناظرية الرقمية). يتطلب تحويل فورييه المنفصل وظيفة منفصلة كمدخل. غالبًا ما يتم إنشاء مثل هذه الوظائف عن طريق أخذ العينات (قيم أخذ العينات من الوظائف المستمرة).

رسم تخطيطي لمحلل الطيف إشارة صوتيةبسيط جدًا ويمكن تقسيمه تقريبًا إلى أجزاء رقمية وتناظرية.

يتكون الجزء الرقمي من متحكم دقيق ومؤشر LCD متصل به. يتم تسجيل وحدة التحكم الدقيقة من مرنان الكوارتز 16 ميجا هرتز، يتم استخدام جهد الإمداد البالغ +5 فولت كجهد مرجعي لـ ADC الخاص بوحدة التحكم الدقيقة.
يتم توصيل ناقل البيانات الخاص بمؤشر LCD بالمنفذ C لوحدة التحكم الدقيقة (خطوط الإدخال / الإخراج PC0-PC3)، ويتم توصيل ناقل التحكم بالمنفذ D (PD5، PD6) لوحدة التحكم الدقيقة. يعمل المؤشر في وضع 4 بت. يتم استخدام مقاوم متغير بقيمة اسمية تبلغ 4.7 ​​كيلو أوم لضبط التباين. للعمل مع المؤشر، تم إنشاء رموز مخصصة لعرض 8 أعمدة أفقية للمحلل؛ تشغل هذه الرموز المخصصة كل 64 بايت من ذاكرة الوصول العشوائي لمؤشر LCD.

يعمل المتحكم الدقيق من خلال مرنان كوارتز خارجي بتردد 16 ميجاهرتز.

الجزء التناظري من الجهاز هو الجزء الأكثر أهمية وهو مضخم مسبق لإشارة ميكروفون الإلكتريت، والذي يتم توصيل خرجه بقناة ADC0 الخاصة بـ ADC المدمج في وحدة التحكم الدقيقة. نحن بحاجة إلى ضبط مستوى الصفر عند مدخل ADC على نصف الجهد المرجعي بالضبط، أي. 2.5 فولت. في هذه الحالة، يمكننا استخدام نصف الموجة الإيجابية والسلبية للإشارة، ولكن يجب ألا يتجاوز اتساعها الحد المحدد، أي. يجب ضبط الكسب بدقة لمنع التحميل الزائد. يتم استيفاء جميع الشروط المذكورة أعلاه من خلال دائرة كهربائية دقيقة لمضخم تشغيلي منخفض الطاقة.

تعد خوارزمية DFT أبطأ قليلاً مقارنة بتحويل فورييه السريع. لكن محلل الطيف الخاص بنا لا يتطلب سرعة عالية، وإذا كان بإمكانه توفير معدل تحديث يبلغ حوالي 30 إطارًا في الثانية، فسيكون هذا أكثر من كافٍ لتصور طيف الإشارة الصوتية. على أي حال، في نسختنا، من الممكن تحقيق سرعة 100 إطار في الثانية، ولكن هذه بالفعل قيمة معلمة عالية جدًا لمؤشر LCD مكون من سطرين ولا يوصى بها. تردد أخذ العينات هو 20 كيلو هرتز لتحويل فورييه المنفصل 32 نقطة وبما أن نتيجة التحويل متماثلة، فإننا نحتاج فقط إلى استخدام النصف الأول، أي. أول 16 نتيجة. لذلك، يمكننا عرض طيف التردد حتى 10 كيلو هرتز ودقة المحلل هي 10 كيلو هرتز/16 = 625 هرتز.

قام مؤلف التصميم بمحاولات لزيادة سرعة حسابات DFT. إذا كان هذا التحويل يحتوي على نقاط N، فيجب علينا إيجاد قيم N2/2 للجيب وجيب التمام. لتحويل 32 نقطة، نحتاج إلى إيجاد 512 قيمة جيب وجيب تمام. ولكن، قبل العثور عليها، نحتاج إلى حساب الزاوية (الدرجات)، الأمر الذي سيستغرق بعض الوقت من وحدة المعالجة المركزية، لذلك تقرر استخدام جداول القيمة لهذه الحسابات. عند الحساب في برنامج المتحكم الدقيق، لا يتم استخدام الفاصلة العائمة وأرقام الدقة المزدوجة، لأن ذلك سيستغرق وقتًا أطول للمعالجة على متحكم دقيق 8 بت. بدلاً من ذلك، تستخدم القيم الموجودة في جداول البحث بيانات عددية 16 بت مضروبة في 10000. ثم بعد إجراء التحويل، يتم تقسيم النتائج على 10000. باستخدام هذا الأسلوب، من الممكن إجراء 120 تحويلاً من 32 نقطة في الثانية وهو أكثر من كافٍ لأجهزتنا.

عرض عمل محلل الطيف على متحكم ATmega32

التحميلات

الكود المصدري (برنامج المتحكم الدقيق، جداول بيانات الجيب وجيب التمام والزاوية) -

  • من الواضح أنه من الصعب الذهاب أبعد من الضوء والموسيقى على AVR، فالمعلمات غير صحيحة. لكن 120 تحويلاً من 32 نقطة في الثانية قد تكون كافية لمعظم المهام. ويمكنك بالطبع أخذ عينة أخرى تبلغ 625 هرتز، أو بالأحرى فقدان معدل التحديث. ومن الجدير بالذكر أن عضو الكنيست سوف يشعر بالسوء؛ فيما يتعلق بالأداء، ليس هناك سوى القليل الذي يمكنك تثبيته عليه. ولكن هنا يمكنك تنظيم إخراج النتيجة باستخدام طرق نقل بيانات الأجهزة. بعد ذلك، سيكون متحكمًا مساعدًا، وسيتلقى المتحكم الرئيسي البيانات منه فقط ويعالجها بما يتوافق مع العمليات الأخرى. بشكل عام، لا يزال الأمر يعتمد على تردد المعالج. ذات مرة كان من الممكن رفع تردد التشغيل ميجا فوق 20 ميجا هرتز، ولكن بالنسبة لهذه المهام، فمن المحتمل أن نحصل فقط على مواطن الخلل في الترددات العالية. الفكرة جيدة، لو تمت كتابة المزيد من الأجزاء الرياضية... إنه تنفيذها على MK
  • لقد قمت أيضًا بإنشاء محللات أكثر إثارة للاهتمام: You Tube أو إصدار على شاشة LCD ملونة: يعتمد YouTube على مكتبة Chen الشهيرة :)
  • "نحن بحاجة لحساب الزاوية (بالدرجات)" هل يمكن لأحد أن يخبرنا بمزيد من التفصيل كيف يتم حساب قيم هذه الجداول؟
  • كل شيء واضح مع جدول الجيب وجيب التمام. ليس من الواضح كيف يتم حساب القيم في جدول Degree_lookup؟

جميع الإشارات، سواء قمت بتكوينها أو مراقبتها في الكون، هي في الواقع مجرد مجموع موجات جيبية بسيطة ذات ترددات مختلفة.

لقد صنعت محللًا صغيرًا للطيف الصوتي (0 - 10 كيلو هرتز) من شاشة LCD مقاس 16 × 2 ووحدة تحكم دقيقة ATmega32. لقد بدأت مع DFTs البسيطة (تحويل فورييه المنفصل). يختلف FFT (تحويل فورييه السريع) عن DFT فقط في سرعة أكبر وخوارزمية أكثر تعقيدًا قليلاً، ولم أستخدمها، ربما سأضيفها لاحقًا.

DFT بطيء مقارنة بـ FFT. لا يتطلب محلل طيف LCD الخاص بي السرعة العالية التي يمكن أن يوفرها FFT، وإذا تغيرت الصورة على الشاشة بمعدل حوالي 30 إطارًا في الثانية، فهذا أكثر من كافٍ لتصور الطيف الصوتي. لكن يمكنني بالفعل تحقيق حوالي 100 إطارًا في الثانية، ومع ذلك، لا يُنصح باستخدام معدل تحديث مرتفع جدًا لشاشات LCD. ينتج الصوت الذي تم أخذ عينات منه عند 20 كيلو هرتز 32 نقطة DFT. وبما أن نتيجة التحويل متماثلة، فأنا بحاجة فقط إلى استخدام النتائج الـ 16 الأولى. وبناء على ذلك، فإن الحد الأقصى للتردد هو 10 كيلو هرتز. وبالتالي، 10 كيلو هرتز/16 = 625 هرتز.

كنت أحاول زيادة سرعة حساب DFT. إذا كانت هناك نقطة N DFT، فنحن بحاجة إلى إيجاد جيب التمام وجيب التمام (N^2)/2. بالنسبة إلى DFT من 32 نقطة، نحتاج إلى إيجاد جيب الجيب وجيب التمام للرقم 512. قبل العثور على الجيب وجيب التمام، نحن بحاجة إلى العثور على الزاوية (بالدرجات) التي تشغل بعض الوقت في وحدة المعالجة المركزية. للقيام بذلك، قمت بعمل جداول للجيب وجيب التمام. لقد قمت بإنشاء متغيرات جيب الجيب وجيب التمام 16 بت عن طريق ضرب قيم الجيب وجيب التمام في 10000. بعد التحويل، لا بد لي من تقسيم كل نتيجة على 10000. الآن يمكنني حساب 120 DFTs من 32 نقطة في الثانية، وهو أكثر من يكفي لمحلل الطيف.

عرض

لقد استخدمت أحرف LCD مخصصة تم تحميلها في ذاكرة LCD المدمجة البالغة 64 بايت. لقد رأيت مقطع فيديو عبر الإنترنت حيث يتم استخدام شاشة LCD مقاس 16 × 2 كشاشة عرض لمحلل الطيف واستخدمت هذه الفكرة.

إدخال الصوت

أحد أهم أجزاء محلل الطيف هو الحصول على الإشارة من ميكروفون الإلكتريت. ينبغي إيلاء اهتمام خاص للتنمية المضخمللميكروفون. نحتاج إلى ضبط مستوى الصفر عند مدخل ADC والمستوى الأقصى يساوي نصف جهد الإمداد، أي. 2.5 فولت. يمكن تزويده بجهد من -2.5 فولت إلى +2.5 فولت. يجب تكوين المضخم بحيث لا يتجاوز هذه الحدود. لقد استخدمت مضخم تشغيلي LM324 كمضخم صوت للميكروفون.

قائمة العناصر الراديوية

تعيين يكتب فئة كمية ملحوظةمحلمفكرة بلدي
عرض
MK AVR 8 بت

ATmega32

1 إلى المفكرة
مكثف22 بيكو فاراد2 إلى المفكرة
مكثف0.1 درجة فهرنهايت1 إلى المفكرة
مكثف كهربائيا100 درجة فهرنهايت1 إلى المفكرة
المقاوم

100 أوم

1 إلى المفكرة
المقاوم الانتهازي4.7 كيلو أوم1 إلى المفكرة
مرنان الكوارتز16 ميجا هرتز1 إلى المفكرة
عرض شاشات الكريستال السائل16x21 إلى المفكرة
وحدة الطاقة5 خامسا1 إلى المفكرة
إدخال الصوت
U1 مكبر للصوت التشغيلي

LM324

1 إلى المفكرة
ج1 مكثف1 ميكروفاراد1 إلى المفكرة
C8 مكثف0.01 درجة فهرنهايت1 إلى المفكرة
ر1 المقاوم

220 كيلو أوم

1 إلى المفكرة
ر2، ر3 المقاوم

10 كيلو أوم

2 إلى المفكرة
ر4، ر9 المقاوم

1 كيلو أوم

2 إلى المفكرة
ص5 المقاوم

هناك العديد من المعالجات المتخصصة لمعالجة الإشارات الرقمية (DSP)، مثل DSP من سلسلة Texas Instruments TMS320، والتي تتضمن كلاً من النوى الصحيحة البسيطة والوحوش مثل الفئة الفرعية لعائلة C6000 التي تعالج بيانات الفاصلة العائمة. هناك سلسلة ADSP كاملة من الأجهزة التناظرية (والتي تتضمن BlackFin العالمي إلى حد ما)، وهناك أيضًا المزيد حلول بسيطةمن MicroChip - dsPIC.

ومع ذلك، فإن DSP المتخصص جيد، ولكن هل هو ضروري دائمًا؟ نعم، مع التدفق الهائل للمعلومات، فإنه ببساطة لا يمكن الاستغناء عنه، ولكن هناك أيضًا مهام معالجة أبسط. على وجه التحديد، كنت مهتمًا بمهمة التحويل المزدوج - يتم تجميع الإشارة الصوتية، وبالتالي الحصول على طيف، ثم يمكن إجراء أي عمليات على الطيف ويمكن إجراء التحويل العكسي، وبالتالي الحصول على إشارة معالجة. كل هذا يجب أن يتم في الوقت الفعلي والحصول على جودة لا تقل عن جودة الهاتف.

هذا ليس عام 2000، فهناك حلول أحادية الشريحة تعتمد على أنوية ARM7/Cortex-M3 عالية الأداء والتي انخفضت أسعارها بشكل كبير؛ فهي 32 بت، ولديها تنفيذ أجهزة لعملية الضرب 32 بت (علاوة على ذلك ، تقريبًا عملية تجميع مضاعفة لـ DSP ونتيجة 64 بت)، ويتضمن Cortex-M3 أيضًا قسم الأجهزة.

أريد أن أحذرك على الفور من أن معالجة الإشارات ليست تخصصي، فقد تم الحفاظ على كل المعرفة تقريبًا (أو بالأحرى فهم المبادئ) من المعهد، لكنني الآن أردت فقط اختبارها وتنفيذها. ما أعنيه هو أنه قد يكون هناك عدم دقة في الوصف، واستبدال المفاهيم، وما إلى ذلك. في الواقع، الدقة الأكاديمية لم تقلقني كثيرًا.

بالنسبة لأي DSP تقريبًا، تكون المهمة الموضحة أعلاه بسيطة ومباشرة. ولكن كيف سيتصرف نواة RISC ذات الأغراض العامة عليها؟ إذا نظرنا إلى AVR أو PIC، فمن غير المرجح أن يكونا كافيين. 8 بت وتردد الساعة المنخفض لهما تأثير. على الرغم من أن Elm-Chan لديه تصميمات يقوم فيها بإجراء FFT على AVR ويرسم طيف الإشارة. ومع ذلك، في هذه الحالة، في الوقت الفعلي، يتم إجراء التصور ببساطة (بحد أدنى من دقة المعالجة)، وليس معالجة الإشارة الكاملة بجودة صوت مقبولة.

تم اختيار LPC2146 كشريحة تجريبية، استنادًا إلى نواة ARM7TDMI-S وبأقصى تردد للساعة يبلغ 60 ميجاهرتز (في الممارسة العملية، لا تعمل عند 72 أو حتى 84 ميجاهرتز). لماذا؟ أولاً، لدي لوحة تصحيح لها، وثانيًا، يوجد على اللوحة ADC وDAC، أي. الحد الأدنى من القطع الخارجية المطلوبة.

القليل من النظرية

بادئ ذي بدء، كان من المثير للاهتمام تقييم أداء FFT (تحويل فورييه السريع) على وحدات التحكم الدقيقة ARM. بناءً على هذا التقييم، يمكننا أن نستنتج ما إذا كان لديه سرعة كافية لمعالجة دفق من البيانات الصوتية، والإشارة مع تردد أخذ العينات وعدد القنوات التي يمكن معالجتها على مثل هذا المتحكم الدقيق.

استنادًا إلى تحويل فورييه، يمكنك إنشاء مرشحات ذكية (ذات خصائص جذابة للغاية). كنت مهتمًا في المقام الأول بمشاكل تغيير نغمة الإشارة (رفع وخفض الطيف) و"عكس" الطيف. هذا الأخير مطلوب في أجهزة الراديو SDR للاستماع إلى البث الإذاعي للنطاق الجانبي السفلي LSB.

لن أقوم بتحميلك من الناحية النظرية وأشرح ما هو تحويل فورييه، هناك الكثير من المواد حول هذا الموضوع، مما استخدمته: ويكي وفصل من كتاب جيد جدًا وغني بالمعلومات.

تنفيذ البرامج

هناك الكثير من التطبيقات البرمجية لـ FFT، لكنني كتبت تطبيقي الخاص. كان الهدف الرئيسي الذي سعيت لتحقيقه هو تحسين الكود لبنية معينة. أولا، ركزت على الفور على 32 بت، ثانيا، كانت هناك حاجة إلى حسابات صحيحة فقط وكان من المرغوب فيه تجنب عملية القسمة. يعد العثور على شيء جاهز لتلبية هذه المتطلبات أمرًا صعبًا بالفعل.

تم حساب جميع الثوابت التي يمكن حسابها مسبقًا ووضعها في جداول (معظمها قيم الدوال المثلثية). هذا هو التحسين الرئيسي للخوارزمية، وإلا فإنه يكرر الخوارزمية الموصوفة بالكامل تقريبًا.

الأهم هو متطلبات الحسابات الصحيحة. أثناء عملية التنفيذ، حدث خطأ أدى إلى تجاوز سعة أحد متغيرات الحلقة ذات 32 بت. علاوة على ذلك، لم يظهر في جميع بيانات الاختبار، لذلك تسبب في صداع كبير حتى تم العثور عليه.

لقد جمعت كل النصوص المصدرية في أرشيف واحد. التنفيذ ليس نهائيًا، فهناك حسابات مكررة (لا يؤخذ في الاعتبار تماثل الطيف والطور)، ويلزم تحسين استخدام المخازن المؤقتة، حيث يتم استخدام عدد كبير جدًا منها حاليًا لإجراء العمليات الحسابية ذاكرة الوصول العشوائي(ما يقرب من 12 ألفًا لتحويل 1024 نقطة).

الاختبارات الأولى

لفة الطبلة: أقوم باختبار سرعة التحويل لعينة مكونة من 1024 نقطة، والتردد الأساسي للمعالج هو 60 ميجاهرتز. تم إجراء الاختبار في أحد المحاكي، لذلك لا يدعي أنه دقيق بنسبة 100٪، ولكن يمكن استخدام هذه النتيجة كمؤشر (في تجربتي السابقة، على الرغم من أن المحاكي كذب، لم يكن الأمر كثيرًا). اختبار الإصدار الأول من الكود، ومترجم RealView MDK، وخيار تحسين O3، ووضع إنشاء كود ARM.

إذن ما نراه:

6 مللي ثانية لكل تحويل، بإجمالي ما يزيد قليلاً عن 12 مللي ثانية للتحويل ذهابًا وإيابًا. اتضح أنه مع تردد أخذ العينات 44100 هرتز (قياسي للصوت) والعينات بدقة تصل إلى 16 بت، ستستغرق الحسابات النقية ~44*12 مللي ثانية = 528 مللي ثانية. وهذا في الإصدار المتوسط ​​من البرنامج الثابت، عندما لم يتم إكمال بعض تحسينات التعليمات البرمجية بعد (وفقًا للتقديرات، يمكن تسريع الخوارزمية بما يقرب من 2 مرات)! في رأيي، إنه مجرد مؤشر ممتاز.

في المجمل، من المتوقع أن يبلغ الحمل الأساسي حوالي 50%، ويبقى 50% أخرى للتحويلات عبر الطيف والتكاليف العامة عند العمل مع ADC وDAC وعمليات نقل البيانات الأخرى. إذا قمت بخفض تردد أخذ العينات إلى مستوى "الهاتف" (حوالي 4800-9600 هرتز)، فسيكون الحمل الأساسي أقل (حوالي 15-30٪).

لذلك، الجزء الرياضي أكثر أو أقل وضوحا. يمكنك المضي قدما في التنفيذ الملموس.

حديد

بالنسبة لمنصة الاختبار، استخدمنا لوحة تطوير Keil MCB2140 مع مكبر صوت. يتم لحام سلك Mini-Jack للاتصال بالمخرج الخطي للجهاز ويتم تجميع سلسلة إدخال بسيطة. كما ذكرنا سابقًا، تحتوي اللوحة بالفعل على مكبر صوت متصل بالإخراج التناظري لوحدة التحكم الدقيقة وهناك عناصر تحكم (زر ومقياس الجهد).

فيما يلي رسم تخطيطي لدائرة الإدخال:


تم تصحيح أخطاء البرنامج على مراحل:

  1. تصحيح أخطاء جميع الأجهزة الطرفية الضرورية: ADC، DAC، أجهزة ضبط الوقت، مؤشر LED.
  2. الاختبار باستخدام رقمنة الإشارة: أقوم برقمنة البيانات بالسرعة المطلوبة وأضعها في مخزن مؤقت، ثم أستخرج البيانات من المخزن المؤقت وأشغل الإشارة. أولئك. تحول بسيط للإشارة في الوقت المناسب، دون أي تحولات. في هذه المرحلة، يتم اختبار آلية العمل مع مخزنين مؤقتين ضروريين لمزيد من العمل.
  3. ل إصدار سابقتتم إضافة تحويلات فورييه المباشرة والعكسية. يتحقق هذا الاختبار أخيرًا من التشغيل الصحيح لرمز FFT، بالإضافة إلى التحقق من أن الكود يتناسب مع الأداء المتاح.
  4. بعد ذلك يتم الانتهاء من الهيكل الرئيسي للتطبيق، ويمكنك الانتقال إلى التطبيقات العملية.

نشأت المشكلة بعد إضافة التحويل السريع (FFT) إلى الكود: ظهرت ضوضاء وصفارات غريبة في الإشارة. بشكل عام، بدا لي هذا السلوك غريبًا جدًا، لأنه... وبدون التحويل، تظل الإشارة التي تمر عبر المسار الرقمي نظيفة تمامًا. السبب الأول لذلك: بعد الدائرة التناظرية، لم يكن سعة الإشارة على ADC ممتلئًا (0-3.3 فولت)، ولكن فقط في حدود 0.5-2 فولت عند الحد الأقصى لحجم المشغل، والثاني: ضوضاء قوية جدًا بسبب العدد الصحيح الحسابات (+-1 وحدة، والتي تبين أنها كافية لإحداث تداخل مسموع).

لمكافحة المشكلة الأولى، تقرر البدء في تعديل الجزء التناظري. ولحل مشكلة الضوضاء، حاول استخدام مرشح التردد المنخفض.

التطبيق 1: تغيير نغمة الإشارة

تحتوي اللوحة على مقياس الجهد ( مقاومة متغيرة)، يمكن استخدامه للتحكم. في هذه الحالة، يقوم بضبط طيف الإشارة ليتحرك لأعلى ولأسفل، بما يكفي "لتحويل" مؤلفاتك المفضلة.

إليك ما يحدث في مجال التردد:


في هذه الحالة، يتم تضمين نتيجة التحويل في مخزنين مؤقتين. أحد المخزنين هو الجزء الحقيقي، والآخر هو الجزء التخيلي. المعنى الفيزيائي للأرقام المتحصلة فيها: الجزء الحقيقي يحتوي على قيم التوافقيات، الجزء التخيلي يحتوي على التحول الطوري لهذه التوافقيات. علاوة على ذلك، كما ترون، يتم وصف الإشارة الأولية بقيم N، وبعد التحويل، يتم الحصول على قيم 2N. لا تتغير كمية المعلومات، وتحدث الزيادة بمقدار ضعفين في كمية المعلومات بسبب حقيقة أن بيانات المخزن المؤقت بها تكرار في شكل تكرار القيم.




قمة