Instrukcje sekwencyjne
Instrukcje sekwencyjne są stosowane w specyfikacji
behawioralnej (behavioral description)
Przede wszystkim w tzw. procesach (process)
Proces
Instrukcja IF
Instrukcja CASE
I
T
P
W
ZPT
1
Procesy
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
I
T
P
W
ZPT
2
Proces
Składnia:
Process ( )
begin
..
Name :PROCESS (sensitivity_list)
end process
BEGIN
Instrukcja sekwencyjna #1
Lista czułości
Instrukcja sekwencyjna #2
.......
Instrukcja sekwencyjna # N
Instrukcje sekwencyjne są
END PROCESS name;
wykonywane kolejno
jedna po drugiej
I
T
P Etykieta jest opcjonalna
W
ZPT
3
Instrukcja warunkowa if then else
Jest to instrukcja sekwencyjna
Analogiczna do instrukcji when else
Częśćelsifmoże wystąpić dowolną liczbę razy
Częśćelsenie musi wystąpić
Składnia:
if warunekthen
sekwencja_instrukcji1
{elsifwarunekthen
sekwencja_instrukcji2 }
[else
sekwencja_instrukcji3]
end if;
I
T
P
W
ZPT
4
Instrukcja wyboru -case
Instrukcja sekwencyjna
Analogiczna do instrukcji with select
Można określać kilka wartości lub zakres
Wartości nie mogą się powtarzać
Składnia (przykład):
casezm_wielow is
when wybór1 => sekwencja1_instrukcji ;
when wybór2 => sekwencja2_instrukcji ;
[when others => sekwencja3_instrukcji ; ]
end case;
I
T
P
W
ZPT
5
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,
w typowych układach nie mają sensu.
I
T
P
W
ZPT
6
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
I
T
P
W
ZPT
7
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;
I
T
P
W
ZPT
8
Atrybuty
Dostarczaj dodatkowych informacji o obiektach (np..
sygnałach, zmiennych, typach lub komponentach)
Składnia
obiekt atrybut[(parametr)];
Najczęściej stosowany atrubut:
event równy TRUE, gdy zachodzi zmiana wartości sygnału,
If Clock event and Clock = 1 then Q := D;
I
T
P
W
ZPT
9
Przykład: automat Moore a
Rst
x
x = 1
s0 1 z
x = 0
A/z = 0
B/z = 0
AAB0
x = 0
BAC0
x = 1
x = 0
CAC1
C/z = 1
x = 1
I
T
P
W
ZPT
10
Automat: deklaracja jednostki
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY automacik IS
PORT (Clock, Rst, x : IN STD_LOGIC;
z : OUT STD_LOGIC);
END automacik;
I
T
P
W
ZPT
11
Automat - wersja I
ARCHITECTURE funkcja_przejsc OF automacik IS
TYPE State_type IS (A, B, C);
SIGNAL Q : State_type;
Deklaracja typu i sygnału
BEGIN
PROCESS (Rst, Clock)
BEGIN
IF Rst = '0' THEN
Q <= A;
ELSIF (Clock'EVENT AND Clock = '1') THEN
CASE Q IS
Zerowanie
WHEN A =>
asynchronicz-
IF x = '0' THEN Q <=A; ELSE Q <= B;
ne
END IF;
WHEN B =>
IF x = '0' THEN Q <= A; ELSE Q <= C;
Synchronizacja
END IF;
WHEN C =>
IF x = '0' THEN Q <= A; ELSE Q <= C;
END IF;
END CASE;
END IF;
I
T
END PROCESS;
P
z <= '1' WHEN Q = C ELSE '0';
W
END funkcja_przejsc;
ZPT
12
Proces
Automat
Sekwencyjny
Proces
Kombinacyjny
CLK EVENT
and
Case
CLK= 1
If Then
Else
Stan następny
(next_state)
Wejścia
Układ
Przerzut-
kombinacyjny
niki
Stany bieżące
(present_state)
I
T
P
W
ZPT
13
Automat Moore a - wersja II
ARCHITECTURE funkcja_przejsc OF simple IS
TYPE State_type IS (A, B, C);
SIGNAL Q_present, Q_next : State_type ;
BEGIN
P
PROCESS (x, Q_present)
r
o BEGIN
c
CASE Q_present IS
e
WHEN A =>
s
IF x = '0' THEN Q_next <= A; ELSE Q_next <= B;
k
END IF;
o
WHEN B =>
m
IF x = '0' THEN Q_next <=A; ELSE Q_next <= C;
b
i
END IF;
n
WHEN C=>
a
IF x = '0' THEN Q_next <= A; ELSE Q_next <= C;
c
y
END IF;
j
END CASE;
n
END PROCESS;
y
PROCESS (Clock, Rst)
BEGIN
IF Rst = '0' THEN Q_present <= A;
Proces
ELSIF (Clock'EVENT AND Clock = '1') THEN
sekwencyjny
I
Q_present <= Q_next;
T
END IF;
P
W
END PROCESS;
z <= '1' WHEN Q_present = C ELSE '0';
ZPT
END funkcja_przejsc;
14
Problem kodowania stanów
Specyfikacja automatu: ciekawostka o procesie
kompilacji
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 !!!
Ucieczka przed skomplikowaniem
części kombinacyjnej w realizacjach
dla struktur FPGA
I
T
P
W
ZPT
15
Problem kodowania stanów&
Dlatego warto w projektach dla urządzeń
rynkowych stosować zewnętrzne procedury
kodowania stanów automatu.
Takie procedury są dostępne w oprogramowaniu
uniwersyteckim
Pakiet SIS& JEDI, NOVA
I
T
P
W
ZPT
16
Problem kodowania stanów&
Szczęśliwie się składa, iż język VHDL
umożliwia wprowadzenie dowolnego,
zewnętrznie obliczonego kodowania stanów
wewnętrznych
architecture nazwa_arch of nazwa_jednostki is
begin
Tu kodowanie:
za pośrednictwem deklaracji
end nazwa_arch;
stałych (constant)
I
T
P
W
ZPT
17
Automat Moore a z kodowaniem stanów
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";
Inny typ zmiennej
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;
zabezpieczenie przed
WHEN C =>
nadmiarowym stanem: 10
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
I
IF Rst = '0' THEN Q_next <= A; ELSIF (Clock'EVENT AND Clock = '1') THEN Q_present <= Q_next;
T
END IF;
P
END PROCESS;
W
z <= '1' WHEN Q_present = C ELSE '0';
END funkcja_przejsc;
ZPT
18
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
I
T
P
W
ZPT
19
Wyszukiwarka
Podobne podstrony:
SIMULINK MATLAB to VHDL RouteCin Acr CNC TC [12] L273 85 1IPV6 TCUL&TC 2TC red argtc lodTC bl funTermometr elektroniczny Thermocont TC 01atc5375 Dieselmax Tier 3 TC MOBlab1 VHDLTCBrother TC 228 CX17 15 25379 Dieselmax Tier 3 TC IPUtut?2 sdram vhdlwięcej podobnych podstron