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

Задание

По таблице истинности заданной системы логических функций составить VHDL-модель и выполнить моделирование на всех наборах значений входных переменных.

Ход выполнения

  1. Определить для каждой функции системы её форму реализации – прямую или инверсную.

  2. Минимизировать представление функции, применив любой метод минимизации (карты Карно, карты Вейча и т.д.) и записать каждую функцию системы в СДНФ или СКНФ.1

  3. Составить программу, описывающую систему функций, на языке VHDL (см. пример выполнения работы).

  4. Составить тестирующую программу на языке VHDL (см. пример выполнения работы).

  5. Проверить правильность работы программы, запустив её в симуляторе ModelSim в режиме прогона или в пошаговом режиме.

  6. Занести всю необходимую информацию в отчёт.

Пример выполнения

Рассмотрим пример выполнения работы на основе варианта №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) и производим моделирование системы функций. В симуляторе нужно запустить тестирующую программу!