Fpga Arabic

  • Uploaded by: sameh
  • 0
  • 0
  • April 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Fpga Arabic as PDF for free.

More details

  • Words: 3,360
  • Pages: 13
‫فكرة عامة عن‬ ‫الشرائح اللكترونية القابلة للبرمجة‬ ‫(‪)Programmable Logic Devices‬‬ ‫‪-1‬مقدمة‬ ‫‪-2‬أ‪ -‬الغرض من هذا المقال هو تقديم فكرة عامة عن الشرائح اللكترونية القابلة للبرمجة والتعرف‬ ‫على تركيبها الداخلي وكيفية برمجتها حتى نتعرف على كيفية استخدامها في تصميم الدوائر‬ ‫اللكترونية‬ ‫ب‪ -‬من المستفيد من قراءة هذا المقال؟‬ ‫هذا المقال مفيد لمهندسي اللكترونيات الجدد ولهواة تصميم الدوائر اللكترونية الذين يرغبون في‬ ‫تصميم وتنفيذ دوائرهم الخاصة بطريقة سهلة ومتطورة‬ ‫جـ ‪ -‬ماهي المعلومات الساسية التي يجب معرفتها قبل قراءة هذا المقال؟‬ ‫يجب معرفة أساسيات الدوائر اللكترونية وأساسيات تصميم دوائر الديجيتال قبل قراءة هذا المقال‬

‫‪ -2‬معلومات هامة عن تصميم الدوائر اللكترونية وتصميم دوائر الديجيتال‬ ‫أن تصميم دوائر الديجيتال يعتمد على كل من ‪-:‬‬ ‫‪)1‬عمليات (‪ )Boolean Arithmetic‬والعمليات الرئيسية في الـ (‬ ‫‪ )Boolean Arithmetic‬هي (‪ )And,Or,Not‬حيث يمكن تكوين باقي‬ ‫العمليات من هذه العمليات الرئيسية ‪.‬‬ ‫مثال (‪)Bit Half Adder 2‬‬ ‫‪)Sum = (x AND NOT y) OR (NOT x AND y‬‬ ‫‪)Carry =(x AND y‬‬ ‫‪)2‬دوائر التخزين‬ ‫كما يعتمد تصميم دوائر الديجيتال على دوائر الفليب فلوب (‪ )Flip Flop‬والـ (‪)Register‬‬ ‫وهي دوائر تسمح بتنفيذ عمليات تخزين البيانات‬ ‫هـ) أنواع دوائر الديجيتال ( من حيث التزامن) ‪:‬‬ ‫‪)1‬دوائر متزامنة (‪)Synchronous‬‬ ‫وهي دوائر تعتمد في عملها على وجود اشارة تزامن (‪)Clocked‬‬ ‫‪)2‬دوائر غير متزامنة (‪:)Asynchronous‬‬ ‫وهي دوائر لتعتمد في عملها على وجود اشارة تزامن (‪)Non-Clocked‬‬ ‫و) مزايا تصميم دوائر الديجيتال‬ ‫‪)1‬السهولة والبساطة في التنفيذ‬ ‫حيث يمكن بسهولة تصميم وتنفيذ دائرة ديجيتال معقدة عن ان تقوم بتصميم وتنفيذ دائرة‬ ‫أنالوج (‪)Analog‬‬ ‫‪)2‬السهولة والبساطة في اكتشاف العطال واصلحها‬ ‫نظرا لن دوائر الديجيتال تعتمد على فكرة الفصل والتوصيل فانه من السهل اكتشاف‬ ‫العطال واصلحها وكل خرج فيها ينبغي ان يكون اما صفر او واحد‬

‫‪ -3‬تطور الدوائر المتكاملة (‪ ) Integrated Circuits‬والشرائح اللكترونية (‪)Chips‬‬ ‫‪)1‬الترانزستورات‬ ‫‪)2‬دوائر الديجيتال البدائية وتكنولوجيا الـ (‪LSI)Large Scale‬‬ ‫‪))Integration‬‬ ‫دوائر الديجيتال البدائية كانت قديما تستخدم دوائر أساسية بسيطة مثل دوائر (‪AND,‬‬ ‫‪)OR, NOT‬‬ ‫ثم ظهر فيما بعد تكنولوجيا (‪ )LSI‬والتي تقوم بتجميع دوائر معقدة داخل شريحة الكترونية‬ ‫صغيرة ومن أمثلتها (‪ )Decoder‬و (‪ )Adder‬و (‪)Multiplier‬‬ ‫جـ) تكنولوجيا (‪)VLSI( )Very Large Scale Integration‬‬ ‫وهي شريحة الكترونية اكثر تعقيدا من شريحة (‪ )LSI‬تقوم بتجميع العديد من المكونات‬ ‫والدوائر في شريحة واحدة ومن أمثلتها (‪ )Processor‬و (‪)CPU‬‬ ‫د) ظهرت تكنولوجيا (‪)Programmable Logic Devices( )PLD‬‬

‫وهي شريحة الكترونية يتم فيها تجميع العديد من الدوائر المتكاملة ويتم توصيل هذه‬ ‫الدوائر بواسطة فيوزات والوظيقة التي تقوم بها الشريحة النهائة تعتمد على عملية‬ ‫البرمجة التي تتم لهذه الشريحة‬ ‫وعملية البرمجة هذه عبارة عن حرق بعض الفيوزات التي تربط الدوائر الداخلية الموجودة‬ ‫في الشريحة‬ ‫عملية الحرق هذه تؤدي الى فصل بعض الفيوزات بين الدوائر وترك الفيوزات الخرى‬ ‫متصلة ومن أمثلة شرائح (‪ )PLD‬شريحة (‪ )ROM‬وشريحة (‪ )PAL‬وشريحة (‬ ‫‪ )PLAs‬والفرق الرئيسي بين هذه الشرائح هو مكان الفيوزات التي يمكن حرقها‬ ‫والتوصيلت الثابتة التي ليمكن حرقها‬ ‫ملحوظة‬ ‫نظرا لن هذه الدوائر الداخلية في شريحة (‪ )PLD‬متصلة بواسطة فيوزات يتم حرقها عند البرمجة‬ ‫فانه ليمكن برمجة شريحة (‪ ) PLD‬ال مرة واحدة فقط‬ ‫التركيب الداخلي لشريحة (‪)PAL‬‬

‫الشكل (‪ : )1‬تركيب شريحة (‪)PAL‬‬ ‫هـ) الشرائح اللكترونية المصنعة لغرض محدد (‪)ASIC‬‬ ‫وهي شرائح الكترونية يتم بناؤها لتنفيذ غرض محدد وهناك نوعان منها‪-:‬‬ ‫‪)1‬النوع الول شرائح تحتوي بداخلها على العديد من الدوائر اللكترونية‬ ‫‪)2‬النوع الثاني شرائح تحتوي بداخلها على دائرة واحدة‬ ‫و) الشرائح اللكترونية المعقدة القابلة للبرمجة(‪)CPLD‬‬ ‫هي شرائح الكترونية أكثر تعقيدا من شرائح(‪ )PLD‬وتحتوي بداخلها على بلوكات من‬ ‫شرائح (‪ )PLD‬وهي تشبه الى حد كبير في تعقيدها شرائح (‪ )PAL‬التي سبق شرحها‬ ‫ولكن شرائح ((‪ CPLD‬عدد الدوائر بها أكثر‬ ‫ز) الشرائح اللكترونية ‪)Field Programmable Gate Arrays )FPGA‬‬ ‫هي شرائح الكترونية تركيبها العام يسمح باستيعاب عدد كبير جدا من الشرائح اللكترونية‬ ‫وفي حين ان شرائح(‪ )CPLD‬بها امكانية تواجد عدد كبير من الشرائح اللكترونية بداخلها‬ ‫فان شرائح (‪ )FPGA‬تسمح بعدد محدود من الدوائر بداخلها ولكنها يتوافر بها عدد اكبر‬

‫من دوائر الفليب فلوب‬ ‫شرائح (‪)CPLD‬‬

‫(‪ )Flip-Flop‬نسبة الى عدد الدوائر المسموح بها في‬

‫الشكل (‪ : )2‬تركيب شريحة (‪)FPGA‬‬

‫‪4‬‬ ‫‪-‬‬

‫التركيب االداخلي لشرائح (‪FPGA‬‬ ‫أ) تتكون شرائح(‪ )FPGA‬داخليا من بلوكات من الدوائر اللكترونيةوكل بلوك يتكون من دوائر صغيرة‬ ‫موزعة على هيئة مجموعة من الخليا(‪ )LOGIC CELLS‬وتتكون كل خلية عادة من دائرة فليب‬ ‫فلوب (‪)Flip-Flop‬وبعض الدوائر الخرى التي تختلف حسب كل من الشركة المصنعة (‬ ‫‪)Vendor‬والـ (‪)Family‬التي تنتمي لها شريحة الـ (‪)FPGA‬‬ ‫ملحوظة‬ ‫كل شركة مصنعة لشرائح ‪FPGA‬تستخدم اسم خاص لوصف الخليا وكيفية بنائها‬ ‫ومن أمثلة هذه السماء (‪)Logic Block‬و(‪)Logic Element‬‬ ‫ب) كما يتواجد داخل الخليا (‪)Logic Cells‬دائرة ‪)LUT )Look up Tables‬وهي تشبه الـ(‬ ‫‪ )ROMs‬بعض أنواع شرائح ‪FPGA‬يتواجد بها دوائر ذاكرة أخرى مثل ‪SRAM‬و(‪Dual‬‬ ‫‪ )Port Memory‬و(‪)CAM‬وهي دوائر يتم استخدامها بشكل خاص إما في لغة (‪)HDL‬او‬ ‫باستخدام دوائر خاصة في عملية رسم الدوائر بالبرامج الخاصة ‪schematic entry‬‬ ‫جـ) وسائل الربط والتوصيل(‪ )Routing Resources‬بين دوائر شريحة (‪)FPGA‬‬ ‫وسائل الربط والتوصيل في شريحة (‪)FPGA‬هي قنوات توصيل وأسلك ومفاتيح تربط بين‬ ‫الدوائر الداخلية مثل دوائر ‪Memory, LUT & Logic Cells‬‬ ‫د) ‪pins‬أطراف التوصيل الخارجية‬ ‫وبهذه الوسائل يمكن الربط بين الدوائر الداخلية في الشريحة أطراف التوصيل الخارجية (‪)PINs‬‬ ‫لشرائح (‪)FPGA‬‬ ‫تختلف في كيفية توزيعها وترتيبها فبعض الشرائح يتم توزيع ترتيبها بطريقة‬ ‫(‪)TTL‬أو(‪ )CMOS‬أو(‪ )PCI‬أو (‪ )AGP‬او اي طريقة اخرى‪ .‬لذلك فان شرائح (‬ ‫‪)FPGA‬يمكن ان تستخدم للربط بين تكنولوجيات مختلفة من تكنولوجيات الدوائر‬

‫هــــ) ‪pins‬أطراف التوصـــيل الخارجيـــة (‪ )Clock‬و (‪)PLL‬بعـــض شرائح (‪ )FPGA‬تخصـــص‬ ‫أطراف توصــيل ذات ســرعة عاليــة للــ (‪ )Clock‬و (‪ )Reset‬وبعــض شرائح (‪ )FPGA‬يمكــن ان‬ ‫يكون لها بلوكات للتحكم في ال (‪ )Clock‬و (‪ )PLL‬مثل (‪ )ClockMultiplier‬و (‪)Divider‬‬

‫الشكل(‪Xilinx's Virtex Slice )3‬‬

‫الشكل (‪Altera's Apex Logic Element )4‬‬

‫‪ -6‬اللوحات اللكترونية المخصصة لشرائح (‪)FPGA‬‬ ‫هناك العديد من اللوحات اللكترونية المخصصة لشرائح (‪ )FPGA‬ومنها‬ ‫‪.1‬لوحات عرض (‪ )Demo‬للشرائح‬ ‫‪.2‬ولوحات اخرى لتطبيقات معينة (‪) Applications‬‬ ‫هذه اللوحات تتراوح من ‪-:‬‬ ‫(‬ ‫‪.1‬لوحات مخصصة لشرائح (‪ )FPGA‬الصغيرة يمكن ان تكون مزودة بـ‬ ‫‪ )External Headers‬ومجموعة توصيلت‬ ‫‪.2‬وحتى لوحات كبيرة ومعقدة مزودة بشرائح ربط أخرى (‪ )Interface Chips‬وكذلك‬ ‫بشرائح (‪)FPGA‬‬

‫‪ -11‬لماذا نستخدم الشرائح اللكترونية القابلة للبرمجة؟‬ ‫‪.1‬ليـس هناك حاجـة لعمليـة تصـنيع معقدة لتنفيـذ الدوائر اللكترونيـة باتخدام شرائح (‪ )FPGA‬اذا‬ ‫كانت الدائة اللكترونية موجودة أصل ضمن مكونات شريحة (‪)FPGA‬‬ ‫‪.2‬من السهل واكتشاف العيوب وتعديلها في شرائح (‪ )FPGA‬بالنسبة (‪)ASIC‬‬

‫‪ - 12‬بناء وحدة معالجة مركزية لغرض خاص‬ ‫‪ - 13‬الدوائر اللكترونية القابلة لتغيير وظائفها أثناء تشغيلها‬ ‫أحد مزايا الشرائح اللكترونية القابلة للبرمجة انها يمكن اعادة تغيير وظيفتها أثناء عملها‪ ،‬وهذا يعني أن‬ ‫وظيفة الشريحة اللكترونية (‪ )FPGA‬يمكن ان يتم تغييرها خلل تشغيلها ‪ ،‬ميزة هذه الخاصية هي أنه‬ ‫يمكـن لشخـص مـا وضـع العديـد مـن التصـميمات داخـل شريحـة (‪ )FPGA‬وهذه التصـميمات لتعمـل فـي‬ ‫شريحة (‪ )FPGA‬في نفس الوقت ولكن يتم تشغيل بعضها فقط عندما يتم الحاجة اليهم وفي هذه الحالة‬ ‫يمكننا وضع العديد من التصميمات في شريحة (‪ )FPGA‬واحدة أكثر بكثير من الحجم الحقيقي لها‬ ‫على سبيل المثال هناك بعض التصميمات تحتاج ان يتم تنفيذها فقط عند بداية تشغيل النظام اللكتروني ثم‬ ‫ليتم استخدامها بعد ذلك اما باقي التصميمات فيمكنها أن تعمل فقط عندما يحتاج المستخدم منها أن تعمل‬ ‫لذلك اذا قمنـا بوضـع كـل هذه التصـميمات معـا على شريحـة (‪ )FPGA‬فاننـا سـنحتاج شريحـة (‪)FPGA‬‬ ‫كـبيرة جدا ولكـن بفضـل خاصـية امكانيـة تغييـر وظيفـة الشريحـة اثناء تشغيلهـا فاننـا يمكننـا وضـع العديـد مـن‬ ‫التصميمات على شريحـة (‪ )FPGA‬واحدة ثم نقوم بتشغيل التصميم الذي نرغـب أن تعمـل الشريحـة طبقا‬ ‫له موضـع التنفيذ ثم نقوم بفصل هذا التصميم وتشغيل تصصميم آخرطبقا لحتياجاتنا وبذلك نقلل‬

‫الحجم الذي تحتاجه شريحة (‪)FPGA‬‬ ‫‪ - 14‬تصميمات الشرائح اللكترونية المعروضة بشكل مجاني‬ ‫ان تصـميمات الهاردويـر لشرائح (‪ )FPGA‬يتـم عرضهـا بشكـل مجانـي لسـتخدامها فـي برمجـة شرائح (‬ ‫‪ )FPGA‬ولغات (‪ ، )HDL‬المصــممون والهواة يمكنهــم كتابــة كود (‪ )HDL‬ثــم نــبرمج هذا الكود على‬ ‫شرائح (‪FPGA‬‬ ‫‪.3‬‬ ‫‪ -7‬أساليب تصميم برنامج شريحة (‪ )FPGA‬عملية التصميم هي‪-:‬‬ ‫أ ‪ -‬تحديد الغرض من الشريحة‬ ‫تحديد المشكلة المراد حلها والغرض من الشريحة ومانحتاج لتنفيذه‬ ‫ب ‪ -‬وضع التصميم‬ ‫‪)1‬طريقـة التصـميم الولى (رسـم الهيكـل البنائي للدائرة الكهريـة) (‪)schematic Entry‬‬ ‫ببرنامج الحاسوب‪ .‬وهذه الطريقة غير مجدية للتصميمات كبيرة الحجم‬ ‫‪)2‬طريقة التصميم الثانية (كتابة برنامج باستخدام احدى لغات ‪)HDL‬‬ ‫هـو السـلوب الذي يصـف تركيـب الدوائر اللكترونيـة باسـتخدام برنامـج كمـبيوترواحدى‬ ‫لغات (‪ )HDL‬مثل ‪VHDL & Verilog‬‬ ‫ماذا تعني ‪..VHDL‬‬ ‫هي لغة توصيف الكيان الصلب للدارات المتكاملة عالية السرعة‪.‬‬ ‫المحاكاة بدأت بالطريقة البرمجية و هذا الحل على روعته لم يكن كافي ًا لننا أحياناً نصنع‬ ‫جزء من دارة ضخمة وعلينا أن نختبر أداء هذا الجزء مع باقي الدارة وقد لتكون باقي‬ ‫الدارة من صنعنا أو متوفر لها محاكاة كذلك فإن هذه الطريقة لتساعدنا في التصميم‪.‬‬ ‫فنحن لزلنا نصمم الدراة على الورق من خلل جداول الحقيقة والعلميات المنطقية ثم‬

‫نطبقها على الحاسب‪ .‬إذاً لبد من دارات قابلة للبرمجة بنيوياً‬ ‫جـ ‪ -‬المحاكاة (‪)Simulation‬‬ ‫د ‪ -‬تحليل التصميم (‪)Synthesis‬‬ ‫هـي عمليـة اسـتنباط مكونات الدائرة التـي تـم تصـميمها بواسـطة لغـة (‪ )HDL‬لتحويـل الوصـف الى‬ ‫دوائر الكترونيــة وهذه الخطوة لتســتخدم فــي حالة اســتخدام اســلوب رســم الهيكــل البنائي للدائرة‬ ‫‪schematic Entry‬‬ ‫هـ‪ -‬وضع المكونات في أماكنها والربط بينها(‪)Place and route‬‬ ‫هذه الخطوة تستخدم لمقابلة الدوائر المصممة بالدوائر والموارد المتاحة بال ‪ FPGA‬ووضع الدوائر‬ ‫بالماكـن المناسـبة بالشريحـة وبعـد وضـع المكونات فـي أماكانهـا يتـم ربطهـم سـويا باسـتخدام قنوات‬ ‫التوصيل والسلك الداخلية‪ .‬هذه الخطوة تربط كذلك بين أطراف التوصيل الخارجية للشريحة(‪)pins‬‬ ‫مع باقي أجزاء الدائرة الداخلية التي سيتم توصيل الشريحة بها‬ ‫و‪ -‬توليد الـ(‪)Bit Stream‬‬ ‫عمليـة توليـد الــ (‪ )Bit Stream‬أو ملف البرمجـة (‪ )Programming File‬الذي يحتوي على‬ ‫كــل المعلومات عــن تصــميم الدائرة وكيــف يتــم مقابلة التصــميم بالمواردالموجودة بال(‪)FPGA‬‬ ‫وكيــف ينبغــي ان تتصــل المفاتيــح الداخليــة للـــ(‪ .)FPGA‬وهــو الملف الذي يســتعمل لبرمجــة‬ ‫الشريحة‪.‬‬ ‫وبرمجـة ملف الــ (‪ )Bit Stream‬يعتمـد على الشريحـة والشركـة المصـنعة لهـا وكـل شريحـة لهـا‬ ‫طريقة برمجة محددة ويتم تزويدها ببرنامج خاص لبرمجتها‬ ‫طريقة لتصميم الهاردوير (‪ )Hardware Design‬وهي طريقة لوصف تصميم الهاردوير‬ ‫وهناك العديــد مــن لغات (‪ HDL‬ومعظــم هذه اللغات يمكــن ان تصــف عمليات ديجيتال أســاسية مثــل (‬ ‫‪ )AND,OR,NOT‬واللغات الخرى الكثـر تعقيدا والكثـر تقدمـا للمسـتخدم ان يصـف التصـميم بطريقـة‬ ‫يمكــن ان يتــم قراءتهــا بواســطة البشــر علي ســبيل المثال فانهــا تســمح للمســتخدم ان يســتخدم أوامــر (‬ ‫‪ )Loops,Case,If‬والتـي تجعله يركـز على التصـميم نفسـه (كـبرنامج) وليـس على الهاردويـر و معظـم‬ ‫لغات (‪ )HDL‬تعرف أطراف الدخـل والخرج للشريحـة ووظائفهـا الداخليـة ومـن أمثلتهـا(‪ )Verilog‬و (‬ ‫‪ )VHDL‬و (‪)AHDL‬‬ ‫ما هو ‪CPLD‬؟‬ ‫طريقك الى تصميم الدوائر المتكاملة الخاصة بك من نوع ‪)LSI )Large Scale Integration‬‬ ‫‪CPLD‬اختصار(‪ )Complex Programmable Logic Device‬ومعناها (الدوائر المتكاملة‬ ‫المنطقية المعقدة القابلة للبرمجة)‪.‬‬ ‫الدوائر المتكاملة من نوع ‪ CPLD‬هي نوع مصغر من ‪ FPGA‬وهي تحتوي على عدد أقل من البوابات‬ ‫المنطقية وهي متوفرة في السواق وبسعر أقل ويمكنك استخدامها بسهولة وأقل تعقيدا ويمكنك عن طريقها‬ ‫عمل العديد من الدوائر المتكاملة المنطقية في ‪IC‬واحد فقط‪.‬‬ ‫مثال ‪ :‬على سبيل المثال في حالة الدائرة المتكاملة رقم ‪ 7400‬والتي تحتوي على أربع بوابات منطقية من‬ ‫نوع ‪ ، NAND‬والدائرة المتكاملة من نوع ‪7404‬والتي تحتوي على ستة بوابات من نوع ‪NOT‬‬ ‫وكل منهما دائرة متكاملة منفصلة ‪ ،‬فاذا اردنا توصيلهما ببعضهما البعض فاننا نحتاج الى توصيلهما على‬ ‫لوحة مطبوعة بتوصيلت خارجية‪.‬‬ ‫أما في حالة ال ‪ CPLD‬فاننا نوصل بين البوابات داخل الدائرة المتكاملة عن طريق برنامج خاص وبذلك تقل‬ ‫كثيرا التوصيلت الخارجية في اللوحة المصبوعة‬

‫وطبعا نحن هنا قدمنا مثال بسيطا لدائرتين متكاملتين فقط ‪ ،‬ولكن في الواقع فان هذه التقنية تحل محل عشرات‬ ‫وربما مئات الدوائر المتكاملة ‪ ،‬وذلك نظرا لحتوائها على عدد كبير من البوابات المنطقية تصل الى مئات أو‬ ‫ألف وبها عدد كبير من أطراف الدخل والخرج ‪ ،‬ولكن بالطبع تقف عند حدود معينة حسب عدد البوابات‬ ‫والطراف‪.‬‬ ‫في تدريبنا هذا سندرس الشرائح من عائلة ‪ XC9500‬والتي تنتجها شركة ‪ XILINIX‬زيلينيكس وهي عائلة‬ ‫مغلفة في شكل ‪ PLCC‬وهي تعني(‪)Plastic Leaded Chip Carrier‬ومعناها بالعربية الشريحة المغلفة‬ ‫بالبلستيك المدعم بالرصاص ‪.‬‬ ‫وفي الجدول التالي سوف نعرض بعض أنواع العائلة ‪XC9500‬‬ ‫‪ : PLCC‬الشريحة المغلفة بالبلستيك المدعم بالرصاص ‪Plastic Leaded Chip Carrier‬‬ ‫‪ :FB‬وهي تعني عدد الوظائف التي يمكن أن تقوم بها ‪ Function Block‬فمثل عندما يكتب ‪ 2FB‬غان ذلك‬ ‫يعني أنه يمكن القيام بوظيفتين في نفس الوقت‪.‬‬ ‫‪ :Gates‬تعني عدد البوابات الموجودة في الشريحة‪.‬‬ ‫‪ :Macrocells‬الماكرو هو وحدة متكاملة يمكن ان تقوم بعملية منطقية كاملة مثل الجامع الكامل ‪full‬‬ ‫‪ adder‬أو المسجلت ‪.registers‬‬ ‫‪:Pin‬عدد الطراف‪.‬‬ ‫مثلها مثل المتحكمات الدقيقة الميكروكنترولر فان ال ‪ CPLD‬لها عدد مرات محدود للبرمجة ‪ ،‬وذلك لن‬ ‫البرنامج يكتب على ذاكرة من نوع فلش ‪ . flash memory‬وفي حالة العائلة من ‪ XC9500‬فان عدد‬ ‫مرات الكتابة هي ‪10000‬مرة‪.‬‬ ‫وأخيرا من أحد مميزات هذا النوع أنه يمكن اعادة كتابته اثناء وجوده في الدائرة وأثناء عملها ول يحتاج‬ ‫الى ازالته من الدائرة للبرمجة ‪.‬‬ ‫والن بعد هذه المقدمة لنتعرف الن على تركيب هذه العائلة ‪XC9500‬من الداخل‪.‬‬ ‫ملحوظة‪:‬الدائرة المتكاملة رقم ‪ XC9572‬التي تحتوي على ‪1600‬بوابة و ‪ 84‬طرف متوفرة بالسوق ‪$‬‬ ‫المصري بسعر ‪ 75‬جنيه مصري(حوالي ‪12.5‬‬

‫تركيب ال ‪:FPGA‬‬ ‫هناك نوعان من دوائر ال ‪FPGA‬‬

‫‪-1‬الدوائر "الخشنة الحبيبات " ‪: coarse-grained‬‬ ‫وهى تتكون من عدد قليل من الوحدات المنطقية الكبيرة والقوية ‪ ،‬فكل وحدة تعتبر دائرة مكونة من عدة بوابات‬ ‫منطقية ‪ ،‬ويمكن لكل عنصر ئان يكون قادرا على جمع أو مقارنة عددين كاملين‪.‬‬

‫‪-2‬الدوائر "الناعمة الحبيبات" ‪:fine-grained‬‬ ‫وهى تتكون من عدد كبير من الوحدات المنطقية البسيطة يكون كل عنصر قادرا فقط على مقارنة رقمين‬ ‫ثنائيين أى يمكن اعتباره فعل بوابة منطقية واحدة‪.‬‬

‫إستخدامات ‪:FPGA‬‬ ‫‪-1‬البث الفيديوى ‪:‬‬ ‫تم بناء نظام بث فيديوى من دائرة متكاملة واحدة قادرة على اعادة تشكيل نفسها أربع مرات لكل صورة‬ ‫‪ frame‬فيديوية واحدة ‪ ،‬لذا فإنها تتطلب فقط ربع الدوائر التى يمكن أن نحتاج اليها لبناء مثل هذا لنظام‬ ‫بدوائر ال ‪ . ASIC‬فأول تقوم الدائرة ‪ FPGA‬يتخزين الشارة الفيديوية فى الذاكرة ن ثم تقوم بتحويلين‬ ‫مختلفين لمعالجة الصورة ‪ ،‬وفى النهاية تحول الى موديم لرسال الشارة الىالمرحلة التالية ‪.‬‬

‫‪-2‬التعرف على الصور ‪:‬‬ ‫يمكن لشريحة ‪ FPGA‬الخاصة بالتعرف على الصور أن تهيئ نفسها بمجرد رؤية الشئ الذى تنظر اليه ‪،‬‬ ‫فإذاكانت الصورة تحتوى على سيارة أوشاحنة ‪،‬فإن أجزاء الدائرة المصممة أصل لتتبع الطائرات السريعة أو‬ ‫الشخاص البطيئى الحركة ‪ ،‬يمكن أن تعيد تشكيل نفسها بحيث تركز بدل من ذلك على الليات البرية ‪.‬‬ ‫ويوجد العديد من التطبيقات الخرى مثل مقارنة الخطوط والتعرف على الشخاص والشياء المحيطةوتعمية‬ ‫الرسائل والتشفير المعقد جدا وتعرف الهداف الحربية والتصالت ‪.‬‬

‫مستقبل الحوسبة التشكلية ‪:FPGA‬‬ ‫تبشر دوائر ال ‪ FPGA‬بتطبيقات واعدة فى المستقبل ستجعلك ليس فقط تتحكم فى البرامج ‪soft ware‬‬ ‫ولكنك أيضا سوف تتحكم فى شكل ووظيفة المكونات الصلبة ‪ hard ware‬وذلك بتحميل البرنامج الخاص‬ ‫بالتطبيق الذى تريده ‪ ،‬فكما تقوم اليوم بتحميل برامج منشبكة النترنت ‪ ،‬فإن أجهزة المستقبل يمكنها تحميل‬ ‫تشكيلت جديدة للدوائر كلما استدعى المر ذلك)‬ ‫نرجو الن ان نكون قد وفقنا فى ايصال الصورة واضحة حتى نعرف جميعا ماهية المشروع الذى نحن مقبلون‬ ‫على دراسته ‪ ،‬وسنبدأ فى المرة القادمة بإذن ال شرح فكرة الجهاز وإنشاءه وكيفية عمله بالتتابع انشاء ال‪.‬‬ ‫مثل لو أن لدينا أربع بوابات ‪ NAND‬موصلين لكي تكون دائرتهم النطاط ‪ FILP_FLOP‬ونريد أن نحوله‬ ‫إلى بوابة ‪ AND‬ذات أربع مداخل فتحدث الخطوات التالية‬ ‫فيتم أول إعطاء أمر للبرنامج الخاص بالـ ‪ FPGA‬بفصل كل البوابات عن بعضها فيحدث التي‬ ‫ثم يعطى أمر بتحويل جميع البوابات إلى ‪ AND‬فتتحول إلى ‪AND‬‬ ‫ثم يعطى أمر بتوصيل خرجي بوابتين بدخلي بوابة أخرى وإهمال البوابة الرابعة‬ ‫وهكذا تتحول من دائرة إلى أخرى ‪ ،‬أما عن التركيب فيمكن أن نمثلها على أنها مجموعة بوابات تتصل ببعضها‬ ‫بمفاتيح الكترونية مثل ‪ IC‬رقم ‪ 4066‬على سبيل المثال‬

‫‪VHDL‬‬ ‫‪Very high speed integrated circuits Hardware Description Language‬‬ ‫إن الدوائر المصممة لمهام محددة ( الغير قابلة للبرمجة) والمعروف باسم (الدوائر المتكاملة المحددة‬ ‫التطبيقات) (‪ application-specific integrated circuits ) ASIC‬تؤمن بدقة الداء الوظيفى اللزم‬ ‫لمهمة معينة فقط‪ .‬فيستطيع مصممو الحاسبات إنتاج معالجات‬ ‫أصغرحجما وأقل تكلفة واكثر سرعة وتستهلك طاقة أقل من المعالجات القابلة للبرمجة ‪ ،‬فمعالج رسومات‬ ‫‪ graphics‬من نوع ‪ VGA‬يستطيع‬ ‫أن يرسم خطوطا أو يلون صورا على الشاشة اسرع من معالج وحدة معالجة مركزية عامة الستخدام بعشرة‬ ‫أضعاف أو مائة ضعف ‪.‬‬ ‫بنية البرنامج المكتوب بلغة ‪VHDL‬‬ ‫تهتم هذه اللغة بتوصيف الدارة التي نريد إنشاءها من ناحيتين أساسيتين‬ ‫الناحية الخارجية (مداخل مخارج )‬ ‫والناحية الداخلية وهي وظيفة الدارة أو كيف تتعامل الدارة مع الدخل وكيف يتغير الخرج‬ ‫وبشكل عام يتألف البرنامج من‬ ‫‪Header-1‬‬ ‫‪Interface )Entity(-2‬‬ ‫‪Functions)Architecture(-3‬‬

‫القسم الول وهو الترويسة ‪Header‬‬ ‫يتم التصريح فيه عن المكتبات التي سنستخدمها في برنامجنا‬ ‫الشكل العام لهذا القسم‪:‬‬

‫;‪LIBRARY library_name‬‬ ‫;‪USE library_name.package_name.ALL‬‬ ‫وكمثال عن طريقة التصريح على المكتبات‪:‬‬

‫;‪LIBRARY ieee‬‬ ‫;‪USE ieee.std_logic_1164.ALL‬‬ ‫حيث استخدمنا مكتبة ‪IEEE‬القياسية ومنها الحزمة ‪ std_logic_1164‬وهي تحوي على تعريف أنواع‬ ‫المعطيات المنطقية والحسابية والعمليات عليها‪.‬وتعد من أكثر المكتبات استخداماً‬ ‫الن برنامجنا جاهز لن يقبل منا أي عمليات منطقية أو حسابية نجريها على متحولتنا‪.‬‬ ‫الدرس الثاني‬ ‫القسم الثاني‪)Interface )Entity :‬‬ ‫في هذا القسم سنعرف الشكل الخارجي للدارة وذلك عبر تعريف المداخل والمخارج وطبيعتها‬ ‫الشكل العام لهذا الجزء‪:‬‬

‫‪ENTITY entity_name IS‬‬ ‫‪PORT )in1,in2,…… :attribute data_type ;out1,out2,….:attribute da‬‬ ‫;(‪ta_type‬‬ ‫; ‪END entity_name‬‬ ‫حيث نقوم باعطاء اسم للكيان الذي نريد تعريفه ‪,‬ثم نعرف أرجل هذا الكيان‬ ‫‪ …,In1,in2‬هي المتحولت طبعاً يمكننا تعريف أي متحول نشاء مؤلف من احرف وأرقام وبدون مسافات‬ ‫‪ Attribute‬هي عبارة عن نوع الرجل ليس مداخل ومخارج فقط‪..‬‬ ‫‪ VHDL‬تؤمن لنا العديد من الخيارات لرجل الدارة‬ ‫يمكن أن تكون ‪ IN‬أي دخل فقط ‪ OUT‬خرج فقط ‪ INOUT‬دخل وخرج‬ ‫‪ BUFFER‬أي مع امكانية التغذية العكسية (ذاكرة)أو‬ ‫‪:Data_type‬هي نوع البيانات التي تتعامل معها هذه الرجل وبالتالي العمليات التي يمكن تطبيقها عليها‬ ‫ماهي أنواع البيانات التي تسمح بها ‪ VHDL‬؟!!‬ ‫بشكل عام هناك ثلثة أنواع أساسية‬ ‫‪ std_logic-1‬وهي عبارة عن خط واحد (متحول واحد) يأخذ قيمة منطقية ‪)on-off( 1-0‬‬ ‫‪:std_logic_vector-2‬وهي عبارة عن مجموعة خطوط(‪ )bus‬او عدة متحولت متسلسلة تاخذ قيم منطقية‬ ‫‪)on-off( 1-0‬‬ ‫‪:integer-3‬وهي عبارة عن مجموعة خطوط (‪)bus‬أو عدة متحولت متسلسلة عددها يحدد بالتمثيل الثنائي‬ ‫اللزم لعلى عدد عشري قادرة على التعامل معه‪ .‬أو ‪ bit‬بدل من ‪std_logic‬‬ ‫كمثال على طريقة تعريف هذا القسم لنأخذ المثال التالي‪:‬‬

‫‪ENTITY my_first IS‬‬ ‫; ‪PORT ) x1,x2,x3 : IN STD_LOGIC‬‬ ‫;(‪y: OUT STD_LOGIC_VECTOR )1 TO 5‬‬ ‫;(‪c:BUFFER INTEGER RANGE 0 TO 4‬‬ ‫; ‪END my_first‬‬

‫ فهي‬y ‫…) أما‬-and-or-not( ‫ كمداخل منطقية تقبل اجراء العمليات المنطقية عليها‬x1,x2,x3 ‫قمنا بتعريف‬ ‫) تقبل ايضاً العمليات المنطقية‬y1,y2,y3,y4,y5( 5 ‫ إلى‬1 ‫مجموعة مخارج متسلسلة من‬ ( ‫ أرجل‬3 ‫ وبالتالي تتألف من‬4 ‫ هي عبارة عن مجموعة مخارج ذات ذاكرة يمكن أن تقبل أكبر قيمة عشرية‬C )‫ثنائي‬100= ‫ عشري‬4 .‫وهي من نوع عشري أي يمكن تطبيق عليها العمليات الحسابية وليس المنطقية‬ ‫ لقد قمنا في هذا الدرس بكتابة بعض الكلمات باحرف كبيرة والخرى بأحرف صغيرة هذا‬:ً‫ملحظة هامة جدا‬ ‫ ولكن الكلمات المكتوبة بأحرف‬VHDL ‫ليعني أن علينا اتباع نفس السلوب حين كتابتنا في برنامج محاكاة‬ . ‫كبيرة تعبر عن الكلمات المفتاحية أو المحجوزة في اللغة‬

VHDL( Half adder( ‫ أمثلة التصميم للـ‬- 10 LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY Adder_ent IS PORT ( Op1 : IN std_logic; op2 : IN std_logic; carry : OUT std_logic; Result : OUT std_logic);

-- Operand 1 -- Operand 2 -- Output carry -- Result

END Adder_ent; ARCHITECTURE behavior OF Adder_ent IS BEGIN -- behavior Result <= (Op1 AND NOT Op2) OR (NOT Op1 AND Op2); Carry <= Op1 AND Op2; END behavior;

-

8 bit Adder LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.ALL; ENTITY Adder_ent IS PORT ( clk : IN std_logic; -- System clock rst_n : IN std_logic; -- System reset Op1 : IN std_logic_vector(7 DOWNTO 0); -- Operand 1 op2 : IN std_logic_vector(7 DOWNTO 0); -- Operand 2 Result : OUT std_logic_vector(7 DOWNTO 0)); -- Result END Adder_ent; ARCHITECTURE behavior OF Adder_ent IS BEGIN -- behavior PROCESS (clk, rst_n) BEGIN -- PROCESS

IF rst_n = '0' THEN -- asynchronous reset (active low) Result <= (OTHERS => '0'); ELSIF clk'event AND clk = '1' THEN -- rising clock edge Result <= Op1 + op2; END IF; END PROCESS; END behavior;

-

Counter LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.ALL; ENTITY Adder_ent IS PORT ( clk : IN std_logic; -- System clock rst_n : IN std_logic; -- System reset Count : OUT std_logic_vector(7 DOWNTO 0)); -- Count END Adder_ent; ARCHITECTURE behavior OF Adder_ent IS SIGNAL counter : std_logic_vector(7 DOWNTO 0); -- internal counter BEGIN -- behavior PROCESS (clk, rst_n) BEGIN -- PROCESS IF rst_n = '0' THEN -- asynchronous reset (active low) Counter <= (OTHERS => '0'); ELSIF clk'event AND clk = '1' THEN -- rising clock edge Counter <= counter + 1; END IF; END PROCESS; count <= counter; END behavior;

-

7-Segment decoder LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY Decoder IS PORT ( InBin : IN std_logic_vector (3 DOWNTO 0); Display : OUT std_logic_vector (6 DOWNTO 0)); END Decoder; ARCHITECTURE rtl OF decoder IS SIGNAL t : std_logic_vector (6 DOWNTO 0); BEGIN seg_process : PROCESS (InBin) BEGIN CASE InBin IS WHEN "0000" => t <= "1111110"; WHEN "0001" => t <= "0110000";

WHEN "0010" => t <= "1101101"; WHEN "0011" => t <= "1111001"; WHEN "0100" => t <= "0110011"; WHEN "0101" => t <= "1011011"; WHEN "0110" => t <= "0011111"; WHEN "0111" => t <= "1110000"; WHEN "1000" => t <= "1111111"; WHEN "1001" => t <= "1110011"; WHEN "1010" => t <= "1110111"; WHEN "1011" => t <= "0011111"; WHEN "1100" => t <= "1001110"; WHEN "1101" => t <= "0111101"; WHEN "1110" => t <= "1001111"; WHEN OTHERS => t <= "1000111"; END CASE; Display <= NOT t; END PROCESS seg_process; END rtl;

Related Documents

Fpga Arabic
April 2020 9
Fpga
November 2019 18
Fpga Basics
May 2020 10
Cp-fpga
June 2020 9
Xilinx Fpga
June 2020 5
Fpga Tutorial
December 2019 10

More Documents from ""

Memory Basics R2[1]
May 2020 15
May 2020 15
Fpga Arabic
April 2020 9
Egypt
May 2020 33
May 2020 6