ﺮﺗﻮﻴﭙﻣﺎﻛ يرﺎﻤﻌﻣ هﺎﮕﺸﻳﺎﻣزآ ... -...

53
ﻛﺎﻣﭙﻴﻮﺗﺮ ﻣﻌﻤﺎري آزﻣﺎﻳﺸﮕﺎه ﻛﺎر دﺳﺘﻮر ﻓﻨﻲ داﻧﺸﻜﺪه ﻻﻫﻴﺠﺎن واﺣﺪ آزاد داﻧﺸﮕﺎه ﺷﺪه ﺗﻬﻴﻪ ﺗﻮﺳﻂ: ﻛﺮﻳﻢ ﻧﻴﻤﺎ و ﻫﻤﺖ ﺟﻮان ﻫﺎﻧﻲ ﭘﻮر

Upload: others

Post on 04-Feb-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

  • دستور كار آزمايشگاه معماري كامپيوتر

    دانشكده فني

     دانشگاه آزاد واحد الهيجان

    پور هاني جوان همت و نيما كريم: توسطتهيه شده  

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ١ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 1

     فهرست مطالب – 0 فهرست مطالب

    VHDL: ........................................................................................................................................................................................................................................................... 2 با آشنايي

    3 ................................................................................................................................................................................................................................................. كننده جمع تمام طراحي

    5 ........................................................................................................................................................................................................................................... بيتي 4 كننده جمع طراحي

    8 .................................................................................................................................................................................................................................... رياضي محاسبات واحد طراحي

    11 ................................................................................................................................................................................................................................................... منطقي واحد طراحي

    ALU)................................................................................................................................................................................................................... 13) منطق و محاسبه واحد طراحي

    16 ...................................................................................................................................................................................................................... )ثبات( رجيستر و فالپ فليپ طراحي

    21 ............................................................................................................................................................................................................. )كنتور( باالشمار بيتي 4 شمارنده طراحي

    24 ............................................................................................................................................................................................................................ اول بخش – كنترل واحد طراحي

    32 ............................................................................................................................................................................................................................ دوم بخش – كنترل واحد طراحي

    35 .............................................................................................................................................................................................. افزار سخت فيتوص يهازبان با ييآشنا: 1 وستيپ

    ModelSim ............................................................................................................................................................................................. 50 سازي شبيه ابزار با آشنايي: 2وستيپ

  •  آزمايشگاه معماري كامپيوتر اسالمي واحد الهيجان دانشگاه آزاد

     ٢ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 2

     VHDLآشنايي با : مقدمه - 1

    :VHDLآشنايي با

    .مراجعه شود 1به پيوست

  •  يوتر

    ٣ 

    نده

    000

    000000011

    11

    م

    1

    111

    1

    1

    222222

    شگاه معماري كامپي

    پور يما كريم

    تمام جمع كنني

    )شده است

    00 − entity01 − por02 − end fu

    )2تا 0(

    03 − archit04 − signal05 − begin 06 − t1 07 − s 08 − t2 09 − t3 0 − cou1 − end st

    يك محيط

    2 − entity3 − end te

    ايم طراحي كردهدر هاي ورودي

    4 − archit

    5 − comp6 − po7 − end

    8 − sign

    9 − begin

    20 − dut : 21 − a =22 − b =23 − cin24 − s =25 − cou

    آزمايش

    ني جوان همت و ني

    طراحي - 2

    د اصلي افزوده ش

    y fulladderrt (a, b, culladder;

    .ص شده است

    tecture strl t1, t2, t cout)

    t1 

     

    ها: تهيه شده توسط

    (T 

    ها به كد ره خط

    r is cin: IN BIT

    ه به شكل مشخص

    ructural oft3: BIT;

    b; cin; cin; b; R t3;

    )11تا 3( .ت

    كرد مدار الزم اس)13تا 12( .م

    ladder is der;

    ك جمع ونه از تمامسپس با مقداردت عملكرد مدار ر

    ster of tes

    ladder cin: IN B;

    cin, s, cou

    port map(

    );

    t2

    t3

    ت

    (Test Bench .د .صحيح كنيد

    ايي بيشتر شمار

    T; s, cout

    ها با توجه روجي

    f fulladde

    خص شده است

    سي صحت عملككنيم ت ايجاد مي

    ، يك نمو)17تاس. )25تا 21( م

    توانيم صحت مي

    st_fulladd

    BIT; s, cou

    ut: BIT :=

    VHDL بنويسيدها را تص مالي آن .ي كنيد

    براي خوانا. (ست

    : OUT BIT)

    ورودي و خر. ود

    r is

    ها مشخ ها و گيت

    براي بررس. ستنوان محيط تست

    ت 15(كنيم ميكنيم ش متصل مي، مساز حيط شبيه

    er is

    ut: OUT BIT

    = '0';

    VHD بنويسيد.Lاستفاده از كد

    د خطاهاي احتمMo سازي شبيه

    نه آورده شده اس

    );

    شو ه ساخته مي

    ه رتباط سيگنال

    دار كامل شده اent خالي بعن

    كننده را معرفياش ي و خروجي

    در مح خروجي

    T);

    DLكننده كد معمحيط تست با ا در صورت وجود

    odelSimده از

    حات بعنوان نمون

    كنند جمع تمام

    شكل بصورت ار

    صاالت داخلي مدtityظور يك

    ك جول تمام جمعهايي را به ورودي

    هاي نال ر سيگ

    واحد الهيجان

    وه كامپيوتر

    كننده ع

    جمع ك مدار تمامدار حاصل يك مي را كامپايل و

    صل را با استفاد

    V بهمراه توضيح

    entit براي

    مدار با توجه به

    ها و اتص خروجيبهمين منظ. نيم

    ابتدا ماج ط تسته و سيگنال )20

    و بررسي مقادير

    نشگاه آزاد اسالمي

    گر –دانشكده فني

    جمع راحي تمام :ستور كار

    براي يك .1براي مد .1كد نهايي .2مدار حا .3

    VHDLيك كد

    yدر اينجا يك

    ساختار داخلي م

    /تا اينجا وروديمناسب تست كن

    در داخل محيط0( دهيم قرار مي

    )29تا 26(كد

    دان

    د3

    طردس

    ي

    د

    س

    تم

    دقك

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ۴ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 4

    تمام جمع كنندهطراحي - 2

    26 − a

  •  يوتر

    ۵ 

     بيتي

    كامپي شگاه معماري

    پور يما كريم

    4جمع كننده ي

    entity ful port (a,end fullad

    architectu signal tbegin t1

  •  كامپيوتر آزمايشگاه معماري دانشگاه آزاد اسالمي واحد الهيجان

     ۶ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 6

     بيتي 4جمع كننده طراحي - 2

    architecture structural of adder4bit is component fulladder port (a, b, cin: IN BIT; s, cout: OUT BIT); end component; signal t1, t2, t3: BIT; begin FA0: fulladder port map (a=>a(0), b=>b(0), cin=>cin, s=>s(0), cout=>t1); FA1: fulladder port map (a=>a(1), b=>b(1), cin=>t1, s=>s(1), cout=>t2); FA2: fulladder port map (a=>a(2), b=>b(2), cin=>t2, s=>s(2), cout=>t3); FA3: fulladder port map (a=>a(3), b=>b(3), cin=>t3, s=>s(3), cout=>cout); end structural;

    كننده را در يك محيط تست بيتي به پايان رسيده است و براي بررسي نتيجه حاصل الزم است تا اين جمع 4كننده اكنون طراحي جمع .كنيم خروجي ايجاد مي/بدون ورودي entityبراي اينكار يك . نماييم

    entity test_adder4bit is end test_adder4bit;

    هاي متناظر را بررسي كننده ايجاد كنيم و خروجي هاي ورودي تست را براي جمع ل در داخل اين محيط تست پس از تعريف سيگنا .نماييم

    architecture tester of test_adder4bit is

    component adder4bit port ( a, b: IN BIT_VECTOR(3 downto 0); cin: IN BIT; s: OUT BIT_VECTOR(3 downto 0); cout: OUT BIT); end component;

    هاي كنيم تا سيگنال در ادامه يك نمونه از آن را ايجاد مي( .كرديمتعريف componentبيتي را بعنوان يك 4كننده در كد باال جمع )ساز بررسي كنيم تست را به آن اعمال كنيم و نتايج و صحت عملكرد آن را در محيط شبيه

    signal A_input, B_input, S_output : BIT_VECTOR(3 downto 0); signal C_input, C_output : BIT;

    begin

    :بيتي 4كننده نمونه از جمعايجاد يك

    DUT : adder4bit port map ( a => A_input, b => B_input, cin => C_input, s => S_output, cout => C_output );

    :هاي تست ورودي اعمال سيگنال

    A_input

  •  كامپيوتر آزمايشگاه معماري دانشگاه آزاد اسالمي واحد الهيجان

     ٧ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 7

     بيتي 4جمع كننده طراحي - 2

    : ModelSimسازي در محيط مشاهده نتايج شبيه

    :تمرين

    .هاي تست بيشتري به مدار وارد كنيد و نتايج خروجي را ارزيابي نماييد سيگنال .1 .بيني رقم نقلي بسازيد بيتي با پيش 4كننده جمعيك مدار .2

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ٨ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 8

     طراحي واحد محاسبات رياضي - 4

    طراحي واحد محاسبات رياضياستفاده بصورت زير كننده قسمت قبل سازي آن از جمع براي پياده. دهد واحد محاسبات رياضي در اينجا دو عمل جمع و تفريق را انجام مي

    .كنيم مي

    :دستور كار

     ).از كد قسمت قبل استفاده كنيد( بنويسيد VHDLبيتي كد 4كننده تفريق/جمع براي يك مدار .1  (Test Bench) .بنويسيد VHDLبراي مدار حاصل يك محيط تست با استفاده از كد .2 .ها را تصحيح كنيد كد نهايي را كامپايل و در صورت وجود خطاهاي احتمالي آن .3 .سازي كنيد شبيه ModelSimمدار حاصل را با استفاده از .4

    بحث استفاده مجدد از كدهاي ( .سازيم بيتي مي 4كننده تفريق/كننده قسمت قبل يك جمع به جمع XORهاي با افزودن گيتدر اين بخش )نوشته شده

    :دهيم را مجدداً در شروع كد جديد قرار مي) جمع كننده تمام(در ابتدا كد قسمت قبل

    :بيتي يككننده جمع اضافه كردن تمام

    entity fulladder is port (a, b, cin: IN BIT; s, cout: OUT BIT); end fulladder;

    architecture structural of fulladder is ... end structural;

    :بيتي 4كننده اضافه كردن جمع

    entity adder4bit is port (a, b: IN BIT_VECTOR(3 downto 0); cin: IN BIT; s: OUT BIT_VECTOR(3 downto 0); cout: OUT BIT); end adder4bit;

    architecture structural of adder4bit is ... end structural;

    :بيتي 4كننده تفريق/ساختن جمع

    entity adder_substractor4bit is port (a, b: IN BIT_VECTOR(3 downto 0); mode: IN BIT;

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ٩ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 9

     طراحي واحد محاسبات رياضي - 4

    s: OUT BIT_VECTOR(3 downto 0); cout: OUT BIT); end adder_substractor4bit;

    architecture structural of adder_substractor4bit is component adder4bit port (a, b: IN BIT_VECTOR(3 downto 0); cin: IN BIT; s: OUT BIT_VECTOR(3 downto 0); cout: OUT BIT); end component; signal temp : BIT_VECTOR(3 downto 0); begin

    temp(0) s, cout => cout );

    end structural;

    هاي ورودي تست را به آن كنيم و سيگنال سازي مي كننده به پايان رسيده است، براي ارزيابي طرح آن را شبيه تفريق/ در اينجا كار طراحي جمع .كنيمها مشخص سازي با بررسي خروجي توانيم در محيط شبيه كنيم، صحت عملكرد طرح را مي اعمال مي

    entity test_adder_substractor4bit is end test_adder_substractor4bit; architecture tester of test_adder_substractor4bit is component adder_substractor4bit port (a, b: IN BIT_VECTOR(3 downto 0); mode: IN BIT; s: OUT BIT_VECTOR(3 downto 0); cout: OUT BIT); end component; signal A_input, B_input, S_output : BIT_VECTOR(3 downto 0); signal Mode_input, C_output : BIT; begin DUT : adder_substractor4bit port map ( a => A_input, b => B_input, mode => Mode_input, s => S_output, cout => C_output ); A_input

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ١٠ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 10

     طراحي واحد محاسبات رياضي - 4

    : ModelSimسازي در محيط مشاهده نتايج شبيه

    :تمرين

    .هاي تست بيشتري به مدار وارد كنيد و نتايج خروجي را ارزيابي نماييد سيگنال .1 .بيتي تبديل كنيد 8كننده تفريق/ را به جمع مدار .2 *سازي نماييد تك رقمي طراحي كنيد و آن را شبيه BCDكننده يك جمع .3 .*سازي كنيد طراحي نماييد و آن را شبيه BCDرياضي براي اعداد يك واحد محاسبات .4

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ١١ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 11

     طراحي واحد منطقي – 5

    منطقيطراحي واحد يك بهدر اين قسمت . دهد ميرا انجام Complement منطقي و ANDدو عمل بعنوان واحد منطقي در نظر گرفته شده است، فقط آنچه .كنيم استفاده مي )يا مشابه آن(زير پلكسر از ساختار سازي مالتي البته براي پياده. پلكسر براي ايجاد خروجي الزم نياز است مالتي

    :دستور كار

     .بنويسيد VHDLبراي مدار باال كد .1 (Test Bench). بنويسيد VHDLبراي مدار حاصل يك محيط تست با استفاده از كد .2 .ها را تصحيح كنيد نهايي را كامپايل و در صورت وجود خطاهاي احتمالي آنكد .3 .سازي كنيد شبيه ModelSimمدار حاصل را با استفاده از .4

    :كنيم مشخص مي) طبق شكل(هاي ورودي و خروجي را به همراه پورت entityابتدا . پردازيم واحد منطقي ميدر ادامه به

    entity logic_unit is port (a, b: IN BIT_VECTOR(3 downto 0); mode: IN BIT; y: OUT BIT_VECTOR(3 downto 0); end logic_unit;

    ): بصورت زير يا كد باال هر دو نتيجه يكساني خواهد داشت(كنيم پلكسر نهفته استفاده مي براي تعريف ساختار داخلي آن بنوعي از مالتي

    architecture arch of logic_unit is begin

    y a, b => b,

    Logic Unit 

    mode 

    Y A  4

    4

    4Y=NOT(A) when mode='0' else Y = A AND B;

    MUX 2x1 

    Y 4A  4

    B  4

    0

    1

    mode 

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ١٢ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 12

     طراحي واحد منطقي – 5

    mode => mode, y => y ); A_input

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ١٣ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 13

      ALUطراحي – 6

    (ALU)طراحي واحد محاسبه و منطق .سازيم را مي ALUمنطقي، عملياتب دو واحد محاسبات رياضي و از تركي

    :دستور كار

     .بنويسيد VHDLكد ALUبراي مدار .2 (Test Bench) .بنويسيد VHDLبراي مدار حاصل يك محيط تست با استفاده از كد .3 .ها را تصحيح كنيد كد نهايي را كامپايل و در صورت وجود خطاهاي احتمالي آن .4 .سازي كنيد شبيه ModelSimمدار حاصل را با استفاده از .5

    :كنيم مي طراحي) طبق شكل(هاي ورودي و خروجي را به همراه پورت ALUهاي قبل مانند قسمت

    ):هاي حذف شده كد را از جلسات قبل اضافه كنيد قسمت(كنيم را اضافه مي ALUهاي الزم براي ساختن ابتدا ماجول

    entity fulladder is port (a, b, cin: IN BIT; s, cout: OUT BIT); end fulladder; architecture structural of fulladder is ... end structural; entity adder4bit is port (a, b: IN BIT_VECTOR(3 downto 0); cin: IN BIT; s: OUT BIT_VECTOR(3 downto 0); cout: OUT BIT); end adder4bit; architecture structural of adder4bit is ... end structural; entity adder_substractor4bit is port (a, b: IN BIT_VECTOR(3 downto 0); mode: IN BIT; s: OUT BIT_VECTOR(3 downto 0); cout: OUT BIT); end adder_substractor4bit; architecture structural of adder_substractor4bit is ... end structural; entity logic_unit is port (a, b: IN BIT_VECTOR(3 downto 0); mode: IN BIT; y: OUT BIT_VECTOR(3 downto 0)); end logic_unit; architecture arch of logic_unit is ... end arch;

    ALUخروجي  operation mode عملكرد Y = A + B 0 0 رياضي 1 Y = A – B  Y = NOT A 1 Y = A and B B 0 1 منطقي

    Y4

    4

    ALU operation 

    A  4

    mode  Cout 

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ١۴ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 14

      ALUطراحي – 6

    :كنيم را مانند شكل باال طراحي مي ALUماجول . سازيم را مي ALUدر اينجا با اتصال واحدهاي منطقي و رياضي،

    entity ALU_4bit is port (A, B: IN BIT_VECTOR(3 downto 0); mode, operation: IN BIT; Y: OUT BIT_VECTOR(3 downto 0); cout: OUT BIT); end ALU_4bit;

    با توجه به ورودي ALUخروجي . دهيم يك نمونه از واحد منطقي و يك نمونه از واحد رياضي قرار مي ALUدر ساختار داخلي

    operation شود مشخص مي:

    architecture arch of ALU_4bit is

    component logic_unit port (a, b: IN BIT_VECTOR(3 downto 0); mode: IN BIT; y: OUT BIT_VECTOR(3 downto 0)); end component;

    component adder_substractor4bit port (a, b: IN BIT_VECTOR(3 downto 0); mode: IN BIT; s: OUT BIT_VECTOR(3 downto 0); cout: OUT BIT); end component;

    signal Y_logic , Y_arith: BIT_VECTOR(3 downto 0);

    begin Logic_part : logic_unit port map ( a => a, b => b, mode => mode, y => Y_logic );

    Arith_part : adder_substractor4bit port map ( a => a, b => b, mode => mode, cout => cout, s => Y_arith );

    y

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ١۵ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 15

      ALUطراحي – 6begin DUT : ALU_4bit port map ( A => a_input, B => b_input, Y => output, cout => cout, mode => mode_input, operation => operation_input );

    a_input

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ١۶ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 16

    فالپ و رجيستر طراحي فليپ – 7

    )ثبات(فالپ و رجيستر طراحي فليپيعني به جاي ساختن . كنيم استفاده مي Behavioralتر زبان و طراحي رفتاري فالپ از امكانات پيشرفته در اين قسمت براي طراحي فليپ

    كنيم كه به تعريف مي) فالپ در اينجا رفتار فليپ(كار در واقع يك پروسه براي اين. كنيم فالپ، رفتار آن را مدلسازي مي ساختار داخلي فليپ .دهد پاسخ مناسب مي) ها ورودي(ها محرك

    بيتي 4ها يك ثبات فالپ فليپ كنر هم قرار دادنسپس . باشد مي باالروندهلبه حساس به D‐FFفالپ مورد نظر در اينجا از نوع فليپ .سازيم مي

    :دستور كار

    استفاده D‐FFالبته در ثبات از كد . (بنويسيد VHDLبطور مجزا كد (Register 4‐bit)بيتي 4و ثبات (D‐FF)فالپ براي مدار فليپ .1 )شود مي

     (Test Bench) .بنويسيد VHDLبراي مدار حاصل يك محيط تست با استفاده از كد .2 .ها را تصحيح كنيد كد نهايي را كامپايل و در صورت وجود خطاهاي احتمالي آن .3 .سازي كنيد شبيه ModelSimمدار حاصل را با استفاده از .4

    :)كنيم تعريف مي (buffer)را از جنس بافر Qدقت شود كه خروجي ( Dفالپ از نوع ساختن مدل رفتاري فليپ

    entity D_FF is port (D, clk, reset: IN BIT; Q: BUFFER BIT :='0'); end D_FF;

    architecture bhv of D_FF is begin

    :كنيم به اين صورت تعريف مي 1پروسهيا processفالپ را در قالب يك رفتار فليپ

    در مورد پالس ساعت اتفاق بيفتد و پس از ) تغييري(اگر رخدادي . باشد حساس مي (clk)فالپ به تغييرات پالس ساعت اوالً فليپاگر . فالپ بايد واكنش نشان دهد شده باشد، يعني يك لبه باالرونده اتفاق افتاده است پس فليپ '1'اين رخداد پالس ساعت مقدارش

    دهد فالپ كار عادي خود را انجام مي ست فعال نباشد فليپ و اگر پايه ري) ست سنكرون ري(ست شود يد ريفعال باشد با resetپايه :گيرد يقاً در پروسه زير انجام مياين مراحل دق .كند منتقل مي Qرا به خروجي Dيعني ورودي

    process (clk) begin if (clk'event AND clk='1') then if (reset='1') then Q

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ١٧ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 17

    فالپ و رجيستر طراحي فليپ – 7

    :فالپ مانند قبل بايد يك محيط تست براي ارزيابي عملكرد آن فراهم كنيم پس از طراحي فليپ

    entity test_D_FF is end test_D_FF;

    architecture tester of test_D_FF is component D_FF port (D, clk, reset: IN BIT; Q: BUFFER BIT); end component; signal d, clk, reset, q : BIT; begin DUT : D_FF port map ( D => d, clk => clk, reset => reset, Q => q ); d

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ١٨ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 18

    فالپ و رجيستر طراحي فليپ – 7

    :)افزاييم كد زير را به قسمت باال مي( كنيم بندي مي فالپ را در كنار هم در يك قالب بسته فليپ 4، بيتي 4براي طراحي رجيستر

    entity Reg_4bit is port (I: IN BIT_VECTOR(3 downto 0); clk, reset, load: IN BIT; Rout: OUT BIT_VECTOR(3 downto 0)); end Reg_4bit;

    :كه البته قابليت بارگزاري به آنها اضافه شده است فالپ موازي تشكيل شده است فليپ 4بيتي از 4) ثبات(رجيستر

    architecture arch of Reg_4bit is component D_FF port (D, clk, reset: IN BIT; Q: OUT BIT); end component; signal load_bar: BIT; signal R, D: BIT_VECTOR(3 downto 0); begin load_bar

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ١٩ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 19

    فالپ و رجيستر طراحي فليپ – 7

    B0 : D_FF port map ( D=>D(0), clk=>clk, reset=>reset, Q=>R(0) ); B1 : D_FF port map ( D=>D(1), clk=>clk, reset=>reset, Q=>R(1) ); B2 : D_FF port map ( D=>D(2), clk=>clk, reset=>reset, Q=>R(2) ); B3 : D_FF port map ( D=>D(3), clk=>clk, reset=>reset, Q=>R(3) );

    Rout(0) load, R => r ); reset

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ٢٠ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 20

    فالپ و رجيستر طراحي فليپ – 7

    :باشد سازي خروجي بصورت زير مي قسمتي از شبيه

    :تمرين

    .هاي تست بيشتري به مدار وارد كنيد و نتايج خروجي را ارزيابي نماييد سيگنال .1 .بسازيد JK‐FFو نيز يك T‐FFيك .2 *طراحي نماييد و نتيجه را با روش ارايه شده در اين بخش مقايسه نماييد NORهاي پايه با استفاده از گيت D-FFيك .3

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ٢١ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 21

    طراحي شمارنده – 8

    )كنتور( بيتي باالشمار 4شمارنده طراحي از روش ) مانند بخش قبلي(شمارنده در اين قسمت براي طراحي

    براي طراحي شمارنده استفاده (Behavioral) مدلسازي رفتاريخواهيم ديد كه اين روش به مراتب طراحي شمارنده را . كنيم مي

    قرار است اي كه در اينجا طراحي خواهيم كرد شمارنده. كند تر مي راحت :كندبصورت زير رفتار

    داراي يك سيگنال وروديload الزم را همگام با پالس ساعت هاي كند تا بتواند داده باشد كه اين امكان را فراهم مي مي سنكرون .اري كندبارگز

    داراي يك سيگنال وروديreset بدون نياز به همگامي با (كند تا در هر لحظه باشد كه اين امكان را فراهم مي مي آسنكرون .بتوان شمارنده را صفر كرد) پالس ساعت

    ي يك سيگنال وروديو نيز داراcount  اين سيگنال كند يعني اگر باشد كه در واقع مثل فرمان شمارش عمل مي مي سنكرونشمارد و در حالت غير فعال شدن اين سيگنال مقدار مي )صعودي(بصورت باالشمار فعال شود شمارنده همگام با پالس ساعت

     .شمارنده تغيير نخواهد كرد

    :دستور كار

     .مدار شمارنده باال را بصورت رفتاري مدلسازي كنيد VHDLكد با استفاده از .1 (Test Bench) .بنويسيد VHDLبراي مدار حاصل يك محيط تست با استفاده از كد .2 .ها را تصحيح كنيد كد نهايي را كامپايل و در صورت وجود خطاهاي احتمالي آن .3 .سازي كنيد شبيه ModelSimمدار حاصل را با استفاده از .4

    :رفتاري شمارنده بصورت زير خواهد بودمدل

    لذا كتابخانه مذكور و . كنيم استفاده مي IEEEبراي مدلسازي رفتاري شمارنده از يك سري توابع از پيش ساخته شده در قالب كتابخانه :كنيم هاي مورد نياز را اضافه مي قسمت

    library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;

    شامل std_logic_unsignedو نيز ) BITبه جاي منطق (كند در واقع يك منطق استاندارد تعريف مي std_logicبسته ها با استاندار خروجي/دقت شود تمامي ورودي(پردازيم در ادامه به طراحي شمارنده مي. باشد ها مي توابع الزم براي كاركردن با اين نوع داده

    .):كند اند كه در اينجا عمالً با نوع قبلي فرقي نمي تعريف شدهجديد

    entity counter_4bit is port (input: IN std_logic_vector(3 downto 0); load, count, reset, clk: IN std_logic; output: OUT std_logic_vector(3 downto 0)); end counter_4bit;

    :پـردازد بـه مدلسـازي رفتـار آن مـي ) قسـمت بـاال (طبق تعريف مسـاله از شـمارنده باشد كه دقيقاً مهم طراحي در اين قسمت مي قسمتدهيم و در نهايت مقدار آن بـه خروجـي ها را روي آن انجام مي كنيم و تمامي مقداردهي تعريف مي tempبراي راحتي كار ابتدا يك متغير

    .شود مي منتقل

    شمارنده باالشمار

    با قابليت ( )بارشده موازي

    ورودي

    4

    4

    خروجي

    load reset 

    count  clk

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ٢٢ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 22

    طراحي شمارنده – 8

    هاي بقيه سيگنال. گذاشته شده است clkهاي پروسه سيگنال لذا در ليست محرك كند، از آنجا كه شمارنده همگام با پالس ساعت كار ميكنـد پـس بايـد در بصورت آسنكرون عمل مي resetو نيز چون . هستند )هماهنگ(سنكرون با پالس ساعت ) resetبغير از (ورودي

    .گيردقرار هاي پروسه ليست محرك

    architecture bhv of counter_4bit is begin counter : process (clk, reset) variable temp: std_logic_vector(3 downto 0):= "0000"; begin if (reset='1') then temp := "0000"; elsif (clk'event AND clk='1') then if (load='1') then temp := input; elsif (count='1') then temp := temp + '1'; end if; end if; output

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ٢٣ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 23

    طراحي شمارنده – 8

    signal i, y : std_logic_vector(3 downto 0):= "0000"; signal clk, count, reset, load : std_logic:='0';

    begin DUT : counter_4bit port map ( input => i, output => y, clk => clk, reset => reset, load => load, count => count); reset

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ٢۴ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 24

    )بخش اول(طراحي واحد كنترل – 9

    بخش اول – طراحي واحد كنترل )شكل زير( گردد ساده معرفي مي RISC ابتدا يك سيستم .گيرد در اين بخش مهمترين قسمت كار، يعني طراحي واحد كنترل، انجام مي

    تايي 4بانك ثبات ، يك ALUسيستم مورد بحث شامل يك .كنيم و پس از آن واحد كنترل مورد نظر را براي سيستم طراحي ميد و در اينجا اجرا نشو از يك حافظه خوانده مي (Control Word)بصورت كلمات كنترلي فرض بر اين است كه دستورات. باشد مي

    .دنگرد مي

    :گيريم ي اين كامپيوتر را بصورت زير در نظر ميماجول فرضي برا

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ٢۵ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 25

    )بخش اول(طراحي واحد كنترل – 9

    و براي انجام عمليات و ذخيره نتيجه در يك Src=0همانطور كه در شكل هم مشخص است، اگر بخواهيم ثباتي را مقداردهي كنيم از در كلمه Dتوسط ) مقصد(و نيز ثبات هدف Bو  Aبا استفاده از ALUدو ورودي . كنيم در كلمه كنترلي استفاده مي Src=1ثبات از

    .گردند كنترلي معين مي

    مقادير استفاده كنيم و براي جمع CW = 110XXXXXXبا ورودي بايد از كلمه كنترلي R2بعنوان مثال براي مقدار دهي ثبات .بكاررود 000110100كلمه كنترلي R0و ذخيره نتيجه حاصل در ثبات R3و R1هاي ثبات

    :كاردستور

     .هاي الزم براي ساختن سيستم را مشخص كنيد ابتدا ماجول .1 .مدلسازي كنيد VHDLايد از آن استفاده كنيد و اگر نه آن را با استفاده از كد سازي كرده اگر ماجولي را قبال طراحي و پياده .2 .به يكديگر متصل كنيد VHDLهاي الزم را در يك فايل تمامي ماجول RISC unitبراي ساختن .3 (Test Bench) .بنويسيد VHDLبراي مدار حاصل يك محيط تست با استفاده از كد .4 .ها را تصحيح كنيد كد نهايي را كامپايل و در صورت وجود خطاهاي احتمالي آن .5 .سازي كنيد شبيه ModelSimمدار حاصل را با استفاده از .6

    :باشد ير ميدهنده اين سيستم بشرح ز هاي تشكيل از روي شكل مشخص است كه ماجول

    بايد طراحي شود( - ) بيتي 4( 1به 4پلكسر مالتي( بايد طراحي شود( - ) بيتي 4( 1به 2پلكسر مالتي(  قبالً طراحي شده است( –بيتي 4ثبات( ALU 4 قبالً طراحي شده است( –بيتي(  بايد طراحي شود( – 4به 2ديكدر.( 

    :دقت كنيد

    استفاده شده است، بترتيب به BIT_VECTORو BITهايي كه نوع كدهاي قبلي در تمامي قسمتدر std_logic وstd_logic_vector تغيير دهيد.

    :داريم ها را از كدهاي موجود بر مي و قبلي نويسيم هاي جديد كد مي براي ماجول

    library ieee; use ieee.std_logic_1164.all;

    .كنند اضافه گردد هايي كه از كتابخانه استاندارد استفاده مي بايد براي تمامي ماجولهاي كد اين قسمت

    ):بيتي 4( 1به 4پلكسر مدلسازي مالتي

    entity MUX_4x1_4bit is port( I0, I1, I2, I3: IN std_logic_vector(3 downto 0); sel: IN std_logic_vector(1 downto 0); output: OUT std_logic_vector(3 downto 0) ); end MUX_4x1_4bit;

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ٢۶ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 26

    )بخش اول(طراحي واحد كنترل – 9

    .شود بيتي ورودي به خروجي متصل مي 4هاي انتخاب يك از خطوط با توجه به ورودي

    architecture arch of MUX_4x1_4bit is begin output

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ٢٧ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 27

    )بخش اول(طراحي واحد كنترل – 9

    architecture bhv of D_FF is ... end bhv; library ieee; use ieee.std_logic_1164.all; entity Reg_4bit is port ( I: IN std_logic_vector(3 downto 0); clk , reset, load: IN std_logic; Rout: OUT std_logic_vector(3 downto 0) ); end Reg_4bit; architecture arch of Reg_4bit is ... end arch;

    std_logicاز BITالبته به جاي نوع سيگنال . (كنيم ايم استفاده مي بيتي، از كدهايي كه قبال نوشته ALU 4مدلسازي و نيز براي .)كنيم استفاده مي

    library ieee; use ieee.std_logic_1164.all; entity fulladder is port (a, b, cin: IN std_logic; s, cout: OUT std_logic); end fulladder; architecture structural of fulladder is ... end structural; −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− library ieee; use ieee.std_logic_1164.all; entity adder4bit is port (a, b: IN std_logic_vector(3 downto 0); cin: IN std_logic; s: OUT std_logic_vector(3 downto 0); cout: OUT std_logic ); end adder4bit; architecture structural of adder4bit is ... end structural; −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− library ieee; use ieee.std_logic_1164.all; entity adder_substractor4bit is port (a, b: IN std_logic_vector(3 downto 0); mode: IN std_logic; s:

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ٢٨ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 28

    )بخش اول(طراحي واحد كنترل – 9

    OUT std_logic_vector(3 downto 0); cout: OUT std_logic ); end adder_substractor4bit; architecture structural of adder_substractor4bit is ... end structural; −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− library ieee; use ieee.std_logic_1164.all; entity logic_unit is port (a, b: IN std_logic_vector(3 downto 0); mode: IN std_logic; y: OUT std_logic_vector(3 downto 0) ); end logic_unit; architecture arch of logic_unit is ... end arch; −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− library ieee; use ieee.std_logic_1164.all; entity ALU_4bit is port (A, B: IN std_logic_vector(3 downto 0); mode, operation: IN std_logic; Y: OUT std_logic_vector(3 downto 0); cout: OUT std_logic ); end ALU_4bit; architecture arch of ALU_4bit is ... end arch;

    :پردازيم مي RISC‐Unitدر اينجا به مدلسازي

    :كنيم مدلسازي مي entityماجول اصلي را با توجه به شكل بصورت يك

    library ieee; use ieee.std_logic_1164.all; entity RISC_UNIT_4bit is port( input: IN std_logic_vector(3 downto 0); control_word: IN std_logic_vector(8 downto 0); clk, reset: IN std_logic; R0, R1, R2, R3: OUT std_logic_vector(3 downto 0) ); end RISC_UNIT_4bit;

    در سيستم قرار componentهاي مورد استفاده را بصورت ماجولخروجي /نوع و مشخصات وروديسازي سيستم ابتدا براي پيادههاي مياني، كنيم، در انتها با استفاده از سيگنال اري ميي را از شكل استخراج كرده و نامگذميان هاي دهيم، سپس تمامي سيگنال مي

    .نماييم ميهاي مختلف را به هم متصل ماجول

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ٢٩ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 29

    )بخش اول(طراحي واحد كنترل – 9

    architecture arch of RISC_UNIT_4bit is

    ):بيتي 4(به يك 4پلكسر مالتي

    component MUX_4x1_4bit port( I0, I1, I2, I3: IN std_logic_vector(3 downto 0); sel: IN std_logic_vector(1 downto 0); output: OUT std_logic_vector(3 downto 0) ); end component;

    ):بيتي 4(به يك 2پلكسر مالتي

    component MUX_2x1_4bit port( I0, I1: IN std_logic_vector(3 downto 0); sel: IN std_logic; output: OUT std_logic_vector(3 downto 0) ); end component;

    :4ديكدر يك به

    component DEC_2x4 port( I: IN std_logic_vector(1 downto 0); D: OUT std_logic_vector(3 downto 0) ); end component;

    :بيتي 4ثبات

    component Reg_4bit port (I: IN std_logic_vector(3 downto 0); clk, reset, load: IN std_logic; Rout: OUT std_logic_vector(3 downto 0) ); end component;

    ALU 4 بيتي:

    component ALU_4bit port (A, B: IN std_logic_vector(3 downto 0); mode, operation: IN std_logic; Y: OUT std_logic_vector(3 downto 0); cout: OUT std_logic ); end component;

    :هاي مياني تعريف سيگنال

    signal R0_bus, R1_bus, R2_bus, R3_bus : std_logic_vector(3 downto 0); signal load_bus, Input_vec : std_logic_vector(3 downto 0); signal ALU_bus_A, ALU_bus_B, ALU_bus_Result : std_logic_vector(3 downto 0); signal A_sel, B_sel, D_sel, Op_sel : std_logic_vector(1 downto 0); signal Src, clock, cout : std_logic; signal reset_sig : std_logic; signal register_load : std_logic_vector(3 downto 0);

    begin

    آنها را بطور مناسب هاي مياني سيگنالدهيم و با استفاده از را در سيستم قرار مي RISC‐unitدهنده هاي تشكيل خود ماجولحاال .نماييم به يكديگر متصل مي )مانند شكل(

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ٣٠ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 30

    )بخش اول(طراحي واحد كنترل – 9

    :كنيم سازي مي ثبات مجزا پياده 4بانك رجيستر را متشكل از

    Reg0 : Reg_4bit port map I => load_bus, clk => clock, reset => reset_sig, load => register_load(0); Rout => R0_bus ); Reg1 : Reg_4bit port map ( I => load_bus, clk => clock, reset => reset_sig, load => register_load(1), Rout => R1_bus ); Reg2 : Reg_4bit port map ( I => load_bus, clk => clock, reset => reset_sig, load => register_load(2), Rout => R2_bus ); Reg3 : Reg_4bit port map ( I => load_bus, clk => clock, reset => reset_sig, load => register_load(3), Rout => R3_bus );

    :كنند فراهم مي ALUهاي نظر را براي ورودي هايي كه خروجي ثبات مورد پلكسر قرار دادن مالتي

    MUX_A : MUX_4x1_4bit port map ( I0 => R0_bus, I1 => R1_bus, I2 => R2_bus, I3 => R3_bus, sel => A_sel, output => ALU_bus_A ); MUX_B : MUX_4x1_4bit port map ( I0 => R0_bus, I1 => R1_bus, I2 => R2_bus, I3 => R3_bus, sel => B_sel, output => ALU_bus_B );

    :را در سيستم قرار دهيم ALUحاال بايد

    ALU : ALU_4bit port map) A => ALU_bus_A, B => ALU_bus_B, mode => Op_sel(0), operation => Op_sel(1),

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ٣١ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 31

    )بخش اول(طراحي واحد كنترل – 9

    Y => ALU_bus_Result, cout => cout );

    :يكي را انتخاب كند ALUها، بين خط ورودي سيستم و خروجي پلكسري كه قرار است براي ورودي ثبات قرار دادن مالتي

    MUX_load : MUX_2x1_4bit port map) I0 => ALU_bus_Result, I1 => Input_vec, sel => Src, output => load_bus );

    :در سيستم وارد كنيم كند ثبات مقصد را صادر مي loadحاال بايد ديكدري كه فرمان DEC : DEC_2x4 port map) I => D_sel, D => register_load );

    براي كامل شدن سيستم بايد ايم؛ صل كردههاي مياني الزم به يكديگر مت ها را با سيگنال آن ايم و هاي الزم را قرار داده تا حاال ماجول :هاي مياني مربوطه ربط دهيم خروجي را نيز به سيگنال/هاي ورودي ساير سيگنال

    Input_vec

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ٣٢ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 32

    )بخش دوم(طراحي واحد كنترل – 10

    بخش دوم –طراحي واحد كنترل  Testقسمت به طراحي يك در اين . باشد پس از طراحي و مدلسازي واحد كنترل در بخش قبل، حاال نوبت ارزيابي و بررسي عملكرد آن مي

    bench پردازيم براي كامپيوتر ساده فصل قبل مي.

    :دستور كار

     (Test Bench) .بنويسيد VHDLيك محيط تست با استفاده از كد ، از بخش قبل،RISC unitبراي مدار .1 .ها را تصحيح كنيد كد نهايي را كامپايل و در صورت وجود خطاهاي احتمالي آن .2 .سازي كنيد شبيه ModelSimمدار حاصل را با استفاده از .3 .سازي كنيد را در سيستم موجود شبيه) مثالً محاسبه سري فيبوناچي(اجراي يك برنامه ساده .4

     .)ررسي نماييدها را ب ثبات و خروجي را به سيستم اعمال كنيدكلمات كنترلي الزم اي از دنباله در واقع (

    )افزاييم البته اين كد را به كد بخش قبل مي. (كنيم يك محيط تست مانند زير ايجاد مي RISC‐unitبه هاي الزم براي اعمال تست

    −− add RISC_unit VHDL code here (from previous chapter)

    library ieee; use ieee.std_logic_1164.all;

    :سازيم را مي test_RISCموجوديت

    entity test_RISC is end test_RISC;

    :دهيم هاي مياني الزم قرار مي را به همراه سيگنال RISC_unitدر ساختار داخلي آن نمونه

    architecture tester of test_RISC is component RISC_UNIT_4bit port( input: IN std_logic_vector(3 downto 0); control_word: IN std_logic_vector(8 downto 0); clk, reset: IN std_logic; R0, R1, R2, R3: OUT std_logic_vector(3 downto 0) ); end component; signal reg0, reg1, reg2, reg3 : std_logic_vector(3 downto 0); signal input : std_logic_vector(3 downto 0) := "0000"; signal clk , reset : std_logic := '0'; signal CW : std_logic_vector(8 downto 0) := "000000000"; begin

    :اعمال نماييمهاي تست را به آن كنيم تا سيگنال را ايجاد مي  RISC_unitيك واحد از

    DUT : RISC_UNIT_4bit port map ( input => input, control_word => CW, clk => clk, reset => reset, R0 => Reg0,

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ٣٣ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 33

    )بخش دوم(طراحي واحد كنترل – 10

    R1 => Reg1, R2 => Reg2, R3 => Reg3 );

     :يك پروسه براي ايجاد سيگنال پالس ساعت

    clock : process begin wait for 50 ns; clk

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ٣۴ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 34

    )بخش دوم(طراحي واحد كنترل – 10

    ModelSim> Force cw "101000000" ModelSim> run 100 ...

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ٣۵ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 35

     افزار هاي توصيف سخت آشنايي با زبان: 1پيوست

    هاي توصيف سخت افزار زبانآشنايي با : 1پيوست استفاده از كاغذ و قلم در طراحـي ديگـر . اجتناب ناپذير است CAD 2با افزايش حجم سيستمهاي ديجيتال و پيچيدگي آنها، استفاده از ابزارهاي

    زيرا در شماتيك ارتباط بين بلوكهـاي . دهند طراحي ترجيح مي روشهايطراحي بصورت شماتيكي را به ساير ،بيشتر افراد. چندان كاربردي نداردبا وجـود راحتـي در . براي سالهاي طوالني روش شماتيكي در طراحي، به عنوان يك روش خوب مورد توجه بود. باشد تر مي مختلف طراحي، واضح

    دهـد و تنها ارتباط بين بلوكها و يا گيتها را نشان مـي ،يكروش شمات. باشد استفاده از روش شماتيك ، استفاده از اين روش داراي معايبي نيز ميگيت منطقي ) و حتي چندين ميليون ( هايي كه داراي چندين هزار FPLDهمچنين با آمدن . كند ويژگيهاي سيستم را بطور واضح مشخص نمي

    .هستند ، بكار بردن و اداره آنها ، در روش شماتيك بسيار مشكل است

    ها اجازه اسـتفاده از ماشـين بـا HDLبه عنوان مثال بيشتر . آمد فائقتوان بر اين مشكالت مي) HDL( 3افزاري وصيف سختبا بكار بردن زبان ت . دهند براي مدارهاي تركيبي را مي 5را براي مدارهاي ترتيبي و جدول درستي 4حالت محدود

    و VHDL ،Verilogتـرين آنهـا لفي وجود دارد كـه از جملـه مشـهور هاي مختHDLامروزه . ها بكار برده شدFPLDاولين بار در ،HDLزبانهاي Abel باشد مي .HDLاين زبانها يك نمايش . روند بكار مي مستندسازيو يا طراحي، تست، سازي شبيه افزار با اهداف ها جهت توصيف سخت 6هـاي از نمادهـا ها داراي يك مجموعHDLبعضي از . دسازن بندي و يا تابعي سيستم ديجيتال فراهم مي مراتبي جهت نمايش جزييات سيم سلسله

    را VHDLاي از معـادل نمادهـاي شـماتيكي در نمونـه شكل زيـر به عنوان مثال ، . باشند هستند كه جايگزين نمودارهاي موجود در شماتيك مي .هر بلوك از چندين زير بلوك تشكيل شده باشد اي كه مراتبي باشد به گونه تواند به صورت سلسله ها ميHDLاز طراحي با استفاده . دهد نشان مي

    VHDLاي از معادل نمادهاي شماتيكي در نمونه: شكل

                                                                ٢ Computer Aided Design ٣ Hardware Description Language ٤ Finite State Machine ٥ Truth Table ٦ Symbols

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ٣۶ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 36

     افزار هاي توصيف سخت آشنايي با زبان: 1پيوست

    و يـا بـه صـورت HDLسـازها بـا اسـتفاده از خـود شبيه. افزاري است سازها و ابزارهاي سنتز سخت ها حاوي شبيهHDLافزارهاي موجود براي نرمرا از HDLو ابزارهاي سنتز نيـز طراحـي انجـام شـده بـا اسـتفاده از . روند بكار مي ،سنجي طراحي انجام شده سازي و اعتبار راي شبيهشماتيكي ب

    .كنند تبديل مي 7سطوح مختلف طراحي به سطح گيت منطقي

    . شود در حد آشنايي معرفي مي VHDLافزاري زبان توصيف سخت بخشدر اين

    VHDLتاريخچه

    هدف از آن، مطالعه روشهاي مختلف توصيف سخت افزار ، نياز به يـك . ترتيب داد كارگروهيالت متحده ، اوزارت دفاع اي 1981تابستان سال در ) VHSIC( 8سازي مدارهاي مجتمـع بسـيار سـريع زبان استاندارد و ويژگيهاي چنين زباني بود تا بتوانند ابزاري استاندارد، براي طراحي و مستند

    ، وزارت دفاع اياالت متحده يـك زبـان 1983در سال . بود ITAR9آوردهاي آن در آن سال ، تحت انحصار و تمام دست كارگروهاين . ود آورندبوجدر تابسـتان . بررسي شـده بـود، درخواسـت كـرد 1981را مطابق با آنچه كه در سال ) VHSIC )VHDLبراي 10افزاري استاندارد توصيف سخت

    .نبود اما همچنان تحت انحصار اياالت متحده بود ITARدر انحصار VHDLدر آن زمان اگر چه . شروع شد VHDLوي كار بر ر 1983

     VHDLپس از مدتي كوتاه، نسخه اصالح شده . اين نسخه داراي كمبودها و مشكالتي بود. منتشر شد VHDL 2.0 ،پس از شش ماه از شروع كار .شروع شد VHDLو در همين زمان بود كه توسعه ابزارهاي مبتني بر . منتشر شد 6.0

    بر اثر تالشـهايي كـه بـراي تعريـف نسـخه جديـد . واگذار شد تا توسعه بيشتري يابد IEEEدرآمد و به ITARاز انحصار VHDL، 1985در سال VHDL يك نسخه جديد كه بنام 1992در سال . انجام گرفت 1990در سالVHDL  بود، كامل شد و به عنوان يـك زبـان اسـتاندارد بـراي 93'گسترش و توسعه ايـن زبـان همچنـان ادامـه دارد؛ بـه . مدارهاي ديجيتال در اختيار طراحان قرار گرفت تندسازيسمو سازي شبيه، طراحي

    .باشد تحت بررسي و مطالعه ميرود كه هنوز براي طراحي مدارهاي آنالوگ بكار مي VHDL AMSاي از آن بنام طوري كه نسخه

    VHDLسطوح طراحي در

    شـود نيـاز بسته به اين كه طراحي در كدام يك از اين سطوح انجام مي. در طراحي يك سيستم ديجيتال سطوح مختلف طراحي مورد توجه است 12يـا رفتـار 11توان بر حسب سـاختار هر يك از سطوح طراحي را مي. نشان داده شده است صفحه بعداين سطوح طراحي در . به ابزار خود را داردبـا گسـترش . دهنـد در پيچيده است كه روشهاي معمول طراحي، كل سطوح طراحـي را پوشـش نمـي قتكنولوژي كنوني آن. مورد تحليل قرار داد

    .پيش رفت) layout( ترين سطح تا پايين) سيستم ( ين سطح توان به راحتي از باالتر در سالهاي اخير مي13ابزارهاي خودكار طراحي

    كه اين خود وابسته به اين است كه ابزارهاي بكـار رفتـه . نياز به سوييچ كردن از يك ابزار طراحي به ابزار ديگر را دارد ،طي كردن سطوح طراحيسـطوح زيـادي از VHDL .حـل نمـود VHDLتوسـط ا حـدودي تـ توان اين مشكل را مي. در مسير طراحي سازگاري نيز با يكديگر داشته باشند

    . اين مشكل را حل نمـوده اسـت CADدهد اما وجود ابزارهاي و سيليكون را پوشش نمي 14سطوح مدار VHDLاگرچه . دهد طراحي را پوشش مي

                                                                ٧ Gate Level ٨ Very High speed Integrated Circuits ٩ United States International Traffic and Arms Regulations ١٠ VHSID Hardware Description Language ١١ structure ١٢ behavior ١٣ design automation tools ١٤ Circuit Level 

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ٣٧ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 37

     افزار هاي توصيف سخت آشنايي با زبان: 1پيوست

    زيـادي بـه طـراح در هنگـام ايـن قابليـت توانـايي . توصيف شود 16و هم بصورت رفتاري 15تواند هم بصورت ساختاري يك سيستم مي VHDLدر .دهد سازي طرح خود مي پياده

    سطوح طراحي: شكل

                                                                ١٥ structural ١٦ behavioral 

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ٣٨ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 38

     افزار هاي توصيف سخت آشنايي با زبان: 1پيوست

    Syetem Level

    Chip Level

    Register Transfer Level

    Gate Level

    Circuit Level

    Silicon Level

    VHDL

    در سطوح طراحي VHDLجايگاه : شكل

    VHDLاي بر مقدمه

    VHDL تواند پيچيدگي طرح مورد نظر مي. رود سازي يك سيستم ديجيتال بكار مي افزاري است كه جهت طراحي يا شبيه يك زبان توصيف سختتـا سـطوح 17افـزار از سـطح انتـزاع يك زبان استاندارد صنعتي، جهت توصيف سخت VHDL. از چندين گيت تا يك سيستم كامل ديجيتال باشد

    و چـه بصـورت 19چه به صورت ترتيبي( 18وان به توصيف رفتارت داراي قابليتهايي است كه با استفاده از آنها مي VHDL. باشد مختلف طراحي مياز آنجـايي كـه امـروزه، از زبانهـاي توصـيف . 23يـا بـدون زمانبنـدي پرداخـت 22ه با زمانبنـدي چهر سيستم ديجيتالي 21، يا ساختار) 20ندهمروسازي مدارها توسط طراحان باشد تا مدارها مستند تواند به عنوان يك روش ، در نتيجه اين روش مي شود افزاري به طور وسيعي استفاده مي سخت

    .براي ساير طراحان قابل فهم باشد

    25مراتبـي اين زبان از طراحي به صورت سلسله. ، بسيار مناسب است 24به عنوان يك طرح ورودي VHDLهاي سيستمهاي ديجيتال ، CADبراي سـاز تواننـد توسـط يـك شـبيه مـي VHDLشده به زبان هاي نوشته طرح. كند يبه خوبي پشتيباني م 27و متد پايين به باال 26و متد باال به پايين

    VHDL 28 سنجي شوند ، اعتبار.

                                                                ١٧ abstract ١٨ behavior ١٩ sequential ٢٠ concurrent ٢١ structure ٢٢ timing  .سازي است منظور از زمانبندي اعمال تاخيرهاي مربوط به هر بلوك يا گيت در هنگام شبيه ٢٣٢٤ Entry ٢٥ hierarchical ٢٦ top‐down 

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ٣٩ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 39

     افزار هاي توصيف سخت آشنايي با زبان: 1پيوست

    همچنـين بـراي . شود توصيف مي architectureو يك entityهنگامي كه يك مدار ديجيتال بايد طراحي شود، در باالترين سطح توسط يك هـا آن 29شامل ليستي از سيگنالهاي واسط و نـوع entityاعالن . شود تعريف مي architectureو يك entityبلوكهاي متعلق به مدار نيز يك

    . شـود ، رفتار مدار و اجزاء متعلق بـه ان توصـيف مـي architectureدر اعالن . ها يا دنياي خارج متصل شوند توانند به ساير ماژول است كه مي نـد ترتيبي و يا همرو 31هاي اي از عبارت و يا به صورت مجموعه) ندين بلوك به هم چبه عنوان مثال اتصال ( 30تواند به صورت ساختاري رفتار مي

    .توصيف شود

    نيـز VHDLنويسي ، مانند هر زبان برنامه. architectureو ديگري entityيكي : شامل دو قسمت است VHDLهاي فايل حاوي دستورالعمل :32ات است كه بعضي از آنها در زير آمده استداراي تعدادي قوانين و خصوصي

    ديگـري نامگـذاري يا هر 34شناسه نامگذاريتوانند براي وجود دارد كه داراي معني مشخصي هستند و نمي 33تعدادي كلمات رزرو شده .بكار روند

    درVHDL و يـا جـاي خـالي بـه هـر تعـداد بنابراين سر سطر رفتن. توانند در يك يا چند سطر ادامه پيدا كنند ، عبارتهاي طوالني مي .آورد مشكلي بوجود نمي

    شود ناديده گرفته مي 36روند و توسط ابزار سنتز بشمار مي 35شوند به عنوان توضيح شروع مي) --(خطوطي كه با دو عالمت منها.  بعد از هر عبارت و قبل از عبارت بعدي ضروري است) ;( عالمت نقطه ويرگول.  كلمهTIME يكtype واحدهاي زماني كه در . از پيش تعريف شده استVHDL آورده شده است جدول زيروجود دارند، در. 

     VHDLمعادل در توضيح

    Femtosecond fs 

    Picosecond ps 

    Microsecond µs 

    Millisecond ms

    second s

    Minute min 

    hour hr 

    VHDLواحدهاي زمان در : جدول 

    يك شناسه درVHDL اولين كاراكتر بايد حرف باشد. تشكيل شود 37)ـ ( تواند از يك يا چندين حرف ، عدد و يا كاراكتر مي.                                                                                                                                                                                                                     

    ٢٧ bottom‐up ٢٨ VHDL simulator ٢٩ type ٣٠ structural ٣١ statements  .معني است بي VHDLدر ) statements( ها نويسي كامال متفاوت است به عنوان مثال اجرا شدن عبارت با زبانهاي برنامه VHDLبايد توجه داشت كه زبان ٣٢٣٣ Reserved words ٣٤ identifier ٣٥ comment ٣٦ synthesizing tool 

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ۴٠ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 40

     افزار هاي توصيف سخت آشنايي با زبان: 1پيوست

    VHDL به بزرگ و كوچك بودن حروف حساس نيست.  مانند 38عملگرهاي دودوييAND ،OR ،NOT ،NAND ،NOR ،XOR وXNOR به طور پيش فرض درVHDL وجود دارند.  درVHDL كتابخانه استانداردي وجود دارد كه توسطIEEE استاندارد شده است كه گيتهاي منطقي استاندارد و بعضي توابع خـاص را

     .گزارند در اختيار طراح مي 

    Entityاعالن

    سـيگنالهاي واسـطي، تواند با دنيـاي خـارج خـود از طريـق ، به هر بلوك ديجيتال كه داراي يك منطقي است كه مي VHDLدر entityعبارت .از يك سيستم ديجيتال واقعي است 39افزاري در واقع آن يك تجريد سخت. شود ارتباط برقرار كند، الحاق مي

    از 40به عنوان مثـال يـك گيـت منطقـي يـاي انحصـاري . تر تشكيل شده باشد در سطوح پايين entityممكن است خود از چندين entityيك entity هايAND ،OR وNOT تشكيل شده است شكل زيربق مطا.

    .و معادل آن XORگيت : شكل

    هاي ديگر مورد استفاده قرار گيـرد و entityه عنوان يك بلوك در بتواند مي entityيك . كنند استفاده مي entityها از تمامي طرح VHDLدر از روش طراحي پايين به باال و روش باال به پايين پشتيباني VHDLهمانطور كه بيان شد، . تشكيل شده باشد entityتواند از چندين يا خود مي

    .آيند كه براي بررسي مدارهاي پيچيده بسيار مناسب است مراتبي به حساب مي اين روشها به عنوان طراحي سلسله. كند مي

    ، سـيگنالهاي يكتـايي را بـراي entityهر اعـالن . 41اشاره دارد entityاست كه به شروع يك VHDLيك كلمه رزرو شده در ENTITYعبارت بعضـي اطالعـات ماننـد . كنـد ، جهت گذرگاهها و نوع آنهـا را مشـخص مـي 42اين اعالن ، تعداد گذرگاهها. كند ارتباط با دنياي خارج تعريف مي

    .تواند در اين اعالن قرار گيرد مي 43زمانبندي

    يـك . شـوند سيگنالهاي ورودي خروجي بنام پورت شناخته مي. جي استداراي يك اسم و اعالن مربوط به سيگنالهاي ورودي و خرو entityيك كنـد است كه مشخص مـي modeهر سيگنال ورودي يا خروجي داراي خصوصيتي بنام . شود مشخص مي PORTپورت توسط كلمه رزرو شده

                                                                                                                                                                                                                        ٣٧ underscore character ٣٨ Boolean operators ٣٩ hardware abstraction ٤٠ exclusive or .اشاره به يك بلوك دارد entityباشد و منظور از خود كلمه مي ENTITYمنظور از 41٤٢ ports ٤٣ timing 

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ۴١ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 41

     افزار هاي توصيف سخت آشنايي با زبان: 1پيوست

    توسـط كلمـه رزرو شـده ( و طرفـه و يـا بـاس د ) OUTتوسـط كلمـه رزرو شـده ( ، خروجي ) INتوسط كلمه رزرو شده ( آن سيگنال ورودي INOUT (هر يك از اين سيگنالها داراي . استtype گرامر اعالن يك .هستندentity بصورت زير است:

    ENTITY entity−name IS

    PORT ( ها ها به همراه نوع آن ها و خروجي ليست نام ورودي ); END entity−name;

    است كه معموال ايـن entity، نام entity‐nameمنظور از . باشند مي VHDLاند جزء كلمات رزرو شده كلماتي كه با حروف بزرگ نوشته شدهآنهـا مشـخص modeخروجـي همـراه بـا نـوع و / ورودي PORTداخل اعالن . باشد مي entityدار و مربوط به عملكرد آن نام يك كلمه معني

    :شود باشد ، به صورت زير نوشته مي مي my_xorكه داراي نام Yو يك خروجي Bو Aبا دو ورودي entityن مثال يك به عنوا. شود مي

    ENTITY my_xor IS PORT ( A : IN BIT; B : IN BIT; Y : OUT BIT ); END my_xor;

    type هاي وروديA وB و همچنينtype خروجيY از نوعBIT )0 باشد مي)  1يا .mode اين سيگنالها باIN ياOUT مشخص شده اسـت .كند را مشخص مي ENTITY، پايان اعالن ENDكلمه رزرو شده . اند دهد ، ورودي يا خروجي كه نشان مي

    كنـد و هـيچ ي را مشـخص مـي تنهـا سـيگنالهاي ورودي و خروجـ entityمطابق آنچه كه در مثال باال آورده شده است ، واضح است كه اعـالن تواند رفتار يك بلوك را توصيف نمي entityدر واقع اعالن . دهد اند، نمي يا اينكه بلوكها چگونه بهم متصل شده entityجزيياتي در مورد رفتار

     Set/Resetاز يك entityاعالن شكل زير،. باشد مي 44كند و تنها به عنوان يك نماي خارجي هسته Latch همـانطور كـه . دهـد ن مـي را نشا .باشد به چه صورت مي latchكند كه ساختار داخلي اين مشخص نمي Set/Reset Latchاي entityشود ، اعالن مشاهده مي

    ). entityاعالن ( VHDLو معادل نماي بيروني آن در SR latchيك : شكل

                                                                ٤٤ core 

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ۴٢ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 42

     افزار هاي توصيف سخت آشنايي با زبان: 1پيوست

    :آمده است NOTو AND ،ORبراي گيتهاي منطقي entityدر زير اعالن

    −− Entity declaration for AND GATE ENTITY and_gate IS PORT ( A , B : IN BIT; Y : OUT BIT); END and_gate; −− Entity declaration for OR GATE ENTITY or_gate IS PORT ( A , B : IN BIT; Y : OUT BIT); END or_gate; −− Entity declaration for NOT GATE ENTITY not_gate IS PORT (A : IN BIT; Y OUT BIT); END not_gate;

    و يـا and_gateبه عنوان مثال بـراي اعـالن . ها را يكجا تعريف كرد ها و يا خروجي توان ورودي شود، مي همانطور كه در اعالن فوق مشاهده ميor_gate وروديهايA وB اند يكجا تعريف شده.

    Architectureقسمت

    نماي entityاعالن 45.كند استفاده مي architectureو حداقل يك بدنه entityشود ، از يك اعالن توصيف مي VHDLيك طرح كه به زبان توصـيف داخلـي . باشـد ، مـي حاوي سـاختار و يـا توصـيف رفتـار آن architectureكند ؛ در صورتيكه بدنه بيروني از يك بلوك را توصيف مي

    :هاي زير مشخص شود تواند به يكي از راه مي

    46مدل ساختاري( اند ها كه توسط يك سري سيگنال به يكديگر متصل شده اي از بلوك مجموعه.(  كه رفتار 47هاي همروند اي از عبارت مجموعهentity 48مدل جريان داده( كند را مشخص مي .(  هاي ترتيبي كه رفتار اي از عبارت مجموعهentity 49مدل رفتاري( كند را مشخص مي .(  تواند بدنه و يا ميarchitecture مدل تركيبي( ، تركيبي از سه روش قبلي باشد .( 

    :بصورت زير است architectureگرامر بدنه . 51ها و قسمت عبارت 50قسمت اعالني. از دو قسمت تشكيل شده است architectureيك بدنه

    ARCHITECTURE architecture−name OF entity−name IS [قسمت اعالني] BEGIN [ ها قسمت عبارت ]

                                                                ٤٥ VHDL داراي اين قابليت است که طراح بتواند براي يک طرح بيش از يک بدنهarchitecture مشخص نمايد ،. ٤٦ Structural modeling ٤٧ Concurrent statements ٤٨ data‐flow modeling  ٤٩ behavioral modeling ٥٠ declarative part  ٥١ statement part 

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ۴٣ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 43

     افزار هاي توصيف سخت آشنايي با زبان: 1پيوست

    END architecture−name;  

    entityتوان از آنها به عنوان شناسه يا اسم يك باشد بنابراين نمي مي VHDLكلماتي كه با حروف بزرگ نوشته شده است جزء كلمات رزرو شده و اعالن بلوكها 52وجود دارد، براي اعالن سيگنالها، نوعهاي تعريف شده توسط كاربر BEGINقسمت اعالني كه قبل از كلمه كليدي . استفاده كرد .گيرد قرار مي ENDو BEGINقسمت عبارتها بين دو كلمه كليدي . شود استفاده مي

    مـدل سـاختاري ، مـدل جريـان : توان اين منطق تركيبي را به يكي از چهار روش يم. دهد را نشان مي 1به 2ساختار يك مالتيپلكسر شكل زير .توصيف نمود VHDLداده ، مدل رفتاري و مدل تركيبي توسط زبان

    AND1

    AND2

    OR1not1

    sel

    input1

    input2output

    and2_out

    and1_out

    . 1به 2ساختار داخلي يك مالتيپلكسر : شكل

    :نوشته شود كه در زير آمده است فوق entityقبل از هر چيزي بايد اعالن

    ENTITY mux2to1 IS PORT ( input1 : IN BIT; output2 : IN BIT; sel : IN BIT; output : OUT BIT ); END mux2to1;

    مدل ساختاري

    صـورت مالتيپلكسـر بـه عنـوان مثـال بـراي توصـيف . شود از اتصال بلوكهاي سازنده مدار استفاده مي VHDLدر توصيف مدل ساختاري در زبان :آمده است شكل فوقدر زير اين نوع توصيف براي مالتيپلكسر . استفاده كرد NOTو AND ،ORساختاري بايد از اتصال گيتهاي منطقي

    ARCHITECTURE structural OF mux2to1 IS COMPONENT and_gate PORT ( A, B : IN BIT; Y : OUT BIT); END COMPONENT; COMPONENT or_gate PORT ( A, B : IN BIT; Y : OUT BIT);

                                                                ٥٢ user‐defined types 

  •  آزمايشگاه معماري كامپيوتر دانشگاه آزاد اسالمي واحد الهيجان

     ۴۴ پور هاني جوان همت و نيما كريم: تهيه شده توسط گروه كامپيوتر –دانشكده فني 44

     افزار هاي توصيف سخت آشنايي با زبان: 1پيوست

    END COMPONENT; COMPONENT not_gate PORT ( A : IN BIT; Y : OUT BIT); END COMPONENT; −− interconnection signal declaration SIGNAL not_sel : BIT; SIGNAL and1_out : BIT; SIGNAL and2_out : BIT; BEGIN not1 : not_gate PORT MAP ( A => sel, Y => not_sel); AND1 : and_gate PORT MAP ( A => input1, B => not_sel, Y => and1_out); AND2 : and_gate PORT MAP ( A => input2, B => sel, Y => and2_out); OR1 : and_gate PORT MAP ( A => and1_out, B => and2_out