- •Введение
- •Работа №1. Описание и моделирование системы логических функций. Основные сведения о языке vhdl
- •Синтаксис основных конструкций и операторов языка vhdl
- •Задание
- •Ход выполнения
- •Пример выполнения
- •Варианты заданий
- •Содержание отчёта
- •Работа №2. Описание и моделирование нерегулярных логических схем. Задание
- •Ход выполнения
- •Пример выполнения
- •Описание логических элементов
- •Содержание отчёта
- •Работа №3. Описание и моделирование регулярных (систолических) схем. Задание
- •Синтаксис основных конструкций и операторов языка vhdl
- •Ход выполнения
- •Пример выполнения
- •Содержание отчёта
- •Приложение 1
- •Список литературы и источников
- •Содержание
Задание
По таблице истинности заданной системы логических функций составить VHDL-модель и выполнить моделирование на всех наборах значений входных переменных.
Ход выполнения
Определить для каждой функции системы её форму реализации – прямую или инверсную.
Минимизировать представление функции, применив любой метод минимизации (карты Карно, карты Вейча и т.д.) и записать каждую функцию системы в СДНФ или СКНФ.1
Составить программу, описывающую систему функций, на языке VHDL (см. пример выполнения работы).
Составить тестирующую программу на языке VHDL (см. пример выполнения работы).
Проверить правильность работы программы, запустив её в симуляторе ModelSim в режиме прогона или в пошаговом режиме.
Занести всю необходимую информацию в отчёт.
Пример выполнения
Рассмотрим пример выполнения работы на основе варианта №30.
Пусть задана таблица истинности трёх функций:
x1 |
x2 |
x3 |
x4 |
y1 |
y2 |
y3 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
Проведём минимизацию функций с помощью карт Вейча:
У1 |
|
|
|
||
|
1 |
1 |
0 |
1 |
|
1 |
1 |
1 |
1 |
|
|
|
0 |
1 |
1 |
1 |
|
1 |
0 |
1 |
1 |
|
|
|
|
|
|
|
У2 |
|
|
|
||
|
1 |
0 |
1 |
1 |
|
1 |
1 |
1 |
1 |
|
|
|
1 |
0 |
1 |
1 |
|
0 |
1 |
1 |
0 |
|
|
|
|
|
|
|
-
У3
1
1
1
0
1
1
1
0
1
1
1
1
1
0
1
0
Запишем функции в СКНФ. Получаем:
Создаём проект (по инструкции из приложения 1) и делаем 2 программы (2 файла по одной программе в каждом) на языке VHDL. В 1-й программе опишем функции, полученные после минимизации:
entity main is описание интерфейса основной программы
port (x1,x2,x3,x4: in bit; описание входных
s1,s2,s3: out bit); и выходных сигналов
end main; конец описания интерфейса основной
программы
architecture fun of main is описание архитектурного тела основной
программы
begin начало описания fun
s1 <= (x1 or (not (x2)) or x3 or (not (x4))) and (x1 or (not (x2))
or (not (x3)) or x4) and ((not (x1)) or x2 or x3 or
(not (x4)));
s2 <= (x1 or x3 or x4) and (x1 or (not (x2)) or (not (x3)) or
(not (x4))) and ((not (x1)) or (not (x2)) or x3 or
(not (x4)));
s3 <= (x2 or x3 or x4) and ((not (x1)) or x2 or x4) and (x1 or (not
(x2)) or x3 or (not (x4)));
end fun; конец описания fun
Напишем 2-ю (тестовую) программу для описанной выше программы main.
entity test_main is описание интерфейса
end test_main; тестирующей программы
architecture behavior of test_main is описание архитектурного тела
тестирующей программы
component main описание компонента
port (x1, x2, x3, x4:in bit; описание входных
s1, s2, s3: out bit); и выходных сигналов компонента
end component; конец описания компонента
signal x1, x2, x3, x4:bit; описание внутренних сигналов
signal y1, y2, y3:bit; тестирующей программы
begin начало описания behavior
p1: main port map (x1, x2, x3, x4, описание связи переменных main
y1, y2, y3); и переменных test_main
(сокращённое)
x1<='0', задание значений и временных
'0' after 50 ns, интервалов для сигнала x1
'0' after 100 ns,
'0' after 150 ns,
'0' after 200 ns,
'0' after 250 ns,
'0' after 300 ns,
'0' after 350 ns,
'1' after 400 ns,
'1' after 450 ns,
'1' after 500 ns,
'1' after 550 ns,
'1' after 600 ns,
'1' after 650 ns,
'1' after 700 ns,
'1' after 750 ns;
x2<='0', задание значений и временных
'0' after 50 ns, интервалов для сигнала x2
'0' after 100 ns,
'0' after 150 ns,
'1' after 200 ns,
'1' after 250 ns,
'1' after 300 ns,
'1' after 350 ns,
'0' after 400 ns,
'0' after 450 ns,
'0' after 500 ns,
'0' after 550 ns,
'1' after 600 ns,
'1' after 650 ns,
'1' after 700 ns,
'1' after 750 ns;
x3<='0', задание значений и временных
'0' after 50 ns, интервалов для сигнала x3
'1' after 100 ns,
'1' after 150 ns,
'0' after 200 ns,
'0' after 250 ns,
'1' after 300 ns,
'1' after 350 ns,
'0' after 400 ns,
'0' after 450 ns,
'1' after 500 ns,
'1' after 550 ns,
'0' after 600 ns,
'0' after 650 ns,
'1' after 700 ns,
'1' after 750 ns;
x4<='0', задание значений и временных
'1' after 50 ns, интервалов для сигнала x4
'0' after 100 ns,
'1' after 150 ns,
'0' after 200 ns,
'1' after 250 ns,
'0' after 300 ns,
'1' after 350 ns,
'0' after 400 ns,
'1' after 450 ns,
'0' after 500 ns,
'1' after 550 ns,
'0' after 600 ns,
'1' after 650 ns,
'0' after 700 ns,
'1' after 750 ns;
end behavior; конец описания behavior
Далее запускаем симулятор (см. инструкцию в приложении 1) и производим моделирование системы функций. В симуляторе нужно запустить тестирующую программу!