abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 20:55 | IT novinky

    IKEA ve Spojeném království hledá zaměstnance do své nové pobočky. Do pobočky v počítačové hře Roblox. Nástupní mzda je 13,15 liber na hodinu.

    Ladislav Hagara | Komentářů: 0
    včera 10:44 | Zajímavý článek

    Alyssa Rosenzweig se v příspěvku na svém blogu Vulkan 1.3 na M1 za 1 měsíc rozepsala o novém Vulkan 1.3 ovladači Honeykrisp pro Apple M1 splňujícím specifikaci Khronosu. Vychází z ovladače NVK pro GPU od Nvidie. V plánu je dále rozchodit DXVK a vkd3d-proton a tím pádem Direct3D, aby na Apple M1 s Asahi Linuxem běžely hry pro Microsoft Windows.

    Ladislav Hagara | Komentářů: 28
    včera 01:00 | Nová verze

    Byla vydána (𝕏) květnová aktualizace aneb nová verze 1.90 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a animovanými gify v poznámkách k vydání. Ve verzi 1.90 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 0
    včera 00:44 | Nová verze

    Byla vydána (Mastodon, 𝕏) nová verze 2024.2 linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux (Wikipedie). Přehled novinek se seznamem nových nástrojů v oficiálním oznámení.

    Ladislav Hagara | Komentářů: 0
    5.6. 16:44 | IT novinky

    Počítačová hra Tetris slaví 40 let. Alexej Pažitnov dokončil první hratelnou verzi 6. června 1984. Mezitím vznikla celá řada variant. Například Peklo nebo Nebe. Loni měl premiéru film Tetris.

    Ladislav Hagara | Komentářů: 10
    5.6. 10:44 | Nová verze

    MicroPython (Wikipedie), tj. implementace Pythonu 3 optimalizovaná pro jednočipové počítače, byl vydán ve verzi 1.23.0. V přehledu novinek je vypíchnuta podpora dynamických USB zařízení nebo nové moduly openamp, tls a vfs.

    Ladislav Hagara | Komentářů: 0
    5.6. 10:22 | Nová verze

    Canonical vydal Ubuntu Core 24. Představení na YouTube. Nová verze Ubuntu Core vychází z Ubuntu 24.04 LTS a podporována bude 12 let. Ubuntu Core je určeno pro IoT (internet věcí) a vestavěné systémy.

    Ladislav Hagara | Komentářů: 2
    5.6. 01:00 | Nová verze Ladislav Hagara | Komentářů: 0
    4.6. 19:55 | IT novinky

    Intel na veletrhu Computex 2024 představil (YouTube) mimo jiné procesory Lunar Lake a Xeon 6.

    Ladislav Hagara | Komentářů: 0
    4.6. 13:44 | IT novinky

    Na blogu Raspberry Pi byl představen Raspberry Pi AI Kit určený vlastníkům Raspberry Pi 5, kteří na něm chtějí experimentovat se světem neuronových sítí, umělé inteligence a strojového učení. Jedná se o spolupráci se společností Hailo. Cena AI Kitu je 70 dolarů.

    Ladislav Hagara | Komentářů: 0
    Rozcestník

    Jak se píše procesor - 3 (Procesy)

    26. 8. 2005 | Luděk Crha | Programování | 7597×

    Minule jsme navrhli jednoduchou ALU a ukázali si, jak ji odsimulovat. Dnešní článek bude o procesech.

    Prozatím lze všechny příkazy, které jsme si ukazovali, zařadit mezi tzv. souběžné příkazy - všechny se provádí najednou bez ohledu na pořadí. V obvodové realizaci to ukazuje na paralelní obvody. Pomocí procesu můžeme použít příkazy sekvenční, kde naopak pořadí příkazů hraje důležitou roli. Proces sám o sobě je jeden souběžný příkaz.

    Sekvenční zpracování příkazů v procesu se řídí následujícími pravidly:

    1. Pokud jednomu signálu přiřazujeme různé hodnoty, předchozí příkazy jsou přepsány posledním z nich.
    2. Pokud signál využíváme jako vstup i výstup, jeho hodnota se mění až po ukončení procesu

    Proces můžeme také chápat jako myšlenkovou přípravu na vytvoření signálů. Nejlepší bude ukázat si činnost procesu na příkladu. Předpokládejme dvě různé architektury k entitě example_1 (deklaraci entity neuvádím), která má pouze jeden výstupní signál O:

    ARCHITECTURE arch_1 OF example_1 IS
    BEGIN
       O <= '1';
       O <= '0';
    END arch_1;
    ARCHITECTURE arch_2 OF example_1 IS
    BEGIN
       p_1: process 
       begin
          O <= '1';
          O <= '0';
       end process;
    END arch_2;

    V prvním případě se snažíme do výstupního signálu O napojit současně dvě hodnoty - log. '1' a log. '0'. To by mohlo mít v reálném obvodu katastrofální následky. Pokud například uvažujeme logiku, kde log. '1' znamená připojení na +5V a log. '0' připojení na zem, zapisujeme tímto kódem zkrat. Ve druhém případě se ale příkazy zpracovávají sekvenčně. Druhý přiřazovací příkaz "přebije" první a na výstupu O bude '0';

    V procesu není možné použít souběžný příkaz when, místo něj můžeme aplikovat sekvenční příkaz if. Uvažujme příklad z minulého dílu, kde jsme vytvořili multiplexor pomocí příkazu

    O <= I1 when A = '0' else I2

    V procesu by vypadal zápis tohoto multiplexoru následovně:

    p_1: process (I1, I2, A)
    begin
       if A = '0' then
          O <= I1;
       else
          O <= I2;
       end if;
    end process;

    mux

    Zaměřme se nyní více na syntaxi procesu. Před klíčovým slovem process je návěští, v našem případě p_1. To je důležité pro případnou identifikaci procesu v průběhu simulace nebo syntézy. Za klíčovým slovem process je tzv. sensitivity list. V něm říkáme simulátoru, kdy má proces spustit a obnovit hodnoty výstupních signálů. Tento výpočet provede simulátor právě při změně libovolného signálu obsaženého v sensitivity listu. V praxi to znamená, že do sensitivity listu je třeba zapsat všechny signály, které do procesu vstupují. V našem případě jsou to signály I1, I2 a A.

    Vezměme nyní následující proces:

    p_1: process (I1, I2, A)
    begin
       O <= I2;
       if A = '0' then
          O <= I1;
       end if;
    end process;

    Tento zápis je zcela identický s předchozím procesem. Nejdříve do výstupního signálu O přiřazujeme signál I2, ale v případě, že je hodnota signálu A '0', dostane se ke slovu přiřazovací příkaz O <= I1. Výsledek je tedy opět stejný multiplexor.

    Jak psát design

    Nyní uděláme malou odbočku k tomu, jakým způsobem psát design. Budeme hovořit o synchronním designu, tzn. v obvodu se vyskytuje jediný hodinový signál clk. Dnešním standardem je jasně rozdělit design na registry (paměťové prvky, realizovatelné např. klopným obvodem D) a kombinační logiku (prvky AND, OR, NOT...) bez cyklů. Registry jsou všechny taktovány na stejnou (např. náběžnou) hranu clk. V okamžiku této náběžné hrany se přepíše signál ze vstupu registru na výstup. Následuje cesta signálu přes kombinační logiku, než dorazí na vstup dalšího registru. Jakmile všechny signály projdou přes logiku a ustálí se, může přijít další náběžná hrana hodin a celý proces se opakuje.

    reg_log

    Z toho vyplývá i maximální frekvence hodin. Jejich perioda musí být minimálně taková, aby se signál ustálil i na nejdelší cestě v celém obvodu. Pokud tedy taktujeme např. procesor na 1600 MHz, znamená to, že nejdelší cestou (mezi dvěma registry spojenými pouze logikou) v jeho designu projde signál za méně než 0,625 nanosekundy.

    Podívejme se nyní na následující proces:

    p_1: process (I1, I2, A)
    begin
       if A = '0' then
          O <= I1;
       end if;
    end process;

    Pokud má signál A hodnotu '0', bude na výstupu I1. Co ale když bude A '1'? To potom znamená zachovat na výstupu aktuální hodnotu. A zde se dostáváme k jádru problému. K zachování hodnoty potřebujeme paměťový prvek. V tomto konkrétním případě bude tvořen zpětnou vazbou, např. takto:

    latch

    A právě tato zpětná vazba (latch) není přípustná. Proč je vlastně zpětná vazba v logice problém? Např. může zmást syntezátor při počítání délky cesty v obvodu. Obvod potom může fungovat, ale také nemusí (což většinou nastane v nejméně vhodnou dobu).

    Jaký z toho plyne závěr? V příkazu if (pokud proces netvoří registr, ukážeme si příště) je třeba vždy pokrýt všechny stavy vstupních signálů pro výstupní signály. Jinými slovy, každý výstupní signál musí mít jasně definovanou hodnotu pouze v závislosti na vstupních signálech. Podobný problém může nastat i u souběžného signálu when - tam je také vhodné vždy uvádět klauzuli else.

           

    Hodnocení: 92 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    26.8.2005 08:43 Robert
    Rozbalit Rozbalit vše Obrazky
    Nemate neco s obrazkama, 1. a 3. nelze zobrazit (FF ani IE)?
    26.8.2005 09:21 Robert Krátký | skóre: 94 | blog: Robertův bloček
    Rozbalit Rozbalit vše Re: Obrazky
    Mohl bys prosím upřesnit, co znamená "nelze zobrazit"? Právě jsem vyzkoušel jak FF, tak IE a v obou to bylo bez problému... Co se stane, když zkusíš zobrazit tohle: http://www.abclinuxu.cz/images/clanky/crha/vhdl3-latch.png?
    29.8.2005 09:37 Robert
    Rozbalit Rozbalit vše Re: Obrazky
    No prave ze se nezobrazi nic. Je to divny. Prostredni obrazek bez problemu, misto 1. a 3. prazdne ramecky.
    29.8.2005 10:04 Robert Krátký | skóre: 94 | blog: Robertův bloček
    Rozbalit Rozbalit vše Re: Obrazky
    No, a ten uváděný odkaz také nezobrazí nic?
    30.8.2005 08:17 Robert
    Rozbalit Rozbalit vše Re: Obrazky
    Vubec nic. Je divne ze jeden obrazek je v poradku a dalsi 2 se nezobrazi.

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.