Číslicové obvody a jazyk VHDL



Podobné dokumenty
Úvod do jazyka VHDL. Jan Kořenek Návrh číslicových systémů

Příklady popisu základních obvodů ve VHDL

Koncept pokročilého návrhu ve VHDL. INP - cvičení 2

Návrh. číslicových obvodů

Souhrn Apendixu A doporučení VHDL

Jazyk VHDL konstanty, signály a proměnné. Jazyk VHDL paralelní a sekvenční doména. Kurz A0B38FPGA Aplikace hradlových polí

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Vývoj VHDL. Verilog HDL

Návrh ovládání zdroje ATX

Sčítačky Válcový posouvač. Demonstrační cvičení 6

Násobičky, Boothovo překódování. Demonstrační cvičení 7

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

2. Entity, Architecture, Process

1. Seznamte se s výukovou platformou FITkit (

Vzorový příklad. Postup v prostředí ISE. Zadání: x 1 x 0 y Rovnicí y = x 1. Přiřazení signálů:

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

PROGRAMOVATELNÁ LOGICKÁ POLE A JAZYKY HDL

Pokročilé využití jazyka VHDL. Pavel Lafata

12. VHDL pro verifikaci - Testbench I

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Vzorový příklad. Postup v prostředí ISE. Zadání: x 1 x 0 y. Rovnicí y = x 1. x 0. Přiřazení signálů: ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

1 Stručný popis jazyku VHDL

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Základní znaky. - Ve srovnání se Spice jsou velmi složité a vyžadují dlouhou dobu na plné osvojení. - Velmi nákladné simulační programy.

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Integrované obvody. Obvody malé, střední a velké integrace Programovatelné obvody

14. Složitější konstrukce

Jazyk VHDL zápis čísel, znaků a řetězců. Jazyk VHDL základní datové typy a operátory. Kurz A0B38FPGA Aplikace hradlových polí

Cíle. Teoretický úvod

Digitální technika. Jazyk VHDL, základy návrhu. Ing. Jakub Št astný, Ph.D. 1

7. Popis konečného automatu

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Implementace čítačů v číslicových systémech 2 Jakub Šťastný ASICentrum, s.r.o. FPGA Laboratoř, Katedra teorie obvodů FEL ČVUT Praha

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Praktické úlohy- 2.oblast zaměření

Programovací jazyk Pascal

Kódy pro odstranění redundance, pro zabezpečení proti chybám. Demonstrační cvičení 5 INP

PROGRAMOVATELNÉ LOGICKÉ OBVODY

SEKVENČNÍ LOGICKÉ OBVODY

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

SYSTÉMY NAČIPU MI-SOC

Příklad č. 1 Přepis informace ze vstupů (SW0 až SW3) na ledky (LEDG0 až LEDG3)


Číselné vyjádření hodnoty. Kolik váží hrouda zlata?

1/1 ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018

Struktura a architektura počítačů (BI-SAP) 4

Operace ALU. INP 2008 FIT VUT v Brně

Profilová část maturitní zkoušky 2014/2015

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Návrh FPGA systémů. Jazyk VHDL, principy simulace. Ing. Jakub Št astný, Ph.D. 1

7. Pracovní postupy. Fakulta informačních technologií MI-NFA, zimní semestr 2011/2012 Jan Schmidt

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Pohled do nitra mikroprocesoru Josef Horálek

FPGA + mikroprocesorové jádro:

Sekvenční logické obvody

3.7.5 Znaménkové operátory Násobící operátory Rùzné operátory Základní objekty Konstanty Sig

Cíle. Teoretický úvod. BDIO - Digitální obvody Ústav mikroelektroniky Základní logická hradla, Booleova algebra, De Morganovy zákony Student

IPZ laboratoře. Analýza komunikace na sběrnici USB L305. Cvičící: Straka Martin, Šimek Václav, Kaštil Jan. Cvičení 2

Struktura a architektura počítačů (BI-SAP) 10

Architektura počítačů Logické obvody

Y36SAP 2007 Y36SAP-4. Logické obvody kombinační a sekvenční používané v číslicovém počítači Sčítačka, půlsčítačka, registr, čítač

Metody připojování periferií

9. Praktická verifikace

Systém řízení sběrnice

FAKULTA INFORMAČNÍCH TECHNOLOGIÍ

Profilová část maturitní zkoušky 2015/2016

Logické funkce a obvody, zobrazení výstupů

LOGICKÉ OBVODY X36LOB

Architektura počítačů Logické obvody

Chapter Základní principy simulace :).

Úvod do problematiky obvodů FPGA pro integrovanou výuku VUT a VŠB-TUO

Implementace čítačů v číslicových systémech Jakub Šťastný

BDIO - Digitální obvody

Simulace číslicových obvodů na hradlové úrovni: model návrhu Jakub Šťastný ASICentrum, s.r.o. Katedra teorie obvodů FEL ČVUT Praha

LabView jako programovací jazyk II

Použití jazyka VHDL pro návrh číslicových obvodů

Návrh čítače jako automatu

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

SPARTAN - 3 Xilinx FPGA Device

Organizace předmětu, podmínky pro získání klasifikovaného zápočtu

Y36SAP Y36SAP-2. Logické obvody kombinační Formy popisu Příklad návrhu Sčítačka Kubátová Y36SAP-Logické obvody 1.

4. Elektronické logické členy. Elektronické obvody pro logické členy

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Návrh základních kombinačních obvodů: dekodér, enkodér, multiplexor, demultiplexor

Vestavné systémy BI-VES Přednáška 5

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

... sekvenční výstupy. Obr. 1: Obecné schéma stavového automatu

Základní principy konstrukce systémové sběrnice - shrnutí. Shrnout základní principy konstrukce a fungování systémových sběrnic.

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

OPERAČNÍ PROGRAM PRAHA ADAPTABILITA & EU:

B i b l i o g r a f i c k á c i t a c e

Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram. III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT

Semestrální práce z předmětu Speciální číslicové systémy X31SCS

Transkript:

Číslicové obvody a jazyk VHDL Návrh počítačových systémů 2007-2008 Jan Kořenek korenek@fit.vutbr.cz

Proč HW realizace algoritmu Vyšší rychlost paralelní nebo zřetězené zpracování, přizpůsobení výpočetních jednotek algoritmu Například jeden FPGA čip je až 800x rychlejší než Pentium Core 2 při analýze DNA sekvencí. Dalším příkladem je analýza paketů na síti, kdy FPGA umožňuje hledat v paketech řetězce až 100x rychleji než PC s Pentium Core 2. Nižší spotřeba snížení pracovní frekvence, dynamická správa napájení a připojování hodin (clock gating) Všechny vestavěné systémy napájené z baterie. Příkladem může být mp3 přehrávač, mobilní telefon, inteligentní kamera napájená prostřednictvím z Ethernetu a spousta dalších. Menší rozměry je možné integrovat celý výpočetní systém na jediný čip INP Číslicové obvody a jazyk VHDL FIT VUT Brno 2

Návrh pro FPGA Popis obvodu library IEEE; use IEEE.std_logic_1164.all; entity blk4 is port ( i1: in STD_LOGIC; i2: in STD_LOGIC; i3: in STD_LOGIC; i4: in STD_LOGIC; o1: out STD_LOGIC ); end blk4; architecture struc of blk4 is o1 <= (i1 or i2) and (i3 and i4); end struc; Vytvoř obvod 0110010 0000101 1011100 INP Číslicové obvody a jazyk VHDL FIT VUT Brno 3

Kroky návrhu pro FPGA Vstup odladěný zdrojový kód (např. v jazyce VHDL, Verilog, SystemC, HandelC apod.) nebo schéma zapojení požadavek na celkové zpoždění, plochu vhodné FPGA (počet CLB, fmax, počet I/O, cena) Syntéza transformace zdrojového kódu na zapojení na úrovni hradel (systém nakreslí schéma zapojení!) mapování na cílovou technologii optimalizace/minimalizace Rozmístění a propojení elementů v FPGA Vygenerování konfiguračního souboru Nahrání konfiguračního souboru do SRAM v FPGA INP Číslicové obvody a jazyk VHDL FIT VUT Brno 4

Syntéza obvodu dd.vhd obvod popsaný ve VHDL Syntéza je proces transformace popisu na podrobnější popis. Cílová technologie - FPGA KO 16LUT lze naprogramovat log. funkci 4 proměnných + připojit KO Programovatelné propojení konfigurační bity ovládají spínače konfig. bit INP Číslicové obvody a jazyk VHDL FIT VUT Brno 5

Syntéza obvodu Behaviorální syntéza Jedná se o syntézu abstraktního chování, kdy je daný algoritmus popsán na nejvyšší úrovni. K popisu mohou byt použity všechny syntaktické konstrukce, které HDL jazyk poskytuje. Popis je soustředěn na: tok dat, omezení vztahující se na vstup a výstup a uživatelská omezení. Výstupem behaviorální syntézy je popis na úrovni meziregistrových přenosu, který má stejné chování jako vstupní obvod. Nevýhodou je, že veškeré optimalizace jsou nechány na nástrojích realizujících syntézu. Jediná možnost, jak řídit výsledek syntézy, je správné nastavení omezení a nástrojů. RTL syntéza Jedná se o syntézu na úrovni meziregistrových přenosů. Vstupní obvod je tedy popsán pomocí registrů, čítačů, automatů atd. Popis se vyznačuje tím, že je od sebe oddělena DATOVÁ a ŘÍDICÍ cesta. ŘÍDICÍ cestou se většinou rozumí FSM automat. DATOVOU cestou pak různé logické sítě, sčítačky, registry, atd. Celá DATOVÁ cesta je pak řízena pomocí signálů z ŘÍDICÍ cesty. Syntezátor z tohoto popisu vygeneruje popis na úrovni hradel. Výsledek syntézy zároveň obsahuje optimalizovanou datovou cestu, paměti a řídicí struktury. Logická syntéza Syntéza na úrovni hradel. Popis je složen pouze z komponent cílové technologie vzájemně propojené pomocí signálů. INP Číslicové obvody a jazyk VHDL FIT VUT Brno 6

HDL jazyky Na rozdíl od schematu návrhář popisuje funkci obvodu pomocí jazyka Zařízení je možné modelovat a simulovat Proces syntézy umožňuje transformovat HDL popis do prvků cílové technologie V praxi se používají zejména jazyky VHDL a Verilog Oba jazyky mohou být vstupem procesu syntézy VHDL dominuje v Evropě, Verilog v USA INP Číslicové obvody a jazyk VHDL FIT VUT Brno 7

Jazyk VHDL Zkratka VHDL z akronymu: VHDL = VHSIC Hardware Description Language VHSIC je zkratka pro Very High Speed Integrated Circuit Původně bylo VHDL vyvinuto pro vojenské účely ke specifikaci číslicových systémů, později se stalo IEEE standardem Jazyk VHDL není svázán s žádnou cílovou technologií Umožňuje tři základní úrovně popisu behaviorální, strukturní a data flow popis Existuje spousta nástrojů umožňující syntézu nebo simulaci obvodů popsaných v jazyku VHDL INP Číslicové obvody a jazyk VHDL FIT VUT Brno 8

Číslicové zařízení ve VHDL VHDL popisuje číslicová zařízení a jednotlivé části zařízení pomocí komponent, které se popisují pomocí: Entita definuje rozhraní komponenty Architektura popisuje chování nebo strukturu komponenty Definice rozhraní Popis funkce A(7:0) B(7:0) Y(7:0) součet Jedna entita může mít více architektur Entita Architektura INP Číslicové obvody a jazyk VHDL FIT VUT Brno 9

Entita Popisuje rozhraní mezi komponentou a okolím Rozhraní komponenty se skládá z portů (signálů rozhraní) a generických parametrů A(7:0) Y(7:0) Signály rozhraní mohou být podle směru v módu IN, OUT nebo INOUT Příklad: B(7:0) Entita entity NAND is generic (DATA_WIDTH : integer :=8 ); parametry port (A : in std_logic_vector(data_width-1 downto 0); B : in std_logic_vector(data_width-1 downto 0); Y : out std_logic_vector(data_width-1 downto 0); ); signály rozhraní end entity register; INP Číslicové obvody a jazyk VHDL FIT VUT Brno 10

Architektura Definuje chování nebo strukturu komponenty Architektura je vždy svázána s entitou, která definuje rozhraní s okolím Každá komponenta může být popsána na úrovni struktury, chování nebo dataflow Různé způsoby popisu je možné kombinovat STRUKTURA Z čeho je komponenta složena? Strukturní popis Popis architektury komponenty CHOVÁNÍ Co komponenta dělá? Behaviorální popis DATOVÉ ZÁVISLOTI Jaký je datový tok signálů? Dataflow popis INP Číslicové obvody a jazyk VHDL FIT VUT Brno 11

Architektura Syntax: Architecture name of entity_name is Deklarační část Jméno entity popisující rozhraní architektury. Architekturu není možné použít s jinou entitou, než je uvedená zde. Sekce paralelních příkazů end architecture name; Sekce paralelních příkazů Deklarační část architektury je vyhrazena pro pro deklaraci signálů, konstant nebo typů použitých uvnitř architektury. Součástí sekce paralelních příkazů mohou být instance komponent nebo procesy vzájemně propojené signály Behaviorální popis architektura je složena z jednoho nebo více procesů Strukturní popis architektura obsahuje pouze instance komponent V praxi se často používají oba přístupy i v rámci jedné architektury INP Číslicové obvody a jazyk VHDL FIT VUT Brno 12

Behaviorální popis (jeden proces) Architektura složena z jednoho nebo více procesů Proces je popsán na úrovni algoritmu (příkazy, podmínky, cykly, atd.) Cílem je pouze popsat, jak se mění výstupy v závislosti na změnách vstupních signálů, nemusí být zřejmá hardwarová realizace Příklad: one: process(bus_in) variable count : std_logic_vector(3 downto 0); count := 0000 ; for i in 0 to 15 loop if BUS_IN(i) = '1' then count := count + '1'; end if; end loop; N_ONE <= count; end process one; BUS_IN (15:0) N_ONE one N_ONE(3:0) Proces one spočítá počet jedničkových bitů ve vstupních signálu BUS_IN a výslednou hodnotu přiřadí do signálu N_ONE INP Číslicové obvody a jazyk VHDL FIT VUT Brno 13

Behaviorální popis (více procesů) Architektura se může skládat z více procesů: Procesy mohou číst/nastavovat vstupními/výstupními signály Komunikace mezi procesy je realizována prostřednictvím signálů Příklad: architecture behv of NAND is signal ab_and : stdl_logic_vector(7 downto 0); and_proc : process (A, B) ab_and <= A AND B; end process and_proc; not_proc : process (ab_and) Y <= not ab_and; end process not_proc; end behv; A(7:0) B(7:0) AND NAND NOT Y(7:0) Procesy komunikují prostřednictvím signálu ab_and INP Číslicové obvody a jazyk VHDL FIT VUT Brno 14

Proces ve VHDL Syntax: name: process (sensitivity list) declarations sequential statements end process name; Proces může popisovat chování celé komponenty nebo pouze její části Architektury může obsahovat více procesů komunikujících vzájemně pomocí signálů Seznam citlivých proměnných Kdykoliv se změní signál ze sensitivity listu, je spuštěn proces a vypočítají se nové hodnoty signálů Deklarační část procesu je vyhrazena pro deklaraci proměnných, konstant nebo typů použitých uvnitř procesu Sekvenční příkazy Program, který popisuje chování dané komponenty nebo její části. Na základě vstupních signálů a vnitřních proměnných program vypočítá hodnoty signálů INP Číslicové obvody a jazyk VHDL FIT VUT Brno 15

Řídicí struktury v procesu Podmíněné vykonání příkazů (if... then... ) IF <condition> THEN <statements> END IF; Podmíněné vykonání příkazů s alternativou (if... then... else... nebo if... then... elsif... ) IF <condition> THEN <statements> [ELSIF <statements>] [ELSIF <statements>] END IF; Výběr více příkazů (case... ) CASE <condition> IS WHEN <value> => <statements> [WHEN <value> => <statements>] END CASE; INP Číslicové obvody a jazyk VHDL FIT VUT Brno 16

Řídicí struktury v procesu cykly Cykly umožňující opakované vykonání sekvence příkazů while... do... WHILE <condition> LOOP <statements> END LOOP; for... loop... FOR <range> LOOP <statements> END LOOP; Příkazy pro přerušení běhu smyčky NEXT skok do další iterace next when <condition>; EXIT ukončení celé smyčky exit when <condition>; INP Číslicové obvody a jazyk VHDL FIT VUT Brno 17

Senzitivity list procesu Senzitivity list procesu proces je spuštěn pokud dojde ke změně signálu uvedeného na senzitivity listu procesu Po provedení sekvence příkazů je proces pozastaven a čeká se opět na změnu signálu ze senzitivity listu proc_1: process DATA <= 1010 ; wait for 10 ns; DATA <= 0101 ; wait for 10 ns; end process proc_1; proc_2: process (DATA) statement1; statement2; statement3; end process proc_2; Proces obsahující senzitivity list nemůže obsahovat příkaz WAIT Příkaz WAIT se používá zejména při tvorbě testbenche INP Číslicové obvody a jazyk VHDL FIT VUT Brno 18

Dataflow popis Modeluje datové závislosti Zkrácený zápis chování pomocí paralelních příkazů uvnitř architektury: Přiřazovací příkaz Y <= NOT (A AND B); Podmíněný přiřazovací příkaz Y <= B when (A='1') else '0'; Výběrový přiřazovací příkaz Příklad: with S select Y <= A when 0, B when 1, architecture dataflow of NAND is Y <= not (A AND B); end behv; A(7:0) B(7:0) NAND AND Y(7:0) INP Číslicové obvody a jazyk VHDL FIT VUT Brno 19

Strukturní popis Popisuje z čeho se daný systém (zařízení nebo komponenta) skládá jakou má obvod strukturu Strukturní popis může mít více úrovní hierarchie Každá dílčí komponenta může být popsána opět na úrovni struktury nebo na úrovni chování Komponenty na nejnižší úrovni jsou vždy popsány behaviorálně Příklad: architecture struct of NAND is signal ab_and : stdl_logic_vector(7 downto 0); and_i: entity work.and port map ( In0=>A, In1=>B, Output=>ab_and); not_i: entity work.not port map ( In0=>ab_and, Output=>Y); end behv; NAND A(7:0) Y(7:0) AND NOT B(7:0) Použité komponenty Komponenty komunikují prostřednictvím signálu ab_and In0 In1 AND AND NOT Output In0 Output NOT INP Číslicové obvody a jazyk VHDL FIT VUT Brno 20

Signály ve VHDL Signály slouží pro komunikaci mezi komponenty nebo procesy Mohou být implementovány pomocí vodiče nebo sběrnice (více vodičů) A komponenta C B Signálu je možné přiřadit libovolný datový typ, který definuje charakter přenášených hodnot Pro reprezentace vodiče se používá typ std_logic Pro sběrnice se používá typ std_logic_vector(). Šířka sběrnice je definována šířkou pole. Syntax deklarace: signal <jmeno> : <typ> [:= imp_hodnota]; INP Číslicové obvody a jazyk VHDL FIT VUT Brno 21

Signál vs. Proměnné v procesu entity sig_var is port(d1, d2, d3: in std_logic; res1, res2: out std_logic); end sig_var; architecture behv of sig_var is signal sig_s1: std_logic; proc1: process(d1, d2, d3) variable var_s1: std_logic; var_s1 := d1 and d2; res1 <= var_s1 xor d3; end process; d1 d2 d3 res1 res2 proc2: process(d1,d2,d3) sig_s1 <= d1 and d2; res2 <= sig_s1 xor d3; end process; end behv; Sledujte rozdíl mezi res1 a res2. INP Číslicové obvody a jazyk VHDL FIT VUT Brno 22

Komentáře, znaky, řetězce,... Komentář uvozen dvojicí znaků -- -- Toto je komentář Znak nebo bit vkládá se do apostrofů '1' sig_bit <= '1'; Řetězec nebo bitový vektor vkládá se do uvozovek sig_bit_vector <= 0001 ; Identifikátory podobná pravidla jako u jiných jazyků INP Číslicové obvody a jazyk VHDL FIT VUT Brno 23

Příklady rozšiřujících datových typů Výčtový typ TYPE muj_stav IS (reset, idle, rw, io); signal stav: muj_stav; stav <= reset; -- nelze stav <= 00 ; Pole TYPE data_bus IS ARRAY (0 TO 1) OF BIT; variable x: data_bus; variable y: bit; y := x(12); INP Číslicové obvody a jazyk VHDL FIT VUT Brno 24

Práce na úrovni bitů Uvažujme deklarace signálů: signal a, b: bit_vector (3 downto 0); signal c : bit_vector (7 downto 0); signal clk : bit; Konkatenace signálů: c <= a & b; Posun doleva a doprava: b <= b(2 downto 0) & '0'; -- posun doleva b <= '0' & b(3 downto 1); -- posun doprava Agregace: a <= (others => '0'); -- vše do nuly a <= ( 0, 1, others=> 0 ); -- MSB = 01 a b 1 0 1 0 & 1 1 1 1 c 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 doleva doprava 0 0 0 0 0 1 0 0 INP Číslicové obvody a jazyk VHDL FIT VUT Brno 25

Testbench Testování VHDL komponent v prostředí VHDL d1 d2 d3 UUT res1 res2 UUT Generování testovacích vektorů testbench Testbench obvykle obsahuje: Instanci vyvíjené komponenty označenou jako UUT (Unit Under Test) Generátor testovacích vektorů Monitorování a ověřování reakcí UUT INP Číslicové obvody a jazyk VHDL FIT VUT Brno 26

Příklad Testbench entity testbench is end entity testbench; architecture tb_arch of testbench is signal a, b, y : std_logic; UUT : entity work.and_gate port map( A => a, B => b, Y => y ); test : process a <= 0; b <= 0; wait for 10 ns; a <= 0; b <= 1; wait for 10 ns; a <= 1; b <= 0; wait for 10 ns; a <= 1; b <= 1; wait; end process test; Testbench Entity Testovací vektory připojené k UUT Instance UUT (napojení testovacích vektorů) Přikládání testovacích vektorů end architecture tb_arch; INP Číslicové obvody a jazyk VHDL FIT VUT Brno 27

Příklady ve VHDL Klopný obvod typu D Asynchronní Synchronní Multiplexor Sčítačka FSM Handshake INP Číslicové obvody a jazyk VHDL FIT VUT Brno 28

Klopný obvod typu D library IEEE; use IEEE.std_logic_1164.all; entity dffx is port ( CLK : in std_logic; RST : in std_logic; DIN : in std_logic; DOUT : out std_logic ); end dffx; architecture behav of dffx is process (CLK,RST) if (RST = '1') then DOUT <= '0'; elsif (CLK'event and CLK = '1') then DOUT <= DIN; end if; end process; end behav; DIN CLK RST D DOUT CLK (clock) hodinový vstup RST(reset) asynchronní reset DIN (data in) data přivedená na vstup retistru DOUT (data output) hodnota uložená v registru Asynchronní reset (není synchronizován s hodinovým signálem) INP Číslicové obvody a jazyk VHDL FIT VUT Brno 29

Asynchronní reset u KO typu D process (CLK,RST,DIN) if (RST = '1') then DOUT <= '0'; elsif (CLK'event and CLK = '1') then DOUT <= DIN; end if; end process; CLK RST DIN='1' CLK D DOUT DOUT RST INP Číslicové obvody a jazyk VHDL FIT VUT Brno 30

Synchronní reset u KO typu D process (CLK,RST,DIN) if (CLK'event and CLK = '1') then if (RST = '1') then DOUT <= '0'; else DOUT <= DIN; end if; end if; end process; CLK RESET DIN='1' CLK D DOUT DOUT RST INP Číslicové obvody a jazyk VHDL FIT VUT Brno 31

Multiplexor library ieee; use ieee.std_logic_1164.all; entity Mux is port( I3: in std_logic_vector(2 downto 0); I2: in std_logic_vector(2 downto 0); I1: in std_logic_vector(2 downto 0); I0: in std_logic_vector(2 downto 0); S : in std_logic_vector(1 downto 0); O : out std_logic_vector(2 downto 0)); end Mux; architecture behv1 of Mux is process(i3,i2,i1,i0,s) case S is when "00" => O <= I0; when "01" => O <= I1; when "10" => O <= I2; when "11" => O <= I3; when others => O <= "ZZZ"; end case; end process; end behv1; IN0 IN1 IN2 IN3 S IN0, IN1, MUX O IN2, IN3 přepínané vstupy S řídící hradlo Y výstup multiplexoru INP Číslicové obvody a jazyk VHDL FIT VUT Brno 32

Sčítačka A ADDER Sum A B Cout B entity ADDER is port( A, B : in std_logic; Sum, Cout: out std_logic); end entity ADDER; Pravdivostní tabulka: Cout Přetečení do vyššího řádu S Součet Cout= A B INP Číslicové obvody a jazyk VHDL FIT VUT Brno 33

Sčítačka a b Sum Cout Summation : process (A, B) Sum <= A XOR B; end process Summation; Carry : process (A, B) Cout <= (A AND B); end process Carry; Popis s využitím procesů Dataflow popis ARCHITECTURE behav of ADDER IS BEGIN Summation : process (A, B) Sum <= A XOR B; end process Summation; Carry : process (A, B) Cout <= (A AND B); end process Carry; END behav; ARCHITECTURE dataflow of ADDER IS BEGIN Sum <= A XOR B; Cout <= A AND B; END dataflow; INP Číslicové obvody a jazyk VHDL FIT VUT Brno 34

FSM Handshake RQ ACK FSM CLK RST RQ DATA dnext drdy DATA ACK DATA Předání dat pomocí handshake drdy='0' Zařízení požádá o data pomocí signálu RQ Pokud jsou data uloženy ve frontě (signál drdy), jsou dány na datovou sběrnici (signály DATA) a potvrzeny signálem ACK Signálem next se odstraní vyslaná data z fronty RQ='0' idle 0,0 RQ='1' wait 0,0 drdy='1' next 0,1 RQ='0' data 1,0 RQ='1' značení stav ACK,dnext INP Číslicové obvody a jazyk VHDL FIT VUT Brno 35

Konec přednášky Děkuji za pozornost INP Číslicové obvody a jazyk VHDL FIT VUT Brno 36