الدرس الحادي عشر – بناء معالج بسيط – 16 بت (4)

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

الدرس الحادي عشر – بناء معالج بسيط – 16 بت (4)

البنية الكلية للمعالج

سنقوم بتجميع الأجزاء الموصوفة سابقاً مع بعضها لبناء كامل المعالج.

LIBRARY ieee;

USE ieee.std_logic_1164.all;

USE ieee.std_logic_signed.all;

——————————————————————

ENTITY proc IS

PORT ( DIN                                               :IN       STD_LOGIC_VECTOR(15 DOWNTO 0);

            Reset,Clock,Run                             :IN       STD_LOGIC;

           IIN                                                  :IN        STD_LOGIC_VECTOR(15 DOWNTO 0);

            Done                                             :OUT    STD_LOGIC;

            BusWires                                      :OUT    STD_LOGIC_VECTOR(15 DOWNTO 0));

END proc;

ARCHITECTURE Structural OF proc IS

——–COMPONENTS—————

COMPONENT reg

PORT(R                              :IN     STD_LOGIC_VECTOR(15 DOWNTO 0);

          Rin,Clock                   :IN     STD_LOGIC;

          Q                              :OUT STD_LOGIC_VECTOR(15 DOWNTO 0));

END COMPONENT;

COMPONENT upcount

PORT(Clear,Clock                      :IN     STD_LOGIC;

                  Q                             :OUT  STD_LOGIC_VECTOR(1 DOWNTO 0));

END COMPONENT;

COMPONENT mux_10

 PORT ( DIN, R0, R1, R2 ,R3 ,R4 ,R5 ,R6 ,R7 ,G: IN   STD_LOGIC_VECTOR(15 DOWNTO 0);

                                                                sel: IN    STD_LOGIC_VECTOR (9 DOWNTO 0);

                                                                  Q: OUT STD_LOGIC_VECTOR(15 DOWNTO 0));

END COMPONENT;

COMPONENT alu_16

 PORT ( IN1,IN2: IN STD_LOGIC_VECTOR(15 DOWNTO 0);

 op: IN STD_LOGIC_VECTOR (1 DOWNTO 0);

 Q: OUT STD_LOGIC_VECTOR(15 DOWNTO 0));

END COMPONENT;

COMPONENT cu

PORT ( IR: IN STD_LOGIC_VECTOR(8 DOWNTO 0);

 Tstep                             :IN    STD_LOGIC_VECTOR(1 DOWNTO 0);

 Run,Reset                      :IN    STD_LOGIC;

 Rout                              :OUT STD_LOGIC_VECTOR(7 DOWNTO 0);

 Gout,DINout                  :OUT STD_LOGIC;

 Rin                                :OUT STD_LOGIC_VECTOR(7 DOWNTO 0);

 IRin,Ain,Gin,Clear,Done :OUT  STD_LOGIC;

 Op                                 :OUT  STD_LOGIC_VECTOR(1 DOWNTO 0));

END COMPONENT;

———SIGNALS—————-

SIGNAL Rin,Rout :STD_LOGIC_VECTOR(7 DOWNTO 0);

SIGNAL IR,Wires,R0,R1,R2,R3,R4,R5,R6,R7,G,A,ALU :STD_LOGIC_VECTOR(15 DOWNTO 0);

SIGNAL IRin,Gout,DINout,Ain,Gin,Clear : STD_LOGIC;

SIGNAL Tstep,Op :STD_LOGIC_VECTOR(1 DOWNTO 0);

SIGNAL sel : STD_LOGIC_VECTOR(9 DOWNTO 0);

————ARCHETUCTER———

BEGIN

sel <= Rout & Gout & DINout;

Rigester0:reg

PORT MAP(Wires,Rin(0),Clock,R0);

Rigester1:reg

PORT MAP(Wires,Rin(1),Clock,R1);

Rigester2:reg

PORT MAP(Wires,Rin(2),Clock,R2);

Rigester3:reg

PORT MAP(Wires,Rin(3),Clock,R3);

Rigester4:reg

PORT MAP(Wires,Rin(4),Clock,R4);

Rigester5:reg

PORT MAP(Wires,Rin(5),Clock,R5);

Rigester6:reg

PORT MAP(Wires,Rin(6),Clock,R6);

Rigester7:reg

PORT MAP(Wires,Rin(7),Clock,R7);

Rigester_A:reg

PORT MAP(Wires,Ain,Clock,A);

Rigester_IR:reg

PORT MAP(IIN,IRin,Clock,IR);

Rigester_G:reg

PORT MAP(ALU,Gin,Clock,G);

Counter:upcount

PORT MAP(Clear,Clock,Tstep);

MultiPlexers:mux_10

PORT MAP(DIN, R0, R1, R2 ,R3 ,R4 ,R5 ,R6 ,R7 ,G ,sel ,Wires);

ALUnit:alu_16

PORT MAP(A,Wires,Op,ALU);

ControlUnit:cu

PORT MAP(IR(8 DOWNTO 0),Tstep,Run,Reset,Rout,Gout,DINout,Rin,IRin,Ain,Gin,Clear,Done,Op);

BusWires <= Wires;

END Structural;

المحاكاة

لمحاكاة عمل المعالج كاملاً(اختبار التكامل) سنحاكي تنفيذ البرنامج التالي:

إيجاد الفرق بين قيمتين توضعان في مسجلين و وضع الناتج في مسجل ثالث.

mvi R0,00FFh

mvi R1,00FEh

sub R1,R0

mv R2,R1

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

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

أضف تعليقاً

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

WordPress.com Logo

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

صورة تويتر

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

Facebook photo

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

Google+ photo

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

Connecting to %s