Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
Кафедра БІТ
/
З В І Т
до лабораторної роботи №2
з курсу «Комп’ютерні методи аналізу та проектуванняелектронних засобів»
на тему: «Розроблення VHDL-моделей цифрових автоматів»
Варіант схеми №1
Львів 2020
Мета роботи – ознайомитись з типами даних, об’єктами та базовими конструкціями мови VHDL, навчитись розробляти програмні моделі синхронних цифрових автоматів на мові VHDL.
Завдання
Ознайомитись з теоретичними відомостями.
З поданих нижче варіантів ГСА алгоритму вибрати схему за формулою:
V = ( S mod 7 ) + 1,
де V – номер ГСА (від 1 до 7);
S – номер студента в списку у журналі викладача.
Згідно з варіантом завдання здійснити перехід від ГСА до графа автомата Мілі (для студентів з парними номерами) або Мура (з непарними номерами);
Написати і відкомпілювати в середовищі проектування Aldec Active HDL програмну модель цифрового автомата.
Виконати функціональну симуляцію програмної моделі автомата і замалювати отримані часові діаграми.
/
Рис. 1. ГСА
/
Рис. 2. Граф автомата Мура
Лістинг програми мовою VHDL
library ieee;
use ieee.std_logic_1164.all;
entity Mura is
port (x:in bit_vector(4 downto 0); clk, rst: in bit;
y: out bit_vector (4 downto 1));
end Mura;
architecture lab2 of Mura is
type T_state is (s0, s1, s2, s3, s4);
signal NEXT_state, state: T_state;
begin
NS: process(state, x)
begin
case state is
when s0 =>
if (x(0) = '1')
then NEXT_state <=s0; y<="0000";
elsif ((x(1) and not x(2)) = '1')
then NEXT_state <=s0; y<="0000";
elsif (not (x(0) and x(1) and x(2) and not x(3)) = '1')
then NEXT_state <=s1; y<="0001";
elsif (not (x(0) and x(1) and x(2) and x(3)) = '1')
then NEXT_state <=s2; y<="0010";
elsif (not (x(0) and not x(1)) = '1')
then NEXT_state <=s3; y<="0100";
elsif (not (x(0) and not x(1) and x(4)) = '1')
then NEXT_state <=s4; y<="1000";
end if;
when s1 =>
if(not x(3) = '1')
then NEXT_state <=s1; y<="0001";
elsif (x(3) = '1')
then NEXT_state <=s2; y<="0010";
end if;
when s2 =>
NEXT_state <=s0; y<="0000";
when s3 =>
if(not x(4) = '1')
then NEXT_state <=s3; y<="0100";
end if;
when s4 =>
NEXT_state <=s0; y<="0000";
end case;
end process NS;
state <= s0 when rst ='1'
else NEXT_state when clk'event and clk = '1' else state;
end lab2;
/
Рис. 3. Часові діаграми роботи схеми
Висновок: ознайомився з типами даних, об’єктами та базовими конструкціями мови VHDL, навчитись розробляти програмні моделі синхронних цифрових автоматів на мові VHDL.