V sobotu 2. listopadu proběhla mohutná oslava naší plnoletosti !!
Multimediaexpo.cz je již 18 let na českém internetu !!

VHDL

Z Multimediaexpo.cz

Verze z 12. 10. 2013, 22:03; Sysop (diskuse | příspěvky)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)

VHDL je programovací jazyk sloužící pro popis hardware. Používá se pro návrh a simulaci digitálních integrovaných obvodů, například programovatelných hradlových polí (CPLD, FPGA, …), nebo různých zákaznických obvodů (ASIC).

VHDL je standardem IEEE od r. 1987, byl revidován v roce 1997 a je použitelný i pro návrh analogových obvodů. Jedná se o typovaný programovací jazyk. VHDL má prostředky pro popis paralelismu, konektivity a explicitní vyjádření času. Jazyk VHDL se používá jak pro simulaci obvodů, tak i pro popis integrovaných obvodů, které se mají vyrábět.

Zkratka VHDL znamená VHSIC Hardware Description Language (česky jazyk pro popis hardware), kde VHSIC je zkratka z Very-High-Speed Integrated Circuit (česky velmi rychlé integrované obvody).

Obsah

Základní konstrukce

  • entity - definuje rozhraní (pouze vstupy a výstupy, ne funkci)
  • architecture - určuje chování entit (má dvě části - deklarační a příkazovou)

Pro jednu entitu může existovat více architektur (implementací).

Módy portů

  • IN - data lze z portu pouze číst
  • OUT - data vycházejí z portu
  • BUFFER - výstup se zpětnou vazbou
  • INOUT - obousměrný tok
  • LINKAGE - neznámý směr datového toku (obousměrný)

Styly popisu architektury

  • strukturální popis
    • popis na vysoké úrovni
    • použití hlavně pro simulaci
  • behaviorální popis
    • vhodné pro syntézu
    • návrhář si řídí architekturu svého návrhu
  • dataflow popis
    • vkládání komponent do netlistu
    • omezení možností syntézy
    • detailní časové simulace

Příklad kódu

-- (tohle je komentář)
 
-- import std_logic z knihovny IEEE
library IEEE;
use IEEE.std_logic_1164.all;
 
-- definice entity...
entity my_and is
  port (IN1, IN2 : in std_logic; OUT1: out std_logic);
end entity;
 
-- ...a architektury
architecture example of my_and is
begin
  OUT1 <= IN1 and IN2;
end example;

Externí odkazy