Мета: Вивчити принципи роботи постійного запам'ятовуючого пристрою (ПЗП). Отримати навички застосування масивів при створенні проектів у 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;
Короткий теоретичний опис та функціональна схема ПЗП
Запам'ятовуючі пристрої (ЗП) цифрової техніки призначені для запису, зберігання та видачі інформації, що представляється у вигляді цифрового коду. При цьому є і така інформація, яка не повинна змінюватись, наприклад, константи, табличні значення, коефіцієнти перетворень і т.ін. Така інформація записується у постійний запам'ятовуючий пристрій, для якого дозволяється тільки зчитування інформації, яка в нього занесена.
В ПЗП за кожною n-розрядною адресою записане одне завчасно визначене m-вимірне слово. Таким чином, ПЗП є перетворювачем коду адреси в код слова, тобто комбінаційною схемою з n входами та m виходами.
Накопичувач ПЗП апаратно виконується у вигляді системи взаємно-перпендикулярних шин, на перетині яких або присутній (логічна 1), або відсутній (логічний 0) елемент, що пов'язує між собою відповідні горизонтальну та вертикальну шини. Вибірка слів виконується за допомогою дешифратора.
VHDL-код опису ПЗП
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_UNSIGNED.all;
entity PZP is
port(
CEO : in STD_LOGIC;
Addr : in STD_LOGIC_VECTOR(3 downto 0);
Dout : out STD_LOGIC_VECTOR(3 downto 0)
);
end PZP;
--}} End of automatically maintained section
architecture PZP of PZP is
type A is array (15 downto 0) of STD_LOGIC_VECTOR(3 downto 0);
constant Word:A:=("0011",
"0111"
,"0000"
,"1011"
,"1001"
,"0001"
,"0110"
,"1010"
,"0101"
,"1111"
,"1010"
,"0010"
,"0100"
,"1011"
,"1101"
,"1100");
begin
process (Addr)
begin
if CEO='1' then
Dout <= Word(Conv_Integer(Addr));
end if;
end process;
end PZP;
Результати моделювання у вигляді часових діаграм
Результат у табличній формі за допомогою ListView
Висновок: На даній лабораторній роботі я вивчила принципи роботи постійного запам'ятовуючого пристрою (ПЗП) i отримав навички застосування масивів при створенні проектів у Active-HDL.