. Napisz program, który realizuje podany układ prawdy: T = {1, 2, 5, 9, 12} • z użyciem instrukcji wyboru CASE library IEEE; use IEEE.STD_LOGIC_1164.all; entity ent is port( a : in std_logic_vector(3 downto 0); x : out STD_LOGIC := '0' ); end ent; architecture a1 of ent is begin process (a) begin case a is when "0001" => x <= '1'; -- 1 when "0010" => x <= '1'; -- 2 when "0101" => x <= '1'; -- 5 when "1001" => x <= '1'; -- 9 when "1100" => x <= '1'; -- 12 when others => x <= '0'; -- pozostale liczby end case; end process; end a1; • z użyciem przypisania selektywnego WITH SELECT library IEEE; use IEEE.STD_LOGIC_1164.all; entity ent is port( a : in std_logic_vector(3 downto 0); x : out STD_LOGIC := '0' ); end ent; architecture a1 of ent is Begin with a selekt x <= '1' when "0001", -- 1 '1' when "0010", -- 2 '1' when "0101", -- 5 '1' when "1001", -- 9 '1' when "1100", -- 12 '0' when others; -- pozostale liczby end a1; Wykres symulacji będzie taki sam za każdym razem, czyli po nadaniu wymuszenia typu COUNTER dla sygnału „a” na wyjściu otrzymamy „jedynkę” dla wartości, które znajdują się w tablicy prawdy. 2. Czym różni się sygnał od zmiennej? Sygnały są funkcjami czasu. Zmienne są stosowane pomocniczo tylko w obrębie procesu lub podprogramu. 3. Do czego służy język VHDL? Język VHDL jest bardzo popularnym językiem opisu sprzętu. Zadaniem języka jest wspieranie całości procesu projektowania układów cyfrowych poczynając od symulacji poprzez modelowanie, testowanie, implementacje oraz tworzenie dokumentacji. Podstawowym celem języka VHDL jest "zaprogramowanie" programowalnego układu logicznego niezależnie od technologii w jakiej ten układ został wytworzony (ASIC, FPGA, PLD, itp.). Typy- operuje się na roznych typach danych które okresla się poprzez podane nazwy ,zbioru wartości i zbioru operacji. Typy dzieli się na klasy : Typy skalarne-takie jak liczby całkowite i zmiennoprzecinkowe, typy wyliczane, oraz typy fizyczne -typy zlozone-takie jak talice(array) elementow tego samego typu skalarnego , zalicza się również rekordy(records) , oraz pliki (files) Typy wektorowo skalarne- wektory zerojedynkowe, które do operacji arytmetycznych reprezentuja liczby naturalne lub całkowite ,zapisane w naturalnym kodzie dwojkowy Liczby całkowite(integer), liczby rzeczywiste(Real),typ bitowy(bit), typy wielowartościowe std_ulogic i std-_logic, typ boolowski boolean, typ znakowy charakter, typ fizyczny czasowy time, typy wyliczeniowe Porty – nazw portow które sa równoznaczne z nazwami końcówek opisanego układu i nazwami odpowiednich sygnałów na końcówkach, rodzaje portow Wejściowych-in - jednokierunkowy Wyjściowych-out-jednokierunkowy Buffet-dopuszcza do odczytu tylko wewnętrzne źródło sygnalu,a na zewnatrz może yc urzytytylko do odczytu na przewodzie, na którym nie występują inne zrodla sygnalow Dwukierunkowych-inout Style architektury: Styl behawioralny(behaviour)-stosuje się do opisow algorytmicznych, z uzyciem instrukcji procesu i instrukcj sekwencyjnych . dlatego ten styl okresla się również jako sekwencyjny. W ten sposób okresl się sekwencje stanow, układy cyfrowe z pamięcią-automaty,programy testujące oraz podprogramy Styl pzeplywowy-stosuje się do opisu przepływu danych podczas ich przetwarzania przez układy kombinacyjn , takie jak sieci bramkowe, multipleksery i układy arytmetyczne, do pisu stosuje się instrukcje współbieżne Styl strukturalny- stosuje się do opisu układu utworzonego z pewnej liczby układów składowych, których opisy VHDL przygotowano wczesniej, jest to w istocie opis polaczen układów składowych(komponentow) Obiekty-do zapisu i pamiętania danych w jezyku VHDL sluza obiekty. Podtswowymi sa: Sygnaly- sa funkcja czasu co oznacza ze wartości sygnałów sa przyporządkowane wartościom na osi czasu podczas symulacji dzialania oisanych układów Zmienne- nie sa funkcjami czasu (prawdopodobnie jak w standardowych jezykach programowania) i mogą być stosowane pomocniczo tylko w obrebie procesu lub podprogramu do zapamiętywania wynikow pośrednich wartości zmiennych sa uzyskiwane w rezultacie operacji przypisanai do zmiennej Stałe-umozliwiaja przypisanie nazwy wartościom Stalym określonego typu, sluzy do tego deklaracja constant. Pliki- sluza do trwalego przechowywania danych,co wykorzystuje się glownie przy wykonaniu testow Atrybuty-w VHDL predefiniowane sa liczne atrybuty, pozwalające na identyfikacje pewnych cech deklarowanych typow i obiektow, pozwala to na łatwiejsze tworzenie bardziej ogolnych modeli układowych , atrybut związany jest z obiektem lub typem przez apostrof, najczęściej związane ztypami i sygnalami, popularnym atrybutem jest ‘event Instrukcje wspolbierzne- instrukcjami wspolierznymi sa wszystkie instrukcje, k6 takich instrukcjitóre można bezpośrednio wypisac w ciele architektury, w VHD istnieje : Przypisanie do sygnalu(<=) Instrukcja procesu process Instrukcja wspobierznego wywolowyania procedury Instrukcja laczenia komponentow port map Instrukcja owielania generale Instrukcja blokowa Block Wspolbierzna instrukcje przypisania do sygnaly stosuje się w następujących postaciach Przpisanie podstawowe do sygnal ma skladnie- sygna<=[transport] wyrazenie [after odcinek_czasu]; Gdzie wyrazenie musi dawac wynik tego samego typu co sygnal, opcjonalna klauzura after slyzy do opisu opóźnień w realizacji operacji przypisania Przypisanie warunkowe when-else- ma sladnie sygnal <={ wyrazenie when warunek [and | Or warunek] else } wyrazenie_koncowe; - wynik sprawdzenia warunku jest typu boolean ,a wiec może być rowny fase lub true. Gdy warunek po slowie when jest spelnony (true, to nastepuje przypisanie wyraznie sprzed slowa when i wykonania instrukcji się konczy, Przypisanie selektywne with-select- with wybor select {sygnal<= wyrazenie wqhen wartość_wyboru,} Sygnal <= wyazenie_koncowe when others; W tej instrukcji należy wynienic wszystkie możliwe wartości wyboru , aby nie dopuścić do tworzenia zbędnych przerzutnikow zatrzaskowyc podczas syntezy Multiplekser 4 na 1 Enity muxg8_4_1 is Port(a,b,c,d : In std_logic_vector(7 downto 0); Adr : std_logic_vector (1 downto 0); Y :out std_logic_vector(7 downto 0)); End muxg8_4_1; Architecture a1 of muxg8_4_1 is Beign With adr select Y <= a when “00”, B when “00”; C when “10”; D when”11”, “xxxxxxxxx” when others; End a1 Instrukcje selektywne umozliwiaja opsi dzialania układów w postaci uporzadkawanej sekwencji zdarzen w czasie. Instrukcje sekwencyjne : -przypisanie do zmiennej (:=) ; -instrukcja czekania wait; -instruckcja warunkowa if –then-else; -instrukcja wyboru case; -instrukcja petli loop o zwiazanie instrukcje exit i next; -instrukcja pusta null; -instrukcja testowa assert; FUNCKJA przed uzyciem musi być najpierw zadeklarowana . deklaracje funkcji umieszca się lokalnie w czesci deklaracyjnej architektury opisywanego modulu albo w nagłówku procesu albo globalnie w odrębnym i zadeklarowanym pakiecie Procedura może zwaracac wiecej wynikow niż jeden . podobnie jak funkcja procedura najpierw musi być zadeklarowana albo globalnie w pakiecie albo lokalnie w deklaracji architektury albo w nagłówku procesu nastepnie procedura może być wykonana w ciele architektury jakio instrukcja wspolbiezna lub w obrebie procesu n-bitowy rejestr równoległy ( wykorzystując model przerzutnika d): entity regn is generic (n: positive :=8); port (C,R : in std_logic; D: in std_logic_vector(n-1 downto 0); Q: out std_logic_vector(n-1 downto 0); End regn; Architecture a1 of regn is Begin Process(R,c) Begin If R=’1’ then Q <= (others =>’0’); Elsif rising_edge (C) then Q<=D; End if; End process; End a1; Decoder ¼ Enity regn is Port( a: in std_logic_vector(1 downto 0); Z: out std_logic_vector(3 downto 0); End regn Architecture a1 of regn is Z<= “0001” when A=”00”else lub “0010” when A=”00”, “0100” when A=”00”else “1000” Lub with a select Z <= “0001” when A=”00”, “0010” when A=”00”else “0100” when A=”00”, “1000” when others; |
. Napisz program, który realizuje podany układ prawdy: T = {1, 2, 5, 9, 12} • z użyciem instrukcji wyboru CASE library IEEE; use IEEE.STD_LOGIC_1164.all; entity ent is port( a : in std_logic_vector(3 downto 0); x : out STD_LOGIC := '0' ); end ent; architecture a1 of ent is begin process (a) begin case a is when "0001" => x <= '1'; -- 1 when "0010" => x <= '1'; -- 2 when "0101" => x <= '1'; -- 5 when "1001" => x <= '1'; -- 9 when "1100" => x <= '1'; -- 12 when others => x <= '0'; -- pozostale liczby end case; end process; end a1; • z użyciem przypisania selektywnego WITH SELECT library IEEE; use IEEE.STD_LOGIC_1164.all; entity ent is port( a : in std_logic_vector(3 downto 0); x : out STD_LOGIC := '0' ); end ent; architecture a1 of ent is Begin with a selekt x <= '1' when "0001", -- 1 '1' when "0010", -- 2 '1' when "0101", -- 5 '1' when "1001", -- 9 '1' when "1100", -- 12 '0' when others; -- pozostale liczby end a1; Wykres symulacji będzie taki sam za każdym razem, czyli po nadaniu wymuszenia typu COUNTER dla sygnału „a” na wyjściu otrzymamy „jedynkę” dla wartości, które znajdują się w tablicy prawdy. 2. Czym różni się sygnał od zmiennej? Sygnały są funkcjami czasu. Zmienne są stosowane pomocniczo tylko w obrębie procesu lub podprogramu. 3. Do czego służy język VHDL? Język VHDL jest bardzo popularnym językiem opisu sprzętu. Zadaniem języka jest wspieranie całości procesu projektowania układów cyfrowych poczynając od symulacji poprzez modelowanie, testowanie, implementacje oraz tworzenie dokumentacji. Podstawowym celem języka VHDL jest "zaprogramowanie" programowalnego układu logicznego niezależnie od technologii w jakiej ten układ został wytworzony (ASIC, FPGA, PLD, itp.). Typy- operuje się na roznych typach danych które okresla się poprzez podane nazwy ,zbioru wartości i zbioru operacji. Typy dzieli się na klasy : Typy skalarne-takie jak liczby całkowite i zmiennoprzecinkowe, typy wyliczane, oraz typy fizyczne -typy zlozone-takie jak talice(array) elementow tego samego typu skalarnego , zalicza się również rekordy(records) , oraz pliki (files) Typy wektorowo skalarne- wektory zerojedynkowe, które do operacji arytmetycznych reprezentuja liczby naturalne lub całkowite ,zapisane w naturalnym kodzie dwojkowy Liczby całkowite(integer), liczby rzeczywiste(Real),typ bitowy(bit), typy wielowartościowe std_ulogic i std-_logic, typ boolowski boolean, typ znakowy charakter, typ fizyczny czasowy time, typy wyliczeniowe Porty – nazw portow które sa równoznaczne z nazwami końcówek opisanego układu i nazwami odpowiednich sygnałów na końcówkach, rodzaje portow Wejściowych-in - jednokierunkowy Wyjściowych-out-jednokierunkowy Buffet-dopuszcza do odczytu tylko wewnętrzne źródło sygnalu,a na zewnatrz może yc urzytytylko do odczytu na przewodzie, na którym nie występują inne zrodla sygnalow Dwukierunkowych-inout Style architektury: Styl behawioralny(behaviour)-stosuje się do opisow algorytmicznych, z uzyciem instrukcji procesu i instrukcj sekwencyjnych . dlatego ten styl okresla się również jako sekwencyjny. W ten sposób okresl się sekwencje stanow, układy cyfrowe z pamięcią-automaty,programy testujące oraz podprogramy Styl pzeplywowy-stosuje się do opisu przepływu danych podczas ich przetwarzania przez układy kombinacyjn , takie jak sieci bramkowe, multipleksery i układy arytmetyczne, do pisu stosuje się instrukcje współbieżne Styl strukturalny- stosuje się do opisu układu utworzonego z pewnej liczby układów składowych, których opisy VHDL przygotowano wczesniej, jest to w istocie opis polaczen układów składowych(komponentow) Obiekty-do zapisu i pamiętania danych w jezyku VHDL sluza obiekty. Podtswowymi sa: Sygnaly- sa funkcja czasu co oznacza ze wartości sygnałów sa przyporządkowane wartościom na osi czasu podczas symulacji dzialania oisanych układów Zmienne- nie sa funkcjami czasu (prawdopodobnie jak w standardowych jezykach programowania) i mogą być stosowane pomocniczo tylko w obrebie procesu lub podprogramu do zapamiętywania wynikow pośrednich wartości zmiennych sa uzyskiwane w rezultacie operacji przypisanai do zmiennej Stałe-umozliwiaja przypisanie nazwy wartościom Stalym określonego typu, sluzy do tego deklaracja constant. Pliki- sluza do trwalego przechowywania danych,co wykorzystuje się glownie przy wykonaniu testow Atrybuty-w VHDL predefiniowane sa liczne atrybuty, pozwalające na identyfikacje pewnych cech deklarowanych typow i obiektow, pozwala to na łatwiejsze tworzenie bardziej ogolnych modeli układowych , atrybut związany jest z obiektem lub typem przez apostrof, najczęściej związane ztypami i sygnalami, popularnym atrybutem jest ‘event Instrukcje wspolbierzne- instrukcjami wspolierznymi sa wszystkie instrukcje, k6 takich instrukcjitóre można bezpośrednio wypisac w ciele architektury, w VHD istnieje : Przypisanie do sygnalu(<=) Instrukcja procesu process Instrukcja wspobierznego wywolowyania procedury Instrukcja laczenia komponentow port map Instrukcja owielania generale Instrukcja blokowa Block Wspolbierzna instrukcje przypisania do sygnaly stosuje się w następujących postaciach Przpisanie podstawowe do sygnal ma skladnie- sygna<=[transport] wyrazenie [after odcinek_czasu]; Gdzie wyrazenie musi dawac wynik tego samego typu co sygnal, opcjonalna klauzura after slyzy do opisu opóźnień w realizacji operacji przypisania Przypisanie warunkowe when-else- ma sladnie sygnal <={ wyrazenie when warunek [and | Or warunek] else } wyrazenie_koncowe; - wynik sprawdzenia warunku jest typu boolean ,a wiec może być rowny fase lub true. Gdy warunek po slowie when jest spelnony (true, to nastepuje przypisanie wyraznie sprzed slowa when i wykonania instrukcji się konczy, Przypisanie selektywne with-select- with wybor select {sygnal<= wyrazenie wqhen wartość_wyboru,} Sygnal <= wyazenie_koncowe when others; W tej instrukcji należy wynienic wszystkie możliwe wartości wyboru , aby nie dopuścić do tworzenia zbędnych przerzutnikow zatrzaskowyc podczas syntezy Multiplekser 4 na 1 Enity muxg8_4_1 is Port(a,b,c,d : In std_logic_vector(7 downto 0); Adr : std_logic_vector (1 downto 0); Y :out std_logic_vector(7 downto 0)); End muxg8_4_1; Architecture a1 of muxg8_4_1 is Beign With adr select Y <= a when “00”, B when “00”; C when “10”; D when”11”, “xxxxxxxxx” when others; End a1 Instrukcje selektywne umozliwiaja opsi dzialania układów w postaci uporzadkawanej sekwencji zdarzen w czasie. Instrukcje sekwencyjne : -przypisanie do zmiennej (:=) ; -instrukcja czekania wait; -instruckcja warunkowa if –then-else; -instrukcja wyboru case; -instrukcja petli loop o zwiazanie instrukcje exit i next; -instrukcja pusta null; -instrukcja testowa assert; FUNCKJA przed uzyciem musi być najpierw zadeklarowana . deklaracje funkcji umieszca się lokalnie w czesci deklaracyjnej architektury opisywanego modulu albo w nagłówku procesu albo globalnie w odrębnym i zadeklarowanym pakiecie Procedura może zwaracac wiecej wynikow niż jeden . podobnie jak funkcja procedura najpierw musi być zadeklarowana albo globalnie w pakiecie albo lokalnie w deklaracji architektury albo w nagłówku procesu nastepnie procedura może być wykonana w ciele architektury jakio instrukcja wspolbiezna lub w obrebie procesu n-bitowy rejestr równoległy ( wykorzystując model przerzutnika d): entity regn is generic (n: positive :=8); port (C,R : in std_logic; D: in std_logic_vector(n-1 downto 0); Q: out std_logic_vector(n-1 downto 0); End regn; Architecture a1 of regn is Begin Process(R,c) Begin If R=’1’ then Q <= (others =>’0’); Elsif rising_edge (C) then Q<=D; End if; End process; End a1; Decoder ¼ Enity regn is Port( a: in std_logic_vector(1 downto 0); Z: out std_logic_vector(3 downto 0); End regn Architecture a1 of regn is Z<= “0001” when A=”00”else lub “0010” when A=”00”, “0100” when A=”00”else “1000” Lub with a select Z <= “0001” when A=”00”, “0010” when A=”00”else “0100” when A=”00”, “1000” when others; |
. Napisz program, który realizuje podany układ prawdy: T = {1, 2, 5, 9, 12} • z użyciem instrukcji wyboru CASE library IEEE; use IEEE.STD_LOGIC_1164.all; entity ent is port( a : in std_logic_vector(3 downto 0); x : out STD_LOGIC := '0' ); end ent; architecture a1 of ent is begin process (a) begin case a is when "0001" => x <= '1'; -- 1 when "0010" => x <= '1'; -- 2 when "0101" => x <= '1'; -- 5 when "1001" => x <= '1'; -- 9 when "1100" => x <= '1'; -- 12 when others => x <= '0'; -- pozostale liczby end case; end process; end a1; • z użyciem przypisania selektywnego WITH SELECT library IEEE; use IEEE.STD_LOGIC_1164.all; entity ent is port( a : in std_logic_vector(3 downto 0); x : out STD_LOGIC := '0' ); end ent; architecture a1 of ent is Begin with a selekt x <= '1' when "0001", -- 1 '1' when "0010", -- 2 '1' when "0101", -- 5 '1' when "1001", -- 9 '1' when "1100", -- 12 '0' when others; -- pozostale liczby end a1; Wykres symulacji będzie taki sam za każdym razem, czyli po nadaniu wymuszenia typu COUNTER dla sygnału „a” na wyjściu otrzymamy „jedynkę” dla wartości, które znajdują się w tablicy prawdy. 2. Czym różni się sygnał od zmiennej? Sygnały są funkcjami czasu. Zmienne są stosowane pomocniczo tylko w obrębie procesu lub podprogramu. 3. Do czego służy język VHDL? Język VHDL jest bardzo popularnym językiem opisu sprzętu. Zadaniem języka jest wspieranie całości procesu projektowania układów cyfrowych poczynając od symulacji poprzez modelowanie, testowanie, implementacje oraz tworzenie dokumentacji. Podstawowym celem języka VHDL jest "zaprogramowanie" programowalnego układu logicznego niezależnie od technologii w jakiej ten układ został wytworzony (ASIC, FPGA, PLD, itp.). Typy- operuje się na roznych typach danych które okresla się poprzez podane nazwy ,zbioru wartości i zbioru operacji. Typy dzieli się na klasy : Typy skalarne-takie jak liczby całkowite i zmiennoprzecinkowe, typy wyliczane, oraz typy fizyczne -typy zlozone-takie jak talice(array) elementow tego samego typu skalarnego , zalicza się również rekordy(records) , oraz pliki (files) Typy wektorowo skalarne- wektory zerojedynkowe, które do operacji arytmetycznych reprezentuja liczby naturalne lub całkowite ,zapisane w naturalnym kodzie dwojkowy Liczby całkowite(integer), liczby rzeczywiste(Real),typ bitowy(bit), typy wielowartościowe std_ulogic i std-_logic, typ boolowski boolean, typ znakowy charakter, typ fizyczny czasowy time, typy wyliczeniowe Porty – nazw portow które sa równoznaczne z nazwami końcówek opisanego układu i nazwami odpowiednich sygnałów na końcówkach, rodzaje portow Wejściowych-in - jednokierunkowy Wyjściowych-out-jednokierunkowy Buffet-dopuszcza do odczytu tylko wewnętrzne źródło sygnalu,a na zewnatrz może yc urzytytylko do odczytu na przewodzie, na którym nie występują inne zrodla sygnalow Dwukierunkowych-inout Style architektury: Styl behawioralny(behaviour)-stosuje się do opisow algorytmicznych, z uzyciem instrukcji procesu i instrukcj sekwencyjnych . dlatego ten styl okresla się również jako sekwencyjny. W ten sposób okresl się sekwencje stanow, układy cyfrowe z pamięcią-automaty,programy testujące oraz podprogramy Styl pzeplywowy-stosuje się do opisu przepływu danych podczas ich przetwarzania przez układy kombinacyjn , takie jak sieci bramkowe, multipleksery i układy arytmetyczne, do pisu stosuje się instrukcje współbieżne Styl strukturalny- stosuje się do opisu układu utworzonego z pewnej liczby układów składowych, których opisy VHDL przygotowano wczesniej, jest to w istocie opis polaczen układów składowych(komponentow) Obiekty-do zapisu i pamiętania danych w jezyku VHDL sluza obiekty. Podtswowymi sa: Sygnaly- sa funkcja czasu co oznacza ze wartości sygnałów sa przyporządkowane wartościom na osi czasu podczas symulacji dzialania oisanych układów Zmienne- nie sa funkcjami czasu (prawdopodobnie jak w standardowych jezykach programowania) i mogą być stosowane pomocniczo tylko w obrebie procesu lub podprogramu do zapamiętywania wynikow pośrednich wartości zmiennych sa uzyskiwane w rezultacie operacji przypisanai do zmiennej Stałe-umozliwiaja przypisanie nazwy wartościom Stalym określonego typu, sluzy do tego deklaracja constant. Pliki- sluza do trwalego przechowywania danych,co wykorzystuje się glownie przy wykonaniu testow Atrybuty-w VHDL predefiniowane sa liczne atrybuty, pozwalające na identyfikacje pewnych cech deklarowanych typow i obiektow, pozwala to na łatwiejsze tworzenie bardziej ogolnych modeli układowych , atrybut związany jest z obiektem lub typem przez apostrof, najczęściej związane ztypami i sygnalami, popularnym atrybutem jest ‘event Instrukcje wspolbierzne- instrukcjami wspolierznymi sa wszystkie instrukcje, k6 takich instrukcjitóre można bezpośrednio wypisac w ciele architektury, w VHD istnieje : Przypisanie do sygnalu(<=) Instrukcja procesu process Instrukcja wspobierznego wywolowyania procedury Instrukcja laczenia komponentow port map Instrukcja owielania generale Instrukcja blokowa Block Wspolbierzna instrukcje przypisania do sygnaly stosuje się w następujących postaciach Przpisanie podstawowe do sygnal ma skladnie- sygna<=[transport] wyrazenie [after odcinek_czasu]; Gdzie wyrazenie musi dawac wynik tego samego typu co sygnal, opcjonalna klauzura after slyzy do opisu opóźnień w realizacji operacji przypisania Przypisanie warunkowe when-else- ma sladnie sygnal <={ wyrazenie when warunek [and | Or warunek] else } wyrazenie_koncowe; - wynik sprawdzenia warunku jest typu boolean ,a wiec może być rowny fase lub true. Gdy warunek po slowie when jest spelnony (true, to nastepuje przypisanie wyraznie sprzed slowa when i wykonania instrukcji się konczy, Przypisanie selektywne with-select- with wybor select {sygnal<= wyrazenie wqhen wartość_wyboru,} Sygnal <= wyazenie_koncowe when others; W tej instrukcji należy wynienic wszystkie możliwe wartości wyboru , aby nie dopuścić do tworzenia zbędnych przerzutnikow zatrzaskowyc podczas syntezy Multiplekser 4 na 1 Enity muxg8_4_1 is Port(a,b,c,d : In std_logic_vector(7 downto 0); Adr : std_logic_vector (1 downto 0); Y :out std_logic_vector(7 downto 0)); End muxg8_4_1; Architecture a1 of muxg8_4_1 is Beign With adr select Y <= a when “00”, B when “00”; C when “10”; D when”11”, “xxxxxxxxx” when others; End a1 Instrukcje selektywne umozliwiaja opsi dzialania układów w postaci uporzadkawanej sekwencji zdarzen w czasie. Instrukcje sekwencyjne : -przypisanie do zmiennej (:=) ; -instrukcja czekania wait; -instruckcja warunkowa if –then-else; -instrukcja wyboru case; -instrukcja petli loop o zwiazanie instrukcje exit i next; -instrukcja pusta null; -instrukcja testowa assert; FUNCKJA przed uzyciem musi być najpierw zadeklarowana . deklaracje funkcji umieszca się lokalnie w czesci deklaracyjnej architektury opisywanego modulu albo w nagłówku procesu albo globalnie w odrębnym i zadeklarowanym pakiecie Procedura może zwaracac wiecej wynikow niż jeden . podobnie jak funkcja procedura najpierw musi być zadeklarowana albo globalnie w pakiecie albo lokalnie w deklaracji architektury albo w nagłówku procesu nastepnie procedura może być wykonana w ciele architektury jakio instrukcja wspolbiezna lub w obrebie procesu n-bitowy rejestr równoległy ( wykorzystując model przerzutnika d): entity regn is generic (n: positive :=8); port (C,R : in std_logic; D: in std_logic_vector(n-1 downto 0); Q: out std_logic_vector(n-1 downto 0); End regn; Architecture a1 of regn is Begin Process(R,c) Begin If R=’1’ then Q <= (others =>’0’); Elsif rising_edge (C) then Q<=D; End if; End process; End a1; Decoder ¼ Enity regn is Port( a: in std_logic_vector(1 downto 0); Z: out std_logic_vector(3 downto 0); End regn Architecture a1 of regn is Z<= “0001” when A=”00”else lub “0010” when A=”00”, “0100” when A=”00”else “1000” Lub with a select Z <= “0001” when A=”00”, “0010” when A=”00”else “0100” when A=”00”, “1000” when others; |
---|
. Napisz program, który realizuje podany układ prawdy: T = {1, 2, 5, 9, 12} • z użyciem instrukcji wyboru CASE
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity ent is
port( a : in std_logic_vector(3 downto 0);
x : out STD_LOGIC := '0' );
end ent;
architecture a1 of ent is
begin
process (a)
begin
case a is
when "0001" => x <= '1'; -- 1
when "0010" => x <= '1'; -- 2
when "0101" => x <= '1'; -- 5
when "1001" => x <= '1'; -- 9
when "1100" => x <= '1'; -- 12
when others => x <= '0'; -- pozostale liczby
end case;
end process;
end a1;
• z użyciem przypisania selektywnego WITH SELECT
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity ent is
port(
a : in std_logic_vector(3 downto 0);
x : out STD_LOGIC := '0' );
end ent;
architecture a1 of ent is
Begin
with a selekt
x <= '1' when "0001", -- 1
'1' when "0010", -- 2
'1' when "0101", -- 5
'1' when "1001", -- 9
'1' when "1100", -- 12
'0' when others; -- pozostale liczby
end a1;
Wykres symulacji będzie taki sam za każdym razem, czyli po nadaniu wymuszenia typu COUNTER dla sygnału „a” na wyjściu otrzymamy „jedynkę” dla wartości, które znajdują się w tablicy prawdy.
2. Czym różni się sygnał od zmiennej? Sygnały są funkcjami czasu. Zmienne są stosowane pomocniczo tylko w obrębie procesu lub podprogramu.
3. Do czego służy język VHDL? Język VHDL jest bardzo popularnym językiem opisu sprzętu. Zadaniem języka jest wspieranie całości procesu projektowania układów cyfrowych poczynając od symulacji poprzez modelowanie, testowanie, implementacje oraz tworzenie dokumentacji. Podstawowym celem języka VHDL jest "zaprogramowanie" programowalnego układu logicznego niezależnie od technologii w jakiej ten układ został wytworzony (ASIC, FPGA, PLD, itp.).
Typy- operuje się na roznych typach danych które okresla się poprzez podane nazwy ,zbioru wartości i zbioru operacji. Typy dzieli się na klasy :
Typy skalarne-takie jak liczby całkowite i zmiennoprzecinkowe, typy wyliczane, oraz typy fizyczne
-typy zlozone-takie jak talice(array) elementow tego samego typu skalarnego , zalicza się również rekordy(records) , oraz pliki (files)
Typy wektorowo skalarne- wektory zerojedynkowe, które do operacji arytmetycznych reprezentuja liczby naturalne lub całkowite ,zapisane w naturalnym kodzie dwojkowy
Liczby całkowite(integer), liczby rzeczywiste(Real),typ bitowy(bit), typy wielowartościowe std_ulogic i std-_logic, typ boolowski boolean, typ znakowy charakter, typ fizyczny czasowy time, typy wyliczeniowe
Porty – nazw portow które sa równoznaczne z nazwami końcówek opisanego układu i nazwami odpowiednich sygnałów na końcówkach, rodzaje portow
Wejściowych-in - jednokierunkowy
Wyjściowych-out-jednokierunkowy
Buffet-dopuszcza do odczytu tylko wewnętrzne źródło sygnalu,a na zewnatrz może yc urzytytylko do odczytu na przewodzie, na którym nie występują inne zrodla sygnalow
Dwukierunkowych-inout
Style architektury:
Styl behawioralny(behaviour)-stosuje się do opisow algorytmicznych, z uzyciem instrukcji procesu i instrukcj sekwencyjnych . dlatego ten styl okresla się również jako sekwencyjny. W ten sposób okresl się sekwencje stanow, układy cyfrowe z pamięcią-automaty,programy testujące oraz podprogramy
Styl pzeplywowy-stosuje się do opisu przepływu danych podczas ich przetwarzania przez układy kombinacyjn , takie jak sieci bramkowe, multipleksery i układy arytmetyczne, do pisu stosuje się instrukcje współbieżne
Styl strukturalny- stosuje się do opisu układu utworzonego z pewnej liczby układów składowych, których opisy VHDL przygotowano wczesniej, jest to w istocie opis polaczen układów składowych(komponentow)
Obiekty-do zapisu i pamiętania danych w jezyku VHDL sluza obiekty. Podtswowymi sa:
Sygnaly- sa funkcja czasu co oznacza ze wartości sygnałów sa przyporządkowane wartościom na osi czasu podczas symulacji dzialania oisanych układów
Zmienne- nie sa funkcjami czasu (prawdopodobnie jak w standardowych jezykach programowania) i mogą być stosowane pomocniczo tylko w obrebie procesu lub podprogramu do zapamiętywania wynikow pośrednich wartości zmiennych sa uzyskiwane w rezultacie operacji przypisanai do zmiennej
Stałe-umozliwiaja przypisanie nazwy wartościom Stalym określonego typu, sluzy do tego deklaracja constant.
Pliki- sluza do trwalego przechowywania danych,co wykorzystuje się glownie przy wykonaniu testow
Atrybuty-w VHDL predefiniowane sa liczne atrybuty, pozwalające na identyfikacje pewnych cech deklarowanych typow i obiektow, pozwala to na łatwiejsze tworzenie bardziej ogolnych modeli układowych , atrybut związany jest z obiektem lub typem przez apostrof, najczęściej związane ztypami i sygnalami, popularnym atrybutem jest ‘event
Instrukcje wspolbierzne- instrukcjami wspolierznymi sa wszystkie instrukcje, k6 takich instrukcjitóre można bezpośrednio wypisac w ciele architektury, w VHD istnieje :
Przypisanie do sygnalu(<=)
Instrukcja procesu process
Instrukcja wspobierznego wywolowyania procedury
Instrukcja laczenia komponentow port map
Instrukcja owielania generale
Instrukcja blokowa Block
Wspolbierzna instrukcje przypisania do sygnaly stosuje się w następujących postaciach
Przpisanie podstawowe do sygnal ma skladnie- sygna<=[transport] wyrazenie [after odcinek_czasu];
Gdzie wyrazenie musi dawac wynik tego samego typu co sygnal, opcjonalna klauzura after slyzy do opisu opóźnień w realizacji operacji przypisania
Przypisanie warunkowe when-else- ma sladnie sygnal <={ wyrazenie when warunek [and | Or warunek] else } wyrazenie_koncowe; - wynik sprawdzenia warunku jest typu boolean ,a wiec może być rowny fase lub true. Gdy warunek po slowie when jest spelnony (true, to nastepuje przypisanie wyraznie sprzed slowa when i wykonania instrukcji się konczy,
Przypisanie selektywne with-select- with wybor selekt
{sygnal<= wyrazenie wqhen wartość_wyboru,}
Sygnal <= wyazenie_koncowe when others;
W tej instrukcji należy wynienic wszystkie możliwe wartości wyboru , aby nie dopuścić do tworzenia zbędnych przerzutnikow zatrzaskowyc podczas syntezy
Enity muxg8_4_1 is
Port(a,b,c,d : In std_logic_vector(7 downto 0);
Adr : std_logic_vector (1 downto 0);
Y :out std_logic_vector(7 downto 0));
End muxg8_4_1;
Architecture a1 of muxg8_4_1 is
Beign
With adr select
Y <= a when “00”,
B when “00”;
C when “10”;
D when”11”,
“xxxxxxxxx” when others;
End a1
Instrukcje selektywne umozliwiaja opsi dzialania układów w postaci uporzadkawanej sekwencji zdarzen w czasie.
Instrukcje sekwencyjne :
-przypisanie do zmiennej (:=) ;
-instrukcja czekania wait;
-instruckcja warunkowa if –then-else;
-instrukcja wyboru case;
-instrukcja petli loop o zwiazanie instrukcje exit i next;
-instrukcja pusta null;
-instrukcja testowa assert;
FUNCKJA przed uzyciem musi być najpierw zadeklarowana . deklaracje funkcji umieszca się lokalnie w czesci deklaracyjnej architektury opisywanego modulu albo w nagłówku procesu albo globalnie w odrębnym i zadeklarowanym pakiecie
Procedura może zwaracac wiecej wynikow niż jeden . podobnie jak funkcja procedura najpierw musi być zadeklarowana albo globalnie w pakiecie albo lokalnie w deklaracji architektury albo w nagłówku procesu nastepnie procedura może być wykonana w ciele architektury jakio instrukcja wspolbiezna lub w obrebie procesu
n-bitowy rejestr równoległy ( wykorzystując model przerzutnika d):
entity regn is
generic (n: positive :=8);
port (C,R : in std_logic;
D: in std_logic_vector(n-1 downto 0);
Q: out std_logic_vector(n-1 downto 0);
End regn;
Architecture a1 of regn is
Begin
Process(R,c)
Begin
If R=’1’ then Q <= (others =>’0’);
Elsif rising_edge (C) then
Q<=D;
End if;
End process;
End a1;
Decoder ¼
Enity regn is
Port( a: in std_logic_vector(1 downto 0);
Z: out std_logic_vector(3 downto 0);
End regn
Architecture a1 of regn is
Z<= “0001” when A=”00”else lub “0010” when A=”00”,
“0100” when A=”00”else
“1000”
Lub
with a select
Z <= “0001” when A=”00”,
“0010” when A=”00”else
“0100” when A=”00”,
“1000” when others;