UDB. ما هذا؟ الجزء 3. Datapath FIFO



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

المحتوى العام للدورة "UDB. ما هذا؟ "
الجزء 1. مقدمة. Pld.
الجزء 2. Datapath.
الجزء 3. Datapath FIFO. (المادة الحالية)
الجزء 4. Datapath ALU.
الجزء 5. Datapath. أشياء صغيرة مفيدة.
الجزء 6. وحدة الإدارة والحالة.
الجزء 7. توقيت وإعادة ضبط وحدة التحكم
الجزء 8. معالجة UDB

21.3.2.2 Datapath FIFO


صيغ وتكوينات FIFO


يحتوي كل مخزن مؤقت FIFO على العديد من أوضاع التشغيل والتكوينات المتاحة:

الجدول 21-2. صيغ FIFO وتكوينات.
الوضعالوصف
الإدخال / الإخراج
(الإدخال / الإخراج العازلة)
في وضع المخزن المؤقت الإدخال ، يكتب وحدة المعالجة المركزية أو DMA
البيانات في FIFO ، وقراءة Datapath. في الوضع
الحصول على بيانات المخزن المؤقت الناتج في FIFO من
Datapath ، وقراءتها من هناك وحدة المعالجة المركزية أو DMA.
عازلة واحدة
(واحد العازلة)
FIFO يعمل كمخزن مؤقت واحد مع عدم وجود حالة.
البيانات المسجلة في FIFO قابلة للقراءة على الفور ويمكن
يتم الكتابة في أي وقت.
المستوى / الحافة
(المستوى / الدلتا)
المعلمة المسؤولة عن تحميل FIFO من Datapath ،
يمكن أن يكون سببها مستوى أو عن طريق التفاضلية.
عادي / سريع
(عادي / سريع)
المعلمة المسؤولة عن تحميل FIFO من المصدر
Datapath: يتم تسجيله بتردد الوقت المحدد في Datapath
مصدر الساعة (عادي) أو تردد الحافلة (سريع).
هذا يتيح لك التقاط على أعلى تردد.
في النظام (تردد الحافلة) ، بغض النظر عن تردد ساعة Datapath.
القبض على البرمجيات
(التقاط البرامج)
عندما يكون هذا الوضع في وضع التشغيل ويكون FIFO في الوضع
الناتج العازلة ، قراءة وحدة المعالجة المركزية أو DMA ذات الصلة
تهيئة البطارية (A0 لـ F0 ، A1 لـ F1)
نقل قيمة البطارية بشكل متزامن إلى FIFO.
القيمة التي تم التقاطها قابلة للقراءة فورًا من FIFO.
إذا تم تنشيط دعم تسلسل ،
ستتبع العملية السلسلة إلى كتلة MS بحيث
Datapath يمكن أن تؤدي القراءة الذرية للبايت متعددة
القيم.
غير متزامن
(غير متزامن)
عندما Datapach وساعات الحافلة النظام ليست كذلك
متزامنة ، يمكن أن تكون إشارات حالة FIFO
أحيل إلى بقية datapath سواء
مباشرة ، مسافة السباق من تردد ساعة Datapath ،
أو مع تزامن مزدوج ، في وضع Asynch.
قطبية ساعة مستقلة
(القطبية المستقلة على مدار الساعة)
يحتوي كل FIFO على عنصر تحكم لقلبه
FIFO مدار الساعة على مدار الساعة مقابل Datapath.

يوضح الشكل 21-7 خيارات التكوين الممكنة لزوج FIFO ، اعتمادًا على أوضاع الإدخال / الإخراج المحددة لكل منها. إذا كان FIFO في وضع الإدخال والآخر في وضع الإخراج ، فسنحصل على تكوين RX / TX. مثال نموذجي حيث هناك حاجة إلى مثل هذا التكوين هو وحدة تحكم ناقل SPI. يوفر تكوين الالتقاط المزدوج (يتم تكوين كل من FIFOs للإخراج) التقاط مستقل لزوج A0 و A1 أو تسجيلين مستقلين لسجلات A0 أو A1. أخيرًا ، في وضع " المخزن المؤقت المزدوج" (كلاهما عند الإدخال) ، يمكن استخدام إما زوج تسجيل أو سجلين مستقلين للتحميل أو المقارنة.



الشكل 21-7. تكوينات FIFO.

يوضح الشكل 21-8 بالتفصيل مصادر ومستقبلات FIFO.



الشكل 21-8. مصادر FIFO وأجهزة الاستقبال.

عندما يعمل FIFO في وضع المخزن المؤقت للإدخال ، يكون المصدر هو ناقل النظام ، والمستقبلات هي سجلات Dx و Ax. عند العمل في وضع المخزن المؤقت للإخراج ، تكون المصادر هي سجلات Ax و ALU ، والمستقبل هو ناقل النظام. يتم تحديد اختيار المضاعف بشكل ثابت في سجل تكوين UDB CFG15 ، كما هو موضح في الجدول الخاص بـ F0_INSEL [1: 0] أو F1_INSEL [1: 0]:

الجدول 21-3. مجموعة من مُضاعفات FIFO في سجل تكوين UDB.
Fx_INSEL [1: 0]الوصف
00وضع المخزن المؤقت للإدخال: يكتب ناقل النظام إلى FIFO ، بينما المتلقي
FIFO هو الفأس أو DX.
01وضع المخزن المؤقت الإخراج: مصدر FIFO هو A0 ، وجهاز الاستقبال
FIFO - نظام الحافلات.
10وضع المخزن المؤقت للإخراج: مصدر FIFO هو A1 ، وجهاز الاستقبال
FIFO - نظام الحافلات.
11وضع المخزن المؤقت للإخراج: مصدر FIFO هو إخراج ALU ، وجهاز الاستقبال
FIFO - نظام الحافلات.

وضع FIFO


ينشئ كل FIFO إشارات الحالة ، "الناقل" و "الكتلة" ، والتي يتم إرسالها إلى موارد التتبع UDB من خلال مُضاعِف خرج Datapath. يمكن استخدام حالة الناقل لمقاطعة أو طلب قراءة / كتابة DMA إلى FIFO. تهدف حالة "الكتلة" بشكل أساسي إلى تمرير حالة FIFO إلى كيانات UDB الداخلية. يعتمد الغرض من بتات الحالة على الاتجاه المكوّن (Fx_INSEL [1: 0]) وعلى بتات مستوى FIFO. يتم تعيين بتات مستوى FIFO (Fx_LVL) في سجل التحكم المساعد في مساحة سجل العمل. تظهر خيارات الحالة في الجدول التالي:

الجدول 21-4. خيارات حالة FIFO.
Fx_INSEL [1: 0]Fx_lvlالشرطإشارةالوصف
أدخل0غير ممتلئحالة الحافلةالجاهزة عندما يكون هناك FIFO
مكان بايت واحد على الأقل.
أدخل1دمر
على الأقل
نصف
حالة الحافلةالجاهزة عندما يكون هناك FIFO
مساحة لا تقل عن 2 بايت.
أدخللا يوجدفارغحالة كتلةالجاهزة عندما لا يوجد FIFO
ليس بايت واحد.
عندما FIFO ليست فارغة ، Datapath
يمكن قراءة بايت.
عندما FIFO فارغ ، Datapath
قد تكون قادرة
التوقعات إما توليد
حالة الدمار.
الخاتمة0غير فارغحالة الحافلةالجاهزة عندما في FIFO
لا يقل عن 1 بايت المتاحة
للقراءة.
الخاتمة1ممتلئ
على الأقل
نصف
حالة الحافلةالجاهزة عند توفرها في FIFO
ما لا يقل عن 2 بايت لقراءة.
الخاتمةلا يوجدممتلئحالة كتلةالجاهزة عندما FIFO ممتلئ.
عندما FIFO ليست كاملة ، Datapath
يمكن كتابة بايت في FIFO.
عندما FIFO ممتلئ ، Datapath
قد يكون في
الاستعداد أو
توليد الشرط
الفائض.

FIFO العمل التوضيح


يوضح الشكل 21-9 تسلسلًا نموذجيًا للقراءة والكتابة ، وكذلك توليد الحالات المرتبطة بهذه العمليات. في الشكل ، تحدث القراءة والكتابة في أوقات مختلفة ، ولكن يمكن تنفيذها في وقت واحد.



الشكل 21-9 عملية استقبال FIFO.

وضع FIFO السريع (FIFO FAST)


عندما يكون FIFO في وضع المخزن المؤقت للإخراج ، عادةً ما تستخدم عملية تمهيد FIFO تردد ساعة Datapath المحدد لساعة إشارة الكتابة. كما هو مبين في الشكل 21-10 ، عند اختيار وضع FIFO Fast (FIFO FAST) ، يمكنك تحديد تردد الحافلة لهذه العملية المحددة. عند استخدامها بالاقتران مع وضع المستوى / الحافة = الحافة ، تقلل هذه العملية من تأخير النقل من البطارية إلى FIFO من فترة ساعة Datapath إلى فترة ساعة الناقل ، حيث يمكن أن يكون تردد الحافلة أعلى بكثير. هذا يسمح لوحدة المعالجة المركزية أو DMA بقراءة نتيجة FIFO المستلمة بأقل تأخير.

كما هو مبين في الشكل 21-10 ، يتم تنفيذ عملية التمهيد السريع بغض النظر عن ساعة Datapath الحالية ، ومع ذلك ، فإن استخدام سرعة ساعة الناقل يمكن أن يزيد من استهلاك الطاقة.



الشكل 21-10. استقبال FIFO التكوين السريع.

وضع تسجيل الحافة / المستوى FIFO (التفاضلية / المستوى)


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

يوضح الشكل 21-11 تنفيذ وضع الكشف التفاضلي عند إدخال FX_LD. يتم التحكم في وضع كلا FIFOs في UDB بواسطة الشيء نفسه ، مع تبديل هذا الخيار. لاحظ أن الكشف التفاضلي مسجل على تردد يساوي تردد FIFO المحدد.



الشكل 21-11. الكشف التفاضلي لأجهزة استقبال تسجيل FIFO الداخلية.

وضع التقاط البرامج FIFO


يتمثل أحد المتطلبات الشائعة والمهمة في تمكين وحدة المعالجة المركزية و DMA من قراءة محتويات البطارية بشكل موثوق أثناء التشغيل العادي. يتم ذلك باستخدام التقاط البرنامج وتمكينه باستخدام بت تهيئة FIFO Cap. ينطبق هذا البت على FIFOs في UDB ، لكنه يعمل فقط عندما يكون FIFO في وضع المخزن المؤقت للإخراج. عند استخدام برنامج التقاط ، يجب قراءة F0 من A0 و F1 من A1.

كما هو مبين في الشكل 21-12 ، تبدأ قراءة البطارية في الكتابة إلى FIFO من البطارية. يتم ربط الإشارة في سلسلة بحيث قراءة البايت محددة في نفس الوقت يلتقط قيم البطارية لجميع UDBs في السلسلة. يسمح هذا للمعالج ذي 8 بت بقراءة 16 بت أو أكثر بنجاح في نفس الوقت. يجب تجاهل البيانات التي يتم إرجاعها عند قراءة البطارية ، ويمكن قراءة القيمة الملتقطة على الفور من FIFO.

يتم إرسال إشارة FX_LD المتعقبة ، التي تنشئ حمل FIFO ، إلى المصطلح OR مع إشارة التقاط البرنامج. عند استخدام التقاط الأجهزة والبرامج في نفس الوقت ، يمكن أن تكون النتيجة غير متوقعة. كقاعدة عامة ، يجب أن تكون هذه الوظائف حصرية بشكل متبادل ، ومع ذلك ، يمكن استخدام التقاط البرامج والأجهزة في وقت واحد وفقًا للشروط التالية:

  • تم ضبط وضع الساعة لالتقاط FIFO على FIFO FAST.
  • تم ضبط وضع تسجيل FIFO على FIFO EDGE.

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

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



الشكل 21-12. تكوين لقطة البرنامج.

ملاحظة المترجم:
لفترة طويلة لم أستطع فهم معنى هذا القسم. بعد ذلك لفترة طويلة كنت متأكداً من أن القسم كتب لـ PSoC3 ، والذي لا يمكن الوصول إلى جوهره المكون من ثمانية بتات أكثر من بايت. ولكن عند إنشاء الجزء الثامن من الترجمة ، اتضح أنه حتى في PSoC5LP ، لجميع المعالجات ARM 32 بت ، يمكن الوصول إلى سجلات UDB العاملة في وضع من 8 بت أو ستة عشر بت. اذا حكمنا من خلال الوثيقة ، لا أكثر. هذا هو المكان الذي تأتي فيه الوظيفة الموصوفة في متناول يدي.


بت تحكم FIFO


يحتوي سجل التحكم الإضافي ، والذي يمكن استخدامه للتحكم في FIFO أثناء التشغيل العادي ، على 4 بتات.

يتم استخدام بتات FIFO0 CLR و FIFO1 CLR لإعادة تعيين أو مسح FIFOs. عندما يتم تعيين القيمة "1" لأحد هذه البتات ، تتم إعادة تعيين FIFO المقترنة. يجب استعادة البت إلى قيمته الأصلية ('0') ليواصل FIFO العمل. إذا بقيت قيمة البتة مساوية لقيمة واحدة ، فسيتم تعطيل FIFO المطابق وستعمل كمخزن مؤقت أحادي البايت بدون حالة. يمكن كتابة البيانات إلى FIFO ، البيانات قابلة للقراءة على الفور ويمكن الكتابة عليها في أي وقت. لا يزال من الممكن تعيين اتجاه البيانات مع بتات تكوين FX INSEL [1: 0].

تحدد بتات FIFO0 LVL و FIFO1 LVL المستوى الذي سيصطدم به FIFO بتنسيق الحالة "الناقل" (عندما يقرأ الحافلة أو يكتب إلى FIFO). أي أن حالة "الناقل" تعتمد على الاتجاه المحدد ، كما هو موضح في الجدول أدناه.

الجدول 21-5. بت مستوى التحكم FIFO
FIFO LVLوضع المخزن المؤقت الإدخال
(الحافلة يكتب إلى FIFO)
وضع المخزن المؤقت الإخراج
(يقرأ الحافلة من FIFO)
0غير ممتلئ
يمكن كتابة بايت واحد على الأقل.
غير فارغ
يمكن قراءة بايت واحد على الأقل.
1فارغة على الأقل في منتصف الطريق
يمكن كتابة 2 بايت على الأقل.
نصف ممتلئ
يمكن قراءة ما لا يقل عن 2 بايت.

FIFO عملية غير متزامن


يوضح الشكل 21-13 مبدأ تشغيل FIFO غير المتزامن. على سبيل المثال ، تخيل أن F0 يعمل في وضع مخزن الإدخال المؤقت ، و F1 في وضع المخزن المؤقت للإخراج ، وهو تكوين نموذجي لسجلات TX و RX.



الشكل 21-13. عملية FIFO غير المتزامنة.

على الجانب TX ، يستخدم جهاز حالة Datapath علامة " إفراغ" لتحديد ما إذا كان هناك أي بايت متاح للاستلام. يتم تعيين القيمة الفارغة بشكل متزامن مع جهاز حالة Datapath ، ويتم مسحها بشكل غير متزامن بسبب الكتابة من الناقل. بعد التنظيف ، تتم مزامنة الحالة مرة أخرى مع جهاز حالة Datapath.

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

يتم استخدام بت واحد FIFO ASYNCH لتمكين طريقة التزامن هذه ، بعد التنشيط يتم تطبيق هذه الطريقة على كلا FIFOs.

ينطبق فقط على حالة الحظر ، حيث يُفترض أن حالة الناقل تتم مزامنتها بشكل طبيعي من خلال عملية المقاطعة.

الجدول 21-6. حظر خيارات تزامن حالة FIFO.
غير متزامنإضافة SYNCالعمليةنموذج الاستخدام
00متزامن مع توقيت الحافلةوحدة المعالجة المركزية الكتابة / قراءة التغييرات الحالة
تحدث في تردد الحافلة. يمكن
استخدام لأدنى حد
التأخير إذا كنت تستطيع تحقيقه
ترددات ساعة Datapatch
يساوي تردد الحافلة.
01تزامن التردد
الإطارات إلى تردد Datapath.
يجب أن يكون هذا الوضع
وضع التشغيل الافتراضي. متى
وحدة المعالجة المركزية يؤدي عمليات القراءة / الكتابة ،
سيتم إعادة مزامنة تغيير الحالة
مع التردد المستخدم في Datapath.
يجعل من الممكن استخدام الكامل
فترة تردد Datapath لضبط
إشارة لمنطق UDB.
10محفوظة-
11تزامن التردد المزدوج
الإطارات إلى تردد Datapath.
عندما نبضات على مدار الساعة ل Datapath
ليس فقط ليس متزامنا مع
النظامية في التردد ولكن أيضا
أنتجت بشكل منفصل
مولد مستقل
قد تكون هذه المعلمة
تستخدم لمضاعفة
عمليات التزامن
القراءة والكتابة وحدة المعالجة المركزية
مع Datapath قطع مسافة السباق.

تفيض FIFO أثناء العملية


للتنفيذ الآمن لعمليات القراءة والكتابة الداخلية (Datapath) والخارجية (CPU أو DMA) ، يجب استخدام إشارات حالة FIFO. لا توجد حماية مضمنة ضد إفراغ وظروف تجاوز السعة. إذا كان FIFO ممتلئًا وتم تنفيذ عمليات الكتابة اللاحقة (تجاوز السعة) ، فإن البيانات الجديدة تحل محل بداية FIFO (البيانات التي يتم إخراجها حاليًا هي التالية في قائمة انتظار القراءة). إذا كانت FIFO فارغة وتم تنفيذ القراءات اللاحقة (إفراغ أو نفاد) ، فإن قيمة القراءة غير محددة. تظل مؤشرات FIFO دقيقة بغض النظر عن التدفق الفائض.

الانقلاب على مدار الساعة FIFO


يحتوي كل FIFO على عنصر تحكم Fx CK INV ، وهو المسؤول عن قطبية الساعة FIFO فيما يتعلق باستقطاب الساعة Datapath. بشكل افتراضي ، يعمل FIFO بنفس قطبية تسجيل Datapath. عندما تكون هذه البتة 1 ، تعمل FIFO باستقطاب عكسي بالنسبة إلى Datapath. يوفر هذا دعم بروتوكول لتبادل البيانات على كلتا الجبهتين ، مثل SPI.

التحكم الديناميكي FIFO


عادة ، يتم تكوين FIFO بشكل ثابت إما في وضع المخزن المؤقت الإدخال أو في وضع المخزن المؤقت الإخراج. بدلاً من ذلك ، يمكن تكوين كل FIFO للعمل في وضع يتم فيه التحكم في الاتجاه ديناميكيًا (تحت تأثير الإشارات الخارجية). بت تكوين واحد لكل FIFO (Fx DYN) مسؤول عن تنشيط هذا الوضع. يوضح الشكل 21-14 التكوينات المتاحة في الوضع الديناميكي FIFO.



الشكل 21-14. وضع FIFO الحيوي.

في وضع الوصول الداخلي ، يستطيع Datapath القراءة والكتابة إلى FIFO. في هذا التكوين ، من أجل تحديد مصدر عمليات الكتابة في FIFO ، يجب تعيين بتات Fx INSEL على 1. Fx INSEL = 0 (مصدر ناقل CPU) في هذا الوضع غير صحيح ، يمكن أن يستغرق فقط القيم 1 أو 2 أو 3 (A0 أو A1 أو ALU ) تجدر الإشارة إلى أن القراءة لديها وصول فقط إلى البطارية المناسبة ، واتجاه سجلات البيانات في هذا الوضع غير متوفر.

في وضع الوصول الخارجي ، يمكن لوحدة المعالجة المركزية أو DMA إما القراءة أو الكتابة إلى FIFO.

التبديل بشكل حيوي بين الوصول الخارجي والداخلي عن طريق إعادة توجيه الإشارات من Datapath. لهذا ، يتم استخدام إشارات الإدخال Datapath d0_load و d1_load. تجدر الإشارة إلى أنه في وضع التحكم الديناميكي ، لا يتوفر d0_load و d1_load للاستخدام العادي عند تحميل تسجيلات D0 / D1 من F0 / F1. يمكن تشغيل إشارات Dx_load بواسطة أي إشارة تتبع ، بما في ذلك الثوابت.

خذ بعين الاعتبار مثالًا ، بدءًا من الوصول الخارجي (dx_load == 1) ، يمكن لوحدة المعالجة المركزية أو DMA كتابة بايت واحد أو أكثر من البيانات إلى FIFO. ثم ، عند التبديل إلى الوصول الداخلي (dx_load == 0) ، يمكن Datapath إجراء عمليات على البيانات. بعد ذلك ، عند التبديل إلى الوصول الخارجي ، يمكن لوحدة المعالجة المركزية أو DMA قراءة نتيجة العمليات الحسابية.
نظرًا لأن Fx INSEL يجب أن تكون دائمًا 01 أو 10 أو 11 (A0 أو A1 أو ALU) ، والذي يتوافق مع "وضع المخزن المؤقت للإخراج" أثناء التشغيل العادي ، فإن إشارات حالة FIFO لها التعريفات التالية (اعتمادًا على معلمة Fx LVL):

الجدول 21-7. وضع FIFO.
إشارة الحالةالقيمةFx LVL = 0الفوركس LVL = 1
fx_blk_statحالة السجلFIFO ممتلئFIFO ممتلئ
fx_bus_statحالة القراءةFIFO ليست كاملةنصف ممتلئ

نظرًا لأن كلا Datapath ووحدة المعالجة المركزية يمكنهما الكتابة والقراءة من FIFOs ، لم تعد هذه الإشارات تعتبر حالات كتلة وحافلة. يتم استخدام إشارة blk_stat لحالة الكتابة وإشارة bus_stat لحالة القراءة

21.3.2.3 وضع FIFO


توجد أربع إشارات حالة FIFO ، إشارتان لكل FIFO: fifo0_bus_stat ، fifo0_blk_stat ، fifo1_bus_stat و fifo1_blk_stat. يعتمد معنى هذه الإشارات على اتجاه FIFO معين ، والذي يتم تحديده بواسطة التكوين الثابت. يتم وصف حالة FIFO بالتفصيل في القسم 21.3.2.2 Datapath FIFO .

في الجزء التالي ، سننتقل إلى تحليل وحدة المنطق الحسابي (ALU).

Source: https://habr.com/ru/post/ar434706/


All Articles