Instrukcja TC cw3 cw4 synch asy Nieznany

background image

Laboratorium przedmiotu Technika Cyfrowa

ćw.3 i 4: Asynchroniczne i synchroniczne automaty sekwencyjne



1. Implementacja asynchronicznych i synchronicznych maszyn stanu w języku
VERILOG:

Maszyny stanu w języku VERILOG implementuje się najczęściej za pomocą

instrukcji sterującej case. Przykładowa implementacja takiej maszyny została
pokazana w listingu 1:

listing 1

background image

Analizując kod widać, że blok always wykonywany jest przy zmianie każdej ze
zmiennych wejściowych (x1, x2), przy zmianie stanu oraz zmianie sygnału reset, czyli
w pełni asynchronicznie. Nie ma tutaj żadnego zegara. Jeśli sygnał reset zostanie
ustawiony w stan wysoki zerowany jest obiekt state informujący o stanie, w którym
się maszyna znajduje, tzn. maszyna stanu jest ustawiana w stan s0 (zakodowany
jako 2’b00). Jeśli natomiast sygnał reset przyjmuje wartość zero, wykonywany jest
blok case (o ile nastąpi zmiana x1, x2 lub state). Zakładając, że maszyna znajduje
się w stanie początkowym (s0), o ile wejścia nie zostaną ustawione na x1=1, x2=0,
maszyna pozostaje w stanie s0. Jeśli natomiast wejścia zostaną ustawione na
x1=1,x2=0, to maszyna przechodzi do stanu s1. Podobną analizę można
przeprowadzić dla każdego kolejnego stanu. Wgłębiając się w kod można również
zauważyć, iż wyjścia maszyny ustawiane są w konkretnym stanie i nie zależą
bezpośrednio od wejść, lecz tylko od stanu. Jest to automat sekwencyjny Moore’a.

Automat Mealy’ego różni się nieznacznie w kodzie języka VERILOG od

automatu Moore’a. Wystarczy usunąć fragmenty kodu ustawiające wyjścia z bloku
instrukcji case i wprowadzić poza blokiem always przypisania ciągłe ustawiające
wyjścia w zależności od stanu i wejść. Należy pamiętać również o zmianie typu
obiektów wyjściowych na wire. Zmodyfikowany kod przedstawiony został na kolejnym
listingu 2.

Synchroniczne automaty sekwencyjne implementuje się w sposób bardzo

podobny. W automacie Moore’a wystarczy właściwie zmienić tylko listę wrażliwości
tak, aby ciało bloku always było wykonywane przy narastającym zboczu sygnału
reset i narastającym zboczu sygnału zegarowego (w zależności od wymagań może
być również zbocze opadające jak i obydwa). Przykładową implementację takiej
maszyny pokazuje kolejny listing 3.

W

przypadku

synchronicznego

automatu

Mealy’ego

stany

ustalane

synchronicznie, natomiast wyjścia zależą od synchronicznego stanu i wejść, które
mogą być synchroniczne lub asynchroniczne. W przypadku wejść synchronicznych
(względem tego samego zegara, co zegar automatu) automat Mealy’ego zachowuje
się dokładnie tak jak automat Moore’a, natomiast powstaje problem przy wejściach
asynchronicznych względem zegara maszyny. Mogą wystąpić wtedy przekłamania
na wyjściu. W przypadku, gdy się nie można na nie zgodzić należy albo dokonać
synchronizacji (wprowadzić synchroniczne przerzutniki typu D na wszystkie wejścia)
albo też zrezygnować z automatu Mealy’ego i przejść na automat Moore’a.
W listingu 4 podano przykład synchronicznego automatu Mealy’ego.

background image

listing 2


background image

listing 3

background image

listing 4


2. Sposób kodowania stanów:

Jedną z najważniejszych rzeczy przy projektowaniu automatu synchronicznego jest
wybór kodowania stanów. Kilka z nich przedstawione zostało poniżej:

• kodowanie binarne (sekwencyjne),
• kodowanie One-Hot (gorąca jedynka),
• kodowanie Gray’a,
• kodowanie Johnson’a.


Na optymalny wybór kodowania składa się nie tylko wielkość logiki potrzebnej na
implementację automatu, lecz rownież szybkość jego wykonywania przy
implementacji sprzętowej. Znajdując optymalne kodowanie stanów stosując np.
kodowanie sekwencyjne może się okazać przy drobnej modyfikacji automatu, iż
wybrane kodowanie nie jest już optymalne i trzeba szukać ponownie. O wiele
lepszym rozwiązaniem jest stosowanie kodowania typu One-Hot. Polega ono na
zakodowaniu stanów w taki sposób, że dla każdego stanu tylko jeden bit w słowie
kodującym jest w stanie wysokim. Ilustruje to następujący przykład:


Obecne narzędzia syntezujące kod VERILOG posiadają możliwość przekodowania
maszyny stanów. Tak jest np. w narzędziu XST (Xilinx Synthesis Technology), które
bądź zoptymalizuje kodowanie użytkownika, bądź też dokona zmiany kodowania na
inne. Wyboru sposobu kodowania można dokonać również ręcznie. Trzeba do tego
celu przed nazwą obiektu, w którym będzie zapisywany aktualny stan wstawić ciąg
znakow: (* FSM_ENCODING="<typ kodowania>" *). Pole <typ kodowania> może
przyjąć następujące wartości:

• AUTO
• ONE-HOT
• GRAY
• COMPACT
• JOHNSON

background image

• SEQUENTIAL
• USER


3. Bezpieczna implementacja maszyny stanu:

Przy projektowaniu maszyn stanu zwykle istnieją dwa przeciwstawne sobie cele.
Pierwszym z nich jest uzyskanie maszyny stanu, która po otrzymaniu nieoczekiwanej
sekwencji wejściowej potrafi przejść do pewnego znanego bezpiecznego stanu.
Implementacja ta jest zwykle dość wolna i wymaga kodowania binarnego, co kłóci się
czasem z innym celem, a mianowicie z uzyskaniem szybkiej implementacji maszyny
stanu. Dlatego też rezygnuje się w niektórych sytuacjach z takiej implementacji na
koszt prędkości. Stosując do syntezy modułów VERILOGa XST można wybrać
sposób syntezy wybranej maszyny. Podobnie jak przy wyborze kodowania stanów
maszyny

należy

przed

zmienną

stanu

podać

ciąg

znaków:

(* SAFE_IMPLEMENTATION="YES", SAFE_RECOVERY_STATE="s0" *), gdzie s0
jest znanym stanem do ktorego maszyna przechodzi w przypadku nieznanej
sekwencji wejściowej.

4. Przebieg ćwiczenia:

Celem ćwiczenia jest zapoznanie studenta ze sposobem implementacji
asynchronicznych i synchronicznych maszyn stanu w języku VERILOG, jak również
ze szczegółami związanymi z ich syntezą.

Przygotowanie do laboratorium:

 praktyczna znajomość sposobów projektowania układów kombinacyjnych;
 umiejętność optymalizacji funkcji logicznych;
 znajomość podstaw języka VERILOG;


Przebieg ćwiczenia i sposób oceniania:


 sprawdzanie przygotowania do zajęć (max 1 pkt);
 zrealizowanie zadań postawionych przez prowadzącego (max 4 pkt);


* podczas ćwiczenia każda sekcja tworzy osobny protokół z przebiegu ćwiczenia

Protokół:

Protokół powinien zawierać:

 nazwiska osób wykonujących ćwiczenie;
 tytuł i numer ćwiczenia;
 poprawny numer grupy i sekcji;
 komentarze przedstawiające postęp w realizacji ćwiczenia oraz wszelkie

niezbędne do zrealizowania ćwiczenia notatki;





background image

5. Literatura:

http://toolbox.xilinx.com/docsan/xilinx10/books/docs/qst/qst.pdf

- ISE 10.1 Quick Start Tutorial

http://direct.xilinx.com/direct/ise10_tutorials/ise10tut.pdf

- ISE In-Depth Tutorial

http://www.xilinx.com/support/documentation/boards_and_kits/ug334.pdf

- Spartan-3A/3AN FPGA Starter Kit Board User Guide

http://www.xilinx.com/support/documentation/boards_and_kits/s3astarter_schematic.
pdf

- Spartan-3A/3AN Starter Kit Board Schematic

http://www.xilinx.com/support/documentation/user_guides/ug331.pdf

- Spartan-3 Generation FPGA User Guide



Opracowanie: Jan Staniek, Edycja: Mariusz Latos, 2011


Wyszukiwarka

Podobne podstrony:
instrukcja PTC cw3 sekwencyjne synch
OS gr03 cw4 id 340946 Nieznany
cw3 rezystancja id 123348 Nieznany
opracowanie et cw4 id 338175 Nieznany
Biostatystyka cw3 i cw4
AKO lab2012 cw4 id 53975 Nieznany (2)
4 multimetr cyfrowy cw4 id 608 Nieznany
cw3 11 id 123275 Nieznany
instrumenty zadania sb nd id 21 Nieznany
Instrukcje do lab lab4 tem7 imp Nieznany
Cw3 formularz id 123314 Nieznany
Instrukcja bhp 2013 2014 id 215 Nieznany
instrukcje z MN cw3
Instrukcja do upp MR id 216615 Nieznany
Instrukcje do lab lab7 tem4 PT1 Nieznany
Cw3 Badanie czwornikow pasywnyc Nieznany
Instrukcje do lab lab6 tem3 nap Nieznany
GRI cw4 id 195769 Nieznany
cw3 cw4 cw1, OPRACOWANIE TEORETYCZNE

więcej podobnych podstron