14. Složitější konstrukce

Podobné dokumenty
12. VHDL pro verifikaci - Testbench I

7. Popis konečného automatu

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

2. Entity, Architecture, Process

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

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

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

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

Souhrn Apendixu A doporučení VHDL

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

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

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

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

Návrh. číslicových obvodů

Číslicové obvody a jazyk 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.

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

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

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

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

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

Sdílení dat mezi podprogramy

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

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

1. Seznamte se s výukovou platformou FITkit (

Cvičení 9 - Monitory. monitor m; var proměnné... procedure p; begin... end; begin inicializace; end;

1 Stručný popis jazyku VHDL

Návrh ovládání zdroje ATX

Dynamické datové typy a struktury

3. Aritmetika nad F p a F 2

Vývoj VHDL. Verilog HDL

Časová a prostorová složitost algoritmů

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

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

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

Programovací jazyk Pascal

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

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

Programovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi)

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

PARADIGMATA PROGRAMOVÁNÍ 2 PŘÍSLIBY A LÍNÉ VYHODNOCOVÁNÍ

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

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

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

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

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

Základní datové struktury III: Stromy, haldy

Implementace seznamů do prostředí DELPHI pomocí lineárního seznamu

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

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

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem

PROGRAMOVATELNÁ LOGICKÁ POLE A JAZYKY HDL

Programovani v Maplu Procedura

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

Úvod do simulace - 1

Objektové programování

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

Rekurzivní algoritmy

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

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

Lekce 3 Vizuální programování

Semestrální práce z předmětu. Jan Bařtipán / A03043 bartipan@studentes.zcu.cz

Vláknové programování

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik;

Paradigmata programování II Korutiny a nedeterminismus

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

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

Chapter Základní principy simulace :).

Popis souboru pro generování reportů *.report

Programování v jazyce JavaScript

Optimalizace & soft omezení: algoritmy

Cíle. Teoretický úvod

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

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

Implementace aritmetického stromu pomocí směrníků

GENEROVÁNI KÓDU jazyk Mila

NPRG030 Programování I, 2015/16 1 / :25:32

dovolují dělení velkých úloh na menší = dekompozice

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

Počítačová simulace logistických procesů I. 11. přednáška Programování v SimTalk. ŠAVŠ, Fábry

Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4

Pokročilé haldy. prof. Ing. Pavel Tvrdík CSc. Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010

Sada 1 - Základy programování

NPRG030 Programování I, 2017/18 1 / :22:16

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

Úvod do programování

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

O datových typech a jejich kontrole

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

Základy programování Proměnné Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události

Jazyk PL/SQL Úvod, blok

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

10. Architektura klient/server a třívrstvá architektura

Unbounded Model Checking

Aplikace matematiky. Josef Čermák Algoritmy. 27. PSQRT. Řešení soustavy rovnic se symetrickou pozitivně definitní

10. Architektura klient/server a třívrstvá architektura

Reprezentace dat v informačních systémech. Jaroslav Šmarda

Transkript:

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Praktika návrhu číslicových obvodů Dr.-Ing. Martin Novotný Katedra číslicového návrhu Fakulta informačních technologií ČVUT v Praze Miloš Bečvář, Martin Daněk, Jan Schmidt, Martin Novotný, 2006-2011 1

Plovoucí řádová čárka výpočet filtru: definice filtru TEST_PROCEDURE: process variable XN_1,XN_2: real := 0.0; variable YN_1,YN_2: real := 0.0; procedure FILTER(XN: in real; YN: out real) is variable Y: real; begin -- vypocti dalsi hodnotu Y = A(0)*XN + A(1)*XN_1 + A(2)*XN_2 + B(1)*YN_1 + B(2)*YN_2; -- posun vnitrni stav filtru XN_2:=XN_1; XN_1:=XN; YN_2:=YN_1; YN_1:=Y; -- vrat vysledek YN:=Y; end filter; 2

Plovoucí řádová čárka výpočet filtru: použití (2) variable Y : real; real; begin begin -- -- vypocti odezvu na na impuls FILTER (1.0, (1.0, Y); Y); for for I in in 1 to to 99 99 loop loop FILTER (0.0, (0.0, y); y); end end loop; loop; end end process TEST_PROCEDURE; Poznámky: Procedura nemůže uchovávat hodnoty proměnných mezi dvěma běhy ani způsobovat vedlejší efekty, např. zápisem do globálních proměnných. Výjimkou je případ, kdy je procedura lokálně deklarována uvnitř procesu, pak může přistupovat k proměnným deklarovaným uvnitř procesu. 3

Spojové seznamy implementace paměti Process subtype BYTE BYTE is is std_logic_vector(7 downto 0); 0); type type REGION_TYP is is array(0 to to 31) 31) of of BYTE; BYTE; type type LIST_EL_TYPE; type type LIST_EL_PTR is is access LIST_EL_TYPE; type type LIST_EL_TYPE is is record BASE_ADDR : natural; REGION : REGION_TYP; NEXT_REGION : LIST_EL_PTR; end end record; variable HEAD HEAD : LIST_EL_PTR; begin begin 4

Spojové seznamy implementace paměti (2) procedure GET_REGION (addr: in natural; here: out list_el_ptr) Is variable element: list_el_ptr; Begin element := head; -- jsme na konci seznamu? while (element /= null) loop -- ma tento prvek seznamu hledanou adresu? if (element.base_addr <= addr and addr < element.base_addr + element.region'length) then here := element; return; end if; element := element.next_region; end loop; 5

Spojové seznamy implementace paměti (3) Element := new list_el_typ; element.base_addr := addr / element.region'length; element.next_region := head; head := element; here := element; End get_region; Procedure lookup (addr: in integer; value: out byte) is variable element: list_el_ptr; Begin get_region (addr,element); value:= element.region(addr-element.base_addr); End lookup; 6

Spojové seznamy implementace paměti (4) Procedure set set (addr: in in integer; value: in in byte) byte) is is variable element: list_el_ptr; Begin Begin get_region (addr,element); element.region (addr-element.base_addr):= value; End End set; set; variable val: val: byte; byte; Begin Begin set(10000,"01011100"); lookup(10000,val); assert val="01011100"; End End process; 7

Spojové seznamy implementace paměti (5) Poznámka: Pro implementaci komplexních modelů reálných pamětí ROM, SRAM, FLASH, DRAM, VRAM použijte knihovnu std_developerskit developerskit od firmy ModelTech (viz web). 8

Fork / Join Synchronizace vláken výpočtu. Ve VHDL není tento konstrukt implicitně definován: Package fork_join is is Type Type join_ctl_typ is is (join,fork,run); Type Type branches_typ is is array array (integer range range <>) <>) of of join_ctl_typ; Function join_all (branches: branches_typ) return join_ctl_typ; Function join_one (branches: branches_typ) return join_ctl_typ; Subtype fork_join_all is is join_all join_ctl_typ; Subtype fork_join_one is is join_one join_ctl_typ; End End fork_join; 9

Fork / Join (2) Package body fork_join is Function join_all(branches: branches_typ) return join_ctl_typ is Begin for I in branches'range loop if branches(i) = fork then return fork; end if; if branches(i) = run then return run; end if; end loop; return join; End join_all; 10

Fork / Join (3) Function join_one (branches: branches_typ) return join_ctl_typ is is Begin Begin for for I in in branches'range loop loop if if branches(i) = fork fork then then return fork; fork; end end if; if; if if branches(i) = join join then then return join; join; end end if; if; end end loop; loop; return run; run; End End join_one; End End fork_join; 11

Fork / Join (4) Use work.fork_join.all; Architecture test of bench is Signal fk_jn1:fork_join_all; Begin process begiṉ - Fork fk_jn1 <= fork; wait until fk_jn1 = fork; fk_jn1 <= run; -- vetev 0 fk_jn1 <= join; -- join wait until fk_jn1 = join; end process; branch1: process begin begin -- -- Fork Fork fk_jn1 <= <= fork; fork; wait wait until until fk_jn1 = fork; fork; fk_jn1 <= <= run; run; -- -- vetev vetev 0 fk_jn1 <= <= join; join; -- -- join join wait; wait; end end process branch1; branch1: process begin begin -- -- Fork Fork fk_jn1 <= <= fork; fork; wait wait until until fk_jn1 = fork; fork; fk_jn1 <= <= run; run; -- -- vetev vetev 0 fk_jn1 <= <= join; join; -- -- join join wait; wait; end end process branch1; End End test; test; 12

Stabilita výstupů Procedure load_d0 (data: std_logic) is is Begin Begin rst rst <= <= '0'; '0'; d0 d0 <= <= data; data; d1 d1 <= <= not not data; data; sel sel <= <= '0'; '0'; wait wait until until clk clk = '1'; '1'; assert q'stable (cycle Td) Td) and and qb'stable (cycle Td); Td); wait wait for for Thold; rst rst <= <= 'X'; 'X'; d0 d0 <= <= 'X'; 'X'; d1 d1 <= <= 'X'; 'X'; sel sel <= <= 'X'; 'X'; assert q = data data and and qb qb = not not data; data; wait wait for for cycle cycle Thold Thold Tsetup; End End load_d0; 13