Главная страница
Навигация по странице:

  • Лабораторна робота № 2

  • Тема

  • Завдання на лабораторну роботу

  • Хід проектування: Складаємо карту кодування операцій

  • Опис операції

  • Код програми: Поведінкова модель

  • Результати симуляції

  • Лічильник команд


    Скачать 120.44 Kb.
    НазваниеЛічильник команд
    Дата10.11.2018
    Размер120.44 Kb.
    Формат файлаdocx
    Имя файлаTDCSlab2.docx
    ТипЛабораторна робота
    #56016

    kpi-best

    МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ

    НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ

    «КИЇВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ ІМ. ІГОРЯ СІКОРСЬКОГО»

    КАФЕДРА ОБЧИСЛЮВАЛЬНОЇ ТЕХНІКИ

    Лабораторна робота №2
    з дисципліни «Технології проектування
    комп’ютерних систем»

    на тему: «Лічильник команд»


    Виконав:

    студент 4-го курсу

    факультету ФІОТ

    групи ІО-53

    Кращук Р. О.

    НЗК 5316
    Перевірив:

    проф. Сергієнко А. М.

    Київ 2018

    Тема: Лічильник команд.

    Мета та основні завдання роботи: оволодіти знаннями і практичними навичками з проектування таких комбінаційних пристроїв з пам'яттю, як лічильник команд (ICTR). Лабораторна робота також служить для оволодіння навичками програмування та налагодження опису тригерів і логічних схем на мові VHDL.

    Завдання на лабораторну роботу: розробити ICTR для 24-розрядних операндів, який працює за наведеними нижче умовами:

    Функції ICTR

    Додаткові умови

    M – без змін

    R - скидання

    WR – запис адреси довгого переходу

    +D – додавання адресу

    +1, +2, +4, +8

    Розрядність А – 24

    Стан лічильника після скидання – 16*32 = 512

    Розрядність D – 8

    Виконати описання поведінкової моделі. Провести аналіз отриманих графіків роботи схем.


    Хід проектування:


    Складаємо карту кодування операцій ICTR:

    Опис операції

    МО

    F2F1F0

    Без змін

    М

    0 0 0

    +1

    +1

    0 0 1

    +2

    +2

    0 1 0

    +8

    +8

    0 1 1

    Скидання

    R

    1 0 1

    Запис

    WR

    1 1 0

    Додавання

    +D

    1 1 1


    Код програми:
    Поведінкова модель:

    use CNetwork.all;

    library ieee;

    use ieee.numeric_bit.all;
    entity ICTR is

    port(CLK : in BIT;

    R : in BIT;

    WR: in BIT;

    D : in BIT_VECTOR(12 downto 0);

    F : in BIT_VECTOR(2 downto 0);

    A : out BIT_VECTOR(15 downto 0)

    );

    end ICTR;
    architecture BEH of ICTR is

    signal RG: BIT_VECTOR(2 downto 0);

    signal SM: BIT_VECTOR(3 downto 0);

    signal CTR:BIT_VECTOR(15 downto 3);

    signal CTRi:SIGNED(16 downto 0);

    begin

    -- SUM ------------------------------------------

    SUM:SM<= INT_TO_BIT( (BIT_TO_INT(RG)+ BIT_TO_INT(F)),4);

    -- RG -------------------------------------------

    R_3:process(R,CLK)

    begin

    if R='1' then

    RG<="000";

    elsif CLK='1' and CLK'event then

    case F is

    when "001"|"010"|"011"|"100"=>RG<=SM(2 downto 0);

    when "101" => RG<="000";

    when "110" => RG<=D(2 downto 0);

    when others=> null;

    end case;

    end if;

    end process;

    -- CT -------------------------------------------

    CT:process(CLK,R)

    begin

    if R='1' then

    CTRi<="00000000101100000";--11*32=352=0001 0110 0000

    elsif CLK='1' and CLK'event then

    if F="101" then

    CTRi<="00000000111100000";

    elsif F="110" then

    CTRi(15 downto 3)<= "0000"&SIGNED(D(12 downto 3));

    elsif F="111" then

    CTRi <= CTRi + SIGNED(D(12 downto 0));

    elsif (F(2) = '0' or F="100") and SM(3) ='1' then

    CTRi<= CTRi+1;

    end if;

    end if;
    end process;

    CTR<= BIT_VECTOR(CTRi(15 downto 3));

    A<=CTR&RG;

    end BEH;

    Результати симуляції:

    Скидання: (51210 = 20016)




    Без змін:


    Запис:


    +D:


    +1:


    +2:


    +3:



    написать администратору сайта