16
Таблица 1
Исх. |
Вход |
Сост. |
Вы- |
|
|
рех. |
ход |
|
|
|
|
s1 |
WD |
s2 |
CTD |
|
WD-ПУСК |
s1 |
- |
|
WD-ПУСК- |
s1 |
- |
|
WD-ПУСК- |
s3 |
CTM1 |
|
CT0 |
|
|
s2 |
WD |
s2 |
- |
|
WD |
s1 |
- |
|
|
||
|
|
|
|
s3 |
CT0 |
s3 |
CTM1 |
|
CT0 |
s1 |
- |
|
|
|
|
При реализации регистров состояний и выходов на D-триггерах после до-
определения функций комбинационной части автомата Мили получим:
z1 = WDQ ■ Q2, |
|
z2 = WD ■ PUSK ■ CTO ■ Q2 + CTO ■ Q1, |
|
d1 = WD ■ PUSK ■ CT0 ■ Q2 + CTO ■ Q . |
d2 = WD ■ Q, |
В уравнениях ф и d2 - входы регистра состояний, ъх и z2 регистра выхо-
дов.
1.1. Модель УА Мили
Опишем функции комбинационной части УА на VHDL. --{entity {fgpi} architecture {fgpi}} library IEEE; use IEEE.STD_LOGIC_1164.all; entity fgpi is --
port( wd, pusk, ctO, q1, q2 : in STD_LOGIC; -- d1, d2, z1, z2 : out STD_LOGIC);
-end fgpi;
architecture fgpi of fgpi is –begin -- функции комбинационной части
17
автомата
z1<=wd and (not q1) and (not q2);
z2<=((not wd) and pusk and(not ctO) and (not q2)) or ((not ctO) and q1); d1<=((not wd) and pusk and (not ct0) and (not q2))or ((not ct0) and q1); d2<=wd and (not q1); end fgpi;
Память автомата реализуем на микросхеме ТМ8 - четыре D - триггера с общими входами начальной установки - r и записи по фронту импульса с (Рис.
-- File : TM8.vhd |
|
|
|
|
|
— 2 |
|
|
|
|
|
||
|
|
|
|
|
|
|
--{entity {TM8} architecture {TM8}} |
d1 |
|
T |
q1 |
о- 3 |
|
d2 |
|
|
q2 |
— 7 |
||
|
|
|
|
|||
library IEEE; |
12 |
d3 |
|
|
|
о- 6 |
|
13 |
d_ |
|
|
q3 |
— 1 |
|
9 |
|
|
|
|
0 o- |
|
'c |
|
|
|
||
|
|
|
|
11 |
||
|
|
|
|
|
q4 |
|
|
|
|
|
|
—15 |
|
|
|
|
r |
|
|
|
|
|
|
|
|
о- 14 |
|
|
|
|
|
|
|
|
|
Рис. 22. Микросхема TM8 |
|||||
22). Она так же описана на VHDL. |
|
|
|
|
|
|
use IEEE.STD_LOGIC_1164.all; |
|
|
|
|
|
|
-- |
Объект ТМ8 |
|
|
|
|
|
entity TM8 is |
|
|
|
|
|
|
port( d1, d2, d3, d4, c, r : in STD_LOGIC; |
|
|
|
|
|
|
q1, nq1, q2, nq2, q3, nq3, q4, nq4 : out STD_LOGIC); |
|
|
|
|
|
|
end TM8; |
|
|
|
|
|
|
-- |
Описание архитектуры (функционирование ТМ8) |
|||||
architecture TM8 of TM8 is begin
process (d1, d2, d3, d4, c, r) -- Вычисление процесса только при изменении
-- переменных, перечислены в скобках begin
18
-- Начальная установка при r=1 (RESET) if (r =
'1') then q1<='0'; nq1<='1'; q2<='0'; nq2<='1';
q3<='0'; nq3<='1'; q4<='0'; nq4<='1';
elsif (c'event and c='1' and r='0') -- Так выделяется фронт им-
пульса
-- запись данных по фронту тактового импульса then q1<=d1; nq1<= not d1; q2<=d2; nq2<= not d2; q3<=d3; nq3<= not d3; q4<=d4; nq4<= not d4;
end if; end process; end TM8;
Объединим полученные модели в схему УА, которая в обозначениях AC- TIVE-HDL приведена на рис. Инверсные выходы триггеров не используются
19
Нажав кнопку ^ преобразуем схему в VHDL-текст. Затем выполним
п
реобразуем схему в VH компиляцию полученного VHDL текста (Compile ^ ) и
моделирование авто-
_п_г
мата (Waveform ™ ).
В таблице приведены результаты моделирования управляющего автомата.
Вертикальными линиями помечены моменты формирования выходных сигна-
лов.
Результаты моделирования управляющего автомата Мили
N |
|
S |
i . 5 . i Jp i . 15 i 2.0 i 25 i 3.0 i 35 i +.0 i |
|||||
г |
|
R |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
С |
|
C |
|
оля_алшялялги |
^ЛЯЛЯЛЯЛЛП |
|||
|
|
|
|
|
|
|
|
|
w |
|
W |
г |
|
г |
|
|
|
|
|
P |
|
_г |
|
_г |
|
|
|
|
|
|
|
|
|
|
|
ct |
|
T |
|
|
_г |
|
|
|
ct |
|
|
|
п |
|
п |
|
|
|
|
|
|
|
|
|
|
|
ct |
|
|
|
|
|
|
|
|
м |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
м |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.2. Операционная часть устройства
Для завершения проекта нам нужна модель счетчика, который может ра-
ботать в режиме параллельной записи данных и вычитания и логика для фор-
мирования сигналов. Используем счетчик ИЕ7, УГО которого приведено на рис.
25. Его функционирование также опишем на языке VHDL и выполним мо-
делирование для проверки правильности описания.
-- File : ie7.vhd --{entity {ie7} |
D |
CT16 |
Q |
|
|
15 - 1 1 |
1 |
3 |
|
architecture {ie7}} |
|
|||
- 10 - 2 |
|
2 |
2 |
|
|
|
|||
— Подключение необходимых библиотек |
9 - 3 |
|
3 |
6 |
library IEEE; |
4 |
|
4 |
7 |
11 -cl dw |
|
|
|
|
-- библиотека логических переменных и операций |
|
|
|
|
5 4 |
|
|
|
|
|
~7 cu |
|
wpu t>- 12 |
|
use IEEE.STD_LOGIC_1164.all; |
14 -I |
|
||
u ucd |
|
wpd |
Ё>- |
|
-- библиотеки двоичной арифметики use |
urs |
|
||
|
|
|
||
|
|
13 |
|
|
|
|
|
|
|
IEEE.STD_LOGIC_ARITH.all; use |
Рис. 25. УГО микросхемы ИЕ7 |
|||
|
|
|
|
|
IEEE.STD_LOGIC_UNSIGNED.all;
-- описание портов (входов-выходов) объекта entity ie7 is port(
d1, d2, d3, d4, dw, ucu, ucd,urs: in STD_LOGIC; q1, q2, q3, q4, wpu, wpd : out STD_LOGIC); end ie7;
-- Описание функционирования счетчика architecture ie7 of ie7 is
signal z : STD_LOGIC_VECTOR(0 to 3); -- внутреннее состояние счетчика begin
N: process (d1, d2, d3, d4, dw, ucu, ucd,urs) begin
--Начальная установка сигналов при urs=1 if (urs=T) then z<=(others=>'0') ; wpu<='0'; wpd<='0';
--параллельная запись данных с входов D elsif (urs='0' and dw='0') then z(0)<=d1; z(1)<=d2; z(2)<=d3; z(3)<=d4;
--Режим суммирования
elsif (urs='0' and dw='1' and ucd-1' and ucu'event and ucu='1')
then if(z(0)='1' and z(1)='1' and z(2)='1' and z(3)='1') then wpu<='1'; end if; z <= z + 1 ;
-- Режим вычитания