МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИНАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІНСТИТУТ КОМП’ЮТЕРНОЇ ТЕХНІКИ АВТОМАТИКИ ТА МЕТРОЛОГІЇ
ЗВІТ ЛАБОРАТОРНОЇ РОБОТИ №6
З ПРЕДМЕТУ: «Моделювання комп'ютерних систем»
ТЕМА: «Проектування постійного запам'ятовуючого пристрою»
Підготувала: студентка групи КІ-21
Петруняк Марта
Перевірив: Колодчак О.М.
Львів – 2012
Мета: Вивчити принципи роботи постійного запам'ятовуючого пристрою (ПЗП). Отримати навички застосування масивів при створенні проектів у Active-HDL.
Теоретичні відомості
Функціональна схема ПЗП та його короткий опис:
В ПЗП за кожною n-розрядною адресою записане одне завчасно визначене m-вимірне слово. Таким чином, ПЗП є перетворювачем коду адреси в код слова, тобто комбінаційною схемою з n входами та m виходами.
Накопичувач ПЗП апаратно виконується у вигляді системи взаємно-перпендикулярних шин, на перетині яких або присутній (логічна 1), або відсутній (логічний 0) елемент, що пов'язує між собою відповідні горизонтальну та вертикальну шини. Вибірка слів виконується за допомогою дешифратора.
Основні теоретичні відомості про використання масивів в 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;
use IEEE.STD_LOGIC_UNSIGNED.all;
entity rom is
port(
CEO : in STD_LOGIC;
Addr : in STD_LOGIC_VECTOR(4 downto 0);
Dout : out STD_LOGIC_VECTOR(4 downto 0)
);
end rom;
--}} End of automatically maintained section
architecture rom of rom is
type TMEM is array (31 downto 0) of STD_LOGIC_VECTOR(4 downto 0);
constant MEM: TMEM:=( "00001", "00010", "00011", "00100",
"00101", "00110", "00111", "01000",
"01001", "01010", "01011", "01100",
"01101", "01110", "01111", "10000",
"10001", "10010", "10011", "10100",
"10101", "10110", "10111", "11000",
"11001", "11010", "11011", "11100",
"11101", "11110", "11111", "00000" );
begin
process(Addr)
begin
if CEO='1' then
Dout<=MEM(Conv_Integer(Addr));
end if;
end process;
end rom;
Висновки: виконавши дану лабораторну роботу, я вивчила принципи роботи постійного запам'ятовуючого пристрою (ПЗП) та отримала навички застосування масивів при створенні проектів у Active-HDL.