الدرس الخامس – الدارات التتابعية

سلسلة من الدروس في لغة توصيف العتاد الصلبVHDL

الدرس الخامس – الدارات التتابعية

الدارات التركيبية و الدارات التتابعية

الدارات التركيبية: قيمة الخرج الحالي تتعلق بقيمة الدخل الحالي فقط.

الدارات التتابعية: قيمة الخرج الحالي تتعلق بقيمة الدخل الحالي و قيمة الخرج السابق.

سلوك النظام

Process

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

تسمى مجموعة الإشارات التي تستجيب لها الدارة بسلوك معين بقائمة الحساسية sensitive list.

PROCESS(sensitive_list)

    BEGIN

         //Behavioral Description of the circuits

END PROCESS;

ترتبط بها مجموعة من الكتل البرمجية مثل الاختبار الشرطي و الحلقات و الاختيار المتعدد.

العبارات الشرطية

لها الشكل التالي:

IF(condition) THEN

             //Decision 1

         ELSE

             // Decision 2

         END IF;

و يمكن أن يكون الاختبار متداخل:

IF(condition 1) THEN

             //Decision 1

         ELSIF(condition 2)

             // Decision 2

         END IF;

القلابات من النوع D:

 LIBRARY ieee;

 USE ieee.std_logic_1164.all;

 ——————————————-

 ENTITY dff_1 IS

 PORT ( d, clk, rst: IN STD_LOGIC;

 q: OUT STD_LOGIC);

 END dff_1;

 ——————————————-

 ARCHITECTURE behavioral OF dff_1 IS

 BEGIN

    PROCESS(clk,rst)

    BEGIN

         IF(rst = ‘1’) THEN

             q <= ‘0’;

         ELSIF (clk’EVENT AND clk = ‘1’) THEN

q <= d;

         END IF;

END PROCESS;

END behavioral;

المتحولات   Variables

لا تمتلك المتحولات معناً فيزيائياً فهي فقط ذات معنى برمجي يعيننا على توصيف الدارة. لا تعرّف المتحولات إلا ضمن الـ Process  و تمتلك نوعاً معيناً.

مثال:

VARIABLE temp :STD_LOGIC_VECTOR(7 DOWNTO 0);

تسند القيم إلا المتحول باستخدام الرمز :=

temp:= “00000001”;

الفرق بين الـ Signal & Variable:

لا تتغير قيمة الــ Signal بسرعة و بالتالي لا يمكن استخدام قيمتها بشكل لحظي، على عكس المتحول الذي تتغير قيمه بشكل لحظي مما يساهم في تغيير قيمته بشكل متكرر.

يضاف إلى هذا الفرق الجوهري:

         تعرف الــ Signal ضمن الــ Architecture  و ضمن الـــ Process، بينما المتحول لا يعرف إلا ضمن الــ Process.

         تسند القيم إلا الــ Signal بالرمز <=  بينما المتحول بالرمز :=  .

         لا تملك المتحولات معناً فيزيائياً فهي ذات معنى برمجي فقط بينما الـــ Signal تمثل سلكاً.

العداد Counter

 نريد توصيف عداد يعد من الــ 0 إلى 9 بشكل متكرر و ذلك بشكل متزامن مع إشارة قدح.

 LIBRARY ieee;

 USE ieee.std_logic_1164.all;

 ——————————————-

 ENTITY counter IS

 PORT ( clk: IN STD_LOGIC;

 digit: OUT INTEGER RANGE 0 TO 9);

 END counter;

 ——————————————-

 ARCHITECTURE behavioral OF counter IS

 BEGIN

    PROCESS(clk)

    VARIABLE temp : INTEGER RANGE 0 TO 10;

    BEGIN

         IF (clk’EVENT AND clk = ‘1’) THEN

temp := temp + 1;

IF (temp = 10) THEN temp := 0;

END IF;

         END IF;

         digit <= temp;

END PROCESS;

END behavioral;

بفرض أننا قمنا بتوصيف الدارة باستخدام Signal بدلاً من متحول:

LIBRARY ieee;

 USE ieee.std_logic_1164.all;

 ——————————————-

 ENTITY counter IS

 PORT ( clk: IN STD_LOGIC;

 digit: OUT INTEGER RANGE 0 TO 9);

 END counter;

 ——————————————-

 ARCHITECTURE behavioral OF counter IS

 Signal temp : INTEGER RANGE 0 TO 10;

 BEGIN

            PROCESS(clk)

            BEGIN

                        IF (clk’EVENT AND clk = ‘1’) THEN

temp <= temp + 1;

IF (temp = 10) THEN temp <= 0;

END IF;

                        END IF;

                        digit <= temp;

END PROCESS;

END behavioral;

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

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

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

أضف تعليقاً

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

WordPress.com Logo

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

صورة تويتر

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

Facebook photo

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

Google+ photo

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

Connecting to %s