vhdl max plus 03

11
١ اﻟﺠﻤﻬﻮرﯾﺔ اﻟﻌﺮﺑﯿﺔ اﻟﺴﻮرﯾﺔ وزارة اﻟﺘﻌﻠﯿﻢ اﻟﻌﺎﻟﻲ ﺟﺎﻣﻌﺔ ﺣﻠﺐ ﻛﻠﯿﺔ اﻟﻬﻨﺪﺳﺔ اﻟﻜﻬﺮﺑﺎﺋﯿﺔ واﻻﻟﻜﺘﺮوﻧﯿﺔ ﻗﺴﻢ ﻫﻨﺪﺳﺔ اﻟﺤﻮاﺳﯿﺐ ﻣﺨﺒﺮ اﻟﺤﺎﺳﺒﺎت إﻋﺪاد اﻟﻤﻬﻨﺪس: أﺳﺎﻣﺔ ﻋﺰﯾﺰ ﻣﺪﺧﻞ إﻟﻰ اﺳﺘﺨﺪام اﻟﺒﺮﻣﺠﯿﺔMAX PLUS II - اﻟﺠﺰء اﻟﺜﺎﻟﺚIntroduction to MAX PLUS II - Part 3 اﻟﺴﻨﺔ اﻟﺜﺎﻟﺜﺔ- ﻗﺴﻢ ﻫﻨﺪﺳﺔ اﻟﺤﻮاﺳﯿﺐ اﻟﻔﺼﻞ اﻟﺪراﺳﻲ اﻷول٢٠١٠ - ٢٠١١

Upload: oussama-aziz

Post on 16-Mar-2016

243 views

Category:

Documents


2 download

DESCRIPTION

Tutorial about MAX PLUS II in Arabic

TRANSCRIPT

Page 1: VHDL MAX PLUS 03

١

الجمهوریة العربیة السوریة وزارة التعلیم العالي

كلیة الهندسة الكهربائیة وااللكترونیة–جامعة حلب مخبر الحاسبات–قسم هندسة الحواسیب

أسامة عزیز: إعداد المهندس

الثالث الجزء - MAX PLUS IIمدخل إلى استخدام البرمجیة Introduction to MAX PLUS II - Part 3

قسم هندسة الحواسیب-السنة الثالثة

الفصل الدراسي األول٢٠١١ - ٢٠١٠

Page 2: VHDL MAX PLUS 03

من عملي مادة تصمیم النظم المنطقیة والدارات الرقمیةالجلسة الثالثة قسم هندسة الحواسیب-السنة الثالثة

:النقاط التي ستعالج في هذه الجلسة هي

. اعتمادا على الوصف السلوكي للدارة الرقمیة المطلوب تصمیمها VHDL التصمیم بلغة -١ الستخدامها فیما بعد كوحدات بناء في VHDL بلغة Components عرض كیفیة إنشاء مكونات -٢ .تصامیم مستقبلیة

MAX PLUS II في البرمجیة Graphic Editorرأینا في الجلسة الثانیة كیفیة استخدام المحرر الرسومي

خاص لتصمیم الدارات الرقمیة من خالل مثال بسیط قمنا فیه بتصمیم دارة عداد ثنائي بطول خانتین مع مدخل في الحقیقة ، إن عرض هذا المثال كان بهدف توضیح كیفیة القیام بإدخال . Count Enableلتمكین العد

عموما ، یتطلب إدخال التصمیم بطریقة . VHDLالتصمیم المطلوب بطریقة رسومیة دون استخدام لغة قمیة قبل البدء بعملیة نقل التصمیم رسومیة جهدا ووقتا أكثر ألن على المصمم أن یعرف بالضبط بنیة الدارة الر

ضرورة تحویل إن ذلك یعني بالطبع ) . من خالل المحرر الرسومي ( MAX PLUS IIإلى البرمجیة أو إلى جدول ) تماما Combinationalفي حالة كون الدارة تركیبیة ( حقیقة الول توصیف الدارة إلى جد

ومن ثم إیجاد المعادالت )Sequentialكون الدارة تتابعیة انطالقا من مخطط الحاالت في حالة ( الحاالت وذلك بهدف التوصل في نهایة المطاف إلى رسم - باستخدام مخططات كارنوف مثال -المنطقیة بأبسط أشكالها

( من الواضح اآلن ، أنه كلما ازدادت درجة تعقید الدارة المطلوب تصمیمها . الدارة المنطقیة المراد تصمیمها عدد وحجم العناصر والمكونات الرقمیة المكونة للدارة وازدیادأو عدد المخارج /ن خالل ازدیاد عدد المداخل وم

لحسن الحظ ، وباستخدام لغات التوصیف . بشكل ملحوظ الجهد الالزم إلنهاء عملیة التصمیم أكبرأصبح) مشكلة بسهولة تامة وذلك ألننا یمكننا التخلص من هذه الHardware Description Languagesالعتادي

إن . Circuit Structure ولیس على بنیتها Circuit Behaviorنستطیع تصمیم الدارة اعتمادا على سلوكها . تقدم لنا إمكانیات هائلة في هذا المجال والتي ستتضح لنا تدریجیا مع تعمقنا أكثر في تعلم هذه اللغةVHDLلغة

لدارة العداد الذي صممناه في الجلسة الثانیة VHDLقوم فیما یلي بعرض كود كمثال على ما تقدم ذكره سنضمن هذا ستعرض أیضا لتوضیح النقاط األكثر أهمیة كما أن شروحات وتعلیقات. مي باستخدام المحرر الرسو

.الكود 1 ------------------------------------------------------------------------------------------------ 2 LIBRARY IEEE; 3 USE IEEE.STD_LOGIC_1164.ALL; 4 USE IEEE.STD_LOGIC_UNSIGNED.ALL; 5 ------------------------------------------------------------------------------------------------ 6 ENTITY COUNT IS 7 PORT ( RST, CLK, ENA : IN STD_LOGIC; 8 Y : BUFFER STD_LOGIC_VECTOR( 1 DOWNTO 0 )); 9 END COUNT; 10 ------------------------------------------------------------------------------------------------ 11 ARCHITECTURE BEHAVIORAL OF COUNT IS 12 BEGIN 13 PROCESS ( RST, CLK ) 14 BEGIN 15 IF RST = '1' THEN 16 Y <= "00"; 17 ELSIF CLK'EVENT AND CLK = '1' THEN

Page 3: VHDL MAX PLUS 03

18 IF ENA = '1' THEN 19 Y <= Y + 1; 20 END IF; 21 END IF; 22 END PROCESS; 23 END BEHAVIORAL; 24 ---------------------------------------------------------------------------------------------------

:شروحات وتعلیقات على الكود

من الكود ) أو إلى مقطع ما ( في البدایة نذكر أن أرقام األسطر قد تم استخدامها لتسهیل اإلحالة إلى سطر ما -١

في Text Editor وبالتالي أثناء نسخ الكود إلى المحرر النصي VHDLأي أنها ال تشكل جزءا من كود :) وعدم نسخ هذه األرقام مع الكوداه دوما إلى هذه النقطة یجب االنتبMAX PLUS IIالبرمجیة

ولذلك سوف یتم Comment یعتبر تعلیقا --من جهة أخرى فإن أي سطر یبدأ بخطین قصیرین متتالیین -٢عل كل حال ، من المفضل دوما استخدام التعلیقات . ثناء عملیة الترجمةأ Compilerتجاهله من قبل المترجم

!!!حتى یصبح الكود أكثر قابلیة للفهم كود لتوضیح النقاط األكثر أهمیة ضمن ال وذلك لیكون اسم الملف مطابقا السم count.vhd نذكر أیضا أن هذا الكود یجب أن یخزن ضمن ملف اسمه -٣

. من الكود أعاله 6 كما هو واضح في السطر رقم ENTITYالكیان مقطع التصریحات عن المكتبات والحزم یلیه : ثة مقاطع متتالیة هي یتكون عموما من ثالVHDLإن كود -٤

یمكن مالحظة ذلك في الكود . ARCHITECTUREمقطع التصریح عن الكیان وأخیرا یأتي مقطع البنیة المقطع الثاني في حین ( 9 - 6 ) المقطع األول كما تمثل األسطر ( 4 - 2 )حیث تمثل األسطر الموضح أعاله

. تمثل المقطع الثالث واألخیر ( 23 - 11 )طر أن األسأوال ومن ثم IEEEتم التصریح عن المكتبة ) المخصص للتصریح عن المكتبات والحزم ( في المقطع األول -٥

و الحزمة STD_LOGIC_1164تم التصریح عن حزمتین اثنتین من هذه المكتبة وهما الحزمة STD_LOGIC_UNSIGNED . ى إن الحزمة األولSTD_LOGIC_1164ي تحتوي تعریف نوع

في هذا التصمیم كما أن الحزمة المستخدمین STD_LOGIC_VECTOR و STD_LOGICالمعطیات تسمح لنا بجمع أعداد من نوع المعطیات STD_LOGIC_UNSIGNEDاألخرى

STD_LOGIC_VECTORود ولذلك ال بد من استخدام هاتین الحزمتین ضمن ك كأنها أعداد غیر مؤشرة .هذا التصمیم

PORTS للكیان والذي تم التصریح عن منافذه COUNTفي المقطع الثاني من الكود تم إعطاء االسم -٦فإن ) الثانیة ( كما رأینا في الجلسة السابقة . PORT وهي الكلمة VHDLباستخدام الكلمة المحجوزة في لغة

ومدخل نبضات RST التصفیر القسري غیر المتواقت دارة العداد المطلوب تصمیمه لها ثالثة مداخل هي مدخلكل من هذه المداخل ) . ENABLEاختصارا لـ ( ENA ومدخل تمكین العد الذي سنسمیه هنا CLKالساعة

وباعتبار أنه یجب أن Yالمخرج الوحید للدارة هو المخرج . STD_LOGICالثالثة هو من نوع المعطیات ریح عنه كشعاع مؤلف من خانتین اثنتین وذلك باستخدام نوع المعطیات یكون بعرض خانتین فقد تم التص

STD_LOGIC_VECTOR حیث تم تحدید المجال باستخدام الكلمة المحجوزة DOWNTO للداللة على أن وهي الخانة األقل أهمیة تقع في جهة Y0أي أن الخانة ( الخانة األكثر أهمیة هي الخانة التي تقع إلى الیسار

BUFFERإن استخدام الكلمة المحجوزة ) . وهي الخانة األكثر أهمیة تقع في جهة الیسار Y1والخانة الیمین . المعتادة من أجل المخارج لسبب سوف نوضحه بعد قلیل OUTضروري هنا بدال عن الكلمة المحجوزة

في . ن ثم فاصلة منقوطة متبوعا باسم الكیان ومEND یتم إنهاء مقطع الكیان باستخدام الكلمة المحجوزة -٧فیما یخص . جب أن تنتهي بفاصلة منقوطة كما نالحظ في الكود أعاله یVHDLإن أیة تعلیمة في لغة ، الحقیقة

فقط ; END إلنهاء مقطع الكیان أو حتى ; END ENTITY فإنه باإلمكان كتابة MAX PLUS IIالبرمجیة .وذلك بهدف االختصار

Page 4: VHDL MAX PLUS 03

ولذلك فإن بعض SIGNALS تمثل إشارات VHDLخارج في أي تصمیم بلغة إن كافة المداخل والم -٨ وبالتالي SIGNALالمراجع وعند البدء بالتصریح عن مدخل أو مخرج ما للدارة تبدأ بكتابة الكلمة المحجوزة

: من الكود السابق یصبحان كما یلي 8 و 7فإن السطرین 7 PORT ( SIGNAL RST, CLK, ENA : IN STD_LOGIC; 8 SIGNAL Y : BUFFER STD_LOGIC_VECTOR( 1 DOWNTO 0 ));

ورة لهذا األمر كون المترجم یعتبر دوما أن كافة منافذ الدارة هي عبارة عن إشارات حتى لو لم بالطبع ال ضر .نذكر ذلك بشكل صریح

تحدید بنیة الدارة أو والذي یتم من خالله ARCHITECTUREالمقطع الثالث واألخیر هو مقطع البنیة -٩توصیف ال وذلك ألننا قمنا بBEHAVIORALاالسم المعطى للبنیة في مثالنا هذا بشكل اختیاري هو . وظائفها

.STRUCTURALسلوكي للدارة عوضا عن التوصیف البنیوي العن أنواع كالتصریح ( تكتب بعد االنتهاء من كتابة التصریحات الالزمة BEGIN إن الكلمة المحجوزة - ١٠

أو CONSTANTS أو عن القیم الثابتة User-Defined Data Typesالمعطیات المعرفة من قبل المستخدم وبالتالي یمكننا االستنتاج أنه ال یجوز القیام بأي ) الخ ... SIGNALSعن اإلشارات الداخلیة ضمن الدارة

ن الدارة المصممة في هذا المثال بسیطة للغایة في الحقیقة ، وباعتبار أ . BEGINتصریح بعد الكلمة المحجوزة .12 في السطر رقم BEGINفإنه ال یلزم القیام بأیة تصریحات هنا لذلك قمنا مباشرة بكتابة الكلمة

وقبل القیام بشرح تعلیمات هذه PROCESSتمثل مقطعا من الكود یسمى معالجة ( 22 - 13 )األسطر - ١١ تختلف عن باقي لغات البرمجة VHDLإن لغة . التي ال بد من فهمها أوال المعالجة سنوضح بعض النقاط

هي لغة توصیف عتادي أي أن الغایة منها هي تصمیم أو VHDLلغة . الخ ... Java أو ++Cالتقلیدیة كلغة م توصیف الدارات الرقمیة وذلك من خالل كتابة الكود المناسب من أجل توصیف دارة ما ومن ثم یقوم المترج

الشریحة الهدف التي تم تحدیدها بشكل مسبق قبل ) ضبط ( قادر على برمجة Binary Fileبتولید ملف ثنائي لذلك فإن التعلیمات التي . لتتحول هذه الشریحة بعد عملیة البرمجة إلى الدارة المراد تصمیمها عملیة الترجمة

ت والقالبات والنواخب والمسجالت هي تعلیمات تصف بنى عتادیة متنوعة كالبوابا VHDLتشكل كود أي Concurrentمن هنا یمكن أن نستنتج أن هذه التعلیمات هي عموما تزامنیة . الخ ... والجوامع والضوارب

االستثناء الوحید لهذا األمر یتمثل في بضعة تعلیمات خاصة ندعوها . أن ترتیب كتابتها في الكود غیر مهمهناك ثالثة أنواع من . استخدامها اللجوء إلى وضعها داخل مقطع تتابعي من الكود تعلیمات تتابعیة والتي یتطلب واإلجرائیة FUNCTION والتابع PROCESSالمعالجة : هي VHDLالمقاطع التتابعیة في لغة

PROCEDURE. في مثالنا هذا تم استخدام النوع األول وهو المعالجة PROCESS من أجل بناء مقطع . الضروري حتما ألن الدارة التي نصممها هي دارة تتابعیة الكود التتابعي

الئحة تسمى بالئحة الحساسیة 13تمتلك المعالجة التي تبدأ في الكود المعروض أعاله في السطر رقم - ١٢Sensitivity List ستنفذ فقط عندما تتغیر قیمة إحدى اإلشارات وقد سمیت بهذا االسم ألن تعلیمات المعالجة

لذلك ) CLKأو في قیمة اإلشارة / وRSTأي تغیر في قیمة اإلشارة ( الئحة الحساسیة على األقل موجودة في الالتالي یتم تنفیذ التعلیمات مة إحدى إشارات الئحة الحساسیة وبیمكن القول أن المعالجة تتحسس ألي تغیر في قی

) .Suspendedأو معلقة ( التي تقع داخلها وإال فإنها تكون خاملة وبالتالي لدى الحاجة تدل على انتهاء منطقة التصریحات 14 في السطر رقم BEGIN الكلمة المحجوزة - ١٣

ضمن المعالجة ال بد من التصریح عنها أوال ضمن قسم VARIABLESإلى استخدام بعض المتغیرات وبالتالي الستخدام أیة متغیرات هنا أیضا ال حاجة .BEGINالتصریحات الخاص بالمعالجة والذي یسبق الكلمة

.BEGINلم نقم بأیة تصریحات قبل الكلمة نذكر هنا أن مدخل ( RST تقوم باختبار قیمة مدخل التصفیر غیر المتواقت 15 في السطر رقم IFالتعلیمة - ١٤

نظر یقوم بتصفیر مخرج العداد بمجرد تفعیل قیمته بغض الAsynchronous Resetالتصفیر غیر المتواقت إلى ”00“ یتم إسناد القیمة ’1‘فإذا كان بقیمة ) CLKعن وجود أو عدم وجود جبهة فعالة لنبضة الساعة

ألسباب قواعدیة تتعلق 16نالحظ هنا ضرورة كتابة القیمة صفر كما هو موضح في السطر رقم ( Yالمخرج مقبول عندما یكون نوع المعطیات یعتبر خاطئا و غیر;Y <= 0 إذ أن كتابة اإلسناد بالشكل VHDLبلغة

) . كما هو الحال في مثالنا هذا STD_LOGIC_VECTOR هو Yلإلشارة یتم اختبار وجود جبهة صاعدة إلشارة ) مدخل التصفیر في حالة غیر فعالة ( ’RST = ‘0في حالة كون - ١٥

نة في السطر المبی’ELSIF CLK’EVENT AND CLK = ‘1 من خالل التعلیمة CLKنبضات الساعة

Page 5: VHDL MAX PLUS 03

على اإلشارة Eventأوال أن یطرأ حدث : إن هذا االختبار یقوم على ضرورة توفر شرطین اثنین هما . 17رقم CLKوثانیا أن تصبح قیمة اإلشارة CLK وبالتالي فإن هذا یوافق حالة ’1‘ بعد هذا الحدث فورا مساویة للقیمة

في حالة تحقق هذا الشرط یتم اختبار قیمة مدخل تمكین . CLKورود جبهة صاعدة على مدخل نبضات الساعة كما هو موضح في ( 1 ) ستزاد بقیمة Y فإن قیمة المخرج ’ENA = ‘1 فإذا كانت قیمة 18العد في السطر رقم

باستخدام الكلمة Yنستطیع هنا اآلن أن نفسر السبب الذي دفعنا للتصریح عن المخرج . 19السطر رقم تعني أنه سوف یتم قراءة قیمة إشارة ;Y <= Y + 1إن التعلیمة . 8 في السطر رقم BUFFERالمحجوزة

باختصار . مرة أخرى Y وسیعاد إسناد النتیجة إلى اإلشارة ( 1 ) أوال ومن ثم ستضاف إلیها القیمة Yالخرج رح عن هذا المخرج ینبغي علینا أن نص) كما هو الحال في هذا المثال ( عندما یلزمنا قراءة قیمة مخرج ما

.BUFFERباستخدام الكلمة المحجوزة فإنها تعتبر ELSIF أما التعلیمة ;END IF یجب أن تختم باستخدام التركیبة IF إن كل تعلیمة من النوع - ١٦

ضمن السطرین 18 و 15 الواردتین في الكود في السطرین IF وبالتالي فقد تم إغالق تعلیمتي IFامتدادا لتعلیمة . من الكود 21 و 20 22 كما هو مبین في السطر رقم ;END PROCESS یتم إنهاء مقطع تعلیمات المعالجة باستخدام التركیبة - ١٧

.من الكود أو في حالتنا ;END ARCHITECTURE أو ;END أخیرا فإن مقطع البنیة یجب أن یختم بالتركیبة - ١٨

;END BEHAVIORAL بالتركیبة 23هذه وكما هو مبین في السطر رقم لقد تم تصمیم الدارة . ( BEHAVIORAL ) : یتضح لنا اآلن السبب في تسمیة مقطع البنیة بهذا االسم- ١٩

من خالل تحدید كیفیة سلوكها المطلوب أي من خالل تحدید الكیفیة التي تستجیب فیها الدارة للتغیرات في قیم عدد القالبات الالزمة باإلضافة إلى ( معرفة بنیتها الداخلیة مداخلها لتحدیث قیمة مخارجها وذلك دون الحاجة ل

) .یة وطریقة ربطها مع بعضها البعض في القسم التركیبي من الدارة عدد ونوع البوابات المنطق VHDL في لغة ARCHITECTUREفي الحقیقة توجد ثالث طرق أساسیة مختلفة لكتابة مقطع البنیة - ٢٠

:وهي . كما رأینا في المثال السابق Behavioral Description: ي التوصیف السلوك1. . كما سنرى في المستقبل Structural Description: التوصیف البنیوي 2. وفیه یتم توصیف بنیة الدارة من خالل Data Flow Description: توصیف تدفق المعطیات 3. ) .لة الدارات التركیبیة الصرفة وهذا یالئم حا( مجموعة من المعادالت المنطقیة

بالطبع یمكن استخدام أكثر من طریقة في كود واحد وخاصة عندما تكون الدارة معقدة وتحتوي عدة دارات .جزئیة داخلها من كال النوعین التركیبي والتتابعي

المعروض VHDL لتصمیم دارة العداد باستخدام كود MAX PLUS IIاآلن ، سوف نقوم باستخدام البرمجیة

:لذلك سوف نعرض فیما یلي الخطوات الالزمة للقیام بهذه المهمة . أعاله لیكون مجلد المشروع ألنه من أجل مراحل العمل Count مثال باسم D نقوم بإنشاء مجلد جدید على السواقة -١

.الالحقة یلزم أن نخصص مجلدا لیحتوي كافة ملفات المشروع فنحصل على النافذة الرئیسیة لهذه البرمجیة والموضحة في الشكل MAX PLUS IIة نقوم بتشغیل البرمجی -٢

) .١(رقم والتي نختار منها استدعاء المحرر ) ٢( فتنسدل القائمة المبینة في الشكل MAX+plus IIننقر على القائمة -٣

) .٣( فنحصل على نافذة المحرر النصي الموضحة في الشكل Text Editorالنصي RST السابق عرضه للعداد الثنائي ذي الخانتین مع مدخل تصفیر غیر متواقت VHDLنقوم بتنضید كود -٤

ضمن نافذة المحرر النصي مع مراعاة المسافات البادئة لألسطر وذلك بهدف جعل ENAومدخل تمكین العد .الكود أكثر قابلیة للقراءة

) .٤(محرر النصي كما في الشكل رقم بعد االنتهاء من التنضید یجب أن تبدو نافذة ال-٥ count یجب أن نقوم اآلن بتخزین هذا الكود ضمن ملف خاص باسم یطابق اسم الكیان في الكود وهو -٦

والتي نختار منها ) ٥( فتنسدل القائمة المبینة في الشكل File لذلك نقوم بالنقر على القائمة ( vhd. )وبامتداد

Page 6: VHDL MAX PLUS 03

) Save Asالتي تحمل العنوان ( ضمن هذه النافذة ) . ٦(ذة المبینة في الشكل فتظهر الناف… Save Asاألمر :یجب أن نضبط ثالثة أمور هي على الترتیب

وتحدید المجلد الوجهة الذي أنشأناه في C عوضا عن السواقة Dتغییر السواقة واختیار السواقة -أوال .D:\Countأي اختیار المسار لیكون مجلد المشروع Count باسم )١(الخطوة رقم تخزینه ألن الملف الذي نرید Automatic Extension قرب الحقل ( vhd. ) اختیار االمتداد - ثانیا .VHDLیحتوي كود كما File Nameإعطاء اسم للملف مطابق السم الكیان وذلك ضمن الحقل الخاص باسم الملف - ثالثا . للقیام بعملیة تخزین الملف Okقر اآلن على الزر نن) .٧(هو واضح في الشكل

.MAX PLUS IIالنافذة الرئیسیة للبرمجیة ) : ١(الشكل

.MAX+plus IIمحتویات القائمة ) : ٢(الشكل

.MAX PLUS IIنافذة المحرر النصي في البرمجیة ) : ٣(الشكل

Page 7: VHDL MAX PLUS 03

لدارة العداد الثنائي بعد تنضیده بواسطة المحرر الرسوميVHDLكود ) : ٤(كل الش ) !!!الحظ أن الملف لم یخزن بعد (

.Fileمحتویات القائمة ) : ٥(الشكل

. مباشرة File عند استدعائها من القائمة Save Asالنافذة ) : ٦(الشكل

Page 8: VHDL MAX PLUS 03

.Save As ضمن النافذة count.vhdاسم وامتداد ومكان تخزین الملف ضبط ) : ٧(ل الشك MAX PLUSللبرمجیة حتى اآلن لم نقم بإسناد مشروع للملف الحالي والدلیل على ذلك أن شریط العنوان -٧II یحتوي الكلمة Untitled1 والتي تعني عدم تخصیص مشروع لملف VHDL الحالي حتى اآلن كما هو ) .٨(اضح في النافذة المبینة في الشكل و

یبین عدم تخصیص مشروع حتى اآلنMAX PLUS IIشریط العنوان للنافذة الرئیسیة للبرمجیة ) : ٨(الشكل ننقر على األمر Project ومن ثم انطالقا من الخیار Fileلتخصیص مشروع للملف الحالي ننقر على القائمة -٨

Set Project to Current File في الحقیقة یمكن إجراء هذا األمر مباشرة ) . ٩( كما هو واضح في الشكل ) .٩( كما هو واضح في الشكل ( Ctrl+Shift+J )بالضغط على التراكب المفتاحي

یظهر بوضوح المسار الكامل للمشروع MAX PLUS IIاآلن شریط العنوان للنافذة الرئیسیة للبرمجیة -٩ ) .١٠( كما هو واضح في الشكل D:\count\countوهو الحالي

وبالتالي یتوجب FPGA أو CPLDإن الغایة النهائیة من العمل الذي نقوم به حالیا هي برمجة شریحة - ١١ أیة شریحة ننوي برمجتها لیقوم MAX PLUS II الخاص بالبرمجیة The Compilerعلینا إعالم المترجم

حیث أن ( pof. ) ولكن بامتداد countسب لهذه الشریحة والذي سیحمل نفس االسم بتولید ملف البرمجة المناPOFلعبارة هي اختصارلProgrammer Object File. لذلك ننقر اآلن على القائمة Assign فتظهر القائمة

ة المبینة في ضمن هذه القائمة فتظهر لنا النافذ… Deviceننقر على األمر ) . ١١(المنسدلة المبینة في الشكل ( Device Familyباختیار كل من عائلة الشریحة كما هو واضح فإن هذه النافذة تسمح لنا ) .١٢(الشكل

( والرقم الخاص الممیز للشریحة ضمن العائلة المختارة ) MAX7000سنختار في حالتنا هذه مثال العائلة ) .EPM7096QC100-7سنختار في حالتنا هذه مثال الشریحة

Page 9: VHDL MAX PLUS 03

.Project والقائمة الفرعیة Fileتخصیص مشروع لملف تصمیمي ما من خالل القائمة الرئیسیة ) : ٩(الشكل

.( d:\count\count )بعد تخصیص المشروع فإن مساره الكامل یظهر في شریط العنوان ) : ١٠(الشكل

.Assignقائمة محتویات ال) : ١١(الشكل

Page 10: VHDL MAX PLUS 03

.نافذة اختیار الشریحة المراد برمجتها لتحویلها إلى دارة العداد ) : ١٢(الشكل ونختار MAX+plus IIاآلن ، یمكننا استدعاء المترجم إلطالق عملیة الترجمة لذلك ننقر على القائمة - ١٢

لبدء عملیة الترجمة ننقر على الزر ) .١٣(الشكل فتظهر لنا نافذة المترجم المبینة في Compilerمنها الخیار Start.

.MAX PLUS II في البرمجیة Compilerنافذة المترجم ) : ١٣(الشكل في نافذة المترجم تبدأ Start من خالل النقر على الزر Compilationبمجرد إطالق عملیة الترجمة - ١٣

المترجم بالتوقیت كما یظهر مؤشر أحمر اللون للداللة على النسبة ذة الساعة الرملیة المتوضعة في منتصف نافالمئویة للجزء المنجز من عملیة الترجمة وعند انتهاء المترجم من عمله دون اكتشاف أخطاء قواعدیة ضمن

) .١٤(الكود تظهر نافذة صغیرة إلعالمنا بنجاح عملیة الترجمة كما هو مبین في الشكل

.نافذة رسالة نجاح عملیة الترجمة ) : ١٤(الشكل فإن المترجم ال یكمل عملیة الترجمة ویظهر VHDL في حالة وجود أخطاء قواعدیة أو إمالئیة في كود - ١٤

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

سنحدث خطأین مقصودین في الكود السابق وذلك من خالل حذف الفاصلة المنقوطة . یحتوي أخطاء قواعدیة ترجمة عند محاولة . 6 في نهایة السطر رقم ISوحذف الكلمة المحجوزة 2الموجودة في نهایة السطر رقم

Page 11: VHDL MAX PLUS 03

خطأین اثنین والتي تفید بعدم نجاح عملیة الترجمة ووجود ) ١٥(الكود المغلوط تظهر الرسالة المبینة في الشكل والتي تحتوي على ) ١٦( إلغالق هذه النافذة فنرى النافذة المبینة في الشكل OKننقر على الزر . ضمن الكود

.الئحة باألخطاء المكتشفة مع تحدید مواقعها وطبیعتها

.رسالة فشل عملیة الترجمة مع تحدید عدد األخطاء المكتشفة ) : ١٥(الشكل

.الئحة األخطاء المكتشفة في الكود مع تحدید مواقعها وطبیعتها ) : ١٦(الشكل في . نبدأ عادة عملیة تصحیح األخطاء بتفحص رسالة الخطأ األولى ومعرفة مكان وجود الخطأ وسببه - ١٥

count.vhd من الكود المخزن ضمن الملف 3حالتنا هذه ، تفید الرسالة األولى بأن هناك خطأ في السطر رقم یجب أن تنتهي بفاصلة منقوطة LIBRARY حیث أن العبارة Syntax Errorوهذا الخطأ هو خطأ قواعدي

عا تصحیح هذا الخطأ وإعادة یمكن طب . 3 في بدایة السطر رقم USEولكن المترجم وجد عوضا عنها العبارة تخزین التعدیل ومن ثم إعادة عملیة الترجمة ولكن من المفضل أوال تفحص رسائل الخطأ األخرى لتصحیح

تفید بأن هناك خطأ في السطر رسالة الخطأ الثانیة هنا . األخطاء المسببة لهذه الرسائل دفعة واحدة إن أمكن ذلك وهذا الخطأ هو خطأ قواعدي أیضا حیث أن التصریح عن count.vhdف من الكود المخزن ضمن المل7رقم

ولكن المترجم وجد عوضا عنها الكلمة المحجوزة IS یجب أن یتضمن الكلمة المحجوزة ENTITYالكیان PORT لتصحیح خطأ ما بعد معرفة موقعه وسبب المشكلة ننقر بشكل . من الكود 7في بدایة السطر رقم

الخطأ الخاصة بهذا الخطأ مما یأخذنا إلى موقع الخطأ في الكود وبالتالي یمكننا تصحیح مزدوج على رسالةالخطأ و االنتقال إلى رسالة الخطأ الثانیة لمعالجة الخطأ الموافق لها وهكذا حتى االنتهاء من تصحیح كافة

بها ونعید ترجمة الكود للحصول التي قمنا ) التصحیحات ( أخیرا نخزن التعدیالت . األخطاء الموجودة في الكود .السابق ) ١٤(على رسالة انتهاء عملیة الترجمة بنجاح والمبینة في الشكل

المخصص للمشروع نجد أنه قد أصبح یحتوي الملف Countإذا تفحصنا اآلن محتویات المجلد - ١٦count.pof الذي یمثل ملف البرمجة الخاص بالشریحة EPM7096QC100-7 من العائلةMAX7000

( بحیث أنه عند إرسال هذا الملف عبر كبل البرمجة الخاص إلى البورد الذي یحتوي هذه الشریحة فإنها ستضبط .بحیث تتحول إلى دارة العداد الثنائي المطلوب تنجیزه ) ستبرمج

ة عمل للتأكد من صح Simulation عموما وقبل عملیة برمجة الشریحة یتوجب إجراء عملیة المحاكاة - ١٧الدارة وعدم وجود أیة مشاكل ناتجة عن عملیة التصمیم لذلك سوف نبین اآلن الخطوات الالزم إجراؤها للقیام

.بعملیة المحاكاة إلجراء عملیة المحاكاة لدارة عداد ثنائي كهذا باعتبار أننا قمنا في الجلسة الثانیة بتوضیح الخطوات الالزمة - ١٨

:)لجلسة الثانیة من أجل القیام بعملیة المحاكاة المطلوبة للتصمیم قید الدراسة فإنه باإلمكان مراجعة ملف ا