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

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

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

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

Souhrn Apendixu A doporučení VHDL

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

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

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

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

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

Chapter Základní principy simulace :).

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

12. VHDL pro verifikaci - Testbench I

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

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

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

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

3. Sekvenční logické obvody

14. Složitější konstrukce

5. Sekvenční logické obvody

Číslicové obvody a jazyk VHDL

Návrh ovládání zdroje ATX

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

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

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

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

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

1. Seznamte se s výukovou platformou FITkit (

Návrh. číslicových obvodů

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

SEKVENČNÍ LOGICKÉ OBVODY

Vývoj VHDL. Verilog HDL

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

2. Entity, Architecture, Process

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

1 Stručný popis jazyku VHDL

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.

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

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

PROGRAMOVATELNÁ LOGICKÁ POLE A JAZYKY HDL

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

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

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

Logické obvody 10. Neúplné čítače Asynchronní čítače Hazardy v kombinačních obvodech Metastabilita Logické obvody - 10 hazardy 1

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

7. Popis konečného automatu

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č


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

Programovací jazyk Pascal

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

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Principy komunikace s adaptéry periferních zařízení (PZ)

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

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

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Úvod do programovacích jazyků (Java)

Cíle. Teoretický úvod

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

Algoritmizace a programování

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

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Sdílení dat mezi podprogramy

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

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

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

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

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

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

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

Registry a čítače část 2

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

Architektura počítačů Logické obvody

PROGRAMOVATELNÉ LOGICKÉ OBVODY

10. Techniky formální verifikace a validace

Architektura počítačů Logické obvody

Operace ALU. INP 2008 FIT VUT v Brně

Struktura a architektura počítačů

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

Modelování procesů (2) Procesní řízení 1

2. Synchronní číslicové systémy

Číslicové obvody základní pojmy

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

6 Příkazy řízení toku

Konečný automat. Studium chování dynam. Systémů s diskrétním parametrem číslic. Počítae, nervové sys, jazyky...

Sekvenční logické obvody

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

GENEROVÁNÍ KÓDU 9. SHRNUTÍ - PŘÍKLAD POSTUPU PŘEKLADU VSTUPNÍHO PROGRAMU (ZA POUŽITÍ DOSUD ZNÁMÝCH TECHNIK)

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

Činnost: 1) Vyhodnotí se výraz E. 2) Jeho hodnota se uloží do proměnné V.

Řídicí struktury. alg3 1

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

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

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

Logické obvody - sekvenční Formy popisu, konečný automat Příklady návrhu

Sada 1 - Základy programování

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

Transkript:

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011 Jiří Douša, katedra číslicového návrhu (K18103), České vysoké učení technické v Praze, fakulta informačních technologií Přednáška 6: VHDL-paralelní příkazy, uživatelské knihovny Stručný obsah: přehled paralelních signálových příkazů, bloky, strážené bloky a signály, ukázky modelů v paralelním prostředí, tvorba uživatelských knihoven. 21.10.2011 MI-SIM Jiří Douša10.10.2011 1

Paralelní signálové příkazy Příklad.: předpokládejme strukturu dílčích částí b a f1 f2 c f3 d předpoklad: všechny výstupy mají nulové zpoždění následující popisy - ekvivalentní chování 1) b <= f1 (a) 2) d <= f3 (b,c) c <= f2 (b) c <= f2 (b) d <= f3 (b,c) b <= f1 (a) uložení výstupů bez delta zpoždění - nedeterministické chování použití delta zpoždění - vede jednoznačně na posloupnost a time microtime změna a => výpočet f1 změna b => výpočet f2, f3 změna c, d => výpočet f3 změna d 21.10.2011 MI-SIM Jiří Douša10.10.2011 2

Paralelní signálové příkazy dva typy: nepodmíněné: stejná syntax jako u sekvenčních příkazů podmíněné: rozlišná syntax Příklad: RS asynchronní klopný obvod SN & QQ Q RN & QQN QN entity RS is port ( SN, RN: in bit; Q, QN: out bit ); end RS; architecture Arch of RS is signal QQ, QQN : bit; QQ <= not (SN and QQN) after.; QQN <= not (RN and QQ) after.; Q <= QQ; QN <= QQN; -- zápis do výstupních portů end Arch; Poznámka: uvažujme nenulové, ale stejné zpoždění obou členů a efekt obvodu pro následující posloupnost vstupů : 00, 11 => astabilní chování, pro nulové zpoždění kmitá s delta zpožděním 21.10.2011 MI-SIM Jiří Douša10.10.2011 3

Paralelní signálové příkazy Příklad: generátor parity - nástin různých možností: jeden osmivstupový xor, symetrický strom sestavený ze tří hladin dvouvstupových elementů xor, sedmiúrovňová kaskáda z dvouvstupových elementů xor, adt. entity Suda_parita is port (vst: in bit_vector (7 downto 0); parita: out bit); end Suda_parita; architecture A1 of Suda_parita is -- kaskáda: 7 úrovní signal s: bit_vector (1 to 6); --pomocné lokální signály s (1) <= vst (0) xor vst (1); s (2) <= s (1) xor vst (2); s (3) <= s (2) xor vst (3); Srovnání s procesem: s (4) <= s (3) xor vst (4); s (5) <= s (4) xor vst (5); s (6) <= s (5) xor vst (6); výrazná pravidelnost parita <= s (6) xor vst (7); end A1; a) process ( vst ) end process; --špatně b) process ( vst ) variable s:...; end process; -- OK c) process ( vst, s ).end process; -- OK d) 7 procesů obsahujících po jediném příkazu; --OK 21.10.2011 MI-SIM Jiří Douša10.10.2011 4

Příkaz generate účel: generování podobných paralelních příkazů dvě formy: iterační typ příkazu : <for schema> analogie sekvenčního příkazu cyklu, pro generování pravidelných struktur, podmíněný typ příkazu: <if schema> analogie sekvenčního příkazu if, nelze použít alternativní větve (analogie s elsif nebo else), použití: pro podmíněné generování odlišností, syntax: <label> for < ident> in <rozsah> generate <paralelní příkaz> end generate; <label> if < podmínka> generate <paralelní příkaz> end generate; řídící proměnná cyklu je implicitně deklarována, nemůže být explicitně modifikována, je nedostupná vně příkazu generate 21.10.2011 MI-SIM Jiří Douša10.10.2011 5

Příkaz generate Příklad: generátor parity ve formě kaskády vytvořené pomocí příkazů typu data - flow (viz minulý příklad) entity Suda_parita is port (vst: in bit_vector (7 downto 0); parita: out bit); end Suda_parita; architecture A2 of Suda_parita is signal s: bit_vector ( 1 to 6); G: for i in 0 to 6 generate -- generuje sedm příkazů G0: if ( i = 0) generate --1. příkaz kaskády s(i+1) <= vst (i) xor vst (i+1); end generate; G1_5: if ( i >= 1 and i <=5 ) generate --uvnitř kaskády s(i+1) <= s (i) xor vst (i+1); end generate; end A2; G6: if ( i = 6) generate --poslední příkaz kaskády parita <= s (i) xor vst (i+1); end generate; end generate; 21.10.2011 MI-SIM Jiří Douša10.10.2011 6

Podmíněné paralelní signálové příkazy příkaz when: <cílový signál> <= <výraz> [after <zpoždění>] when <podmínka> else ; --opakování <výraz> *after <zpoždění>+; analogie sekvenčního příkazu if, provedení při změně některého signálu na pravé straně příkazu, podmínky jsou testovány v pořadí v jakém jsou uvedeny, v případě splněné podmínky dojde k přiřazení hodnoty výrazu a testování dalších podmínek končí. příkaz with: with <testovaný výraz> select <cílový signál> <= <výraz>[ after <zpoždění>] when <výběr>, ; -- opakování analogie sekvenčního příkazu case, provedení při změně některého signálu z <testovaný výraz> či z <výraz>, testovaný výraz musí být diskrétního typu, všechny hodnoty testovaného výrazu musí být v příkazu citovány právě jednou. 21.10.2011 MI-SIM Jiří Douša10.10.2011 7

Podmíněné paralelní signálové příkazy Příklad: osmibitový třístavový budič: a 8 8 bus enable a) použití příkazu when: bus <= a when enable = 0 else (others => Z ); b) použití příkazu with: with enable select bus <= a when 0, (others => Z ) when 1 ; poznámka: zde byly uvedeny dva paralelní podmíněné příkazy; každý z nich representuje chování všech osmi budičů sběrnice bus (předpoklad: a, bus jsou osmibitové vektory typu std_logic ) 21.10.2011 MI-SIM Jiří Douša10.10.2011 8

Modely kombinačních obvodů Příklad.: multiplexor 4 x 1: a b c d y příkaz when: y <= a when s = 00 else b when s = 01 else c when s = 10 else process (a,b,c,d,s) if s = 00 then y <=a; elsif...; d;... else y <=d; end if; end process; s(0) s(1) příkaz with: process (a,b,c,d,s) with s select y < = a when 00, case s is b when 01, when 00 => y <= a; c when 10,...; d when others; end case; end process; Poznámka: v paralelním prostředí je možné použít kteroukoliv z uvedených čtyř variant 21.10.2011 MI-SIM Jiří Douša10.10.2011 9

Modely klopných obvodů 1) hladinový synchronní klopný obvod typu D: entity DL is port (D, clk: in bit; Q, QN: buffer bit ); end DL; architecture Arch of DL is --hladinový klopný obvod Q <= D when clk = 1 else Q ; QN <= not Q; end Arch1; 2) hranový synchronní klopný obvod typu D (zde pouze příkazy): Q <= D when ( clk = 1 and clk event ) else Q; QN <= not Q; 3) asynchronní klopný obvod typu JK (zde pouze architektura): architecture Arch of JK is --hladinový klopný obvod Q <= Q when ( J = 0 and K = 0 ) else 0 when ( J = 0 and K = 1 ) else 1 when ( J = 1 and K = 0 ) else QN; QN <= not Q; end Arch2; 21.10.2011 MI-SIM Jiří Douša10.10.2011 10

Modely automatů Příklad: 00/0 01/1 10/1 automatový model seriové sčítačky Q0 11/0 00/1 Q1 entity Scit is port (x, y, clk: in bit; s: out bit); 01/0 10/0 11/1 end Scit; architecture Ascit of Scit is type stav is (Q0, Q1); signal sstav, pstav: stav; pstav <= Q0 when sstav = Q0 and not (x= 1 and y = 1 ) else Q1 when sstav =Q0 and Q0 when sstav =Q1 and Q1 ; (x= 1 and y = 1 ) else (x= 0 and y = 0 ) else s <= 0 when sstav = Q0 and ((x xor y) = 0 ) or sstav = Q1 and (( x xor y) = 1 ) 1 ; -- následuje vlastní přechod do nového stavu sstav <= pstav when clk event and clk = 1 else sstav; end Ascit ; else 21.10.2011 MI-SIM Jiří Douša10.10.2011 11

Paralelní příkaz assert Použití: kontrola nepřípustných situací: zakázané kombinace vstupních hodnot, kontrola parity, porušení časových omezení (předstih, přesah) syntax : assert (<podmínka>) poznámka.: [report <zpráva>+ [severity <chybová úroveň> +; provedení příkazu: při změně hodnoty některého signálu v <podmínka> pokud není splněná <podmínka> pak je zpráva vytištěna spolu s případným ukončením simulace <chybová úroveň> - jde o jednu z hodnot note, warning, error, failure I EM1 EM2 M I..interface, M...model EM1.error manager (pro všechny architektury) EM2.error manager (pro danou architekturu) entity architecture 21.10.2011 MI-SIM Jiří Douša10.10.2011 12

Příklady použití: Paralelní příkaz assert 1) kontrola předstihu klopného obvodu: entity FF is generic (predstih, presah: time); port (d,clk: in std_logic; q: out std_logic); -- parametry entity assert not (clk = 1 and clk event -- not ( je hrana clk and not d stable(predstih)) -- a d není stabilní) report predstih nedodrzen severity error; end FF; D clk DFF q 2) kontrola přesahu klopného obvodu: assert not (clk delayed (presah) = 1 and clk delayed (presah) event --not (na del(clk) hrana and not d stable (presah)) -- a d není stabilní ) -- jiná možná varianta assert: assert ( not ( clk delayed (presah) = 1 and clk delayed (presah) event ) -- není na del (clk) hrana or d stable (presah) -- nebo d je stabilní ) report presah nedodrzen severity error; 21.10.2011 MI-SIM Jiří Douša10.10.2011 13

Odložený příkaz assert provedení: v posledním delta cyklu pro danou hodnotu modelového času ( pouze ve VHDL-93 ) nereaguje na předchozí zákmity v průběhu předchozích delta cyklů Příklad: detektor parity - výstupní syndrom je průběžně indikován 1 1 1 0 0 0 0 0 0 1 a(1) a(2) a(3) a(4) a(5) xor 0 -> 1 i1 xor 0 -> 1 i2 xor 0 -> 1 i3 xor 0 -> 1 -> 0 syndrom i1 i2 i3 syndrom architecture Arch of. is signal i1, i2, i3, syndrom : bit; -- lokální signály i1 <= a(1) xor a(2); i2 <=.; i3 <= ; syndrom <= i(3) xor a(5); -- paralelní assert postponed assert ( syndrom = 0 ) report...; end Arch; 4 delta - cykly 21.10.2011 MI-SIM Jiří Douša10.10.2011 14

Paralelní příkaz procedury přípustné parametry: pouze signály módu in, out, inout nebo konstanty módu in, příkaz paralelní procedury je transformován na příkaz procesu. Příklad: deklarace a použití sčítačky v architektuře architecture Arch of. is procedure Sum -- toto je deklarační část architektury ( signal a, b: in bit_vector; signal s: out bit_vector; signal cin: in bit; signal cout: out bit ) is..; --deklarační část procedury.end Sum; --operační část procedury.; Sum ( u, v, w, p, q); end Arch; -- následuje operační část architektury -- příkaz paralelní procedury Poznámky: 1) příkaz procedury Sum je ekvivalentní příkazu process Sum ( u, v, w, p, q); wait on u, v, p; end process; 2) globální signály, které jsou v těle procedury použity jako vstupy a nejsou uvedeny v seznamu parametrů, nemohou iniciovat provedení procedury. 21.10.2011 MI-SIM Jiří Douša10.10.2011 15

Bloky mechanismus pro vnitřní členění paralelního prostředí v architektuře (příkaz bloku = paralelní příkaz), bloky lze vzájemně vnořovat, v bloku lze deklarovat vše co v architektuře, deklarované objekty jsou v daném bloku lokální, bloky mohou obsahovat porty, které umožňují jejich mapování na vnější signály bloku, strážené bloky umožňují specifikovat podmínku pro synchronizaci paralelních příkazů. globální signály A B C porty bloků architektura (paralelní prostředí) 21.10.2011 MI-SIM Jiří Douša10.10.2011 16

Bloky syntax : <label> block: [( <strážený výraz> )] -- <strážený výraz> pouze u strážených bloků -- následuje hlavička bloku [ generic (.); -- parametry bloku generic map..; + -- mapování parametrů [ port ( ) ; -- vstupy a výstupy port map..; + -- mapování portů * <deklarační část bloku> + -- lokální objekty..; end block [ <label > ]; příkazová část bloku (paralelní prostředí) Poznámka: mechanismus bloků je použit při mapování vodičů do vnořených entit (více hierarchické struktury: viz později) vnější prostředí: blok komponenty blok entity a architektury Arch globální signály porty komponenty porty vnořené entity 21.10.2011 MI-SIM Jiří Douša10.10.2011 17

Strážené bloky guarded block: blok doplněný o tzv. strážený výraz (guarded expression) ve stráženém bloku je implicitně deklarován signál guard, jehož hodnota automaticky sleduje v průběhu simulace hodnotu stráženého výrazu signál guard nelze explicitně budit žádným budičem uvnitř stráženého bloku a ani jej nelze připojovat k portům módu in, inout, buffer ve stráženém bloku lze použít signál guard k podmíněnému provedení t. zv. strážených signálových příkazů (označených symbolem guarded); toto provedení nastane: při změně hodnoty stráženého výrazu z hodnoty false na hodnotu true, v případě, že strážený výraz má hodnotu true a nastala událost na některém signálu vyskytujícím se na pravé straně stráženého příkazu. 21.10.2011 MI-SIM Jiří Douša10.10.2011 18

Strážené bloky a synchronizace příkazů Příklad: řízení signálových paralelních (a vzájemně asynchronních) příkazů signálem guard: B1: block ( control = 1 ) --následuje operační část stráženého bloku X <= guarded A and B after 5 ns; Y <= A and B after 5 ns; end block B1; -- strážený příkaz -- tento příkaz není strážený -- proto ignoruje řízení časové diagramy signálů: A B control Y X.. okamžik provedení příkazu 5ns 5ns 21.10.2011 MI-SIM Jiří Douša10.10.2011 19

Strážené bloky je přípustné i zahnízdění strážených bloků: architecture Arch of is signal control: bit; --globální signál v architektuře..; -- paralelní příkazy architektury control <=..; -- globální signál z hlediska BA BA: block ( control = 1 ) signal control: bit; -- lokální signál v bloku BA XA <= guarded A and B after ; control <=.; -- lokální signál v BA BB: block ( control = 1 and guard ) -- signál control je lokální signál z BA a signál guard zde -- zastupuje strážený výraz z bloku BA XB <= guarded A and B after ; end block BB; end block BA;..; end Arch; 21.10.2011 MI-SIM Jiří Douša10.10.2011 20

Aplikace strážených bloků Příklady: 1) hladinový synchronní obvod typu D: entity D is port (clk, D: in bit; QN: out bit; Q: buffer bit ); end D; architecture Arch of D is DL: block (clk = 1 ) Q <= guarded D ; QN <= not Q ; end block DL; end Arch; Poznámka: chování stráženého příkazu Q <= guarded D process if guard then Q <= D; end if; wait on guard, D; --pokračuj v případě události na guard nebo D end process; 21.10.2011 MI-SIM Jiří Douša10.10.2011 21

Aplikace strážených bloků 2) hladinový synchronní obvod typu JK: architecture Arch of JK is JK: block (clk = 1 ) Q <= guarded Q when ( J = 0 and K= 0 ) else 0 when (J = 0 and K= 1 ) else 1 when (J = 1 and K= 0 ) else not Q; end block JK; end Arch; 3) model seriové sčítačky entity Scit is port ( x,y, clk, start: in bit; s: out bit ); end Scit; architecture Arch of Scit is signal prenos, pstav: bit; --vnitřní stav sčítačky prech: block (clk = 1 and clk event) prenos <= guarded 0 when start = 1 else pstav; s <= x xor y xor prenos; pstav <= x and y or x and prenos or y and prenos; end block prech; end Arch; -- typ Mealy 21.10.2011 MI-SIM Jiří Douša10.10.2011 22

Strážené signály Buzení signálů (celkový přehled): signál (obyčejný): lze budit pouze jedním budičem rozhodovaný (resolved) signál: připouští existenci více paralelních budičů - resoluční funkce řeší vzájemné konflikty budiče rozhod. signálů nelze odpojovat strážený (guarded) signál připouští více budičů, které lze dynamicky jednotlivě odpojovat a připojovat strážený signál typu register po případném odpojení všech budičů signál pamatuje svou poslední hodnotu (v takovém případě příslušná resoluční funkce není vyhodnocována) strážený signál typu bus resoluční funkce je vyhodnocována vždy a musí být navržena i pro případ odpojení všech budičů 21.10.2011 MI-SIM Jiří Douša10.10.2011 23

Strážené signály Rozlišení signálů - dle jejich deklarace předpoklad: pro typ bit je definována resoluční funkce wired_or subtype mont_soucet is wired_or bit; -- jde o podtyp -- datového typu bit, který je vázaný na resoluční funkci wired_or signal S1: mont_soucet; -- rozhodovaný signál -- může být buzen více vodiči signal S2: mont_soucet register;--strážený signál -- typu register: může být odpojen od zdroje signal S3: mont_soucet bus; --strážený sig. typu bus -- může být odpojen od budiče Buzení strážených signálů: paralelní prostředí: aktivací strážených signálových přiřazovacích příkazů (ve stráženém bloku), sekvenční prostředí: aktivací budiče. Odpojení budičů od strážených signálů: paralelní prostředí: nastane v okamžiku, kdy implicitní signál guard nabude hodnoty false => budič nabývá hodnoty null ( t. zv. prázdné transakce )., sekvenční prostředí: přiřazení hodnoty null.. 21.10.2011 MI-SIM Jiří Douša10.10.2011 24

Bloky a strážené signály demonstrace vlivu více budičů na rozhodované a strážené signály předpoklad: signal A, B: bit; BL1: block (mode = 1 ) DATA<= guarded A; -- budič 1; end block B1; BL2: block (mode = 0 ) DATA <= guarded B; -- budič 2 end block B1; Rozlišíme dva případy dle deklarace signálu DATA: 1) signal DATA: mont_soucet ; -- resolved signal -- v tomto případě resoluční funkce řeší konflikty více budičů a strážený příkaz má pouze synchronizační funkci 2) signal DATA: mont_soucet register; --strážený signál -- v tomto případě dochází k připojení či odpojení stráženého signálu od budičů A B mode = 1 mode = 0 wired_or DATA 21.10.2011 MI-SIM Jiří Douša10.10.2011 25

Bloky a strážené signály časové diagramy signálů z minulého příkladu: mode A B aktivita budiče 1 aktivita budiče 2 1) případ deklarace DATA jako rozhodovaného signálu: DATA 2) případ deklarace DATA jako stráženého signálu: DATA budič B1 budič B2 21.10.2011 MI-SIM Jiří Douša10.10.2011 26

Příklad automatu: 1 Modely automatů 0 A/1 0 1 C/1 1 B/0 0 entity E is port (x, clk: in bit; y:out bit); end E; architecture Arch of E is type t_stav is (A,B,C); -- množina vnitřních stavů type stavy is array (natural range <>) of t_stav; --typ arg. resoluční f-ce function res (budice: stavy) return t_stav is return budice (budice left); end res; -- rezoluční funkce subtype res_stav is res t_stav; -- deklarace typu pro resolved signal signal stav : res_stav register:= A; --počáteční stav nb_hr: block ( clk = 1 and not clk stable ) st_a: block (guard and stav = A) stav <= guarded stav when x = 0 else B; end block; st_b: block (guard and stav = B) stav <= guarded stav when x = 0 else C; end block; st_c: block (guard and stav = C) stav <= guarded stav when x = 1 else A; end block; end block nb_hr; with stav select y <= 1 when A, 0 when B, 1 when C; end Arch; 21.10.2011 MI-SIM Jiří Douša10.10.2011 27

Knihovny VHDL připouští libovolný počet knihoven knihovna - soubor obsahující libovolný počet knihovních jednotek knihovní jednotka - samostatně analyzovatelná část primární jednotky entity, package, configuration sekundární jednotky architecture, package body musí být umístěny v téže knihovně jako odpovídající si primární jednotky každá primární jednotka může mít v téže knihovně několik sekundárních jednotek analýza - proces překladu (syntaktická analýza + sémantická kontrola + uložení do knihovny work) analýze sekundární knihovní jednotky musí předcházet analýza příslušné primární jednotky kterákoliv knihovní jednotka musí být analyzována až po provedení analýzy všech knihovních jednotek na jejichž objekty se uvažovaná jednotka odvolává konfigurace, která se odvolává na nějakou architekturu musí být analyzována až po analýze zmíněné architektury 21.10.2011 MI-SIM Jiří Douša10.10.2011 28

Knihovny předdefinované knihovny work: aktuální pracovní knihovna obsahující výsledky analýzy je implicitně viditelná, ale její knihovní jednotky nikoliv std: zdrojová knihovna, jejíž obsah se během analýzy nemění; má dvě části: std_logic_1164: package STANDARD (všechny objekty jsou vždy viditelné) package TEXTIO (operace s textovými soubory - nutno zviditelnit) datové typy a operace pro vícehodnotovou logiku std_logic_arith: matematická knihovna pro operace nad čísly typu signed i unsigned std_logic_unsigned: matematická knihovna pro binární hodnoty bez znaménka std_logic_signed: matematická knihovna pro binární hodnoty se znaménkem 21.10.2011 MI-SIM Jiří Douša10.10.2011 29

Viditelnosti ve VHDL oblast viditelnosti objektu - ve VHDL name space : od místa zviditelnění objektu do konce prostoru platnosti objektu konstrukce vytvářející prostory platností objektů: knihovny: umožňují exportovat vnitřní objekty vně entita: vnitřní deklarace jsou viditelné pouze ve všech příslušných architekturách architektura: vnitřní deklarace nejsou viditelné vně dané architektury deklarace komponenty procedura nebo funkce příkaz bloku deklarace konfigurace deklarace záznamu příkaz cyklu 21.10.2011 MI-SIM Jiří Douša10.10.2011 30

Zpřístupnění knihoven obecně nepřístupné zviditelnění jména knihovny : library <jméno knihovny>; zviditelnění jména package: use <jméno knihovny>. <jméno package>; zviditelnění všech objektů z package: use <jméno package>. all; jinak: use <jméno knihovny>.<jméno package>. all individuální zviditelnění určitého objektu z package: use <jméno package>. <jméno objektu>; příklady: library work; library std; use std.standard.all; --toto zpřístupnění není třeba uvádět; ve VHDL je zajištěno --implicitně pro každou jednotku library IEEE; use IEEE.std_logic_1164.all; --zviditelní všechny --objekty z package std_logic_1164 library IEEE, moje_kn; use IEEE. unsigned.all, moje_kn. moje_pack DFF; 21.10.2011 MI-SIM Jiří Douša10.10.2011 31

Vytváření knihovních jednotek package <jméno > is.; --interface : veřejné deklarace které lze zpřístupnit v jiných knihovnách jednotkách (entity, architecture, package) end ; -- možné deklarace: datové typy a podtypy, signály, konstanty, hlavičky funkcí a procedur, aliases, komponenty, soubory, sdílené proměnné. -- nelze deklarovat: proměnné, entity, architektury package body <jméno > is ; -- možné deklarace: hlavičky privátních funkcí a procedur, privátní datové typy a podtypy, privátní konstanty, ; -- implementace: operační části privátních funkcí a procedur, operační části exportovaných funkcí a procedur. end ; 21.10.2011 MI-SIM Jiří Douša10.10.2011 32