abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 16:55 | Nová verze

    Svobodný nemocniční informační systém GNU Health Hospital Information System (HIS) (Wikipedie) byl vydán ve verzi 5.0 (Mastodon).

    Ladislav Hagara | Komentářů: 0
    dnes 16:22 | Komunita

    Open source mapová a navigační aplikace OsmAnd (OpenStreetMap Automated Navigation Directions, Wikipedie, GitHub) oslavila 15 let.

    Ladislav Hagara | Komentářů: 0
    dnes 11:55 | Zajímavý software

    Vývojář Spytihněv, autor počítačové hry Hrot (Wikipedie, ProtonDB), pracuje na nové hře Brno Transit. Jedná se o příběhový psychologický horor o strojvedoucím v zácviku, uvězněném v nejzatuchlejším metru východně od všeho, na čem záleží. Vydání je plánováno na čtvrté čtvrtletí letošního roku.

    Ladislav Hagara | Komentářů: 23
    včera 18:22 | IT novinky

    V uplynulých dnech byla v depu Českých drah v Brně-Maloměřicích úspěšně dokončena zástavba speciální antény satelitního internetu Starlink od společnosti SpaceX do jednotky InterPanter 660 004 Českých drah. Zástavbu provedla Škoda Group. Cestující se s InterPanterem, vybaveným vysokorychlostním satelitním internetem, setkají například na linkách Svitava Brno – Česká Třebová – Praha nebo Moravan Brno – Břeclav – Přerov – Olomouc.

    Ladislav Hagara | Komentářů: 18
    včera 13:11 | Nová verze

    Byla vydána nová verze 8.7.0 správce sbírky fotografií digiKam (Wikipedie). Přehled novinek i s náhledy v oficiálním oznámení (NEWS). Nejnovější digiKam je ke stažení také jako balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo ke spuštění a spustit.

    Ladislav Hagara | Komentářů: 0
    včera 12:22 | IT novinky

    Před 30 lety, k 1. 7. 1995, byl v ČR liberalizován Internet - tehdejší Eurotel přišel o svou exkluzivitu a mohli začít vznikat první komerční poskytovatelé přístupu k Internetu [𝕏].

    Ladislav Hagara | Komentářů: 4
    včera 11:33 | Nová verze

    Byla vydána (𝕏) nová verze 7.4 open source monitorovacího systému Zabbix (Wikipedie). Přehled novinek v oznámení na webu, v poznámkách k vydání a v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 0
    včera 05:44 | Bezpečnostní upozornění

    Balíček s příkazem sudo byl vydán ve verzi 1.9.17p1. Řešeny jsou zranitelnosti CVE-2025-32462 (lokální eskalace práv prostřednictvím volby host) a CVE-2025-32463 (lokální eskalace práv prostřednictvím volby chroot).

    Ladislav Hagara | Komentářů: 8
    včera 05:22 | IT novinky

    Do služeb Seznam.cz se lze nově přihlásit pomocí služby MojeID [𝕏].

    Ladislav Hagara | Komentářů: 5
    včera 03:33 | Bezpečnostní upozornění

    Bezpečnostní výzkumníci zveřejnili informace o osmi zranitelnostech, které postihují více než 700 modelů tiskáren, skenerů a štítkovačů značky Brother. Bezpečnostní upozornění vydali také další výrobci jako Fujifilm, Ricoh, Konica Minolta a Toshiba. Nejzávažnější zranitelnost CVE-2024-51978 umožňuje útočníkovi vzdáleně a bez přihlášení získat administrátorská oprávnění prostřednictvím výchozího hesla, které lze odvodit ze

    … více »
    Ladislav Hagara | Komentářů: 0
    Jaký je váš oblíbený skriptovací jazyk?
     (59%)
     (28%)
     (7%)
     (2%)
     (0%)
     (1%)
     (3%)
    Celkem 338 hlasů
     Komentářů: 16, poslední 8.6. 21:05
    Rozcestník

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

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

    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.