أرشيف

Posts Tagged ‘Technology’

Code And Play – Version 0.1 Beta


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

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

هذا الإصدار ليس لعبة بل هو برنامج يتيح للاعبين أن يقوموا بكتابة أكوادهم و إرسالها إلى خادم يقوم بعمل مباريات بين تلك الأكواد و تسجيل النتائج و هكذا .. إنظر إلى هذه الصورة :

هذه أول لعبة من هذا النوع . قراءة المزيد…

مدخل إلى محاكاة تصميمات الهاردوير


بدأنا في الدرس السابق بعمل مثال بسيط بلغة الـ VHDL و هو وحدة المعالجة و المنطق Arithmetic Logic Unit – ALU و قد قمنا بإستعراض بعض الأشياء التي تظهر في التقرير الذي يخرجه لنا برنامج الـ Xilinx ISE Webpack عن التصميم الذي قمنا به من مساحة و التأخير الذي يستغرقه و الطاقة المستهلكة و غير ذلك .. و قد أجلنا الكلام عن محاكاة التصميم إلى هذا الدرس

تخيل أنك بيدك الآن دائرة تكاملية Integrated Circuit تقوم بإختبارها .. ستقوم أولاً بتوصيلها مثلاً على لوحة إختبار Bread Board .. ربما تقوم بتوصيل بعض الدوائر التكاملية الأخرى أو لا تقوم بذلك حسب الإختبار الذي تريده .. ربما نجد معك أيضاً أثناء الإختبار جهاز راسم الإشارات Oscilloscope  لتشاهد الإشارات الداخلة و الخارجة .. و ربما يكون بجانبك ورقة تكتب فيها ملاحظاتك و قياساتك .. و سوف نسمي هذا كله مقعد الإختبار Test Bench .. تذكر أننا في الدرس الأول و الثاني شددنا على مفهوم أن اللغات الوصفية و التي منها لغة الـ VHDL لا تخاطب الهاردوير و إنما تخاطب الذي سيقوم بتصميم الهاردوير .. و بما أننا في هذه المرة لن نقوم بتصميم الهاردوير و إنما سنقوم بإختبار الهاردوير .. فسوف نحتاج أيضاً إلى لغة وصفية تصف للرجل الجالس على مقعد الإختبار Test Bench ماذا سيفعل بالضبط لكي يقوم بإختباره .. فسوف نصف له كيف سنقوم بتركيب الدوائر التكاملية التي صممناها (مثل وحدة المعالجة و المنطق في الدرس السابق) و نصف له أين يقوم بتوصيلها و هل سيقوم بتوصيل بعض الدوائر الأخرى أم لا و هكذا .. ثم نصف له بعد ذلك خطوات التجربة .. هل سيقوم مثلاً بإدخال بعض المدخلات لوحدة المعالجة و المنطق ثم يقوم بإختبار هل النتيجة ستخرج كما ينبغي أم لا و ما هي الأشياء التي سوف يجربها و كيف سيتصرف عند رؤية أي مخرج من المخرجات و هكذا .. في قائمة Hierarchy التي في أيمن الشاشة قم بتحديد الملف الذي وضعت فيه كود وحدة المعالجة و المنطق ALU و إضغط عليه بالزر الأيمن و إختر New Source ثم قم بتحديد VHDL TestBench : و قم بتسمية الملف الجديد بأي شئ ثم إضغط Next حيث ستقوم بإختيار الوحدة التي تريد أن تقوم بعمل محاكاة و إختبار لها .. قراءة المزيد…

التصنيفات :شروحات الوسوم:, , , ,

المثال العملي 1 : وحدة المعالجة و المنطق


منذ فترة قمنا بوضع بعض الدروس حول تصميم الهاردوير بإستخدام لغة الـVHDL .. و الآن لنعد لإستكمالها ..

تحدثنا في الدروس السابقة عن تعريف لغة الـVHDL و لماذا نحتاج إليها و كيف ستفيدنا في تصميم الهاردوير .. و هذه المرة سنقوم بكتابة مثال عملي بتلك اللغة .. سيكون الكلام هذه المرة عن وحدة المعالجة و المنطق المعروفة بالـALU و التي هي إختصار لـArithmetic Logic Unit .. و هي وحدة من أهم الوحدات في المعالج Processor .. و هي التي تقوم بعمليات الجمع و الطرح و الضرب و سائر العمليات الرياضية و العمليات المنطقية .. هذه الوحدة لها مدخلان يكونان هما المدخلان الذان نريد أن نقوم بعمل العملية الرياضية أو المنطقية عليهما .. و هناك مخرج من المخرجات به ناتج العملية .. فمثلاً قد يكون الناتج هو حاصل ضرب المدخلين أو مجموعهما أو الفرق بينهما و غير ذلك من العمليات .. و هناك مدخل ثالث يحدد لنا ما هي العملية التي نريد .. فعلى سبيل المثال إذا كان هذا المدخل بقيمة 000 فهذا معناه أنه سيقوم بعملية جمع .. و إذا كان 001 فهذا معناه أنه سيقوم بعملية طرح و غير ذلك بحسب الذي نريد .. و الآن إنظر إلى فقرة الـVHDL التالية :

entity ALU is Port (

A : in  STD_LOGIC_VECTOR (31 downto 0);

B : in  STD_LOGIC_VECTOR (31 downto 0);

ALU_OUT : out  STD_LOGIC_VECTOR (31 downto 0);

Control : in  STD_LOGIC_VECTOR (2 downto 0));

end ALU;

هنا قمنا بتعريف الوحدة بمداخلها و مخارجها .. هناك مدخلان بطول 32bits و هما A و B و هما المدخلان الذان سنقوم بعمل العملية الرياضية أو المنطقية عليهما .. و المخرج ALU_OUT بنفس الطول أيضاً .. و هناك المدخل Control الذي سيقوم بتحديد العملية التي سنقوم بها .. و طول هذا المدخل يتم تحديده بناءاً على عدد العمليات التي ستقوم وحدة المعالجة و المنطق بها .. فعلى سبيل المثال إذا كانت ستقوم بـعملياتان فقط فيكفي أن يكون الـControl بطول بت واحد .. و إذا كانت ستقوم بأكثر من عمليتين إلى أربع عمليات فسيكون طول الـControl بـ2bits إذ أن الإحتمالات هي 00 و 01 و 10 و 11 فقط .. و هكذا .. و في هذه الحالة سنقول مثلاً أننا نريد أن نقوم بعمل ثمانية عمليات فقط و لهذا جعلنا طول الـControl بـ3bits .. بالطبع فإن وحدة المعالجة و المنطق ليست هذا فقط .. بل يوجد بها في الواقع أكثر من ذلك و لكننا سنكتفي بهذا للتبسيط ..

و بعد أن قمنا بتعريف الوحدة .. سنقوم الآن بتوصيف سلوكها الداخلي .. إنظر إلى الفقرة القادمة : قراءة المزيد…

التعريف بـXilinx و لغة الـVHDL الوصفية للهاردوير


تحدثنا في السابق عن مفهوم اللغات الوصفية للهاردوير Hardware Description Languages (راجع مقدمة إلى اللغات الوصفية للهاردوير)  .. و الآن ندخل إلى أول درس عملي سنقوم بتنفيذه عن طريق اللغات الوصفية للهاردوير .. و سنختار من بين اللغات الوصفية لغة الـVHDL .. و التي هي إختصار لكلمة VHSIC Hardware Description Language .. و أما VHSIC فتعني Very High Speed Integrated Circuit .. و يوجد غيرها الكثير من اللغات الوصفية كالـVerilog و غيرها ..

تذكر .. هدفنا الذي نريد أن نصل إليه هو أن نقوم بتصميم الدوائر الرقمية و الهاردوير بطريقة سهلة بدلاً من القيام بعمل جداول طويلة جداً قد تصل إلى المئات و الألاف من المعطيات .. و ذلك عن طريق اللغات الوصفية التي ستتحول بعد ذلك إلى دوائر رقمية .. و الذي سيقوم بتحويلها برنامج يشبه إلى حدٍ ما المترجم Compiler الذي سيتخدم في اللغات البرمجية ..

البرنامج الذي سوف نقوم بإستخدامه يسمى ISE WebPACK وهو من إنتاج شركة Xilinx و هي شركة ذات شهرة في هذا المجال ..

إدخل إلى هذا الرابط :

http://www.xilinx.com/support/download/index.htm

و قم بتحميل الإصدار الأخير .. و إنتبه إلى أن النسخة التي ستقوم بتنزيلها ستفوق الـ3 جيجا بايت .. و بعد أن تقوم بتثبيتها ستأخذ ما يزيد على الـ10 جيجا بايت ..

قراءة المزيد…