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í
×
včera 16:55 | Bezpečnostní upozornění

V editorech Vim a Neovim byla nalezena a opravena bezpečnostní chyba CVE-2019-12735. Funkce modeline umožňovala při otevření souboru spustit libovolný příkaz. Chyba byla opravena v upstream verzích Vim 8.1.1365 a Neovim 0.3.6.

Ladislav Hagara | Komentářů: 0
14.6. 23:55 | Nová verze

Byla vydána nová stabilní verze 2.9 svobodné decentralizované mikroblogovací platformy a sociální sítě podobné Twitteru Mastodon (Wikipedie). Přináší především jednosloupcový layout. Detailní přehled novinek na GitHubu. Projekt lze podpořit na Patreonu. Aktuálně má přislíbeno 4 761 dolarů měsíčně.

Ladislav Hagara | Komentářů: 0
14.6. 16:11 | Nová verze

Byla vydána první stabilní verze 1.0 decentralizovaného protokolu pro komunikaci v reálném čase Matrix (Wikipedie) a také verze 1.0 jeho referenční implementace Synapse. Současně byla oficiálně představena zastřešující nadace Matrix.org Foundation. Protokol Matrix je využíván například komunikátorem Riot.

Ladislav Hagara | Komentářů: 1
13.6. 13:33 | IT novinky

Microsoft oznámil, že v květnu představený Windows Subsystem for Linux (WSL) ve verzi 2 s jádrem Linux 4.19 je již k dispozici pro uživatele zapojené do programu Windows Insider. Podrobnosti v aktualizované dokumentaci.

Ladislav Hagara | Komentářů: 13
13.6. 09:55 | Nová verze

Byla vydána nová stabilní verze 2.10.12 svobodné aplikace pro úpravu a vytváření rastrové grafiky GIMP. Přehled novinek i s náhledy v oznámení o vydání a v souboru NEWS na GitLabu. Zmínit lze vylepšení nástroje Křivky (YouTube) nebo podporu vrstev při exportu do formátu TIFF.

Ladislav Hagara | Komentářů: 0
12.6. 23:11 | Nová verze

Byla vydána nová major verze 2.0 (aktuálně 2.0.3) svobodného multiplatformního BitTorrent klienta Deluge (Wikipedie). Přehled novinek v poznámkách k vydání. Zdůraznit lze migraci na Python 3 a GTK 3.

Ladislav Hagara | Komentářů: 4
12.6. 22:33 | Komunita

CERN (Evropská organizace pro jaderný výzkum) představil svůj projekt MAlt (Microsoft Alternatives). Cílem projektu je nahradit používaný software od Microsoftu alternativami. Důvod je nasnadě. Pro Microsoft přestal být CERN akademickou institucí a poplatky za licence tak od března letošního vzrostly více než desetinásobně [reddit].

Ladislav Hagara | Komentářů: 8
12.6. 17:00 | Bezpečnostní upozornění

Byly zveřejněny informace o bezpečnostním problému RAMBleed (CVE-2019-0174). Jedná se o útok postranním kanálem na DRAM (Dynamic Random Access Memory) vycházející z útoku Rowhammer. Útočník může číst bity v paměti bez přístupu k nim.

Ladislav Hagara | Komentářů: 0
11.6. 23:55 | Komunita

Dle plánu byl měl Debian 10 s kódovým názvem Buster vyjít v sobotu 6. července. Po celém světě se začínají plánovat Release Parties.

Ladislav Hagara | Komentářů: 19
11.6. 23:22 | Komunita

Firefox má nové logo (en), do aplikace se dostane v jedné z příštích aktualizací. Oranžová liška i zeměkoule zůstala zachována, celé logo se ale výrazně zjednodušilo, aby odpovídalo požadavkům na moderní ikony a zapadalo do stále více používaného tzv. „flat“ designu.

Ladislav Hagara | Komentářů: 34
Jakou verzi jádra Linux typicky používáte na osobním počítači?
 (16%)
 (21%)
 (57%)
 (3%)
 (3%)
Celkem 246 hlasů
 Komentářů: 8, poslední včera 18:14
Rozcestník

Jak se píše procesor - 4 (Registry)

1. 9. 2005 | Luděk Crha | Programování | 8056×

Minule jsme si ukázali, co je to proces. Dnešní článek bude o registrech - co to je, jak je popsat ve VHDL a proč jsou tak důležité.

Všechny naše dosavadní obvody měly jeden společný rys. Neobsahovaly žádný paměťový prvek, takže hodnoty na výstupu byly závislé pouze na vstupních signálech. Takovéto obvody nazýváme kombinační. Skládají se pouze z logických členů (AND, OR, NOT, ...) a neobsahují zpětné vazby. Naproti tomu obvody, které obsahují paměťové prvky, se nazývají sekvenční. Jejich výstup není určen pouze vstupními signály, ale i vnitřním stavem obvodu (stavem jednotlivých paměťových prvků).

Jak jsme již naznačili minule (Jak se píše procesor - 3 (Procesy)), jako paměťový prvek budeme využívat pouze registr (tzn. nebudeme tvořit zpětné vazby v logice). Podívejme se, jak můžeme registr vytvořit pomocí VHDL. Využijeme k tomu entitu example_2 podobnou entitě z minulého dílu s tím rozdílem, že obsahuje navíc dva vstupní signály - RESET a CLK.

ENTITY example_2 IS
PORT (
   CLK, RESET: in std_logic;
   I1, I2: in std_logic;
   O: out std_logic
);
END example_2;

ARCHITECTURE arch_3 OF example_2 IS
BEGIN
   p_1: process (RESET, CLK)
   begin

      if (RESET = '1') then -- asynchronni reset
         O <= '0';
      elsif (CLK'event and CLK = '1') then -- reakce na vz. hranu
         O <= I1 and I2;
      end if;

   end process;
END arch_3;

Do procesu jsme vložili dvě sekce. Jednu reagující na reset a jednu na vzestupnou hranu hodin. VHDL zápis konkrétně znamená:

  • Pokud je hodnota signálu RESET '1', spusť první sekci příkazů (to odpovídá činnosti asynchronního resetu v registru - nastavení implicitních hodnot po startu systému).
  • V opačném případě (elsif) spusť druhou sekci příkazů, ale pouze v případě, že došlo ke změně signálu CLK a tento signál má hodnotu '1' (odpovídá náběžné hraně). Jinak řečeno, přiřaď do výstupního signálu určenou logickou funkci, ale pouze v okamžiku náběžné hrany hodin. Proto tento zápis vloží na konec cesty každého výstupního signálu registr.

Náš příklad bude tedy vypadat takto:

reg VHDL

Podmíněný příkaz tvořící registr (if RESET... elsif CLK...) je dobré brát pokud možno dogmaticky. Dnešní programovatelné obvody důrazně dělí obvod na logiku a registry a každý zásah do této části VHDL kódu může tuto strukturu narušit. Programovatelné obvody také mají dedikované hodinové rozvody, proto, pokud si nejsme jisti, je dobré používat v celém obvodu pouze jeden signál CLK.

Nyní známe takřka všechno, co je třeba k napsání procesoru ve VHDL. Navrhněme proto další entitu - sadu registrů. Zvolme jednoduchou variantu sady čtyř osmibitových registrů, kde jedinou funkcí bude zápis do registrů a čtení z nich.

ENTITY register_set IS
PORT (
   CLK, RESET: in std_logic;
   I: in std_logic_vector(7 downto 0);
   O: out std_logic_vector(7 downto 0);
   ADDR: in std_logic_vector(1 downto 0);

   WR: in std_logic

);
END register_set;      

ARCHITECTURE behavioral OF register_set IS
signal R1, R2, R3, R4: std_logic_vector(7 downto 0);
BEGIN
   p_1: process (RESET, CLK)
   begin

      if (RESET = '1') then -- asynchronni reset
         R1 <= (others => '0');
         R2 <= (others => '0');
         R3 <= (others => '0');
         R4 <= (others => '0');
      elsif (CLK'event and CLK = '1') then -- reakce na vz. hranu
         if WR = '1' then
            if A = "00" then
               R1 <= I;
            elsif A = "01" then
               R2 <= I;
            elsif A = "10" then
               R3 <= I;
            else
               R4 <= I;
            end if;
         end if;
      end if;
   end process;

   O <= R1 when A = "00" else
        R2 when A = "01" else
        R3 when A = "10" else
        R4;

END behavioral;

V entitě definujeme vstupní a výstupní signály. CLK a RESET jsou důležité pro synchronizaci registrů. I a O jsou vstupní a výstupní datové sběrnice, A vybírá jeden ze čtyř registrů. Pomocí signálu WR zapisujeme do jednotlivých registrů. Signál pro čtení není třeba, na výstupní sběrnici je vždy hodnota aktivního registru.

V deklarační části architektury si definujeme čtyři pomocné osmibitové signály, pomocí kterých vytvoříme vlastní registry. Hlavní část těla architektury tvoří proces, který implikuje vytvoření registrů a realizuje zápis. Kód nám říká, že v případě aktivního signálu WR má být přiřazena hodnota sběrnice I do jednoho ze signálů R1 - R4. Toto přiřazení se má provést pouze v okamžiku náběžné hrany signálu CLK. Pro syntezátor to tedy znamená vytvoření čtyř osmibitových registrů se vstupem I, výstupem R1 - R4 a povolovacím signálem (chip enable, CEx) tvořeným ze signálů WR a A.

Výstup O je tvořen pomocí signálu WHEN. V tomto případě to bude multiplexor, který vybírá výstup jednoho z registrů v závislosti na adrese A.

Na obrázku je znázorněno zjednodušené schéma pro 2 registry:

reg_set VHDL

       

Hodnocení: 100 %

        š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ář

Yin avatar 1.9.2005 01:53 Yin | skóre: 39 | blog: Yinotopia | Slovesnko, Košice
Rozbalit Rozbalit vše optimalizácia

začína to konečne vyzerať, že sa s tým dá niečo robiť... nenapíšete čitateľom nabudúce ukážkový 64bitový procesor? :)))

A teraz Vážne! Chcel som sa spýtať, či je existujú postupy na optimalizáciu hotových návrhov? Možno niekdo potrebuje usporiť a radšej by použil viacero lacnejších odvodov, ako pár drahšich.

Nikdy nie je tak zle, aby to jeden poharik nemohol ešte zhorsiť.
6.9.2005 04:04 Luděk Crha | skóre: 17
Rozbalit Rozbalit vše Re: optimalizácia
Pokud jde jenom o tech 64 bitu neni problem, napr. v tomto dile staci zmenit definici signalu na std_logic_vector(63 downto 0) a mame 64 bitove registry :-).

V tomto serialu se pohybujeme v oblasti navrhu pro hradlova pole FPGA. To znamena, ze cely nas design nahrajeme obvykle do jednoho programovatelneho FPGA.

Jinak optimalizace provadi syntezator, ktery se snazi o co nejlepsi prevod naseho VHDL kodu do vnitrni struktury FPGA.
1.9.2005 09:57 Alex
Rozbalit Rozbalit vše Necitelny kod
Zdravim,

Toto je typicka ukazka, jak nema vypadat VHDL kod. Je totiz velmi neprehledny a necitelny.

1) V deklaraci entity se pise jeden signal na radku. Videl jsem i hruzy, kde vsechny std_logic byly na jedne radce. Tak fakt ne!

2) Je dobrym pravidlem oddelit kombinacni proces od procesu registroveho. Opet to pomuze lepsi orientaci v kodu pri slozitejsim navrhu.

Dalsi pravidlem je, ze vystup obvodu by mel mit registrovany, pokud neni duvod specialni duvod, aby nebyl.

To, ze std_logic_vector signaly nejsou definovany genericky radsi pominu.

Jinak si myslim, ze tento serial je pro nezasvecene ctenare velmi matouci, protoze procesor se takhle rozhodne nepise. A muzete mi verit, ze o tom neco vim.
6.9.2005 03:28 Luděk Crha | skóre: 17
Rozbalit Rozbalit vše Re: Necitelny kod
1) Prehlednost je vec dost relativni - treba pro me je prehlednejsi urcite signaly dat na jeden radek.

2) Zrovna tenhle styl zapisu je pro me velmi neprehledny (i kdyz logicky), napr. pri slozitejsim FSM musim behat po kodu abych vedel co dela ktery stav.

3) Tohle neni cely obvod, ale cast a registr na vystupu je zbytecny a udelal by pekny hokej v casovani.

Ucelem serialu je to, aby se ctenar zamyslel nad zcela zakladnimi principy funkce procesoru a hardwaroveho navrhu.

Pokud mate zkusenosti s navrhem procesoru v komercni sfere, podelte se o zkusenosti. Predem diky!
7.9.2005 13:59 Alex
Rozbalit Rozbalit vše Re: Necitelny kod
Zdravim,

1) Ano prehlednost je relativni, ale jsou urcite pravidla, ktera se dodrzuji. Alespon v komercnim sektoru. Videl jste nejaky kod?

2) Nechapu co je pro vas neprehledne. Hned na zacatku, aniz bych kod nejak studoval, vim co je registrovany signal a co ne. To je jedna z nejdulezitejsich informaci. Pokud argumentujete slozitejsim FSM, tak se obavam, ze neznate syntezacni nastroje. Hlavne pro ASIC syntezu. Takovy kod by proste neprosel. Nevim co se vam zda neprehledneho na oddeleni registru stavu od prechodu stavu (komb.) a od nastaveni vystupu(komb+reg.).

Pokud nekdo se ctenaru, ktery opravdu nikdy netusil a ani netusi z ceho se takovy procesor sklada, se neco nauci z tohohle serialu, tak je fakt borec. Nikde jsem napriklad nevidel ani ideove schema jednotlivych casti a jejich navaznost. Takove 'vykriky' jako ALU, registry apod. moc prehledu nedodaji.
9.9.2005 03:40 Luděk Crha | skóre: 17
Rozbalit Rozbalit vše Re: Necitelny kod
Vase komentare beru jako podnetne z hlediska praxe, myslim vsak ze tyhle veci nepatri zacatecnikum. Serial splni ucel, pokud si ctenar uvedomi ze pomoci VHDL opravdu navrhuje HW a nepise program - pro vas samozrejmost, pro nekoho nepochopitelna vec.

Clanek jsem psal se zamerenim na lidi, kteri maji obecnou predstavu o architekture procesoru, priblizne vi co je to logicky obvod, ale nevi nic o HDL.

Co se tyce obvodu, ASIC jsem opravdu nikdy nedelal, pracoval jsem hlavne s nekolika typy Virtexu, nejen na akademicke pude.
9.9.2005 15:19 Alex
Rozbalit Rozbalit vše Re: Necitelny kod
Protoze jste se na me na rozdil od jineho cloveka neoboril s chvastanim. Posilam Vam, jak by takovy kod mel vypadat z hlediska obecnosti vzhedem k nejasnemu zadani. S minimalnim zasahem menim velikost a pocet registru.
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_arith.ALL;


ENTITY registers IS
  GENERIC (
    data_w   : natural := 8;
    addr_w   : natural := 2;
    num_regs : natural := 4
  );
  PORT ( 
    res      : IN  std_logic;
    clk      : IN  std_logic;
    
    
    wr_en    : IN  std_logic; 
    addr     : IN  std_logic_vector(addr_w-1 DOWNTO 0);
    data_in  : IN  std_logic_vector(data_w-1 DOWNTO 0);

    data_out : OUT std_logic_vector(data_w-1 DOWNTO 0)
  );
END registers;


ARCHITECTURE rtl OF registers IS

  SUBTYPE  reg_t      IS std_logic_vector(data_w-1 DOWNTO 0);  
  TYPE     reg_arr_t  IS ARRAY (num_regs-1 DOWNTO 0) OF reg_t; 

  SIGNAL rg_ar_reg  : reg_arr_t;                               
  SIGNAL rg_ar_cmb  : reg_arr_t;                               

  SIGNAL rg_wr_cmb  : std_logic_vector(num_regs-1 DOWNTO 0);
  SIGNAL rg_sel_cmb : std_logic_vector(num_regs-1 DOWNTO 0);

BEGIN


  gen_reg_array:
  FOR i IN 0 TO num_regs-1 GENERATE
    ----
    -- Registers Array
    ----
    rg_ar_reg_proc:
    PROCESS (res, clk)
    BEGIN
      IF (res = '1') THEN
        rg_ar_reg(i) <= (OTHERS => '0');
      ELSIF (clk'EVENT AND clk ='1') THEN
        rg_ar_reg(i) <= rg_ar_cmb(i);
      END IF;
    END PROCESS rg_ar_reg_proc;

    ----
    -- Register selection
    ----
    sel_reg_cmb_proc:
    PROCESS (addr, wr_en)
      VARIABLE sel_v : std_logic_vector(num_regs-1 DOWNTO 0);
    BEGIN
      sel_v := (OTHERS => '0');
      sel_v(conv_integer(unsigned(addr))) := '1';
      
      rg_sel_cmb <= sel_v;
    END PROCESS sel_reg_cmb_proc;

    
    ----
    -- Registers array next 
    ----
    rg_ar_cmb_proc:
    PROCESS (data_in, rg_ar_reg, rg_sel_cmb, wr_en)
    BEGIN
      IF (rg_wr_cmb(i)= '1' AND wr_en='1') THEN
        rg_ar_cmb(i) <= data_in;
      ELSE
        rg_ar_cmb(i) <= rg_ar_reg(i);
      END IF;
    END PROCESS rg_ar_cmb_proc;

  END GENERATE gen_reg_array;  


  ----
  -- Data output selection
  ----
  data_sel_cmb_proc:
  PROCESS (rg_ar_reg, addr)
    VARIABLE addr_v : natural;
  BEGIN
    addr_v := conv_integer(unsigned(addr));

    data_out <= rg_ar_reg(addr_v);
  END PROCESS;


END rtl;
I tady je co vylepsovat. Napriklad registrovat vystup. Vasi poznamku o hokeji v casovani jsem nejak nepochopil. Co pipeline???

Jinak v tom Vasem kodu je chyba a nejde zkompilovat ("ADDR"!="A").
29.9.2005 04:31 Luděk Crha | skóre: 17
Rozbalit Rozbalit vše Re: Necitelny kod
Moc pekne, diky za ukazku! Trosku mi unika smysl pouziti sel_v, ale to je myslim detail.

V pristim dile bude schema celeho procesurku. Z nej bude zrejme, ze pokud chci dodrzet pravidlo 1 instrukce / 1 takt, nemuzu si dovolit pipeline.

Mam ted malo casu, proto trosku delsi cas odezvy - jinak diskusi beru samozrejme jako prinosnou.
15.11.2005 12:10 Radim
Rozbalit Rozbalit vše Re: Necitelny kod
Take diky. Neni nic lepsiho nez mit jednoduchy priklad na pochopeni a ukazku jak by to vypadalo od profika.
15.11.2005 12:33 Radim
Rozbalit Rozbalit vše Re: Necitelny kod
tim jsem samozrejme nechtel rict ze Ludek Crha neni profik... a jemu take velice diky
26.11.2005 00:41 xipn
Rozbalit Rozbalit vše Re: Necitelny kod
Souhlasim s duslednym oddelovanim kombinacnich a sekvencnich procesu. Je to pekny zapis s ohledem na prehlednost a syntezu. Jenom mala poznamka: cely design by neobsahoval ani jeden registr. Ale verim, ze to je jenom male prehlednuti ze strany autora nikoliv zamer.
Nutny maly zasah:
zamenit radek
IF (rg_wr_cmb(i)= '1' AND wr_en='1') THEN
za
IF (rg_sel_cmb(i)= '1' AND wr_en='1') THEN
12.12.2005 16:42 pavel prochazka.zde.cz
Rozbalit Rozbalit vše Re: Necitelny kod
Moc pekny, moc pekny.... Ja jsem spis VHDL samouk... Viz moje www stranky :-) A tomu kody co je v clanku velmy dobre rozumim... Ale tomu kodu od profika uz nechapu. Aspom mam co studovat. Uvital bych vic takovych ukazek od profiku aby se clovek mel na cem ucit. Nejlepe aby kod byl komentovani...
6.9.2005 09:04 koca
Rozbalit Rozbalit vše Re: Necitelny kod
souhlasim s autorem.
U vas me to pripada jako chvastani a takovych chytraku jako vy jsem uz potkal.
6.9.2005 09:07 koca
Rozbalit Rozbalit vše Re: Necitelny kod
myslim tim, ze souhlasim s Ludkem Crhou :)
7.9.2005 13:47 Alex
Rozbalit Rozbalit vše Re: Necitelny kod
To nebylo zadne chvastani. Jen jsem upozornil na nektere neduhy napsaneho kodu. Prislo mi to proste jako ukazka typickeho 'akademickeho stylu'. Ze je dobre (ale nekdy i nutne) oddelovat kombinacni procesy, tak za tim si stojim).

Tak me prosim zdelte jaky obvod uz jste navrhl. Nemusite konkretne staci jen typ obvodu. Predem diky. Myslim si, ze autor clanku nema napriklad dostatecne zkusenosti ze syntezou. Jinak napr. faze navrhu zacina specifikaci. Proste autor z pocatku zamenil cil za prostredek. Podle nazvu je jednoznacnym cilem navrh procesoru. Jazyk VHDL je jen jednim z prostredku, jak k nemu dojit. Proc nepouzit Verilog, System C atd..?

Jinak ten clanek na me proste pusobil, takovym dojmem, ze nadsenec se rozhodne udelat procesor a hned zacne 'smolit' VHDL kod, aniz by se definovalo jaky to bude procesor (architetura, intstr. sada atd..). Proste tim navrh zacina. Ne nejakym psanim nesmyslnych kodu.

Navic autor dole pise, ze nechtel ucit VHDL samo o sobe. Mozna nechtel, ale presne to tak vypada. Co pak ma spolecneho tento kod a predchozi kody s procesorem? Snad je to, ze u obou po synteze budou DFF a kombinacni cleny. To je asi tak vse.
5.9.2005 14:40 honza
Rozbalit Rozbalit vše Mala poznamka
Jeste si dovolim pridat jeden namet k zamysleni pro autora...

Schvalne si zkuste porovnat vystup syntezy vaseho procesu a verze, kdy misto retezce "if - elsif - elsif - ..." pouzijete "case". Jsem si temer 100% jisty, ze Synopsys Design Compiler (ASIC), Xilinx ISE (FPGA) i Altera Quartus (FPGA) vyprodukuji pro verzi s if prioritni dekoder. Uz pri psani kodu neni spatne mit predstavu o jeho vysledne implementaci a predevsim o pozadavcich na casovani. Tomu by pak mel kod odpovidat. Stejna funkce se da zapsat ruzne, ale rychlost a velikost vysledneho obvodu bude take ruzna.

Jsem rad, ze se nekdo rozhodl napsat serial v cestine s timto zamerenim, ale musim souhlasit s predchozim prispevkem, ze forma neni zrovna nejvhodnejsi. Zacatecnikum bych doporucil treba knizku "VHDL, Programming by Example" od Douglase L. Perryho, ktera vysvetluje pouziti VHDL od uplnych zakladu, rozumnou formou, ale stale dba na spravnou metodologii digitalniho navrhu.

A poznamka na zaver (opet podle minuleho prispevku)... procesor se takhle opravdu nepise, ale napsat se tak pravdepodobne da;) A nejspis i funkcni... kdyz bude mit velmi omezenou instrukcni sadu, pobezi na 10MHz...

Pro autora serialu: myslim, ze by nebylo spatne, oddelit vyuku VHDL a navrh procesoru. Ono totiz vysvetlovat zakladni konstrukce nejakeho HDL a zaroven z toho "lepit" procesor neni zrovna nejlepsi. Stavebni prvky VHDL by asi bylo lepsi vysvetlit na nejakych jednodussich praktickych prikladech. Navrh ukazkoveho CPU by mel byt dalsi serial, pricemz vetsinu by zabrala slusna SYSTEMOVA ANALYZA a maximalne posledni dil by mohl byt venovan komentovanemu kodu s odkazy na jednotlive casti predchozi analyzy.
6.9.2005 03:47 Luděk Crha | skóre: 17
Rozbalit Rozbalit vše Re: Mala poznamka
Diky za pripominky.

"If" jsem pouzil kvuli jednoduchosti, jde mi predevsim o principy.

O celkove koncepci serialu jsem celkem dost uvazoval. Samostatny serial jsem zavrhl, ucit VHDL samo o sobe je myslim dobre pro predmet na vysoke skole, tady jsem to chtel popularnejsi.
Dobry den, nerad otravujem, ale minule ste mi velmi pomohli, tak by som Vas rad este raz poziadal o radu:

Preco musim robit test pre spravanie aj pre strukturu scitacky? nestaci iba napriklad pre spravanie? bol by som velmi rad keby ste si nasli cas na strucne objasnenie ako je to s tym testovanim. Lebo napriklad u XOR=u, ktory ste mi poradili, som take nieco nenasiel. Dakujem

PS: K tomu samostatnemu serialu o VHDL - nepremyslali ste skor o napisani aj nejakej knihy, zrozumitelnej aj laickejsej verejnosti so zaujmom o tuto oblast?
4.10.2005 22:28 cairne
Rozbalit Rozbalit vše Re: dotaz
pardon, zabudol som link na zdrojak - jedna sa o uplnu stvorbitovu scitacku, ktory ma byt zlozena zo 4 uplnych jednobitovych scitaciek, tie kazde z dvoch neuplnych jednobit. scitaciek, a ta kazda zlozena pomocou log. funkcii. http://student.fiit.stuba.sk/~stanovsk04/scitaj.txt
6.10.2005 03:17 Luděk Crha | skóre: 17
Rozbalit Rozbalit vše Re: dotaz
Dobry den,

z otazky a zdrojovych kodu jsem trosku zmateny, tak nevim jestli odpovim spravne na dotaz.

Zakladni myslenka je ta, ze chcete ve VHDL vytvorit nejaky obvod. Ten ma urcite vstupy a vystupy (entita) a chovani (architektura). Tento vytvoreny obvod muzete nasledne vysyntetizovat a napr. nahrat do specialniho integrovaneho obvodu. Predtim nez to ale udelate, je potreba nejak overit jeho funkci na PC. K tomu vyuzijete simulator (napr ModelSim), ktery dokaze simulovat funkci vaseho obvodu. Je zde ale jeden problem: Vas obvod sam o sobe nebude delat nic, pokud na jeho vstupy neprivedete urcite hodnoty. Pokud budete mit obvod se scitackou, take nebude delat nic, dokud nezacnete menit vstupy obvodu (napr. pomoci DIP-switche). Stejne tak v simulatoru nebude nic delat obvod, na jehoz vstupy nebudete davat urcite signaly. Proto se napise TestBench, ktery funguje jako "simulator" okolniho sveta pro Vas obvod. Muzete napr. simulovat cinnost DIP prepinace tak, ze na vstupy obvodu budete privadet ruzne hodnoty (stejne jako kdybyste menil hodnoty na prepinaci).

Pokud mate dve enitity se stejnou funkci, rozhodne tedy pro jejich testovani muzete pouzit stejny TestBench.

Pokud chcete ve VHDL popsat scitacku, je naprosto dostatecne pouzit jediny prikaz

a <= b + c;

pokud pouzijete prislusne knihovny. Signaly a, b a c jsou v tomto pripade typu std_logic_vector, tzn. kazdy se sklada z nekolika bitu za sebou.

Na zdrojove kody scitacky muzete kouknout na strance http://www.fit.vutbr.cz/study/courses/IVH/public/ - radeji si je stahnete, na dalsi semestr se stranka zmeni. Je zde strukturni popis 4-bitove scitacky. Tento popis slouzi pouze pro ukazku strukturniho stylu, jinak v bezne praxi je samozrejme jednodussi pouzit jiz zminovany prikaz a <= b + c;.

O knize neuvazuji, ale diky :). Obavam se ze zajem siroke verejnosti by byl vcelku minimalni. Doporucil bych napr. skripta Kolouch, J.: Programovatelné logické obvody a modelování císlicových systému v jazycích ABEL a VHDL. Vydala je myslim fakulta elektrotechnicka na VUT Brno.
6.10.2005 20:48 cairne
Rozbalit Rozbalit vše Re: dotaz
Naozaj velmi pekne dakujem, a zaroven sa ospravedlnujem za hlupu otazku - doslo mi vlastne, ze bolo treba otestovat ci "cierna skrinka" (opis spravania sa - opisana IBA log. funkciami) vyhodi to iste co opis struktury(z coho sa ta nasa cierna skrinka sklada). Inak materialy su skvele(urcite neporovnatelne s tym co poskytuju nam). Peter PS: ciernou skrinkou je myslena stvorbitova scitacka. :-)

Založit nové vláknoNahoru

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