Fpga Arabic [PDF]

  • Author / Uploaded
  • sameh
  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

‫فكرة عامة عن‬ ‫الشرائح اللكترونية القابلة للبرمجة‬ ‫(‪)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