Проектирование автомата типа Мили
СОДЕРЖАНИЕ
1.Задание…………………………………………………..
3.Абстрактный
синтез автомата…………………………..………
4.Структурный синтез автомата ……………………..…………………..……..7
5. Функциональная схема автомата…………………………………………….9
6.Элементы физического синтеза……………………………………………...10
7.Описание автомата
на языке VHDL…………………………………………
8.Моделирование
на ПК с использованием
9.Заключение………………………………………………
10.Список литературы…………………………
1.
ЗАДАНИЕ
Спроектировать управляющий цифровой автомат типа Мили, функционирующий согласно заданной ГСА. ГСА строится соединением фрагментов (рис. 1) в заданной последовательности (2, 1, 3, 4). Каждая операторная вершина определяет некоторый выходной сигнал. Количество условных вершин в ГСА определяет входной алфавит автомата. Тип используемых триггеров RS.
2.
ВВЕДЕНИЕ
Курсовая работа заключается в решении комплексной задачи синтеза дискретного устройства с памятью по заданным условиям работы на заданной элементной базе. Решение должно быть доведено до функциональной схемы устройства (автомата).
Термин автомат, как правило, используется в двух аспектах. С одной стороны, автомат — устройство, выполняющее некоторые функции без непосредственного участия человека. В этом смысле мы говорим, что ЭВМ — автомат, так как после загрузки программы и исходных данных ЭВМ решает заданную задачу без участия человека. С другой стороны, термин «автомат» как математическое понятие обозначает математическую модель реальных технических автоматов. В этом аспекте автомат представляется как «черный ящик», имеющий конечное число входов и выходов и некоторое множество внутренних состояний Q={q1(t), q2(t),..., qn(t)}, в которые он под воздействием входных сигналов переходит скачкообразно, т. е. практически мгновенно, минуя промежуточное состояние. Конечно, это условие не выполняется в реальности, так как любой переходный процесс длится конечное время.
Цифровой
автомат - устройство, предназначенное
для преобразования цифровой информации.
Входные сигналы в цифровых автоматах
представляются в виде конечного множества
мгновенных сигналов. Теоретически это
означает, что входные сигналы не имеют
длительности, хотя практически это не
так. Такое допущение упрощает рассмотрение
процессов, происходящих в автоматах,
так как все события (состояния) должны
относиться к фиксированному моменту
времени t.
Условно также принимается, что число
выходных сигналов
y(t) конечно и они возникают в результате
действия входных сигналов. При этом следует
учитывать, что одновременно с появлением
выходного сигнала происходит скачкообразный
переход автомата из состояния qi(t) в состояние qj(t).
Понятие состояния автомата используется для описания систем, выходы которых зависят не только от входных сигналов в данный момент времени, но и от некоторой предыстории, т. е. сигналов, которые поступили на входы системы ранее. Состояние автомата соответствует некоторой памяти о прошлом, позволяя устранить время как явную переменную и выразить выходные сигналы как функцию состояний и входных сигналов.
Время для цифрового автомата имеет также важное значение. Для решения задач анализа и синтеза цифровых автоматов обычно вводится автоматное время. Функционирование автомата рассматривается через дискретные интервалы времени конечной продолжительности (интервал дискретности).
Общая
теория автоматов разбивается на
две большие части — абстрактну
В
противоположность абстрактной
теории, в структурной теории автоматов
рассматриваются прежде всего структуры
как самого автомата, так и его входных
и выходных сигналов. В структурной теории
изучаются способы построения автоматов
из элементарных автоматов, способы кодирования
входных и выходных сигналов элементарными
сигналами и т.п.
3.
АБСТРАКТНЫЙ СИНТЕЗ АВТОМАТА
Одной из разновидностей языка, позволяющей описывать логические схемы алгоритмов, является язык граф-схем алгоритмов (ГСА).
Граф-схема алгоритма
— ориентированный связный
Конечная, операторная и условная
вершины имеют по одному входу,
1)
входы и выходы вершин
2) каждый выход соединен только с одним входом;
3) любой вход соединяется, по крайней мере, с одним выходом;
4) любая вершина графа лежит, по крайней мере, на одном пути из начальной к конечной вершине;
5)
в каждой условной вершине
записывается один из
6)
в каждой операторной вершине
записывается один из
Язык ГСА используется очень часто при описании алгоритмов функционирования как самого цифрового автомата, так и программ, выполняющих то или иное действие.
Чтобы построить схему управляющего автомата Мили, нужно задать микропрограмму работы операционного устройства. Микропрограмма
операционного блока имеет вид, представленный на рис.2. Микропрограмма выполняется при начальном условии Н = 1. Блок производит выработку управляющих функциональных сигналов в определённой последовательности, зависящей от значений сигналов A0-A3.
Граф - схема алгоритма (ГСА) Граф автомата Милли
4. СТРУКТУРНЫЙ СИНТЕЗ АВТОМАТА
Структурный синтез предполагает физическую реализацию схемы автомата из выбранного набора логических и запоминающих элементов, которая функционировала бы в соответствии с заданными таблицами переходов и выходов исходного абстрактного автомата.
Для построения автомата используем синхронные RS-триггеры, имеющие следующую таблицу переходов:
| t | t+1 | Примечания | |
| R | S | Q | |
| 0 | 0 | Q(t) | Хранение |
| 0 | 1 | 1 | Установка 1 |
| 1 | 0 | 0 | Установка 0 |
| 1 | 1 | --- | Запрещенное состояние |
Определим количество элементов памяти (триггеров) структурного автомата:
2R – количество различных внутренних состояний структурного автомата
М – мощность алфавита внутренних состояний абстрактного автомата
2R ≥ М
2R ≥ 8 => R = 3
| А | Q1 | Q2 | Q3 |
| a0 | 0 | 0 | 0 |
| a1 | 0 | 0 | 1 |
| a2 | 0 | 1 | 0 |
| a3 | 0 | 1 | 1 |
| a4 | 1 | 0 | 0 |
| a5 | 1 | 0 | 1 |
| a6 | 1 | 1 | 0 |
| a7 | 1 | 1 | 1 |
Для
определения функций
Кодированная таблица переходов и выходов
| H | z1 | z2 | z3 | z4 | исх. сост. | Q1 | Q2 | Q3 | след. сост. | Q1 | Q2 | Q3 | вых.
сигн. |
R3 | S3 | R2 | S2 | R1 | S1 |
| 0 | - | - | - | - | a0 | 0 | 0 | 0 | a0 | 0 | 0 | 0 | - | - | 0 | - | 0 | - | 0 |
| 1 | - | - | - | - | a0 | 0 | 0 | 0 | a1 | 0 | 0 | 1 | V1 | - | 0 | - | 0 | 0 | 1 |
| - | 0 | - | - | - | a1 | 0 | 0 | 1 | a2 | 0 | 1 | 0 | - | - | 0 | 0 | 1 | 1 | 0 |
| - | 1 | - | - | - | a1 | 0 | 0 | 1 | a2 | 0 | 1 | 0 | V2 | - | 0 | 0 | 1 | 1 | 0 |
| - | - | - | - | - | a2 | 0 | 1 | 0 | a3 | 0 | 1 | 1 | V3 | - | 0 | 0 | - | 0 | 1 |
| - | - | 0 | - | - | a3 | 0 | 1 | 1 | a3 | 0 | 1 | 1 | V3 | - | 0 | 0 | - | 0 | - |
| - | - | 1 | - | - | a3 | 0 | 1 | 1 | a4 | 1 | 0 | 0 | V4 | 0 | 1 | 1 | 0 | 1 | 0 |
| - | - | - | - | - | a4 | 1 | 0 | 0 | a5 | 1 | 0 | 1 | V5 | 0 | - | - | 0 | 0 | 1 |
| - | - | - | 0 | - | a5 | 1 | 0 | 1 | a6 | 1 | 1 | 0 | V6 | 0 | - | 0 | 1 | 1 | 0 |
| - | - | - | 1 | - | a5 | 1 | 0 | 1 | a6 | 1 | 1 | 0 | V7 | - | 0 | 0 | 1 | 1 | 0 |
| - | - | - | - | - | a6 | 1 | 1 | 0 | a7 | 1 | 1 | 1 | V8 | - | 0 | - | 0 | 0 | 1 |
| - | - | - | - | 0 | a7 | 1 | 1 | 1 | a7 | 1 | 1 | 1 | V9 | 0 | - | 0 | - | 0 | - |
| - | - | - | - | 1 | a7 | 1 | 1 | 1 | a0 | 0 | 0 | 0 | V10 | 1 | 0 | 1 | 0 | 1 | 0 |
Булевы функции описания выходов схемы и входов триггеров:
V1=a0H
V2=a1z1
V3=a2+ a3
V4= a3z2
V5= a4
V6=a5
V7=a5z3
V8=a6
V9= a7
V10=a7z4
R3= a7z4
S3=a3z2
R2= a7z4+a3z2
S2= a1+a5
R1=a3z2+a5+a7z4+a1
S1=a0H+a2+a4+a6
5. ФУНКЦИОНАЛЬНАЯ СХЕМА АВТОМАТА
6.
ЭЛЕМЕНТЫ ФИЗИЧЕСКОГО
СИНТЕЗА
| Модель | Функция |
| К155ИД12 | Дешифратор на 3 входа и 8 выходов |
| К555ТМ10 | RS-триггер |
| К155ЛЛ1 | 4 лог.эл-та 2ИЛИ х2 |
| К155ИЛ1 | 4 лог.эл-та 2И х3 |
| К155ЛН1 | 3 лог.эл-та НЕ |
7.
ОПИСАНИЕ АВТОМАТА
НА ЯЗЫКЕ VHDL
library IEEE;
use IEEE.STD_LOGIC_1164.all;
------------------------------
entity RS is
port ( R, S, CLK : in bit;
Q : out bit);
end RS;
------------------------------
architecture functional of RS is
constant Delay : Time := 10 ns;
begin
process(CLK)
begin
if (CLK'event) and (CLK = '0') then
if (S = '1') and (R = '0') then Q <= '1' after Delay; end if;
if (S = '0') and (R = '1') then Q <= '0' after Delay; end if;
end if;
end process;
end functional;
------------------------------
entity DC is
port (x0, x1, x2 : in Bit;
va : buffer bit_vector(0 to 7));
end DC;
------------------------------
architecture functional of DC is
constant Delay : Time := 1 ns;
begin
process(x0, x1, x2)
begin
if (X0 = '0') and (X1 = '0') and (X2 = '0') then
va <= "10000000" after
Delay; end if;
if (X0 = '1') and (X1 = '0') and (X2 = '0') then
va <= "01000000" after
Delay; end if;
if (X0 = '0') and (X1 = '1') and (X2 = '0') then
va <= "00100000" after
Delay; end if;
if (X0 = '1') and (X1 = '1') and (X2 = '0') then
va <= "00010000" after
Delay; end if;
if (X0 = '0') and (X1 = '0') and (X2 = '1') then
va <= "00001000" after
Delay; end if;
if (X0 = '1') and (X1 = '0') and (X2 = '1') then
va <= "00000100" after
Delay; end if;
if (X0 = '0') and (X1 = '1') and (X2 = '1') then
va <= "00000010" after
Delay; end if;
if (X0 = '1') and (X1 = '1') and (X2 = '1') then
va <= "00000001" after
Delay; end if;
end process;
end functional;
------------------------------
entity and2 is
port (x1, x2 : in Bit;
y : out Bit);
end and2;
------------------------------
architecture functional of and2 is
constant Delay1 : Time := 2 ns;
constant Delay2 : Time := 1 ns;
begin
process(x1, x2)
begin
if (x1 = '0') or (x2 = '0') then y <= '0' after Delay2;
else y <= '1' after Delay1;
end if;
end process;
end functional;
------------------------------
entity or2 is
port (x1, x2 : in Bit;
y : out Bit);
end or2;
------------------------------
architecture functional of or2 is
constant Delay1 : Time := 2 ns;
constant Delay2 : Time := 1 ns;
begin
process(x1, x2)
begin
if (x1 = '1') or (x2 = '1') then y <= '1' after Delay1;
else y<='0' after Delay2;
end if;
end process;
end functional;
------------------------------
entity not1 is
port (x : in Bit;
y : out Bit);
end not1;
------------------------------
architecture functional of not1 is
constant Delay : Time := 1 ns;
begin
y <= not x after Delay;
end functional;
------------------------------
entity Circuit is
port (CLK, h, z1, z2, z3, z4 : in Bit;
v1, v2, v3, v4, v5, v6, v7, v8, v9, v10 : out Bit);
end Circuit;
------------------------------
architecture structure of Circuit
is
component DC is
port (x0, x1, x2 : in Bit;
va : buffer bit_vector(0 to 7));
end component;
component RS is
port (R, S, CLK : in Bit;
Q : out Bit);
end component;
component and2 is
port (x1, x2 : in Bit;
y : out Bit);
end component;
component not1 is
port (x : in Bit;
y : out Bit);
end component;
component or2 is
port (x1, x2 : in Bit;
y : out Bit);
end component;
signal va : bit_vector(0 to 7);
signal Q1, Q2, Q3 : Bit;
signal R1, S1, R2, S2, R3, S3 : Bit;
signal nz2, nz3, nz4 : Bit;
signal a0H, a1z1, a3z2, a3nz2, a5nz3, a5z3, a7nz4, a7z4: Bit;
signal pr2, ps2, a0a2H, a4a6,
a2a3nz2: Bit;
begin
DD1 : RS port map (R1, S1, CLK, Q1);
DD2 : RS port map (R2, S2, CLK, Q2);
DD3
: RS port map (R3, S3, CLK, Q3);
DD4:
DC port map (Q1, Q2, Q3, va);
DD5 : not1 port map (z2, nz2);
DD6 : not1 port map (z3, nz3);
DD7
: not1 port map (z4, nz4);
DD8_1: and2 port map (nz4,va(7),a7nz4);
DD8_2: and2 port map (z1,va(1), a1z1);
DD8_3: and2 port map (va(0), H, a0H);
DD8_4: and2 port map (va(3), nz2, a3nz2);
DD9_1: and2 port map (va(3), z2, a3z2);
DD9_2: and2 port map (va(5), nz3, a5nz3);
DD9_3: and2 port map (va(5), z3, a5z3);
DD9_4:
and2 port map (va(7), z4, a7z4);
R3 <= a7z4;
S3
<= a3z2;
DD10_1: or2 port map (a7z4, a3z2, pr2);
DD10_2:
or2 port map (va(1), va(5), ps2);
R2 <= pr2;
S2
<= ps2;
DD10_3: or2 port map (pr2, ps2, R1);
DD10_4: or2 port map (a0H, va(2), a0a2H);
DD11_1: or2 port map (va(4), va(6), a4a6);
DD11_2:
or2 port map (a0a2H, a4a6, S1);
DD11_3:
or2 port map (va(2), a3nz2, a2a3nz2);
v1 <= a0H;
v2 <= a1z1;
v3 <= a2a3nz2;
v4 <= a3z2;
v5 <= va(4);
v6 <= a5nz3;
v7 <= a5z3;
v8 <= va(6);
v9 <= a7nz4;
v10 <= a7z4;
end structure;
------------------------------
entity Test_Bench is
end Test_Bench;
------------------------------
architecture Schema of Test_Bench
is
component Circuit is
port (CLK, h, z1, z2, z3, z4 : in Bit;
v1, v2, v3, v4, v5, v6, v7, v8, v9, v10 : out Bit);
end component;
signal CLK, h, z1, z2, z3, z4 : Bit;
signal v1, v2, v3, v4, v5, v6, v7, v8, v9, v10 : Bit;
begin
process
begin
h <= '1' after 150 ns;
z1 <= '1' after 800 ns;
z2 <= '1' after 1600 ns;
z3 <= '1' after 2400 ns;
z4 <= '1' after 3200 ns;
for i in 0 to 10000 loop
CLK <= '0';
wait for 50 ns;
CLK <= '1';
wait for 50 ns;
end loop;
end process;
Avtomat : Circuit port map(CLK, h, z1, z2, z3, z4, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10);
end Schema;
------------------------------
8. МОДЕЛИРОВАНИЕ НА ПК С ИСПОЛЬЗОВАНИЕМ СИМУЛЯТОРА MODELSIM
9.
ЗАКЛЮЧЕНИЕ