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

نموذج رياضي للموجة
يمكن وصف الفكرة الأساسية لنموذج رياضي لموجة بواسطة التعبير:
= FFT2D (
) ، يُشار إلى FFT2D كمشغل لـ FFT ثنائي الأبعاد.
هو مجال مرتفعات سطح الماء (حجم المصفوفة
أين
و
يمكن أن تأخذ قيم سلطات اثنين). عناصر هذه المصفوفة هي ارتفاعات الأمواج.
- إشارة (حجم المصفوفة
) ، تم إنشاؤها وفقًا لقانون معين ووفقًا للوقت.
حيث عناصر المصفوفة
إنه كذلك
$ inline $ e ^ {iω_ {ij} t} = cos (ω_ {ij} t) + isin (ω_ {ij} t) $ مضمنة $ ، والمصفوفة
- مترافق معقد
مصفوفة
هي عناصر مصفوفة
.
- ضرب المصفوفة عنصرياً.
- مجال الارتفاعات في اللحظة الأولى
t = 0.
- مترافق معقد
مصفوفة (الحجم
)
لإنشاء رسم متحرك لحركة الأمواج في الوقت الحقيقي ، من الضروري إعادة حساب المصفوفة
و
تغيير
ر . المصفوفات
،
و
يتم حسابها مرة واحدة وإعادة استخدامها.
الآن دعنا ننتقل إلى وصف معالج DSP ، والذي ، بناءً على الصيغ أعلاه ، يحتاج إلى أن يكون قادرًا على:
- حساب FFT.
- ضرب المصفوفات عنصر بعنصر.
- أضف المصفوفات.
- حساب ناقلات الجيب وجيب التمام.
كمعالج DSP ، تم استخدام 1879VM6Ya بناءً على بنية NeuroMatrix ، التي طورها المركز العلمي والتقني "Module" CJSC. الدائرة في الشكل 1.
يحتوي المعالج على نوى تشغيل متوازيين NMPU0 و NMPU1 (يعمل بتردد 500 ميجاهرتز) ، يحتوي كل منهما على معالج RISC ومعالج متجه (NMCore FPU للنقطة العائمة و NMCore INT للحساب الصحيح). نواة NMPU0 مخصصة لمعالجة بيانات الفاصلة العائمة ، و NMPU1 للبيانات الصحيحة. يحتوي NMPU0 على 8 بنوك SRAM داخلية (128 كيلوبايت لكل منها) ، و NMPU1 به 4 بنوك (128 كيلوبايت) من نفس الذاكرة. في 1879VM6Ya ، يتم تثبيت وحدة تحكم DMA وواجهة DDR2.
التين. 1. مخطط المعالج 1879VM6YAيقع المعالج على وحدة العدادات MC121.01 (انظر الشكل 2). تحتوي هذه الوحدة أيضًا على 512 ميجابايت من ذاكرة DDR2.
الشكل 2. MS121.01
التين. 3. مخطط تفاعل MC121.01 و PCيتفاعل MC121.01 مع الكمبيوتر عبر USB (الرسم التخطيطي في الشكل 3). على مستوى البرامج ، يتم تنظيم هذا التفاعل باستخدام مكتبة التنزيل وتبادل البيانات ، والتي تعد جزءًا من SDK لهذه اللوحة. مصفوفات ما قبل الحوسبة
،
و
يتم تحميلها في ذاكرة DDR2 من خلال وظائف مكتبة التنزيل والتبادل. نسخ وحدة تحكم DMA
،
و
سطرا بسطر في الذاكرة الداخلية (SRAM) للمعالج. التنزيل إلى DDR2 يرجع إلى حقيقة أن أيا من هذه المصفوفات لا تتناسب تمامًا مع SRAM. يتم النسخ سطرا بسطر هنا ، لأن 1879BM6Ya يحسب من SRAM بشكل أسرع من DDR2. علاوة على ذلك ، يمكن إجراء جزء كبير من الحسابات على خلفية DMA.
باستخدام وظائف المتجه لمكتبة NMPP لحساب الجيوب وجيب التمام والضرب وإضافة المتجهات ، يقوم المعالج بحساب صفوف المصفوفة
ويأخذ منها FFT أحادي البعد. يتم إرسال النتيجة بواسطة DMA إلى DDR2. لذلك في DDR2 يتم تكوين مصفوفة وسيطة ، من أعمدتها يقوم المعالج بحساب FFT أحادي البعد (بعد تحميل أعمدة المصفوفة الوسيطة بواسطة DMA إلى SRAM). وهكذا ، يتم تكوين مصفوفة في DDR2
. يتم تنزيل هذه المصفوفة على جهاز الكمبيوتر لرسم إطار واحد مع صورة سطح الموجة. لتحريك الصورة في الوقت الحقيقي ، تحتاج إلى حساب المصفوفة وفقًا للخوارزمية الموضحة أعلاه
عن طريق زيادة المعلمة
ر .
من الناحية العملية ، اتضح أن 18796 يحسب المصفوفة
أسرع من الكمبيوتر يفرغه. وبسبب هذا ، قد يكون المعالج خاملاً ، في انتظار أن يلتقط الكمبيوتر الدفعة التالية من البيانات. كان من الممكن حل هذه المشكلة باستخدام المخزن المؤقت الحلقي (الذي يحتوي على عدة مصفوفات
) منظمة في لوحة ذاكرة DDR2.
على مستوى البرنامج ، يتم العمل مع وحدة تحكم DMA والمخزن المؤقت الحلقي باستخدام وظائف مكتبة HAL (مستوى تجريد الأجهزة) لمعالجات NeuroMatrix.
تصور سطح الموجة
عندما DEM
تحميلها في ذاكرة الكمبيوتر ، يمكنك تصور السطح. لعرضه بشكل أكثر وضوحًا ، تحتاج إلى تنسيق x ، y ، z ، مع وصف النقاط على السطح ، مضروبًا
في مصفوفة الدوران . لذا نحصل على الإحداثيات الجديدة للسطح x '، y'، z '، ونحوله بزاوية معينة.
من خلال قياس الإحداثيات الجديدة وربط النقاط معها بخطوط مستقيمة ، يمكنك رؤية الرسوم المتحركة لموجات المحيط (انظر الفيديو أدناه). لتصور السطح ، استخدمت المكتبة لعرض الصورة على شاشة vshell.
الخلاصة
في الختام ، أود أن أقول إن الحساب ونقل مصفوفة واحدة عبر USB
مع حجم 256x256 رقم عائم ، يتم إنفاق 4.7 مليون دورة ساعة تقريبًا (72 دورة ساعة لكل تعويم). معدل الإطار ~ 107. إذا كنت لا تأخذ في الاعتبار الوقت المستغرق لنقل البيانات عبر USB ، فستكلف الحسابات ~ 2.5 مليون دورة (38 دورة لكل تعويم). هذا هو إجمالي الوقت الذي يقضيه المعالج 18796 في الضرب بالعناصر وإضافة المصفوفات وحساب FFT والجيب وجيب التمام والنسخ باستخدام DMA. يتم إجراء هذه الحسابات على خلفية نقل بيانات USB.
يشير الفرق بين 2.2 مليون دورة ساعة (4.7 مليون - 2.5 مليون = 2.2 مليون) إلى أن USB في نظام PC-MC121.01 هو "عنق الزجاجة" ، ويمكن تحميل 1879VM6YA بحسابات بنسبة 46٪ أكثر دون تلقي سحب FPS.
أود أيضًا أن أشير إلى أنه على خلفية نقل بيانات USB والحسابات على معالج مشترك لنقطة عائمة ، يمكن استخدام معالج مشترك للحساب الصحيح ، الذي لم يتم استخدامه في هذه المهمة.
يوضح الجدول أداء بعض وظائف المتجه لمكتبة nmpp.
الوظيفة | الحانات |
---|
FFT أحادي البعد ، 256 نقطة | 1770 |
جيب 256 نقطة | 1400 |
جيب التمام ، 256 نقطة | 1400 |
المراجع:
NMPP - مكتبة البدائيين لهندسة NeuroMatrixHAL - مكتبة التجريد NeuroMatrix المعتمدة على الأجهزةVSHELL - مكتبة معالجة الصور وعرضها