Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałKajetan Skowroński Został zmieniony 6 lat temu
1
Projektowanie systemów cyfrowych z wykorzystaniem języka VHDL
Podstawy syntezy układów sekwencyjnych
2
Automaty – tradycyjne projektowanie
Etapy tradycyjnej metodologii projektowania skończonych automatów stanu: Utworzenie grafu stanu Utworzenie tablicy stanów Określenie funkcji wzbudzeń Utworzenie tablicy wyjść Określenie funkcji wyjść Narysowanie schematu Otrzymany w powyższy sposób schemat automatu można zapisać w języku VHDL używając opisu strukturalnego. Ten sposób opisu automatu jest bardzo czasochłonny.
3
Automaty w VHDL Krok pierwszy:
- na podstawie grafu stanów definiujemy wejścia i wyjścia automatu entity fsm is port (wejscia in bit; clk, reset in bit; wyjscia out bit); end fsm; Krok drugi: - zdefiniowanie w części deklaracyjnej architecture typu wyliczeniowego zawierającego stany automatów oraz sygnałów stan_obecny i stan_nastepny architecture fsm1 of fsm is type stan is (s0, s1, s2, s3, ...); signal stan_obecny, stan_nastepny: stan; ...
4
Automaty w VHDL Krok trzeci:
- opis działania części sekwencyjnej automatu process (clk, reset) begin if reset = ’1’ then stan_obecny <= s0; -- jeśli uznamy, ze s0 jest stanem poczatkowym automatu elsif clk’event and clk = ’1’ then stan_obecny <= stan_nastepny; end if; end process;
5
Automaty w VHDL Krok czwarty:
- opis działania części kombinacyjnej automatu process (wejscie, stan_obecny) begin case stan_obecny is when s0 => if wejscie = ... then wyjscie <= wartosc_wyjsciowa; stan_nastepny <= s1; else ... end if; when s1 => end case; end process;
6
Automat Moore’a
7
Przykład – automat Moore’a
Krok pierwszy: wejścia: wyjścia: - clk - y - reset - x ... entity fsm is port (x in bit; clk, reset in bit; y out bit); end fsm;
8
Przykład – automat Moore’a
Krok drugi: stany: - s0, s1, s2, s3 ... architecture moore of fsm is type stan is (s0, s1, s2, s3); signal stan_obecny, stan_nastepny: stan; begin
9
Przykład – automat Moore’a
Krok trzeci: ... process (clk, reset) begin if reset = ’1’ then stan_obecny <= s0; elsif clk’event and clk = ’1’ then stan_obecny <= stan_nastepny; end if; end process;
10
Przykład – automat Moore’a
Krok czwarty: process (x, stan_obecny) begin case stan_obecny is when s0 => y <= ’0’; if x = ’0’ then stan_nastepny <= s1; else stan_nastepny <= s2; end if; when s1 => stan_nastepny <= s0; ... ... when s2 => y <= ’0’; if x = ’0’ then stan_nastepny <= s1; else stan_nastepny <= s3; end if; when s3 => y <= ’1’; stan_nastepny <= s0; end case; end process;
11
Automat Mealy’ego
12
Przykład – automat Mealy’ego
, Krok pierwszy: wejścia: wyjścia: - clk - y - reset - x ... entity fsm is port (x in bit_vector(1 downto 0); clk, reset in bit; y out bit); end fsm;
13
Przykład – automat Mealy’ego
, Krok drugi: stany: - s0, s1, s2 ... architecture mealy of fsm is type stan is (s0, s1, s2); signal stan_obecny, stan_nastepny: stan; begin
14
Przykład – automat Mealy’ego
, Krok trzeci: ... process (clk, reset) begin if reset = ’1’ then stan_obecny <= s0; elsif clk’event and clk = ’1’ then stan_obecny <= stan_nastepny; end if; end process;
15
Przykład – automat Mealy’ego
Krok czwarty: process (x, stan_obecny) begin case stan_obecny is when s0 => if x = ”00” then y <= ’1’; stan_nastepny <= s1; elsif x = ”01” then elsif x = ”10” then y <= ’0’; else stan_nastepny <= s2; end if; ... ,
16
Przykład – automat Mealy’ego
Krok czwarty: ... when s1 => if x = ”00” then y <= ’0’; stan_nastepny <= s0; elsif x = ”01” then stan_nastepny <= s2; elsif x = ”10” then y <= ’1’; stan_nastepny <= s1; else end if; ,
17
Przykład – automat Mealy’ego
Krok czwarty: ... when s2 => if x = ”00” then y <= ’0’; stan_nastepny <= s0; elsif x = ”01” then y <= ’1’; stan_nastepny <= s1; elsif x = ”10” then else end if; end case; end process; ,
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.