Автор работы: Пользователь скрыл имя, 14 Января 2012 в 22:32, курсовая работа
Спроектировать управляющий цифровой автомат типа Мили, функционирующий согласно заданной ГСА. ГСА строится соединением фрагментов (рис. 1) в заданной последовательности (2, 1, 3, 4). Каждая операторная вершина определяет некоторый выходной сигнал. Количество условных вершин в ГСА определяет входной алфавит автомата. Тип используемых триггеров RS.
1.Задание…………………………………………………..……………………...22.Введение………………………………………………………………………..3
3.Абстрактный синтез автомата…………………………..……………….……5
4.Структурный синтез автомата ……………………..…………………..……..7
5. Функциональная схема автомата…………………………………………….9
6.Элементы физического синтеза……………………………………………...10
7.Описание автомата на языке VHDL…………………………………………11
8.Моделирование на ПК с использованием симулятора ModelSim…………17
9.Заключение……………………………………………………………………18
10.Список литературы………………………………………………………….18
Булевы функции описания выходов схемы и входов триггеров:
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.
ЗАКЛЮЧЕНИЕ