FIFO (إلكتروني)

في الإلكترونيات الرقمية ، تُعرف دائرة FIFO ( اختصارًا لـ First-in, First-out ) بأنها دائرة رقمية تخزن البيانات الواردة في ذاكرة داخلية، ثم تُخرج البيانات المخزنة بالترتيب الذي استُلمت به. [ 1 ] تُخزن البيانات عند الطلب، وتُخرج أقدم البيانات المخزنة عند الطلب، وتحدث كلتا العمليتين بشكل مستقل [ 2 ] وبمعدلات قد تختلف. [ 3 ] وهذا يختلف عن مسجل الإزاحة ، الذي يتطلب تخزين البيانات وإخراجها في آنٍ واحد، وأن تنتقل أقدم البيانات بالتسلسل عبر الذاكرة قبل إخراجها. [ 2 ]
تتكون وحدة FIFO بشكل أساسي من زوج من العدادات التي تعمل كسجلات عناوين الذاكرة للقراءة والكتابة، ومصفوفة ذاكرة قابلة للعنونة، ومنطق الحالة والتحكم. [ 4 ]
تتميز البيانات المخزنة في مخزن FIFO عادةً بحجم كلمة ثابت (عدد بتات )، ويُشار إليه عادةً باسم عرض FIFO . أما الحد الأقصى لعدد البيانات المخزنة فيُعرف باسم عمق FIFO . ويُحدد كل من العرض والعمق معًا سعة تخزين مخزن FIFO.
تُستخدم مخازن البيانات ذات البادئات المحدودة (FIFOs) لتبادل البيانات بين جهازين ماديين أو بين جهاز مادي وبرنامج. [ 5 ] وهي شائعة الاستخدام لتبادل البيانات بين الدوائر التي تعمل في نطاقات تردد مختلفة، وللتخزين المؤقت والتحكم في تدفق البيانات بين منتجي البيانات ومستهلكيها الذين يعملون، على فترات زمنية محددة، بمعدلات بيانات مختلفة. [ أ ] [ 1 ]
منافذ الواجهة

تحتوي وحدة FIFO على واجهتين كهربائيتين تُعرفان بمنفذ الكتابة ومنفذ القراءة ، ومن خلالهما تتبادل البيانات ومعلومات الحالة مع الدوائر الخارجية. [ 6 ] [ 3 ]
كتابة وقراءة الوكلاء
تتألف الدوائر الخارجية المتصلة بمنافذ مخزن البيانات المؤقت (FIFO) من مُنتِج بيانات (يُشار إليه أحيانًا بمصدر البيانات أو وكيل الكتابة ) يقوم بتخزين البيانات في المخزن، ومُستهلِك بيانات (يُعرف أيضًا باسم مُستقبِل البيانات أو وكيل القراءة ) يقوم بجلب البيانات المُخزَّنة. [ 6 ] [ 7 ] وبشكلٍ أكثر تحديدًا، يُرسِل المُنتِج البيانات إلى منفذ الكتابة ويستقبل معلومات الحالة منه، بينما يستقبل المُستهلِك البيانات ومعلومات الحالة من منفذ القراءة.
نطاق الساعة
يعمل كل منفذ ضمن نطاق توقيت الدائرة الخارجية المتصلة به، مما يعني أن المنفذ والدائرة الخارجية يشتركان في إشارة توقيت واحدة. [ ب ] يعمل منفذ الكتابة ضمن نطاق توقيت المُنتِج، وبالتالي تتم مزامنة جميع إشارات منفذ الكتابة مع توقيت المُنتِج. وبالمثل، يعمل منفذ القراءة ضمن نطاق توقيت المُستهلِك.
أنواع FIFO
يتم تصنيف كل نظام FIFO إما على أنه متزامن أو غير متزامن .
FIFO المتزامن

المخزن المؤقت المتزامن هو مخزن مؤقت إلكتروني يستخدم ساعة مشتركة لمنافذ القراءة والكتابة. [ 8 ]
بما أن عمليات القراءة والكتابة تتم في نفس نطاق الساعة، يمكن استخدام إشارات حالة المخزن المؤقت (مستوى المخزن المؤقت، علامات العتبة) بأمان من قِبل كلٍ من مُنتِج البيانات ومُستهلِكها دون التسبب في عدم استقرار النظام. ونتيجةً لذلك، يُخرج المخزن المؤقت المتزامن مجموعةً واحدةً مشتركةً من إشارات الحالة.
FIFO غير متزامن

مخزن FIFO غير المتزامن هو مخزن FIFO إلكتروني يستخدم ساعات مختلفة لمنافذ القراءة والكتابة. [ 8 ]
لتجنب الأخطاء الناتجة عن عدم الاستقرار ، يتم إخراج مجموعة مخصصة من إشارات الحالة (مستوى المخزن المؤقت، علامات العتبة) لكل نطاق زمني. تُضيف الدوائر المستخدمة لتجاوز عدم الاستقرار زمن استجابة إضافيًا (مقارنةً بمخازن FIFO المتزامنة) إلى تحديثات علامات الحالة عند كتابة البيانات إلى مخزن FIFO فارغ أو قراءتها من مخزن FIFO ممتلئ.
سمات الذاكرة
لتسهيل عمليات القراءة والكتابة المتزامنة، تكون الذاكرة في جميع مخازن FIFO غير المتزامنة [ 1 ] وفي العديد من مخازن FIFO المتزامنة ثنائية المنافذ، وتتكون عادةً من ملف سجلات أو ذاكرة وصول عشوائي ( RAM) ثنائية المنافذ . في مخازن FIFO غير المتزامنة، تكون الذاكرة عبارة عن دائرة غير متزامنة يمكن الوصول إليها بواسطة الدوائر المنطقية العاملة في أي نطاق زمني. [ 1 ]
عرض
عادةً ما يكون للبيانات المكتوبة والمقروءة من FIFO نفس حجم الكلمة الثابت (عدد البتات ) - والمعروف باسم عرض FIFO [ 6 ] - والذي يتطابق مع حجم الكلمة الأصلي للذاكرة الداخلية.
عمق
يُعرف الحد الأقصى لعدد الكلمات التي يمكن تخزينها في مخزن FIFO باسم عمق FIFO . [ 6 ] على الرغم من أنه ليس شرطًا، إلا أن العمق عادةً ما يكون قوة صحيحة للعدد اثنين، لأن هذا يميل إلى تبسيط الدوائر وتحسين سرعة الأداء. [ 9 ]
لتجنب تجاوز سعة المخزن المؤقت FIFO، يجب أن يكون عمق المخزن كافيًا لتخزين البيانات الناتجة عن أسوأ فرق بين معدلات إنتاج البيانات واستهلاكها، [ 10 ] ويجب أن تتطابق متوسطات عرض النطاق الترددي للمنتج والمستهلك. [ 1 ] كذلك، في مخازن FIFO غير المتزامنة، يُضاف عادةً مقدار صغير من العمق الإضافي للسماح بزمن استجابة الحالة. [ 10 ]
سجلات عناوين الذاكرة
تُنفَّذ وحدة FIFO كمخزن مؤقت دائري يستخدم سجلين لعناوين الذاكرة (MARs) لتخزين عناوين ( مؤشرات ) مواقع الذاكرة التالية المراد الوصول إليها. [ 1 ] يشير سجل عناوين القراءة (RMAR) إلى الموقع التالي الذي ستُقرأ منه البيانات، بينما يشير سجل عناوين الكتابة (WMAR) إلى الموقع التالي الذي ستُكتب إليه البيانات. [ 11 ] يرتبط كل سجل عناوين ذاكرة بمنفذ معين، وبالتالي يعمل ضمن نطاق تردد ذلك المنفذ.
مقتطف تخطيطي لوحدة تخزين FIFO متزامنة أساسية. تتكون سجلات عناوين الذاكرة (MARs) من عدادات ثنائية تُخرج مباشرةً عناوين الذاكرة WADDR و RADDR، والتي تُحدد الكلمات التالية التي سيتم كتابتها وقراءتها من الذاكرة.
يُنفَّذ كل سجل عنوان ذاكرة (MAR) كعداد ، حيث يزيد عداده مع كل عملية نقل بيانات (يزيد عداد الكتابة (WMAR) عند الكتابة إلى مخزن FIFO، ويزيد عداد القراءة (RMAR) عند القراءة منه). [ 3 ] في البداية، يشير كلا سجلي عنوان الذاكرة إلى أول موقع في الذاكرة، ويكون مخزن FIFO فارغًا. [ 11 ] يمتلئ مخزن FIFO عندما يصل عنوان الكتابة إلى عنوان القراءة، ويفرغ عندما يصل عنوان القراءة إلى عنوان الكتابة. [ 1 ] عندما يُشير سجل عنوان الذاكرة إلى آخر موقع في الذاكرة، فإنه ينتقل تلقائيًا إلى أول موقع في الذاكرة عند الزيادة التالية. [ 3 ]
بالنسبة لأي مخزن بيانات ذي FIFO محدد، يمكن تنفيذ سجلات الوصول إلى الذاكرة (MARs) باستخدام عدادات ثنائية أو عدادات رمز غراي. يُفضل استخدام العدادات الثنائية عادةً في مخازن البيانات ذات FIFO المتزامنة، لأن ذلك يُبسط دائرة المخزن. أما عدادات رمز غراي ، أو العدادات الثنائية المشفرة برمز غراي، فتُستخدم في مخازن البيانات ذات FIFO غير المتزامنة لتجنب الأخطاء الناتجة عن عدم الاستقرار.
إشارات الحالة
مستوى المخزن المؤقت
تُخرج العديد من مخازن FIFO قيمة ثنائية تُشير إلى مستوى المخزن المؤقت الحالي (عدد الكلمات المُخزّنة). [ 11 ] وبحسب تصميمها، قد تقوم مخزن FIFO بذلك إما عن طريق تتبع المستوى باستخدام عداد أو حساب المستوى باستخدام حساب المؤشرات. يمكن لمخازن FIFO المتزامنة استخدام أي من الطريقتين، بينما تقتصر مخازن FIFO غير المتزامنة على استخدام حساب المؤشرات. [ 8 ]
التتبع عبر العداد

في نظام FIFO المتزامن، يمكن مراقبة مستوى المخزن المؤقت بتتبعه باستخدام عداد ثنائي الاتجاه . [ 8 ] يتم زيادة العداد عند كتابة البيانات إلى المخزن المؤقت، وينقص عند قراءة البيانات. تشير قيمة العداد الثنائي التي يُخرجها العداد مباشرةً إلى مستوى المخزن المؤقت.
لا تصلح هذه الطريقة لأنظمة FIFO غير المتزامنة لأن منافذ القراءة والكتابة تعمل في نطاقات زمنية مختلفة، مما يتطلب التحكم في العداد بواسطة ساعتين مختلفتين. [ 8 ]
الحساب باستخدام حساب المؤشر
في مخازن FIFO غير المتزامنة، وفي العديد من مخازن FIFO المتزامنة، يُحسب مستوى المخزن المؤقت من عناوين الذاكرة الحالية. يسهل ذلك عندما لا يكون المخزن فارغًا ولا ممتلئًا، لأن المستوى يساوي الفرق بين عنواني الكتابة والقراءة. لكن عندما يكون المخزن فارغًا أو ممتلئًا، تتساوى العناوين، وبالتالي يصبح حساب المستوى غامضًا. [ 11 ] لذا، وللتمييز بين الفراغ والامتلاء، من الشائع أن يحتوي كل سجل عنوان الذاكرة (MAR) على بت إضافي يتجاوز ما هو مطلوب لعنونة الذاكرة. يُستخدم العنوان الموسع الناتج (XADDR) لحساب مستوى المخزن المؤقت، بينما تُستخدم جميع بتات XADDR باستثناء البت الأكثر أهمية (MSB) (أي البتات الأقل أهمية LSB) كعنوان للذاكرة.
بشكل عام، وزارة الدفاع-عداد (عداد معتُستخدم حالات الإخراج المتميزة لذاكرة FIFO التي يمكنها تخزينكلمات البيانات. على سبيل المثال، يتم استخدام MOD-32 MAR لتوليد العناوين في FIFO الذي يحتوي على ذاكرة مكونة من 16 كلمة.
في الحالات التي تكون فيها عدادات MAR ثنائية، يكون مستوى المخزن المؤقت هو الفرق بين قيم خرج MAR:بالنسبة لترميزات الإخراج الأخرى (مثل رمز غراي)، يجب تحويل مخرجات MAR إلى النظام الثنائي قبل حساب الفرق. في كلتا الحالتين، يُحسب الفرق عادةً باستخدام MOD-الطرح الثنائي ، مع تجاهل أي استعارة حسابية ناتجة (أي، عملية الحمل).
علامات عتبة المخزن المؤقت
يُخرج مخزن البيانات ذو المستودع المحدود (FIFO) إشارات حالة فردية (علامات) تُشير إلى ما إذا تم استيفاء عتبات مستوى بيانات مُحددة. تُخرج جميع مخازن البيانات ذات المستودع المحدود علامات امتلاء وتفريغ ، وقد تُخرج بعضها أيضًا علامات إضافية مثل نصف ممتلئ ، وممتلئ تقريبًا ، وفارغ تقريبًا . [ 1 ]
يمكن توليد إشارات الحالة عن طريق المقارنة المباشرة لعناوين القراءة والكتابة المتزامنة، أو من مستوى مخزن البيانات FIFO إن وُجد. في الحالة الأخيرة، تُستخلص إشارات الحالة من مستوى مخزن البيانات FIFO عبر منطق توافقي، أو في حالة امتلاء المخزن ، عن طريق استخراج البت الأكثر أهمية (MSB). اعتمادًا على تصميم مخزن البيانات FIFO، قد تكون عتبات علامات الامتلاء شبه الكامل والفراغ شبه الكامل (إن وُجدت) ثوابت خاصة بالتطبيق أو قابلة للبرمجة. [ 3 ]
مخطط توضيحي يُبين كيفية اشتقاق علامات حالة العتبة الشائعة. يمكن تنفيذ مولد المستوى كجهاز طرح ثنائي يُجري عمليات حسابية على المؤشرات، أو كعداد ثنائي الاتجاه لتتبع المستوى.
تُستخدم كاشفات العتبة القابلة للبرمجة لتوليد إشارات شبه فارغة وشبه ممتلئة . تُحدد مستويات العتبة بواسطة القيم الثنائية المطبقة على مدخلات مُقارن المقادير.
الاستخدام
تُستخدم علامات حالة FIFO لإعلام مُنتِج البيانات الخارجي ومُستهلِكها بوصول البيانات إلى عتبات حرجة. عادةً ما يستجيب المُنتِج والمُستهلِك لهذه الإشعارات بتعليق أو استئناف عمليات الكتابة والقراءة في FIFO، على التوالي. قد يكون المُنتِج أو المُستهلِك (أو كلاهما) مُعالجًا يستطلع الحالة أو يستقبلها عبر المقاطعات، أو قد يكون كيانًا ماديًا بحتًا يستخدم إشارات الحالة لإدارة التحكم في التدفق.
في العديد من مخازن FIFO، تُستخدم علامات الامتلاء والفراغ داخليًا لتحديد إشارات تمكين الكتابة والقراءة . تُمنع الكتابة عند تفعيل علامة الامتلاء : لا تُكتب البيانات إلى الذاكرة ولا يتم زيادة عداد الكتابة (MAR). وبالمثل، تُمنع القراءة عند تفعيل علامة الفراغ : لا يتم زيادة عداد القراءة (MAR)، وعادةً ما تُخرج البيانات المقروءة السابقة.
مزامنة العناوين
في مخازن FIFO التي تحسب مستوى المخزن المؤقت باستخدام حساب المؤشرات، يجب مزامنة عناوين القراءة والكتابة مع ساعة مشتركة لضمان استقرار المدخلات لطاروح النظام الثنائي. هذا الشرط مُلبّى تلقائيًا في مخازن FIFO المتزامنة لأن منافذ القراءة والكتابة تستخدم نفس الساعة. أما في مخازن FIFO غير المتزامنة، فتُستخدم ساعات مختلفة لمنافذ القراءة والكتابة، وبالتالي يجب حساب مستوى المخزن المؤقت بشكل مستقل لكل منفذ في نطاق ساعته الخاص. يتطلب هذا مزامنة العنوان الحالي لكل منفذ مع ساعة المنفذ الآخر، وهي عملية تُعرف باسم عبور نطاق الساعة .
يتم عادةً تنفيذ عملية عبور نطاق الساعة عن طريق تمرير عنوان المنفذ الحالي بالتتابع عبر سلسلة من سجلين أو أكثر يتم ضبط توقيتها بواسطة المنفذ الآخر. يقوم السجل الأول بمزامنة العنوان مع ساعة المنفذ الآخر، بينما تعمل السجلات اللاحقة على تخفيف أي حالة عدم استقرار ناتجة .
ترميز الكود الرمادي
عند زيادة قيمة العنوان الثنائي، فإنه في كثير من الحالات يتغير بعدة بتات في الوقت نفسه (مثلاً، من 0111 إلى 1000). [ 10 ] إذا تم أخذ عينات البتات المتغيرة في وقت قريب جدًا من لحظة تغيرها (وبالتالي انتهاك وقت إعداد أو تثبيت سجل أخذ العينات)، فقد يتم أخذ عينات من بعضها في حالتها السابقة والبعض الآخر في حالتها الجديدة، مما ينتج عنه عنوان غير صالح في نطاق ساعة الوجهة لا يتطابق مع العنوان السابق ولا الجديد. [ 10 ] عند حدوث ذلك، سيكون مستوى المخزن المؤقت المحسوب في نطاق الساعة الآخر غير صحيح.
لتجنب هذه الأخطاء، يُرسل العنوان إلى نطاق الساعة الآخر كقيمة رمز غراي. [ 10 ] وبما أن كل زيادة في العنوان تُغير بتًا واحدًا فقط من بتات رمز غراي، فإن العنوان الذي يستقبله نطاق الساعة الآخر يضمن تطابقه إما مع العنوان السابق أو الجديد إذا تم أخذ عينة منه عند تغيير البت.
في بعض وحدات FIFO، يتم ذلك عن طريق تنفيذ MAR كعداد رمز غراي يقوم بإخراج عناوين رمز غراي مباشرة، كما هو موضح أدناه:
بدلاً من ذلك، يمكن استخدام جهاز MAR ذي مخرجات مشفرة ثنائياً بالتزامن مع محول من ثنائي إلى رمز غراي. يتطلب هذا إعادة ضبط توقيت خرج المحول قبل عبوره نطاقات التوقيت، وذلك للتخلص من تشوهات رمز غراي الناتجة عن تغير البتات الثنائية في أوقات مختلفة.
معالجة العناوين
يرسل كل منفذ عنوان MAR الخاص به إلى المنفذ الآخر، ويستقبل عنوان المنفذ الآخر بصيغة Gray code عبر مُزامِن نطاق الساعة. داخل كل منفذ، يُحوَّل العنوان المُستقبَل إلى ثنائي، ويُستخدم لتوليد إشارات مستوى المخزن المؤقت وعلامات الحالة في نطاق ساعة المنفذ. في مخازن FIFO التي تستخدم عناوين MAR بصيغة Gray code، يُنفَّذ هذا عادةً كما هو موضح أدناه:
زمن استجابة الحالة
عند زيادة قيمة سجل عنوان الذاكرة، لا يُكتشف التغيير فورًا في نطاق الساعة الآخر. [ 10 ] ويعود ذلك إلى أنه أثناء عملية عبور نطاق الساعة، يجب أن يمر العنوان تباعًا عبر سلسلة من سجلات التزامن، مما يؤخر وصوله إلى النطاق الآخر. هذا التأخير، بدوره، يزيد من زمن استجابة الحالة لأن العنوان يُستخدم لحساب حالة FIFO. وبشكل أكثر تحديدًا، خلال هذا التأخير، يبقى مستوى FIFO الظاهري في نطاق الساعة الآخر دون تغيير، وبالتالي قد تكون علامات العتبة الخاصة به قديمة أيضًا.
في بعض الحالات، قد يُعيق هذا التأخير الطويل في استجابة الحالة تدفق البيانات بكفاءة عبر مخزن FIFO. [ 10 ] على سبيل المثال، عندما يقرأ المستهلك كلمة من مخزن FIFO ممتلئ، لا يتم إلغاء علامة امتلاء منفذ الكتابة فورًا . هذا يُجبر المُنتِج على التوقف مؤقتًا عن كتابة البيانات الجديدة إلى مخزن FIFO في حين أنه يستطيع الكتابة بأمان، مما يؤدي إلى انخفاض الأداء إذا كانت بيانات المُنتِج معلقة. وبالمثل، لا يتم إلغاء علامة فراغ منفذ القراءة فورًا عندما يكتب المُنتِج إلى مخزن FIFO فارغ، مما يدفع المستهلك إلى التوقف عن القراءة عندما تكون البيانات متاحة بالفعل.
الفائض
يحدث تجاوز سعة الذاكرة إذا قام مُنتِج البيانات (الكاتب) بالكتابة إلى مخزن FIFO ممتلئ. [ 1 ] [ 4 ] إذا سُمح لهذه الكتابة بالاستمرار بشكل طبيعي، فستحل كلمة البيانات الجديدة محل أقدم كلمة مخزنة، وفي هذه العملية، سيتجاوز مؤشر الكتابة (القيمة المُخرَجة من سجل الكتابة MAR) مؤشر القراءة، مما يُفسد مستوى FIFO ويجعله يبدو وكأنه يحتوي على كلمة واحدة فقط. [ 8 ] لتجنب ذلك، تُصمَّم مخازن FIFO عادةً للحفاظ على مستوى FIFO الصحيح عن طريق حذف (إتلاف) إما الكلمة الجديدة أو أقدم كلمة مخزنة. في كلتا الحالتين، تُخرَج إشارة إشعار عادةً لإبلاغ الدوائر الخارجية بفقدان البيانات.
التخفيف عن طريق الحجب
عند اقتراب تجاوز سعة المخزن المؤقت، قد يتم إسقاط كلمة البيانات الجديدة عن طريق منع عمليات الكتابة في المخزن المؤقت FIFO. [ 4 ] ويتم ذلك عادةً عن طريق التحكم في تمكين الكتابة في المخزن المؤقت FIFO باستخدام علامة " ممتلئ " [ 8 ] كما هو موضح أدناه. في هذه التطبيقات، تشير علامة " ممتلئ " إلى أن المخزن المؤقت لن يقبل بيانات جديدة. تعمل هذه الدائرة حصريًا في نطاق ساعة منفذ الكتابة، وبالتالي فهي مناسبة لكل من المخازن المؤقتة FIFO المتزامنة وغير المتزامنة.
دائرة نموذجية تُستخدم لمنع الكتابة عندما تكون ذاكرة FIFO ممتلئة. بوابة ثانية تُخرج إشارة تجاوز السعة لإعلام الدوائر الخارجية بفقدان البيانات.
التخفيف عن طريق الكتابة فوق البيانات
بدلاً من ذلك، عند اقتراب تجاوز سعة الذاكرة، يمكن إعادة تخصيص الذاكرة لكلمة البيانات الجديدة عن طريق حذف أقدم كلمة مخزنة وإعادة استخدام موقعها في الذاكرة. [ 4 ] يتم ذلك بكتابة الكلمة الجديدة كالمعتاد (وبالتالي الكتابة فوق أقدم كلمة مخزنة) مع زيادة قيمة MAR للقراءة في الوقت نفسه. وبما أن كلا قيمتي MAR تزدادان في آنٍ واحد، فإن مستوى المخزن المؤقت الظاهري يظل دون تغيير. تتم زيادة كلا قيمتي MAR بواسطة ساعة منفذ الكتابة؛ وبالتالي، فإن هذه العملية غير مناسبة لوحدات FIFO غير المتزامنة، التي تتطلب زيادة قيمة MAR للقراءة في نطاق ساعة منفذ القراءة.
دائرة نموذجية تُستخدم للكتابة فوق أقدم البيانات المخزنة عند حدوث تجاوز السعة
التطبيقات
مطابقة معدل البيانات
تُستخدم مخازن البيانات ذات البادئات الأولية (FIFO) بشكل متكرر لربط مُنتِجي البيانات بمُستهلِكيها الذين لديهم معدلات بيانات مختلفة. [ 9 ] يؤدي مخزن البيانات ذو البادئات الأولية هذه الوظيفة عن طريق تخزين البيانات التي تم إنتاجها ولكن لم يتم استهلاكها بعد، وبالتالي فصل معدلات الإنتاج عن معدلات الاستهلاك. يسمح هذا للمُنتِج بكتابة البيانات إلى مخزن البيانات ذي البادئات الأولية فور توفرها، وللمُستهلِك بقراءة البيانات فقط عند الحاجة، مما يُلبي متطلبات التوقيت لكلا الطرفين مع تجنب فقدان البيانات. [ 9 ]
قد تختلف معدلات إنتاج البيانات واستهلاكها لأسباب مختلفة، بما في ذلك الحالات التي:
عبور نطاق الساعة
تتألف العديد من الأنظمة من دوائر منطقية متعددة، تعمل كل منها في نطاق زمني مختلف، ويجب أن تتواصل فيما بينها. [ 1 ] ولتحقيق ذلك، يجب على كل دائرة من هذه الدوائر تبادل البيانات مع دائرة أخرى تعمل في نطاق زمني مختلف. إلا أن إرسال البيانات مباشرةً إلى نطاق زمني آخر غير موثوق، لأنه قد يؤدي إلى تلف البيانات بسبب عدم استقرارها. [ 9 ] ويتم تجنب هذه المشكلة بتمرير البيانات عبر مخزن مؤقت غير متزامن (FIFO)، مما يقضي على عدم الاستقرار ويضمن بالتالي سلامة البيانات المنقولة. [ 9 ]
تُستخدم وحدة FIFO غير متزامنة لإرسال البيانات بشكل موثوق من نطاق توقيت إلى آخر. يعمل مُنتِج البيانات (الدائرة A) ومُستهلِكها (الدائرة B) في نطاقي التوقيت CLKA وCLKB على التوالي. تكون اتجاهات الإشارة من اليسار إلى اليمين ما لم يُشر إلى خلاف ذلك بالأسهم.
ختم زمني لدخول البيانات
تتطلب بعض الأنظمة معرفة أوقات وصول الكلمات من مُنتِج البيانات. [ 4 ] ومن الأمثلة الشائعة على ذلك الرادار ، والسونار ، وأنظمة جمع البيانات في أنظمة التحكم . عادةً، تُكتسب هذه المعرفة عن طريق وضع طابع زمني على كل كلمة بيانات (ربطها بالوقت الحالي) عند وصولها، مما يُنشئ فعليًا زوجًا مُرتبًا يتكون من كلمة البيانات ووقت وصولها.
في بعض الحالات، لا يستطيع المعالج تحديد الطابع الزمني بدقة كافية (على سبيل المثال، بسبب عوامل مثل زمن استجابة المقاطعة المتغير [ 4 ] أو وصول البيانات بسرعة تفوق قدرة المعالج على معالجتها). في مثل هذه الحالات، يمكن استخدام مخزن FIFO لتحديد الطابع الزمني للبيانات الواردة بدقة. عند وصول البيانات، تُدمج كل كلمة بيانات مع الوقت الحالي، وتُكتب النتيجة في مخزن FIFO ككلمة مركبة واحدة. عندما يقرأ المعالج الكلمة المركبة من مخزن FIFO (في وقت لاحق مناسب)، يمكنه بسهولة فصلها إلى كلمة البيانات المكونة لها والطابع الزمني.
تُستخدم وحدة FIFO لتسجيل وقت وصول البيانات الواردة. في حال حدوث تجاوز في سعة وحدة FIFO، يتم إخطار المعالج عبر مقاطعة بفقدان البيانات. تكون اتجاهات الإشارة من اليسار إلى اليمين ما لم يُشر إلى خلاف ذلك بالأسهم.
تسجيل البيانات قبل بدء التشغيل
في بعض التطبيقات، يجب على وحدة FIFO جمع البيانات التي تسبق حدثًا ما. [ 2 ] على سبيل المثال، يُستخدم راسم الإشارة الرقمي عادةً لتسجيل عينات الإشارة التناظرية التي تسبق إشارة التشغيل مباشرةً، مما يسمح له بعرض شكل موجة الإشارة التي حدثت قبل التشغيل.
ولتسهيل عملية التسجيل، صُممت وحدة FIFO بحيث تستبدل أقدم عينة عند امتلاء سعتها. وهذا يسمح لوحدة FIFO، عند امتلاء سعتها، بمواصلة استقبال بيانات جديدة والاحتفاظ تلقائيًا بأحدث البيانات فقط حتى سعتها القصوى.
أثناء التشغيل، يبدأ التسجيل وتبدأ ذاكرة FIFO بالامتلاء بالعينات الواردة. إذا استمر التسجيل لفترة كافية، ستمتلئ ذاكرة FIFO، وعند كل عينة واردة جديدة، تُحذف أقدم عينة مسجلة لإفساح المجال للعينة الجديدة. عند وصول إشارة التشغيل، يتوقف التسجيل ويمكن قراءة العينات المسجلة من ذاكرة FIFO. يتم تجاهل حالات تجاوز السعة لأن أي بيانات مفقودة (مكتوبة فوقها) تسبق البيانات المسجلة لا تُؤخذ في الاعتبار.
دائرة مثال توضح كيفية تسجيل البيانات قبل بدء التشغيل باستخدام ذاكرة FIFO. يُصدر محول الإشارة التناظرية إلى الرقمية (ADC) عينة واحدة لكل دورة ساعة، تُخزن في ذاكرة FIFO عند تفعيل إشارة التسجيل (RECORD). يبدأ التسجيل عند تفعيل إشارة البدء (START) وينتهي عند بدء التشغيل (TRIG). يتم إخطار المعالج عبر مقاطعة (IRQ) بانتهاء التسجيل، ويمكنه حينها قراءة بيانات العينات حتى تُفرغ ذاكرة FIFO.
ملحوظات
مراجع
- 1 2 3 4 5 6 7 8 9 10 11 12 13 بالتش، مايك. التصميم الرقمي الكامل / دليل شامل للإلكترونيات الرقمية وهندسة أنظمة الحاسوب . ماكجرو هيل. ISBN 0-07-143347-3.
- 1 2 3 "بنية FIFO ووظائفها وتطبيقاتها" (ملف PDF) . شركة تكساس إنسترومنتس . تم الاطلاع عليه بتاريخ 25 مارس 2026 .
- 1 2 3 4 5 "ذاكرة FIFO مُدارة للأجهزة، وظائف دائرة FIFO النموذجية" . RealDigital . تم الاطلاع عليه بتاريخ 13 مارس 2026 .
- 1 2 3 4 5 6 7 8 جانسل، جاك. "ما يدخل يجب أن يخرج" . برمجة الأنظمة المدمجة . تم الاسترجاع في 25 مارس 2026 .
- ↑ هربرت، توم. "أجهزة FIFO - إصدار قوائم انتظار الأجهزة" . ميديوم . تم الاسترجاع في 25 مارس 2026 .
- 1 2 3 4 "التسلسل المتزامن FIFO" . ChipVerify . تم الاطلاع عليه في 9 أبريل 2026 .
- ↑ دليل مستخدم مولد FIFO لبروتوكول الإنترنت LogiCORE ( الإصدار 9.1). شركة Xilinx، 24 أبريل 2012.
- 1 2 3 4 5 6 7 كامينغز، كليفورد إي. "تقنيات المحاكاة والتركيب لتصميم FIFO غير المتزامن" (ملف PDF) . شركة صنبرست ديزاين . تم الاطلاع عليه بتاريخ 25 مارس 2026 .
- 1 2 3 4 5 "تصميم وتنفيذ FIFO / برنامج تعليمي بلغة SystemVerilog" . AICLAB . تم الاطلاع عليه بتاريخ 25 مارس 2026 .
- 1 2 3 4 5 6 7 كامبوس، نيلسون. "وحدات FIFO المتزامنة وغير المتزامنة في الأجهزة" . تم الاطلاع عليه بتاريخ 25 مارس 2026 .
- 1 2 3 4 نيبراجاني، فيجاي. "بنى FIFO غير المتزامنة" (ملف PDF) . تم الاطلاع عليه بتاريخ 25 مارس 2026 .
- الدوائر الرقمية
