background image

Laboratorium przedmiotu Podstawy Techniki Cyfrowej 

 

ć

w.3: Synchroniczne automaty sekwencyjne 

 
 
Wprowadzenie: 
 

W  ramach  laboratorium  u

Ŝ

ywana  b

ę

dzie  płyta  uruchomieniowa  Spartan  3A 

firmy  Xilinx  oparta  o  matryc

ę

  FPGA  –  Spartan  XC3S700A. 

Ś

rodowiskiem 

programistycznym u

Ŝ

ywanym podczas laboratorium b

ę

dzie ISE firmy Xilinx  w wersji 

10.1 oraz  wewn

ę

trzna aplikacja ISE – StateCad, słu

Ŝą

ca do projektowania układów 

sekwencyjnych za pomoc

ą

 grafu stanów. 

 
Synteza układu opisanego za pomoc

ą

 grafu stanów: 

 
1)  Stworzenie nowego projektu. File->New Project ... 

Okre

ś

lenie nazwy projektu i lokacji na dysku; 

Wybór Top-level Source type jako HDL (w przypadku projektu, gdzie modułem 
nadrz

ę

dnym  b

ę

dzie  plik  w  j

ę

zyku  Verilog  *.v)  lub  Schematic  (je

Ŝ

eli  modułem 

nadrz

ę

dnym b

ę

dzie plik schematu) ; 

 
2)  Wybór cech matrycy oraz sposobów syntezy i symulacji; 

Family: Spartan 3A

Device: XC3S700A; 

Package: FG484; 

Synthesis Tool: XST; 

Simulator:  ISE Simulator

Preffered Language: Verilog; 

 
3)  Zako

ń

czenie tworzenia projektu; 

Next -> Next-> Finish; 

 
4)  Dodanie pliku typu State Diagram

Project -> New Source -> State Diagram; 

Nadanie nazwy, zaznaczenie Add to Project; 

 
5)  Edycja grafu; 
 

Podczas  edycji  nale

Ŝ

y  stworzy

ć

  kompletny  graf  automatu.  Do  rysowania 

stanów nale

Ŝ

y u

Ŝ

ywa

ć

 opcji Add -> State, do tworzenia przej

ść

 mi

ę

dzy stanami opcji 

Add  ->  Transition  (patrz  rysunek  2).  Dost

ę

p  do  opcji  dowolnego  elementu  grafu 

nast

ę

puje poprzez dwukrotne klikni

ę

cie elementu.  

Opcja  View  ->  Show  Control  Points  wy

ś

wietla  punkty,  za  pomoc

ą

  których 

mo

Ŝ

na definiowa

ć

 kształt elementów grafu.  

Edycja opcji ka

Ŝ

dego stanu lub przej

ś

cia mi

ę

dzy stanami pozwala na dodanie 

warunków dla wyj

ść

 lub przej

ść

 (opis w stylu j

ę

zyka VHDL):  

Pole Outputs zawiera warunki dla wyj

ś

cia, np. 

WY = 

1

’ 

Pole Condition zawiera warunki logiczne, np. 

WE1 = 

0

 or WE2 = 

0

’ 

 

background image

Zaleca si

ę

 dodanie sygnału inicjalizuj

ą

cego (Reset) wymuszaj

ą

cego przej

ś

cie 

do  okre

ś

lonego  stanu  (Opcja  Add  ->  Reset).  Powinien  by

ć

  wybrany  reset 

asynchroniczny. 
6) Kompilacja; 
 

Gotowy  projekt  maszyny  stanu  nie  mo

Ŝ

e  by

ć

  bezpo

ś

rednio  przetwarzany  i 

konieczna jest jego kompilacja, a wcze

ś

niej konfiguracja: 

Ustalanie  j

ę

zyka  wynikowego  kompilacji:  Options  ->  Configuration  -> 

Language -> Verilog; (patrz rys. 1) 

Options -> Configuration -> State Assignment -> One -Hot 

Options -> Configuration -> Optimize -> Speed

Options -> Configuration -> Options -> Wszystko poza Minimize 

Options -> Configuration -> Language Vendor-> XST 

Wła

ś

ciwa kompilacja: Options -> Compile

 

 

rys.1.   Konfiguracja. 
 

W  efekcie  otrzymujemy  plik  w  j

ę

zyku  Verilog  (*.v),  który  nale

Ŝ

y  doda

ć

  do 

projektu  (W edytorze  Project  Navigator  opcja  Project  ->  Add  Source). W przypadku 
problemów zaleca si

ę

 usun

ąć

 z projektu plik grafu (*.dia), doda

ć

 plik w j

ę

zyku Verilog 

ponownie a nast

ę

pnie przywróci

ć

 plik *.dia.  

Nale

Ŝ

y  pami

ę

ta

ć

,  aby  przypisa

ć

  atrybut  Top  Module  (Right  Mouse  Button  -> 

Set  as  Top  Module)  wła

ś

ciwemu  plikowi  najwy

Ŝ

szemu  w  hierarchi  (patrz  instrukcja 

ć

w. 1).  

Podgl

ą

daj

ą

c  zawarto

ść

  dowolnego  pliku  *.v  nale

Ŝ

y  zauwa

Ŝ

y

ć

  deklaracje 

zmiennych  wej

ś

ciowych  i  wyj

ś

ciowych  dla  tego  modułu.  W  przypadku  prostego 

background image

projektu  przedstawionego  na  rys.  2  oprócz  zmiennych  WE  i  WY,  zauwa

Ŝ

y

ć

  mo

Ŝ

na 

zmienne CLK (Zegar)  i RESET

Plik  ogranicze

ń

  *.ucf  (patrz  instrukcja 

ć

w.  1)  nale

Ŝ

y  tworzy

ć

  tylko  dla  modułu 

oznaczonego jako Top Module

 

Je

Ŝ

eli jako zegar u

Ŝ

ywany jest wewn

ę

trzny sygnał prostok

ą

tny o cz

ę

stotliwo

ś

ci 

50 MHz (w praktyce przy tak du

Ŝ

ej cz

ę

stotliwo

ś

ci zegara pozwala to na traktowanie 

układu tak, jakby był on asynchroniczny) to nale

Ŝ

y pami

ę

ta

ć

Ŝ

e dost

ę

pny jest on na 

pinie E12 (patrz instrukcja 

ć

w. 1 -> Tworzenie plików ogranicze

ń

 *.ucf).  

Mo

Ŝ

na oczywi

ś

cie u

Ŝ

ywa

ć

 wewn

ę

trznego sygnału taktuj

ą

cego ze zmniejszon

ą

 

cz

ę

stotliwo

ś

ci

ą

 poprzez np. Digital Clock Manager (DCM_SP) dost

ę

pny np. z edytora 

schematów (Symbols -> Categories -> Symbols -> DCM_SP). 
 

 

rys.2.   Przykładowy projekt. 
 

Je

Ŝ

eli  zegar  ma  by

ć

  dost

ę

pny  z  zewn

ą

trz  np.  za  pomoc

ą

  klawisza  to 

najcz

ęś

ciej  b

ę

dzie  trzeba  uzyskany  kod  w  j

ę

zyku  Verilog  traktowa

ć

  jako  moduł 

podrz

ę

dny  (trzeba  pami

ę

ta

ć

  o  stworzeniu  jego  symbolu  przed  u

Ŝ

yciem  w  module 

głównym  –  po  zaznaczeniu  wybieramy  Processes  ->  Design  Utilities  ->  Create 
Schematic  Symbol
).  Moduł  główny  b

ę

dzie  modułem  schematu  i  w  nim  ustalone 

zostan

ą

  globalne  we/wy,  które  zostan

ą

  u

Ŝ

yte  przy  tworzeniu  pliku  ogranicze

ń

  *.ucf 

(patrz  instrukcja  do 

ć

wiczenia  1).  W  pliku  schematu  sygnał  zegara  powinien  wtedy 

zosta

ć

 doprowadzony do układu poprzez bufor IBUFG, dost

ę

pny w bibliotece symboli 

logicznych  przy  edycji  modułu  schematu  (Symbols  ->  Categories  ->  Symbols  -> 
IBUFG)

 

background image

Zawsze  przed  ko

ń

cow

ą

  kompilacj

ą

  projektu  nale

Ŝ

y  sprawdzi

ć

  poprawno

ść

 

hierarchicznego  usytuowania  plików  projektu  oraz  zale

Ŝ

no

ś

ci  mi

ę

dzy  nimi 

(Implementation -> Sources) !! 
 
Realizacja projektu: 
 

Wszystkie pozostałe etapy realizacji projektu, takie jak tworzenie wynikowego 

pliku  do  zaprogramowania  matrycy  (je

Ŝ

eli  w  trakcie  kompilacji  nie  pojawi  si

ę

  jawny 

ą

d  to  ostrze

Ŝ

enia  mo

Ŝ

na  zignorowa

ć

),  przyporz

ą

dkowanie  sygnałów  WE/WY  do 

pinów matrycy, konfiguracja płyty uruchomieniowej, symulacja itp. wykonywa

ć

 nale

Ŝ

identycznie jak podczas laboratorium nr. 1 (Układy kombinacyjne).  
 
 
Przebieg 

ć

wiczenia: 

 

Celem 

ć

wiczenia  jest  zapoznanie  z  metodami  projektowania  układów 

sekwencyjnych poprzez realizacj

ę

 w/w układów z u

Ŝ

yciem grafu automatu w aplikacji 

StateCAD. 
 
Przygotowanie do laboratorium: 

 

praktyczna znajomo

ść

 sposobów projektowania układów sekwencyjnych; 

praktyczna znajomo

ść

 obsługi 

ś

rodowiska ISE (

ć

w. 1); 

 
Przebieg 

ć

wiczenia i sposób oceniania: 

 

sprawdzanie przygotowania do zaj

ęć

 (max 1 pkt); 

konfiguracja sprz

ę

tu; 

zapoznanie  ze  sposobem  syntezy  automatu  sekwencyjnego  w  aplikacji 
StateCAD; 

analiza postawionych zadania i stworzenie grafów automatów sekwencyjnych; 

przeniesienie  prostego  projektu  do  aplikacji  StateCAD  i  translacja  na  posta

ć

 

modułu Verilog (max 1 pkt); 

symulacja w/w projektu (z wewn

ę

trznym zegarem taktuj

ą

cym) w aplikacji ISE 

Simulator i realizacja na FPGA (max 1 pkt); 

Symulacja  i  realizacja  bardziej  zaawansowanego  automatu  sekwencyjnego  z 
sygnałem zegarem sterowanym przez u

Ŝ

ytkownika (max 2 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

 
Literatura: 

 

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.actel.com/documents/modelsim_tutorial_ug.pdf

  

http://users.ece.gatech.edu/~leehs/ECE3055/homework/modelsim_tut.pdf

  

 

 

- StateCAD Tutorials 

http://toolbox.xilinx.com/docsan/xilinx10/help/iseguide/mergedProjects/state/state.htm

 

 
 
Opracowanie: Mariusz Latos, 2009