Описание и моделирование триггеров и конечных автоматов

Автор работы: Пользователь скрыл имя, 18 Января 2015 в 21:12, лабораторная работа

Описание работы

Задание:
Часть 1. С использованием девятизначного алфавита STD_LOGIC составить VHDL-модель и провести моделирование триггера двумя способами:
по логической схеме триггера (структурное описание);
по таблице функционирования триггера (алгоритмическое описание).

Файлы: 1 файл

LAB_rabota_3 .doc

— 189.50 Кб (Скачать файл)

Министерство образования Республики Беларусь

 

Учреждение образования

Белорусский государственный университет информатики

и радиоэлектроники

 

Факультет заочного обучения

 

Кафедра электронных вычислительных средств

 

 

 

Отчет по лабораторной работе № 3

 

по дисциплине: «Основы проектирования

электронных вычислительных средств»

 

Описание и моделирование триггеров и конечных автоматов

 

 

 

 

Вариант 9

 

 

 

 

 

                            

 

 

 

 

 

 

 

 

 

 


2014

 

Цель работы: Изучить VHDL-модель D-триггера и составить VHDL-модель конечного автомата.

Ход работы

Задание:

Часть 1. С использованием девятизначного алфавита STD_LOGIC составить VHDL-модель и провести моделирование триггера двумя способами:

  • по логической схеме триггера (структурное описание);
  • по таблице функционирования триггера (алгоритмическое описание).

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

Часть 2. С использованием перечислимых типов составить VHDL-модель конечного автомата и провести моделирование двумя способами:

  • с помощью моделирующей программы;
  • с помощью скрипта (в последнем случае предполагается использование системы моделирования ModelSim).

Рекомендуемый порядок выполнения лабораторной работы:

1. Составить структурное (с использованием  оператора port map) описание триггера. Использовать задержки логических элементов 2 ns – 5 ns.

2. Составить алгоритмическое описание. Использовать оператор process и  соответствующие задержки сигналов.

3. Составить тестирующую программу.

4. Провести моделирование обоих  описаний в одной тестирующей  программе.

5. Сравнить результаты моделирования.

6. Составить описание конечного  автомата.

7. Составить тестирующую программу  для моделирования конечного  автомата и провести моделирование.

 

1. Триггер: D-триггер с инверсным синхросигналом

 

 

Рис. 1. D-триггер с инверсным синхросигналом

Таблица функционирования

D-триггера с инверсным синхросигналом

D

C

Q

-

0

(D)

-

1

N


 

Обозначения в таблице функционирования триггера

Через “-” обозначено любое из (0,1) значение сигнала; в квадратных скобках показывается изменение сигнала (обычно синхросигнала), например, через [01] обозначается передний фронт сигнала (сигнал меняется из 0 в 1); через [10] обозначается задний фронт сигнала (сигнал меняется из 1 в 0); символ N обозначает неизменяемое (предыдущее) значение сигнала; символ ^ является знаком инверсии (отрицания).

VHDL-код схемы

library IEEE;

use IEEE.std_logic_1164.all;

entity num1 is

port (D,C:in std_logic ; q: inout std_logic);

end num1;

architecture structure of num1 is

begin

process (C)

begin

if (C='0') then q<=D after 3 ns;

end if;                                                  

end process;

end structure;

 

Тестирующая программа

library IEEE;

use IEEE.std_logic_1164.all;

entity Test_add1 is end Test_add1;

architecture Behavior of test_add1 is

component num1

port (D,C:in std_logic ; q: inout std_logic);

end component;

signal D,C,q:std_logic;

begin 

p0 : num1  port map  (D=> D,C=> D,q=> D);      

D <= '0',             

      '1' after 50 ns,

      '0' after 100 ns,

  '1' after 150 ns,

      '0' after 200 ns,

  '1' after 250 ns,

      '0' after 300 ns;      

C <=  '1',             

      '0' after 25 ns,

      '1' after 50 ns,

  '0' after 75 ns,

      '1' after 100 ns,

  '0' after 150 ns,

      '1' after 175 ns,

  '0' after 225 ns,

      '1' after 250 ns,

      '0' after 275 ns;  

end Behavior; 

 

Временная диаграмма

 

Рисунок 2. Временная диаграмма, соответствующая тестирующей программе

 

 

 

 

 

 

 

 

 

 

Часть 2. VHDL-модель конечного автомата

 

Конечный автомат Мура.

Алфавит состояний A = {a11, a2, a3}. Начальное состояние автомата a1. Входной алфавит Z = {z1, z22, z3}. Выходной алфавит W = {w11, w22 ,w33}.

 

Таблица функционирования

конечного автомата Мура

Входные сигналы

Состояния

 

a11

a2

a3

z1

a3

a2

a11

z22

a11

a2

a3

z3

a3

a11

a3

 

w33

w11

w22

Выходные

сигналы


 

 

VHDL-код схемы

package State is     

type Ast is (a11,a2,a3);    

type Zin is (z1,z22,z3);     

type Wout is (w11,w22,w33); 

end State;

package body State is

end State;

use work.State.all;  

entity Mur is

    port (z : in Zin;

            r_state,clk: in bit; 

            w: out Wout);       

end Mur;

architecture strMur of Mur is

signal n_state, a_state: Ast;

begin                        

    po: process (a_state,z)

    begin

        case a_state is

            when a11=>

                if    (z=z1) then n_state <=a3;

                elsif (z=z22) then n_state<=a11;

                elsif (z=z3) then n_state<=a3;

            end if;

            w<=w33;

            when a2=>

                if    (z=z1) then n_state <=a2;

                elsif (z=z22) then n_state<=a2;

                elsif (z=z3) then n_state<=a11;

            end if;

            w<=w11;

            when a3=>

                if    (z=z1) then n_state <=a11;

                elsif (z=z22) then n_state<=a3;

                elsif (z=z3) then n_state<=a3;

            end if;

            w<=w22;

        end case;

    end process;

Stat:  process(r_state,clk) 

    begin

        if(r_state='1') then a_state<=a11;

        elsif clk'event and clk='1' then

            a_state<=n_state;

        end if;

    end process Stat;

end;

Тестирующая программа

use work.State.all;

entity test_Mur is

end;

architecture strtest of test_Mur is

   component  Mur

    port (z : in Zin;

          r_state,clk: in bit;

          w: out Wout);

end component;

 

signal z: Zin;

signal w: Wout;

signal r_state,clk:bit;

begin

   po: Mur port map (z,r_state,clk,w);

   z<= z1,   z22 after 100 ns,

             z3 after 200 ns,

             z1 after 300 ns,

             z22 after 400 ns,

             z3 after 500 ns;   

   clk<='0', '1' after 50 ns,

             '0' after 200 ns,

             '1' after 250 ns,

             '0' after 300 ns,

             '1' after 350 ns;

   r_state<='0', '1' after 300 ns;           

end;

 

 

 

Временная диаграмма

 

Рисунок 3. Временная диаграмма, соответствующая тестирующей программе

Вывод: составил алгоритмическое описание триггера - работает корректно. Составил VHDL-модель конечного автомата и провеламоделирование - работает корректно.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

vlib work

vcom l4myr.vhd

vsim Mur

add wave *

view wave

force z z1, z22 50ns, z3 100ns -repeat 150ns

force clk '0', '1' 25ns -repeat 50ns

force r_state '0', '1' 300ns

run 500 ns

 

 

 


Информация о работе Описание и моделирование триггеров и конечных автоматов