Материал: 3963

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

21

elsif (urs='0' and dw='1' and ucu=,1' and ucd'event and ucd=,1') then if(z(0)='0' and z(1)='0' and z(2)='0' and z(3)='0') then wpd<='1'; end if; z <= z - 1 ; end if;

end process N;

q1<=z(0); q2<=z(1); q3<=z(2); q4<=z(3); end ie7;

1.3. Схема генератора пачки импульсов в ACTIVE-VHDL

Для завершения проекта необходимо синтезировать схему ОА и объеди-

нить ее с УА. Так как формальных методов синтеза операционных автоматов нет, то поиск схемы ОА и объединение УА и ОА в общую схему устройства полностью выполняется проектировщиком.

Для поиска схемы ОА необходимо для каждой переменной, которая полу-

чает значения в операторах ГСА, выписать все наборы операций, в результате выполнения которых переменной присваиваются значения. Анализируя наборы операций для каждой переменной, мы можем определить вид операционного устройства. Если используемые при проектировании серии микросхем не со-

держат готовых операционных устройств, то выполняется их разработка.

В нашем примере имеется единственная переменная СТ, которая получа-

ет значения в результате выполнения операторов алгоритма. В ГСА содержатся две операции с этой переменной: присваивание ей значения с шины данных

(CT=D) и вычитание единицы (СТ=СТ-1). Эти операции могут быть реализова-

ны на вычитающем счетчике со входом параллельной записи данных. Если мы возьмем микросхемы 155-й серии, то точно такого устройства не обнаружим,

но эта серия содержит реверсивный счетчик 155ИЕ7. Модель такого счетчика уже реализована. Он обеспечивает параллельную запись 4-х разрядного двоич-

ного кода и работает в режиме вычитания при подаче на вход суммирования высокого уровня напряжения (уровень 1).

Кроме того в операционном автомате необходимо сформировать сигнал СТ=0 равенства нулю содержимого счетчика - его можно получить на элементе

22

4ИЛИ-НЕ.

При объединении УА и ОА следует обеспечить формирование счетных импульсов (ведь УА формирует только сигнал разрешения вычитания СТМ1, а

не сами счетные импульсы).

Полная схема устройства в обозначениях Active-VHDL приведена на рис.

27. УА на схеме показан на структурном уровне. Сигнал разрешения парал-

лельной записи подается на вход W счетчика через инвертор, так как УА фор-

мирует высокий уровень сигнала (1), а в счетчике активным является низкий уровень (0). Значение СТ0 получаем, объединив выходы счетчика на элементе

4ИЛИ-НЕ. Счетные импульсы формируем на выходе элемента 3И-НЕ. На один из его входов поступает сигнал разрешения вычитания из УА (СТМ1), на вто-

рой тактовые импульсы и на третий - инвертированный сигнал СТО. Послед-

ний запрещает прохождение счетных импульсов на вход счетчика при дости-

жении им состояния 0000, что исключает возможные гоночные ситуации в схе-

ме. Инвертированные счетные импульсы служат выходом генератора - той са-

мой пачкой импульсов, которую необходимо сформировать, на схеме она на-

звана imp.

23

После преобразования схемы в VHDL-текст и ее компиляции выпол-

ним моделирование генератора. Результаты моделирования приведены на

рис. 28.

В счетчик последовательно записывались значения пять, (0101), один

(0001), пятнадцать (1111) и ноль (0000). Затем подавалась команда ПУСК.

Модель устройства правильно отработала все режимы.

Если предполагается реализация управляющего автомата на програм-

мируемых логических интегральных схемах (ПЛИС), то нет необходимости описывать автомат как композицию функционального преобразователя и ре-

гистров, а описать на VHDL непосредственно его таблицу переходов и вы-

ходов. Ниже приведены тексты описаний автоматов Мили и Мура для рас-

сматриваемого примера.

Вопросы:

1Создать блоки модели Мура.

2Создать блоки операционной части устройства и протестировать его функ-

ционирование.

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

4Какие из обеспечений САПР задействованы для выполнения задания.

24

Практическое занятие 3. Описание автоматов

3.1. Управляющий автомат по структуре Мили

-- File : uagpi_mili.vhd -- Generated

library IEEE; -- Стандартное описание подключаемых библио-

тек use IEEE.STD_LOGIC_1164.all;

-- Объявление элемента, перечисляются его входы и выходы -- Не забудь-

те вход тактирования и начальной установки (в примере входы с и rs) entity uagpi_mili is port(

wd, pusk, ct0, c, rs : in STD_LOGIC; dst, ctm1 : out STD_LOGIC); end uagpi_mili;

--Далее следует описание архитектуры architecture uagpi_mili of uagpi_mili is

type T_st is (s1,s2,s3); -- объявляется перечислимый тип T_st,

--включающий множество имен состояний автомата signal st, next_st :T_st; -- Объявляются внутренние переменные типа T_st -- st -

текущее состояние автомата и -- next_st - состояние перехода begin

NS: process (st,wd, pusk, ct0, c, rs) begin

if (rs=T) then -- Начальная установка автомата: выходы принимают

-- значение 0, автомат устанавливается в состояние si dst<='0'; ctm1<=,0'; st<=s1; next_st<=s1;

-- Далее переходы автомата по фронту тактового импульса elsif ( c'event and c='1') then -- так на VHDL выделяется фронт импульса case st is

-- Переключатель

when s1=> -- Переходы из состояния s1

-- Обратите внимание, что в УА Мили значения -- вы-

ходным переменным присваиваются в момент перехода if (wd=T) then next_st<=s2; dst<='1'; ctm1<='0'; elsif (wd='0' and

25

pusk='0')

then next_st<=s1; dst<='0'; ctm1<='0'; elsif (wd='0' and pusk-1' and ct0='1')

then next_st<=s1; dst<='0'; ctm1<='0'; elsif (wd='0' and pusk-1' and ct0='0')

then next_st<=s3; dst<='0'; ctm1<='1'; end if;

when s2=> -- Переходы из состояния s2 if (wd='1')

then next_st<=s2; dst<='0'; ctm1<='0'; elsif (wd='0') then next_st<=s1; dst<='0'; ctm1<='0';

end if;

when s3=> -- Переходы из состояния s3 if (ct0='0')

then next_st<=s3; dst<='0'; ctm1<='1'; elsif (ct0='1') then next_st<=s1; dst<='0'; ctm1<='0';

end if;

end

case; st<=next_s t; end if; end process

NS; end uagpi_mili;

3.2. Управляющий автомат по структуре Мура

-- Title : gpimr - File : gpimr.vhd --{entity {gpimr} architecture {gpimr}}

Источник: https://studfile.net/preview/16413995/