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 18:22 | Nová verze

    Byla vydána verze 0.2.0 v Rustu napsaného frameworku Pingora pro vytváření rychlých, spolehlivých a programovatelných síťových systémů. Společnost Cloudflare jej letos v únoru uvolnila pod licencí Apache 2.0.

    Ladislav Hagara | Komentářů: 0
    10.5. 19:11 | Nová verze

    Open source RDP (Remote Desktop Protocol) server xrdp (Wikipedie) byl vydán ve verzi 0.10.0. Z novinek je vypíchnuta podpora GFX (Graphic Pipeline Extension). Nová větev řeší také několik bezpečnostních chyb.

    Ladislav Hagara | Komentářů: 13
    10.5. 04:11 | Nová verze

    Rocky Linux byl vydán v nové stabilní verzi 9.4. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    9.5. 22:22 | Bezpečnostní upozornění

    Dellu byla odcizena databáze zákazníků (jméno, adresa, seznam zakoupených produktů) [Customer Care, Bleeping Computer].

    Ladislav Hagara | Komentářů: 22
    9.5. 21:11 | Zajímavý článek

    V lednu byl otevřen editor kódů Zed od autorů editoru Atom a Tree-sitter. Tenkrát běžel pouze na macOS. Byl napevno svázán s Metalem. Situace se ale postupně mění. V aktuálním příspěvku Kdy Zed na Linuxu? na blogu Zedu vývojáři popisují aktuální stav. Blíží se alfa verze.

    Ladislav Hagara | Komentářů: 49
    9.5. 14:33 | Pozvánky

    O víkendu 11. a 12. května lze navštívit Maker Faire Prague, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.

    Ladislav Hagara | Komentářů: 0
    8.5. 21:55 | Nová verze

    Byl vydán Fedora Asahi Remix 40, tj. linuxová distribuce pro Apple Silicon vycházející z Fedora Linuxu 40.

    Ladislav Hagara | Komentářů: 20
    8.5. 20:22 | IT novinky

    Představena byla služba Raspberry Pi Connect usnadňující vzdálený grafický přístup k vašim Raspberry Pi z webového prohlížeče. Odkudkoli. Zdarma. Zatím v beta verzi. Detaily v dokumentaci.

    Ladislav Hagara | Komentářů: 7
    8.5. 12:55 | Nová verze

    Byla vydána verze R14.1.2 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5). Přehled novinek v poznámkách k vydání, podrobnosti v seznamu změn.

    JZD | Komentářů: 0
    7.5. 18:55 | IT novinky

    Dnešním dnem lze již také v Česku nakupovat na Google Store (telefony a sluchátka Google Pixel).

    Ladislav Hagara | Komentářů: 10
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (65%)
     (8%)
     (13%)
     (14%)
    Celkem 173 hlasů
     Komentářů: 11, poslední 10.5. 18:00
    Rozcestník

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

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

    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.