Міністерство освіти і науки України
Національний університет «Львівська Політехніка»
Кафедра ЕОМ
/
ЗВІТ
до лабораторної роботи №6
з дисципліни «Моделювання комп’ютерних систем»
на тему : Проектування постійного запам'ятовуючого пристрою
Мета роботи: Вивчити принципи роботи постійного запам'ятовуючого пристрою (ПЗП). Отримати навички застосування масивів при створенні проектів у Active-HDL.
Теоретична частина
В VHDL масив інтерпретується як тип, значення якого складається з ряду елементів єдиного підтипу. Кожен елемент масиву відрізняється своїм індексом або рядом індексів (в багатовимірних масивах). Індекс масиву повинен мати порядковий тип і знаходитись в області допустимих значень. Таким чином, перш ніж застосовувати масив у VHDL, необхідно задекларувати тип масиву, а потім задекларувати масив як об'єкт:
type array_type_name is array index_range of element_type;
variable array_name: array_type_name [:= initial_values];
Приклад одновимірного масиву:
type A is array (5 downto 0) of bit;
variable B : A := "011001";
Для багатовимірного масиву порядок і структура оголошення масиву залишаються така ж сама, наприклад
type A is array (1 to 3, 1 to 2) of integer;
variable B : A := ((0 , 1),(5 , 2),(7, 8));
У наведених прикладах замість ключового слова variable може стояти signal або constant.
При декларуванні типу масиву дозволяється не визначати його розмірність. Такі типи масивів називаються необмеженими. В цьому випадку розмірність вказується при декларуванні масиву, як об'єкта:
type arr_type is array (index_type range <>) of elements_type;
variable arr_name: arr_type (index_range) [:= initial_val];
де index_type - тип індексів масиву (integer, natural, і т.п.).
Багатовимірні необмежені масиви і їх типи оголошуються аналогічно. Наприклад:
type multy is array (integer range <>, bit range <>, ... , boolean range <>) of elements_type;
Код програми:
library IEEE;
use IEEE.std_logic_1164.all;
entity DC is
port(
Addr : in STD_LOGIC_vector(3 downto 0);
CEO : in STD_LOGIC;
Dout : out STD_LOGIC_vector(3 downto 0)
);
end DC;
architecture DC of DC is
type A is array(15 downto 0) of STD_LOGIC_VECTOR(3 downto 0);
constant B : A := ("0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111");
begin
process(CEO,Addr)
begin
if(CEO='1') then
case (Addr) is
when"0001"=>Dout<=B(1);
when"0010"=>Dout<=B(2);
when"0100"=>Dout<=B(4);
when"1000"=>Dout<=B(8);
when others=>Dout<=B(15);
end case;
end if;
end process;
end DC;
Рис.1 Діаграма роботи ROM.
Висновок. На даній лабораторній роботі я вивчив принципи роботи постійного запам'ятовуючого пристрою (ПЗП). Отримав навички застосування масивів при створенні проектів у Active-HDL.