ELC VHDL cz 1

background image

I

T
P

W

ZPT

1

Języki opisu
sprzętu:

 Firmowe -

Najpopularniejszym i z opracowanym standardem

jest - VHDL

Elementy języka VHDL

 Uniwersalne

-

(AHDL,

ABEL)

stosowane wyłącznie

w systemach danej
firmy

stosowane coraz powszechniej
w różnych systemach,

równolegle

z językami firmowymi

(VHDL, Verilog)

background image

I

T
P

W

ZPT

2

Język VHDL

V

ery high speed integrated circuit

H

ardware

D

escription

L

anguage (

VHDL

)

przemysłowy standard języka HDL

Kolejne wersje normy IEEE Std 1076: 1987, 1993

Powszechnie stosowany w
specyfikacjach
układów cyfrowego
przetwarzania sygnałów:

background image

I

T
P

W

ZPT

3

Język VHDL

 Zawiera użyteczne konstrukcje semantyczne

umożliwiające zwięzłą specyfikację złożonych
układów cyfrowych

 Projekt może być opisany hierarchicznie (na

wielu poziomach)

 Możliwe jest korzystanie z biblioteki gotowych

elementów i tworzenie podukładów (tzw.
komponentów)

background image

I

T
P

W

ZPT

4

Jednostka projektowa

DESIGN ENTITY

JEDNOSTKA PROJEKTOWA reprezentuje fragment układu
cyfrowego;

ma dobrze zdefiniowane wejścia i wyjścia; spełnia ściśle
określoną funkcję

Może mieć dowolny stopień złożoności – od prostej bramki do
systemu!!!

ARCHITECTURE
BODY

FUNKCJE
I DZIAŁANIE

Blok architektury

ENTITY
DECLARATION

WEJŚCIE/WYJŚCIE
PARAMETRY

Deklaracji jednostki

background image

I

T
P

W

ZPT

5

Specyfikacja jednostki

Specyfikacja
logiczna

Te same nazwy

Deklaracje
We/Wy

Sekcja
specyfika
cji

To samo
co
w pliku
halfadd.v
hd

entity HALFADD is
port (A,B : in bit;
SUM, CARRY : out bit);
end HALFADD;

architecture BEHAVE of HALFADD is
begin
SUM <= A xor B;
CARRY <= A and B;
end BEHAVE;

A
B

A
B

SUM

CARRY

Halfadd:

background image

I

T
P

W

ZPT

6

Jednostka projektowa języka

VHDL

entity

architecture

architecture

architecture

Komunikacja
z otoczeniem

Działanie układu

background image

I

T
P

W

ZPT

7

Deklaracja jednostki

entity HALFADD is

port (A,B : in bit;

SUM, CARRY : out bit);

end HALFADD;

 

 

Deklaracja
wyprowadzeń: 

 nazwy sygnałów
 tryby
 typy danych 

A

B

SUM

CARRY

Komunikacja
z otoczeniem

background image

I

T
P

W

ZPT

8

Tryby wyprowadzeń

entity HALFADD is

port (A,B : in bit;

SUM, CARRY : out bit);

end HALFADD;

Tr

y

b

y

p

o

rt

u

in - wejściowy

out - wyjściowy

inout - dwukierunkowy

buffer - wyjściowy z możliwością
odczytu

Tryby

background image

I

T
P

W

ZPT

9

Tryb

Tryb

In

In

In

Out

Buffer

Out

Inout

Tryby wyprowadzeń…

background image

I

T
P

W

ZPT

10

Typ danych

entity HALFADD is

port (A,B : in bit;

SUM, CARRY : out bit);

end HALFADD;

 

Typy

danych:

Typ danych

bit, bit_vector, integer,
Boolean

background image

I

T
P

W

ZPT

11

Blok
architektury

 
architecture BEHAVE of HALFADD is
begin
SUM <= A xor B;
CARRY <= A and B;
end BEHAVE; 

Style specyfikacji
 funkcjonalny (behavioralny)
  przepływ danych (dataflow)
  strukturalny

Działanie lub

budowa

A

B

SUM

CARRY

Architektura opisuje sposób działania jednostki

(entity) lub jej budowę (strukturę).

VHDL wyraźnie odróżnia opis działania od opisu

struktury

background image

I

T
P

W

ZPT

12

Style
specyfikacji

behavioralny

Specyfikowane jest działanie układu bez podania
szczegółów realizacyjnych
  przepływ danych (dataflow)

Opis w postaci tzw. instrukcji przypisania
reprezentowanych wyrażeniami logicznymi
  strukturalny

Specyfikowana jest budowa układu. W opisie podane
są komponenty oraz połączenia między nimi.

background image

I

T
P

W

ZPT

13

Deklaracja jednostki

entity nazwa_jednostki is

end nazwa_jednostki;

Paramery ogólne (generics) umożliwiają
projektowanie parametryzowanych wzorców
układów

deklaracja wyprowadzeń: port
(lista)

deklaracja parametrów ogólnych: generic
(lista)

background image

I

T
P

W

ZPT

14

Blok architektury

architecture nazwa_arch of
nazwa_jednostki is

begin

end nazwa_arch;

Definicje i deklaracje:
(typów, podtypów, stałych,
sygnałów, komponentów,
konfiguracji)

instrukcje przypisania

procesy (instrukcje
sekwencyjne)

komponenty

background image

I

T
P

W

ZPT

15

Moduły systemowe wspomagające
specyfikację…

Pakiet

jest modułem do deklarowania i definiowania

obiektów danych, typów, komponentów, funkcji i
procedur przeznaczonych do stosowania w wielu
jednostkach projektowych

.

…dostępne dla wielu jednostek projektowych
to

biblioteki i pakiety.

Biblioteka

to zbiór zanalizowanych pakietów i

jednostek projektowych przechowywanych w danym
systemie operacyjnym i dostępnych bezpośrednio wg
nazwy logicznej (nie jest to nazwa katalogu w tym
systemie).

background image

I

T
P

W

ZPT

16

Dostęp do biblioteki i jej

pakietów…

LIBRARY library_name;
USE
library_name.package_name.all;

Dostęp do pakietu osiąga się deklaracją:

Biblioteka systemowa
IEEE

background image

I

T
P

W

ZPT

17

Biblioteka systemowa IEEE

IEEE to najważniejsza biblioteka zawierająca
pakiety ze standardowymi typami danych.
Odwołanie do tej biblioteki a także polecenie use
umożliwiające dostęp do standardowego pakietu:
Std_Logic_1164 musi poprzedzać każdą
jednostkę projektową.

LIBRARY IEEE;
use IEEE.Std_Logic_1164.all;

background image

I

T
P

W

ZPT

18

Elementy strukturalne języka

VHDL

Słowa kluczowe
Identyfikatory
Obiekty danych
Operatory
Atrybuty
Instrukcje

background image

I

T
P

W

ZPT

19

Obiekty danych

Dane liczbowe i alfanumeryczne są
przechowywane w obiektach danych. Z
punktu widzenia syntezy wyróżnia się trzy
klasy obiektów:

 sygnał – signal

 zmienne – variable

 stałe – constant

Odpowiednikiem sprzętowym sygnału jest ścieżka

w układzie scalonym.
Zmienna nie ma odpowiednika sprzętowego i służy

do obliczeń na wyższym poziomie abstrakcji.

Klasa deklarowana jest przed nazwą obiektu
np.:

signal s1, s2 : bit;
variable u: integer range 0 to 127;

background image

I

T
P

W

ZPT

20

Pojęcie typu danych

Język VHDL jest silnie zorientowany na typy
danych.
Każdy obiekt musi mieć zdefiniowany typ i może
przechowywać dane tylko tego typu.

signal signal_name : type_name ;

Przy operacji przypisania sygnałów, typy danych
po każdej stronie operatora przypisania muszą
być zgodne

variable nazwa_zm: typ_zm [ograniczenia]

constant nazwa : typ := wartość;

background image

I

T
P

W

ZPT

21

Typy danych

BIT, BIT_VECTOR,

STD_LOGIC,

STD_LOGIC_VECTOR

,

(STD_ULOGIC),

SIGNED, UNSIGNED, INTEGER,

ENUMERATION, BOOLEAN

Wyróżnia się 10 typów danych:

background image

I

T
P

W

ZPT

22

Standardowe typy danych

STD_LOGIC, STD_LOGIC_VECTOR

LIBRARY IEEE;
use IEEE.Std_Logic_1164.all;

STD_LOGIC: 0, 1, Z, –, L, H, U, X, W

STD_LOGIC_VECTOR jest tablicą obiektów z STD_LOGIC

background image

I

T
P

W

ZPT

23

Składnia

obiekt’atrybut[(parametr)];

Atrybuty

Dostarczają dodatkowych informacji o
obiektach (np.. sygnałach, zmiennych, typach
lub komponentach)

If Clock’event and Clock = ‘1’ then Q := D;

Najczęściej stosowany atrubut:

‘event – równy TRUE, gdy zachodzi zmiana wartości sygnału,

background image

I

T
P

W

ZPT

24

Instrukcje

Współbieżne (Concurrent assignment statement)

Sekwencyjne (Sequential assignment statement) 

WSPÓŁBIEŻNE I
SEKWENCYJNE

background image

I

T
P

W

ZPT

25

Instrukcje

Współbieżne:

Zachowanie układu jest niezależne od kolejności
instrukcji przyporządkowania sygnałów.

Stosowane w specyfikacji typu „przepływ danych”

(dataflow description).

Sekwencyjne: 

Instrukcje sekwencyjne są stosowane w specyfikacji behawioralnej

(behavioral description).

Przede wszystkim w tzw. procesach (process).

Porządek zapisu instrukcji sekwencyjnych zmienia działanie układu.

background image

I

T
P

W

ZPT

26

(Concurrent Signal Assignment
Statements
)

podstawowe przypisanie do sygnału

(simple signal assignment statement)
warunkowe przypisanie do sygnału
(conditional signal assignmenet statement
)
selektywne przypisanie do sygnału
(selected signal assignment statement
)

– when – else

– with – select

Współbieżne instrukcje

przypisania sygnału

background image

I

T
P

W

ZPT

27

Instrukcja podstawowa

Składnia:

signal_name <= wyrażenie;  

boolowskie lub

arytmetyczne

Typowe zastosowanie:

Realizacje układów kombinacyjnych

background image

I

T
P

W

ZPT

28

Przykład – MUX 4:1

library ieee;

use ieee.std_logic_1164.all;

entity mux is port (

a, b, c, d : in std_logic ;

s: in std_logic_vector (1 downto

0) ;

y: out std_logic ) ;

end mux;

d

s

s

c

s

s

b

s

s

a

s

s

y

0

1

0

1

0

1

0

1

a

b

c

d

M U X

S S

1

0

y

background image

I

T
P

W

ZPT

29

Przykład – MUX 4:1

library ieee;

use ieee.std_logic_1164.all;

entity mux is port (

a, b, c, d : in std_logic ;

s: in std_logic_vector (1

downto 0) ;

x: out std_logic ) ;

end mux;

architecture archmux of mux is
begin

x <= (a and not(s(1)) and not(s(0)))

or (b and not(s(1)) and (s(0))
or (c and (s(1) and not(s(0)))
or (d and (s(1) and (s(0));

 end archmux;

a

b

c

d

M U X

S S

1

0

y

background image

I

T
P

W

ZPT

30

Przykład – MUX grupowy 4:1

a = (a3,a2,a1,a0)

b = (b3,b2,b1,b0)
…………………..

y = (y3,y2,y1,y0)

library ieee;

use ieee.std_logic_1164.all;

entity mux is port (

x:

out std_logic ) ;

a, b, c, d : in std_logic ;

s:

in std_logic_vector (1 downto 0) ;

end mux;

a

b

c

d

M U X

S S

1

0

y

background image

I

T
P

W

ZPT

31

architecture archmux of mux is
begin

x (3) <=

(a(3) and not(s(1)) and

not(s(0)))

or (b(3) and not(s(1)) and (s(0))
or (c(3) and (s(1) and not(s(0)))
or (d(3) and (s(1) and (s(0));

 

x (2) <=

(a(2) and not(s(1)) and

not(s(0)))

or (b(2) and not(s(1)) and (s(0))
or (c(2) and (s(1) and not(s(0)))
or (d(2) and (s(1) and (s(0));

 

x (1) <= (a(1) and not(s(1)) and not(s(0)))

or (b(1) and not(s(1)) and (s(0))
or (c(1) and (s(1) and not(s(0)))
or (d(1) and (s(1) and (s(0));

 

x (0) <= (a(0) and not(s(1)) and not(s(0)))

or (b(0) and not(s(1)) and (s(0))
or (c(0) and (s(1) and not(s(0)))
or (d(0) and (s(1) and (s(0));

 end archmux;

Przykład – MUX grupowy 4:1

background image

I

T
P

W

ZPT

32

signal_name <= value_a when condition1 else

value_b when condition2 else

value_c when condition3 else ...

value_x;

Składnia:

Wyrażenie

boolowskie

Instrukcja warunkowa - when-

else

background image

I

T
P

W

ZPT

33

Przykład – MUX 4:1

library ieee;

use ieee.std_logic_1164.all;

entity mux is port (

a, b, c, d : in

s: in std_logic_vector (1

downto 0) ;

y: out

end mux;

architecture archmux of mux is
begin

y <= awhen (s = ”00”) else
bwhen (s = ”01”) else

c

when (s = ”10”)

else

d;

end archmux;

Dla uzyskania MUX
grupowego wystarczy
zmienić tylko typ
zmiennych w
deklaracji

std_logic_vector (3 downto 0);

std_logic_vector (3 downto
0));

std_logic ;

std_logic ) ;

background image

I

T
P

W

ZPT

34

with sel_sig select

signal_name <= value_a when value1_of_sel_sig ,

value_b when value2_of_sel_sig ,

value_c when value3_of_sel_sig , ...

value_x when last_value_of_sel_sig;

Składnia:

Zmienna wielowartościowa

Instrukcja selektywna - with-

select

Można określać kilka wartości

lub zakres

Wartości nie mogą się

powtarzać

Przykładzik:

with INT_A select

Z <= A when 0,

B when 1 to 3,

C when 4 | 6 |

8,

D when others;

background image

I

T
P

W

ZPT

35

Przykład – MUX 4:1

architecture archmux of mux is
begin
with s select
y <= a when ”00”,
b when ”01”,
c when ”10”,
d when others;
end archmux;

Dla uzyskania MUX
grupowego
wystarczy zmienić
tylko typ zmiennych
w deklaracji

library ieee;

use ieee.std_logic_1164.all;

entity mux is port (

a, b, c, d : in

s: in std_logic_vector (1

downto 0) ;

y: out

end mux;

std_logic_vector (3 downto 0);

std_logic_vector (3 downto
0));

std_logic ;

std_logic ) ;

background image

I

T
P

W

ZPT

36

Ostrzeżenie przed pochopnym

wnioskiem

Można podać wiele przykładów, w których

zastosowanie instrukcji podstawowej

prowadzi do znacznie lepszej implementacji

Jednym z nich jest komparator

background image

I

T
P

W

ZPT

37

Komparator

A

n

B

n

K

„1 z 3”

A < B
A = B
A > B

background image

I

T
P

W

ZPT

38

Komparator

k

k

k

b

a

i

0

0

1

2

3

1

1

2

3

2

2

3

3

3

b

a

i

i

i

b

a

i

i

b

a

i

b

a

B

A

B

A

gt

eq

A = a

3

a

2

a

1

a

0

B =

b

3

b

2

b

1

b

0

A > B =

A < B =

A eq B =
i

3

i

2

i

1

i

0

i

0

i

1

i

2

i

3

a

3

b

3

a

2

b

2

a

1

b

1

a

0

b

0

background image

I

T
P

W

ZPT

39

LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all;

ENTITY compare_8bit IS

PORT (A, B:

IN STD_LOGIC_VECTOR(7 DOWNTO 0);

AeqB, AgtB, AltB: OUT STD_LOGIC );

END compare_8bit;

ARCHITECTURE Behavior OF compare_8bit IS
BEGIN

AeqB <= '1' WHEN A = B ELSE '0';
AgtB <= '1' WHEN A > B ELSE '0';
AltB <= '1' WHEN A < B ELSE '0';

END Behavior;

Komparator wersja 1

background image

I

T
P

W

ZPT

40

LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all;
ENTITY compare_2_8bit IS

PORT (a7,a6,a5,a4,a3,a2,a1,a0:

IN STD_LOGIC;

b7,b6,b5,b4,b3,b2,b1,b0:

IN STD_LOGIC;

AeqB, AgtB, AltB:

OUT STD_LOGIC);

END compare_2_8bit;

ARCHITECTURE Behavior OF compare_2_8bit IS

SIGNAL i7,i6,i5,i4,i3,i2,i1,i0:

STD_LOGIC;

SIGNAL AequalB,AgreaterB,AlesserB: STD_LOGIC;

BEGIN

i7 <= NOT (a7 XOR b7);
i6 <= NOT (a6 XOR b6);
i5 <= NOT (a5 XOR b5);
i4 <= NOT (a4 XOR b4);
i3 <= NOT (a3 XOR b3);
i2 <= NOT (a2 XOR b2);
i1 <= NOT (a1 XOR b1);
i0 <= NOT (a0 XOR b0);

Komparator wersja 2

background image

I

T
P

W

ZPT

41

AequalB <= i7 AND i6 AND i5 AND i4 AND i3 AND i2 AND i1 AND i0;
AgreaterB <= (a7 AND (not b7)) OR (i7 AND a6 AND (not b6))
OR (i7 AND i6 AND a5 AND (not b5))
OR (i7 AND i6 AND i5 AND a4 AND (not b4))
OR (i7 AND i6 AND i5 AND i4 AND a3 AND (not b3))
OR (i7 AND i6 AND i5 AND i4 AND i3 AND a2 AND (not b2))
OR (i7 AND i6 AND i5 AND i4 AND i3 AND i2 AND a1 AND (not b1))
OR (i7 AND i6 AND i5 AND i4 AND i3 AND i2 AND i1 AND a0 AND
(not b0));
AlesserB <= NOT (AequalB OR AgreaterB);

AeqB <= AequalB;
AgtB <= AgreaterB;
AltB <= AlesserB;

END Behavior;

Komparator wersja 2 c.d.

background image

I

T
P

W

ZPT

42

Wersja 1:

MAX 7000: 48 makrokomórek, 27
expanderów
FLEX:

20 komórek

Wersja 2:

MAX 7000: 32 makrokomórki, 15
expanderów
FLEX: 13 komórek

Specyfikacja za pomocą
instrukcji podstawowej
prowadzi do dużo lepszej
implementacji!!!

Realizacje komparatora

background image

I

T
P

W

ZPT

43

Instrukcje sekwencyjne

Instrukcje sekwencyjne są stosowane w
specyfikacji behawioralnej (behavioral
description)

Przede wszystkim w tzw. procesach
(process)

Proces

Instrukcja IF

Instrukcja CASE

background image

I

T
P

W

ZPT

44

Proces

Name :

PROCESS (sensitivity_list)

BEGIN

Instrukcja sekwencyjna #1

Instrukcja sekwencyjna #2

.......

Instrukcja sekwencyjna # N

END PROCESS

name

;

Składnia:

Process ( )

begin

..

end process

Lista czułości

Instrukcje sekwencyjne są
wykonywane kolejno
jedna po drugiej

Etykieta jest opcjonalna

background image

I

T
P

W

ZPT

45

 Konstrukcja wykonywana równolegle
 Występuje wewnątrz architektury
 Zawiera opis behawioralny
 Instrukcje wewnętrzne wykonywane są

sekwencyjnie

 Zawiera:

listę czułości (ang. sensitivity list);
jest to lista sygnałów, których zmiana powoduje
aktywację procesu

Procesy

background image

I

T
P

W

ZPT

46

if warunek then

sekwencja_instrukcji1

{elsif warunek then

sekwencja_instrukcji2 }

[else

sekwencja_instrukcji3]

end if ;

 Jest to instrukcja sekwencyjna
 Część elsif może wystąpić dowolną liczbę

razy

 Część else nie musi wystąpić
 Może być zagnieżdżana
 Składnia:

Instrukcja warunkowa if then

else

background image

I

T
P

W

ZPT

47

 Instrukcja sekwencyjna
 Podobna do instrukcji with select
 Można określać kilka wartości lub zakres
 Wartości nie mogą się powtarzać
 Składnia (przykład):

case zm_wielow is

when wybór1 => sekwencja1_instrukcji ;
when wybór2 => sekwencja2_instrukcji ;
[when others => sekwencja3_instrukcji ; ]

end case;

Instrukcja wyboru - case

background image

I

T
P

W

ZPT

48

entity mux is port(
a, b, c, d: in bit;
s: in bit_vector(1 downto 0);

y: out bit);

end mux;

architecture archmux1 of mux is
begin
mux4_1: process (a, b, c, d, s)

begin
if s = "00" then

y <= a;

elsif s = "01" then

y <= b;

elsif s = "10" then

y <= c;
else
y <= d;
end if;

end process mux4_1;

end archmux1;

architecture archmux2 of mux is
begin

y <= a when (s = "00") else
b when (s = "01") else
c when (s = "10") else
d;

end archmux2;

Archmux1 i Archmux2

a

b

c

d

M U X

S S

1

0

y

background image

I

T
P

W

ZPT

49

architecture archmux3 of mux is
begin

process (a,b,c,d,s)
begin

case s is

when "00" => y<= a;

when "01" => y<= b;

when "10" => y<= c;

when "11" => y<= d;

end case;

end process;

end archmux3;

architecture archmux4 of mux is
begin

with s select
y <= a when "00",
b when "01",
c when "10",

d when "11";

End archmux4;

Archmux3 i Archmux4

background image

I

T
P

W

ZPT

50

Architecture archmux5 of mux is
Begin
y <= (a and not(s(1)) and
not(s(0)))
OR (b and not(s(1)) and s(0))
OR (c and s(1) and not(s(0)))
OR (d and s(1) and s(0));
end archmux5;

Archmux5

background image

I

T
P

W

ZPT

51

architecture archmux6 of mux is
begin
mux4_1: process (a, b, c, d, s)

begin

if s = "00" then

y <= a;

end if;
if s = "01" then

y <= b;

end if;
if s = "10" then

y <= c;

end if;
if s = "11" then

y <= d;

end if;

end process mux4_1;

end archmux6;

Archmux6

background image

I

T
P

W

ZPT

52

Archmux1 i Archmux2

A

B

C

D

S 1

S 0

N

0

D

N

0

C

N

0

B

X

background image

I

T
P

W

ZPT

53

Archmux3 i Archmux4

A

B

C

D

S 1

S 0

X

N

0E

N

0D

N

0C

N

0B

background image

I

T
P

W

ZPT

54

Archmux5

A

B

C

D

S 1

S 0

X

background image

I

T
P

W

ZPT

55

Archmux6

A

B

C

D

S 1

S 0

N

0

D

N

0

H

N

0

G

N

0F

N 0 A

N 0 E

X

background image

I

T
P

W

ZPT

56

Synteza układów

sekwencyjnych

VHDL umożliwia bezpośrednią
reprezentację automatu (układu
sekwencyjnego). Tablicę przejść-wyjść
można bezpośrednio przetłumaczyć na
specyfikację VHDL.

Wszystkie inne metody, polegające
na oddzielnej syntezie części
kombinacyjnej, a następnie na
dołączaniu do niej rejestru,

nie mają sensu

background image

I

T
P

W

ZPT

57

Zasady specyfikacji automatu

 Stany automatu są reprezentowane przez typ

wyliczeniowy, którego wartości są nazwami
stanów

 Synchronizm zapewnia odpowiednie wyrażenie

testujące zbocze sygnału zegarowego

 Funkcje przejść wyjść są realizowane

instrukcjami CASE, IF THEN wewnątrz PROCESU

 Specyfikacja jedno- lub dwu-procesowa
 Wyjątkiem w stosowaniu typu wyliczeniowego

jest automat ze stanami kodowanymi przez
użytkownika

background image

I

T
P

W

ZPT

58

Typ wyliczeniowy

Typ wyliczeniowy (enumeration type) może być definiowany przez użytkownika.

Przykład:
type MY_STATE is (State1, State2, State3, State4);
...
signal STATE : MY_STATE;
STATE <= State1;
 

background image

I

T
P

W

ZPT

59

Składnia

obiekt’atrybut[(parametr)];

Atrybuty

Dostarczają dodatkowych informacji o
obiektach (np.. sygnałach, zmiennych, typach
lub komponentach)

If Clock’event and Clock = ‘1’ then Q := D;

Najczęściej stosowany atrubut:

‘event – równy TRUE, gdy zachodzi zmiana wartości sygnału,

background image

I

T
P

W

ZPT

60

Przykład: automat Moore’a

x = 0

x = 0

x = 0

x = 1

x = 1

x = 1

A/z = 0

B/z = 0

C/z = 1

Rst

x

s

0

1

z

A

A

B

0

B

A

C

0

C

A

C

1

background image

I

T
P

W

ZPT

61

Automat: jednostka deklaracji

LIBRARY ieee;
USE ieee_std_logic_1164.all;

ENTITY automacik IS

PORT (Clock, Rst, x : IN

STD_LOGIC;

z

: OUT STD_LOGIC);

END automacik;

background image

I

T
P

W

ZPT

62

ARCHITECTURE funkcja_przejsc OF automacik IS

TYPE State_type IS (A, B, C);
SIGNAL Q : State_type;

BEGIN

PROCESS (Rst, Clock)
BEGIN
IF Rst = '0' THEN

Q <= A;

ELSIF (Clock'EVENT AND Clock = '1') THEN

CASE Q IS

WHEN A =>

IF x = '0' THEN Q <=A; ELSE Q

<= B;

END IF;

WHEN B =>

IF x = '0' THEN Q <= A; ELSE Q

<= C;

END IF;

WHEN C =>

IF x = '0' THEN Q <= A; ELSE Q

<= C;

END IF;

END CASE;

END IF;
END PROCESS;
z <= '1' WHEN Q = C ELSE '0';

END funkcja_przejsc;

Automat - wersja I

Deklaracja typu i sygnału

Zerowanie

asynchronicz-ne

Synchronizacja

background image

I

T
P

W

ZPT

63

ARCHITECTURE funkcja_przejsc OF simple IS

TYPE State_type IS (A, B, C);
SIGNAL Q_present, Q_next : State_type ;

BEGIN
PROCESS (x, Q_present)
BEGIN

CASE Q_present IS

WHEN A =>

IF x = '0' THEN Q_next <= A; ELSE Q_next

<= B;

END IF;

WHEN B =>

IF x = '0' THEN Q_next <=A; ELSE Q_next

<= C;

END IF;

WHEN C=>

IF x = '0' THEN Q_next <= A; ELSE Q_next

<= C;

END IF;

END CASE;

END PROCESS;

PROCESS (Clock, Rst)
BEGIN

IF Rst = '0'

THEN Q_present <= A;

ELSIF (Clock'EVENT AND Clock = '1') THEN

Q_present <= Q_next;

END IF;

END PROCESS;
z <= '1' WHEN Q_present = C ELSE '0';

END funkcja_przejsc;

Automat Moore’a - wersja II

P

r

o

c

e

s

k

o

m

b

i

n

a

c

y

j

n

y

Proces
sekwencyjny

background image

I

T
P

W

ZPT

64

Automat

Wejścia

Stan następny
(next_state)

Stany bieżące
(present_state)

Układ

kombinacyjny

Przerzut-

niki

Proces

Kombinacyjny

Case

If Then

Else

Proces

Sekwencyjn

y

CLK’EVENT

and

CLK=‘1’

background image

I

T
P

W

ZPT

65

Automaty w komercyjnych kompilatorach VHDL
raczej nie są realizowane optymalnie jak też nie
zawsze są realizowane na minimalnej liczbie
przerzutników

Nasz automat w opcji FPGA na trzech przerzutnikach !!!

Problem kodowania stanów

Specyfikacja automatu: ciekawostka o

procesie kompilacji

Ucieczka przed skomplikowaniem
części kombinacyjnej w
realizacjach dla struktur FPGA

background image

I

T
P

W

ZPT

66

Dlatego warto w projektach dla urządzeń
rynkowych stosować zewnętrzne
procedury kodowania stanów automatu.

Problem kodowania stanów…

Takie procedury są dostępne w
oprogramowaniu uniwersyteckim

Pakiet SIS…JEDI, NOVA

background image

I

T
P

W

ZPT

67

Szczęśliwie się składa, iż język VHDL
umożliwia wprowadzenie dowolnego,
zewnętrznie obliczonego kodowania
stanów wewnętrznych

Problem kodowania stanów…

architecture nazwa_arch of
nazwa_jednostki is

begin

end nazwa_arch;

Tu kodowanie:
za pośrednictwem deklaracji
stałych (constant)

background image

I

T
P

W

ZPT

68

ARCHITECTURE funkcja_przejsc OF simple IS
SIGNAL Q_present, Q_next: STD_LOGIC_VECTOR(1 DOWNTO 0)
CONSTANT A :STD_LOGIC_VECTOR(1 DOWNTO 0) := "00";
CONSTANT B :STD_LOGIC_VECTOR(1 DOWNTO 0) := "01";
CONSTANT C :STD_LOGIC_VECTOR(1 DOWNTO 0) := "11";

BEGIN
PROCESS (x, Q_present)
BEGIN

CASE Q_present IS

WHEN A =>

IF x = '0' THEN Q_next <= A; ELSE Q_next <= B;
END IF;

WHEN B =>

IF x = '0' THEN Q_next <= A; ELSE Q_next <= C;
END IF;

WHEN C =>

IF x = '0' THEN Q_next <= A; ELSE Q_next <= C;
END IF;

WHEN OTHERS => Q_next <= A;

END CASE;

END PROCESS;
PROCESS (Clock, Rst)
BEGIN
IF Rst = '0' THEN Q_next <= A; ELSIF (Clock'EVENT AND Clock = '1') THEN

Q_present <= Q_next;

END IF;
END PROCESS;

z <= '1' WHEN Q_present = C ELSE '0';

END funkcja_przejsc;

Automat Moore’a z kodowaniem

stanów

zabezpieczenie przed

nadmiarowym stanem: 10

Inny typ

zmiennej

background image

I

T
P

W

ZPT

69

SUBDESIGN MOORE_AHDL(

CLOCK, RESETN, W

: INPUT;

Z

: OUTPUT;

)

VARIABLE

Y

: MACHINE WITH STATES (A, B, C);

BEGIN

Y.CLK = CLOCK;

Y.RESET = !RESETN;

IF RESETN == B"0" THEN Y = A;

END IF;

CASE Y IS

WHEN A =>

IF W == B"0" THEN Y = A;

ELSE Y = B;

END IF;

WHEN B =>

IF W == B"0" THEN Y = A;

ELSE Y= C;

END IF;

WHEN C =>

IF W == B"0" THEN Y = A;

ELSE Y = C;

END IF;

END CASE;

IF Y == C THEN

Z = B"1";

ELSE

Z = B"0";

END IF;

END;

Automat

w AHDL

background image

I

T
P

W

ZPT

70

AHDL kontra VHDL

Variable

temp : df

temp.clk = clk;
temp.d = data
out = temp.out

if (clk’event and clk=‘1’)
then
out <= d;
end if;

AHDL

AHDL

VHDL

VHDL

Całkowicie behawioralny

opis, nawet nie znamy

typu

przerzutnika

background image

I

T
P

W

ZPT

71

Specyfikacje typowych

układów

 Przerzutniki
 Rejestry: równoległy,

szeregowy

 Liczniki: w górę, z wpisem

równoległym

 Modelowanie na poziomie

strukturalnym

 Projektowanie większych

układów

Specyfikacje wszystkich

przykładów są

podane w

książce:

Programowalne układy przetwarzania

sygnałów cyfrowych i informacji


Document Outline


Wyszukiwarka

Podobne podstrony:
ELC VHDL
ELC bloki cz 1
Biol kom cz 1
Systemy Baz Danych (cz 1 2)
cukry cz 2 st
wykłady NA TRD (7) 2013 F cz`
JĘCZMIEŃ ZWYCZAJNY cz 4
Introduction to VHDL
Sortowanie cz 2 ppt
CYWILNE I HAND CZ 2
W5 sII PCR i sekwencjonowanie cz 2
motywacja cz 1
02Kredyty cz 2
Ćwiczenia 1, cz 1
Nauki o zarzadzaniu cz 8

więcej podobnych podstron