Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРМПП.doc
Скачиваний:
49
Добавлен:
07.02.2016
Размер:
8.14 Mб
Скачать

7.2 Хід роботи

7.2.1 На основі КФ ПСТ складіть VHDL-проект. Він складається з трьох логічних файлів:

AUTOMAT.VHD – файл верхнього рівня, що включає всі основні компоненти керуючого автомата;

COMBINE.VHD – файл опису комбінаційної схеми;

MEMORY.VHD – файл опису пам'яті автомата;

На рис.7.3 показана ієрархія зв'язків між логічними файлами проекту. В листингах 7.1– 7.3 наведені тексти програм.

Рисунок 7.3 – Організація VHDL-проекту

Листинг 7.1 – Файл AUTOMAT.VHD

library IEEE;

use IEEE.std_logic_1164.all;

-- декларативна частина

entity AUTOMAT is

port (

CLK: in STD_LOGIC;

RESET: in STD_LOGIC;

x: in STD_LOGIC_VECTOR (1 to 4);

y: out STD_LOGIC_VECTOR (1 to 6)

);

end AUTOMAT;

-- виконавча частина

architecture AUTOMAT_BEH of AUTOMAT is

-- компоненти COMBINE і MEMORY

component COMBINE

port (

T: in STD_LOGIC_VECTOR (1 to 3);

D: out STD_LOGIC_VECTOR (1 to 3);

x: in STD_LOGIC_VECTOR (1 to 4);

y: out STD_LOGIC_VECTOR (1 to 6)

);

end component;

component MEMORY

port (

CLK : in STD_LOGIC;

RESET: in STD_LOGIC;

D : in STD_LOGIC_VECTOR (1 to 3);

T : out STD_LOGIC_VECTOR (1 to 3)

);

end component;

-- сигнали D і T

signal D : STD_LOGIC_VECTOR (1 to 3);

signal T : STD_LOGIC_VECTOR (1 to 3);

begin

-- правила підключення компонентів COMBINE і MEMORY

DD1 : COMBINE

port map (

T => T,

D => D,

x => x,

y => y

);

DD2 : MEMORY

port map (

CLK => CLK,

RESET => RESET,

T => T,

D => D

);

end AUTOMAT_BEH;

Листинг 7.2 – Файл COMBINE.VHD

library IEEE;

use IEEE.std_logic_1164.all;

-- декларативна частина

entity COMBINE is

port (

T: in STD_LOGIC_VECTOR (1 to 3);

x: in STD_LOGIC_VECTOR (1 to 4);

D: out STD_LOGIC_VECTOR (1 to 3);

y: out STD_LOGIC_VECTOR (1 to 6)

);

end COMBINE;

-- виконавча частина

architecture COMBINE_BEH of COMBINE is

begin

RUN: process (T, x)

begin

-- стан a1

if T = "000" then

D <= "001";

-- стан a2

elsif T = "001" and STD_LOGIC_VECTOR'(x(1) & x(2) & x(3)) = STD_LOGIC_VECTOR'("100") then

D <= "001";

elsif T = "001" and STD_LOGIC_VECTOR'(x(1) & x(2)) = STD_LOGIC_VECTOR'("11") then

D <= "100";

elsif T = "001" and STD_LOGIC_VECTOR'(x(1) & x(2) & x(3)) = STD_LOGIC_VECTOR'("101") then

D <= "101";

elsif T = "001" and x(1) = '0' then

D <= "011";

-- стан a3

elsif T = "100" then

D <= "010";

-- стан a4

elsif T = "101" and x(2) = '0' then

D <= "000";

elsif T = "101" and x(2) = '1' then

D <= "111";

-- стан a5

elsif T = "010" and x(2) = '0' then

D <= "000";

elsif T = "010" and x(2) = '1' then

D <= "111";

-- стан a6

elsif T = "011" and x(4) = '0' then

D <= "010";

elsif T = "011" and STD_LOGIC_VECTOR'(x(3) & x(4)) = STD_LOGIC_VECTOR'("11") then

D <= "011";

elsif T = "011" and STD_LOGIC_VECTOR'(x(3) & x(4)) = STD_LOGIC_VECTOR'("01") then

D <= "110";

-- стан a7

elsif T = "111" then

D <= "110";

-- стан a8

elsif T = "110" then

D <= "000";

end if;

end process;

-- формування мікрокоманд

y <= "000000" when T = "000" else -- стан a1

"101000" when T = "001" else -- стан a2

"011000" when T = "100" else -- стан a3

"000100" when T = "101" else -- стан a4

"100100" when T = "010" else -- стан a5

"010000" when T = "011" else -- стан a6

"000010" when T = "111" else -- стан a7

"000001" when T = "110" else -- стан a8

"000000";

end COMBINE_BEH;

Листинг 7.3 – Файл MEMORY.VHD

library IEEE;

use IEEE.std_logic_1164.all;

library ACT2;

use ACT2.components.all;

-- декларативна частина

entity MEMORY is

port (

CLK : in STD_LOGIC;

RESET: in STD_LOGIC;

D : in STD_LOGIC_VECTOR (1 to 3);

T : out STD_LOGIC_VECTOR (1 to 3)

);

end MEMORY;

-- виконавча частина

architecture MEMORY_BEH of MEMORY is

-- компоненти

for DD1 : DFC1B use entity ACT2.DFC1B;

for DD2 : DFC1B use entity ACT2.DFC1B;

for DD3 : DFC1B use entity ACT2.DFC1B;

begin

-- правила підключення компонента DFC1B

DD1 : DFC1B

port map (

CLK => CLK,

D => D(1),

Q => T(1),

CLR => RESET

);

-- правила підключення компонента DFC1B

DD2 : DFC1B

port map (

CLK => CLK,

D => D(2),

Q => T(2),

CLR => RESET

);

-- правила підключення компонента DFC1B

DD3 : DFC1B

port map (

CLK => CLK,

D => D(3),

Q => T(3),

CLR => RESET

);

end MEMORY_BEH;

Рекомендовані зміни програм:

Файл AUTOMAT.VHD – ширина шин D і T однакова. Вона дорівнює розрядності коду стану автомата.

Файл COMBINE.VHD – ширина шин D і T дорівнює розрядності коду стану автомата. Правила формування функцій збудження D і функцій виходу Y повинні відповідати КФ ПСТ.

Файл MEMORY.VHD – кількість компонентів - тригерів дорівнює розрядності коду стану автомата.

7.2.2 Запустіть САПР Active-HDL. В своєму робочому каталозі створіть робочий простір і проект з ім'ям LAB4N, де N – номер індивідуального завдання. Наприклад, LAB42 – ім'я проекту, якщо N = 2.

7.2.3 У вікні Design Browser виберіть піктограму Add New File (додати новий файл). У вікні, що з'явилося, виберіть режим VHDL Source File.

7.2.4 За допомогою редактора HDE додайте в проект свої версії файлів AUTOMAT.VHD, COMBINE.VHD і MEMORY.VHD.

7.2.6 У вікні Design Browser знайдіть піктограму опису об'єктів файлу AUTOMAT.VHD (AUTOMAT (AUTOMAT_BEH)). Клацніть правою кнопкою на ній і в контекстному меню виберіть команду Set as Top-Level.

7.2.7 Виконайте компіляцію проекту. Якщо будуть знайдені помилки, внесіть виправлення і повторіть компіляцію.

7.2.8 Збережіть зміни у файлі VHDL-програми і, натискуючи кнопку Compile All with File Reorder, виконайте компіляцію проекту, що відновлює ієрархію логічних файлів. Якщо синтаксичних помилок в програмі немає, то у вікні Console з'явиться повідомлення "Compile success 0 Errors 0 Warnings ...". Якщо є помилки, то виправте їх і спробуйте ще раз.

7.2.9 В головному меню САПР виберіть пункт Tools Code2Graphics Conversion Wizard. З'явиться вікно майстра перетворення тексту програми в логічну схему пристрою (рис.1.7).

7.2.10 В першому вікні виберіть режим "Generate diagram files and add them to current design" (синтезувати файли зображення і додати їх в поточний проект). Клацніть кнопку Next.

7.2.11 В наступному вікні клацніть кнопку Add і, тримаючи натиснутою клавішу <SHIFT>, виберіть файли AUTOMAT.VHD і MEMORY.VHD. Імена цих файлів будуть додані в список. Клацніть кнопку Finish.

7.2.12 У вікні Design Browser поряд з вже існуючими файлами проекту повинні з'явитися файли AUTOMAT.BDE і MEMORY.BDE – логічні схеми відповідних компонентів.

7.2.13 Відкрийте ці файли (рис.7.4).

а – файл AUTOMAT.BDE; б – файл MEMORY.BDE

Рисунок 7.4 – Результат роботи майстра Code2Graphics Conversion Wizard

7.2.14 Перевірте логічні схеми. Якщо є помилки, то виправте текст VHDL-програм і повторіть запуск майстра Code2Graphics.

7.2.15 Складіть тестову послідовність вхідних сигналів і програму випробувального стенду (test bench). В якості зразка використовуйте файл MOORE_TB.VHD (листинг 1.2).

7.2.16 У вікні Design Browser знайдіть піктограму опису об'єктів файлу mooreN_tb.vhd (moore_tb (tb_architecture)). Клацніть правою кнопкою на ній і в контекстному меню виберіть команду Set as Top-Level.

7.2.17 Натиснувши кнопку Compile All with File Reorder, виконайте компіляцію проекту з налагодженням ієрархії логічних файлів. Якщо синтаксичних помилок в програмі нема, то у вікні Console з'явиться повідомлення "Compile success 0 Errors 0 Warnings ...". Якщо є помилки, то виправте їх і повторіть спробу ще раз.

7.2.18 Клацніть кнопку New Waveform. З'явиться вікно часової діаграми (ЧД), розділене на дві частини по горизонталі.

7.2.19 В лівій частині ЧД клацніть правою кнопкою миші і в контекстному меню виберіть команду Add signals (додати сигнали).

7.2.20 Додайте у ЧД сигнали x, CLK, RESET, у.

7.2.21 Виконайте компіляцію проекту. Якщо будуть знайдені помилки, внесіть виправлення і повторіть компіляцію.

7.2.22 В головному меню виберіть команду Simulation Initialize Simulation (почати моделювання).

7.2.23 В комбінованому списку управління кроком моделювання встановіть величину кроку автоматного часу – 50ns.

7.2.24 Натискуючи кнопку <F5>, виконайте покрокове відлагодження. У вікні часових діаграм відображатимуться зміни сигналів.

7.2.25 Результати трасування повинні співпадати з тими, що були отримані під час виконання лабораторної роботи №1 (рис.1.11). Якщо поведінка автомата відрізняється від очікуваного, внесіть зміни в VHDL-проект і повторіть спробу.

7.2.26 Правильно працюючий VHDL-проект автомата покажіть викладачу.

7.3 Зміст звіту

  1. Титульний лист з номером студентського квитка і варіанту індивідуального завдання. Мета роботи.

  2. Мнемонічна і кодована форми структурної таблиці МПА Мілі.

  3. Розрахунок параметрів проекту на ПЛМ(s,t,q).

  4. Реалізація логічної схеми ШМК і ШНС на ПЛМ.

  5. Текст VHDL-програм і ЧД результатів моделювання.

  6. Висновки.