Quartus & ModelSim over GNU/Linux

من أوائل الإسئلة التي تخطر ببالنا حينما نريد الانتقال إلى نظام جنو/لينكس هو كفاية البرمجيات و التطبيقات و مقدار تشابهها مع ما اعتدنا عليه في استخدامنا الطويل لويندوز.

تقدم شركات البرمجيات الضخمة نسخ متلاءمة مع أنظمة التشغيل المختلفة مما يسهل عملية الانتقال إلي جنو/لينكس. في هذا الموضوع شرح لاستخدام البرمجية Quartus النسخة 11.1 و التي لا تحتوي على أداة للمحاكاة و التي تعتمد على إنشاء ملف اختبار Test Bench  و تمريره للبرمجية ModelSim مع شرح لتنصيب كل من البرمجيتين.

يمكنكم تحميل نسخة Quartus 11.1 web edition  و كذلك نسخةModelSim-Alter Starter  المجانية من موقع شركة Altera على الرابط التالي:

https://www.altera.com/download/software/quartus-ii-we

سنحصل على ملفين منفصلين بامتداد sh نقوم أولاً بعرض خصائص الملفين و الانتقال إلى تبويب السماحيات Permissions و نسمح بتنفيذ الملف Allow executing file as  program، نبدأ بتنصيب Quartus من خلال فتح الطرفية Terminal  و سحب الملف و أفلاته في الطرفية و ضغط Enter ستظهر لنا بعد لحظات شاشة تنصيب البرنامج و هي مطابقة تماماً لشاشة التنصيب في ويندوز لينتهي بعدها التنصيب. سيكون مسار البرنامج بشكل افتراضي

/home/USERNAME/altera

و بذات الطريقة نقوم بتنصيب ModelSim.

1- نفتح برنامج الـ Quartus  من الطرفية Terminal كما يلي:

cd altera/11.1/quartus/bin

./quartus &

نحصل على الشاشة الرئيسية للبرنامج

2- نقوم بإنشاء مشروع جديد:

File -> New Project Wizard…

– نحدد مسار المشروع و اسمه و اسم التصميم الرئيسي.

– إضافة ملفات للمشروع إن وجد (سأتجاهل هذه الخطوة لأننا سنقوم بكتابة الكود)

– تحديد شريحة الـ FPGA  التي نريد التعامل معها، بالنسبة لنا فنحن نستخدم اللوح التعليمي DE2  و الذي يحتوي على شريحة من عائلة Cyclone II  و هي EP2C35F672C6 (الاسم مكتوب على الشريحة).

– إمكانية اختيار برمجيات مساعدة، سنتجاهلها حالياً.

– نحصل على تلخيص للمشروع.3- نقوم الآن بإضافة ملف vhdl

File -> New …

4- نقوم بكتابة توصيف الدارة، كمثال سنقوم بتوصيف عداد بخانتين ثنائيتين مع مدخلي تمكين و تصفير غير متزامن.

 ————————————————————————————————
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
————————————————————————————————
ENTITY COUNT IS
PORT ( RST, CLK, ENA : IN STD_LOGIC;
Y : BUFFER STD_LOGIC_VECTOR( 1 DOWNTO 0 ));
END COUNT;
————————————————————————————————
ARCHITECTURE BEHAVIORAL OF COUNT IS
BEGIN
PROCESS ( RST, CLK )
BEGIN
IF RST = ‘1’ THEN
Y <= “00”;
ELSIF CLK’EVENT AND CLK = ‘1’ THEN                                                                                   IF ENA = ‘1’ THEN
Y <= Y + 1;
END IF;
END IF;
END PROCESS;                                                                                                                         END BEHAVIORAL;

5- ترجمة المشروع

Processing -> Start Compilation

6- بهدف تحميل التصميم على اللوح التجريبي يجب إسناد أقطاب الدارة إلى أقطاب المحيطيات كأن نسند مدخل التمكين ENA إلى قاطع و المخارج إلى مشع ضوئي أخضر LED G. لمعرفة أرقام الأقطاب يجب مراجعة الملف المرفق مع اللوح التجريبي DE2 و هو الملف DE2 User Manual يمكن الحصول عليها عبر Google.

Assignments -> Pin Planner

7- نكرر خطوة الترجمة و سنلاحظ انخفاض عدد التحذيرات الحرجة.

8- تعديل في إعدادت المشروع لكي نتمكن من إضافة ملف اختبارTest Bench

COUNT -> Right_click -> Settings … -> Simulation

Tool name: ModelSim-Altera

نضيف المجلد simulation ضمن مسارالمشروع ثم نضيف المجلد modelsim ضمن المجلد simulation.

More EDA Netlist Writer Settings …-> Location of user compiled simulation library = simulation/modelsim

COUNT -> Right_click -> Settings … -> Simulation

More Native Link Settings …-> Location of user compiled simulation library = simulation/modelsim

9- نضيف ملف الاختبارTest Bench، يؤمن Quartus آلية لتوليد ملف اختبار تحتوي على الصياغة العامة.

Processing -> Start -> Start Test Bench Template Writer

10- نفتح ملف الاختبار لإضافة الاختبار.

File -> Open -> …….simulation/modelsim

11- نكتب الاختبار في المكان المحدد.

— code executes for every event on sensitivity list
RST<=’1′; CLK<=’0′; ENA<=’1′;
WAIT FOR 50 ns;
RST<=’1′; CLK<=’1′; ENA<=’1′;
WAIT FOR 50 ns;
RST<=’0′; CLK<=’0′; ENA<=’1′;
WAIT FOR 50 ns;
RST<=’0′; CLK<=’1′; ENA<=’1′;
WAIT FOR 50 ns;
RST<=’0′; CLK<=’0′; ENA<=’1′;
WAIT FOR 50 ns;
RST<=’0′; CLK<=’1′; ENA<=’1′;
WAIT FOR 50 ns;
RST<=’0′; CLK<=’0′; ENA<=’0′;
WAIT FOR 50 ns;
RST<=’0′; CLK<=’1′; ENA<=’0′;
WAIT FOR 50 ns;
RST<=’0′; CLK<=’0′; ENA<=’0′;
WAIT FOR 50 ns;
RST<=’0′; CLK<=’1′; ENA<=’1′;
WAIT FOR 50 ns;
RST<=’0′; CLK<=’0′; ENA<=’1′;
WAIT FOR 50 ns;
RST<=’0′; CLK<=’1′; ENA<=’1′;
WAIT FOR 50 ns;
RST<=’0′; CLK<=’0′; ENA<=’1′;
WAIT FOR 50 ns;
RST<=’0′; CLK<=’1′; ENA<=’1′;
WAIT FOR 30 ns;
RST<=’1′; CLK<=’1′; ENA<=’1′;
WAIT FOR 20 ns;
RST<=’0′; CLK<=’0′; ENA<=’1′;
WAIT FOR 50 ns;
RST<=’0′; CLK<=’1′; ENA<=’1′;
WAIT FOR 50 ns;

12- نعيد عملية الترجمة.

13- ربط ملف الاختبار مع المشروع.

COUNT -> Right_click -> Settings … -> Simulation

نختار Compile test bench ثم نضغط على Test Benches …

New… -> Test bench name: COUNT_vhd_tst

File name: … -> COUNT.vht -> Add

14- ربط ModelSim مع Quartus من خلال تحديد المجلد الذي يحتوي علة الملف التنفيذي لـ ModelSim و هو المجلد bin الموجود في مسار تنصيب الـ ModelSim . هذه الخطوة تنفذ لمرة واحدة فقط ولا حاجة لتنفيذها في كل مشروع قادم.

Tools -> Options… -> EDA Tool Opetions -> ModelSim-Altera = /home/zain/altera/11.1/modelsim_ase/bin

15- خطوة الترجمة الأخيرة.

16- نقوم بتشغيل المحاكاة.

Tools -> Run Simulation Tool -> RTL Simulation

– لتصغير مجال الرؤية بهدف رؤية المسار كامل يمكن استخدام أداة التقريب.

بعد التأكد من صحة عمل الدارة يمكن تحميلها على شريحة الـ FPGA كما يلي:

أثناء عملية الترجمة يتم توليد نوعين من الملفات المعدة للتحميل على الشريحة و هما COUNT.sof  & COUNT.pof يتلاءمان مع نوعي البرمجة المتوفرين و هما:

1- JTAG: و يقوم بتحميل التصميم إلى الشريحة مباشرة مما يعني أنه عند فصل التغذية الكهربائية عن الشريحة سيضيع التصميم و سنكون بحاجة لتحميل التصميم مرة أخرى.

2- Active Serial : يقوم بتحميل التصميم أولاً إلى ذاكرة Flash Memory و منها إلى شريحة الـ FPGA   و بالتالي عند فصل التغذية لن نفقد التصميم بل سيتم تحميله تلقائياً من الذاكرة إلى الشريحة في كل مرة نقوم بتوصيل التغذية الكهربائية إلى الشريحة.

قبل البدأ بالبرمجة يجب وصل لوح DE2 إلى التغذية و إلى الكومبيوتر عبر منفذ الـ USB ليتم التعرف على الجهاز الجديد، على عكس ويندوز لن تتطلب عمليى التعرف على الجهاز الجديد (DE2 Board) أي مجهود فقط وصل الكبل و الانتظار لدقيقة.

البرمجة وفق JTAG:

1- نفتح نافذة البرمجة

Tools -> Programmer

2- نضغط على Hardware Setup… لنضيف أن المنفذ المستخدم للوصل مع لوح DE2 هو USB-Blaster

3- نتأكد من وجود إشارة عند Program/Configure و نتأكد أن المفتاح في DE2 Board  في وضعية Run.

4- نضغط على Start  لبدء تحميل التوصيف، نلاحظ أن ضوء أزرق مكتوب عليه Load يعمل خلال فترة تحميل التوصيف. عند الانتهاء من التحميل يمكن التأكد من عمل التوصيف من خلال استخدام المفاتيح و الليدات المناسبة وفق ما تم اختياره في مرحلة الإسناد Assignments.

البرمجة وفق AS:

بما أن تحميل التوصيف يتم عبر ذاكرة Flash  فيجب أولاً تحديد نوع الذاكرة الموجودة في DE2 Board و هي EPCS16.

1- نحدد نوع الذاكرة المستخدمة

Assignments -> Device… -> Device and Pin Options… -> Configuration

Configuration scheme: Active Serial

Use configuration device: EPCS16

2-  نقوم بترجمة المشروع.

3- نفتح نافذة البرمجة.

4- نختار نمط البرمجة Active Serial.

5- إذا لم يظهر أي ملف نضغط على Add File…  و نختار COUNT.pof.

6- نتأكد من أن الـ Hardware Stup… = USB-Blaster، ثم نتأكد من وجود إشارة عند Program/Configure و نتأكد أن المفتاح في DE2 Board  في وضعية Prog.

7- نضغط على Start  لبدء تحميل التوصيف، نلاحظ أن ضوء أزرق مكتوب عليه Load يعمل خلال فترة تحميل التوصيف. عند الانتهاء من التحميل نعيد المفتاح إلى وضعية Run و يمكن البدأ باختبار الدارة مع ملاحظة أنه عند فصل التغذية و إعادتها يبقى التوصيف موجود.

 

ملاحظة: من أجمل ما يميز برمجية الـ Quartus هو التنقلية Portability فالمشروع الذي يتم إنشاؤه على ويندوز يعمل دون أي تعديل على جنو/لينكس و العكس صحيح.

About زين العابدين

مهندس حواسيب - معهد IDA - جامعة Braunshweig التقنية.
هذا المنشور نشر في لينكساويات, دروس تعليمية وكلماته الدلالية , , . حفظ الرابط الثابت.

أضف تعليقاً

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s