\chapter{Implementovaná podmnožina jazyka VHDL}
\label{podmnozina_VHDL}
V následující části uvedu výpis všech konstrukcí v jazyce 
VHDL které importní systém do HUBu v současné době podporuje. Pokud 
syntaktický analyzátor rozpozná konstrukci  která není implementována 
vyvolá výjimku typu not yet implemented. Tato podmnožina jazyka byla stanovena
vedoucím práce.

\section{Tělo programu}
\begin{table}[h]
\begin{center}
\begin{tabular}{|l|l|c|}
\hline
\bf{Konstrukce} & \bf{poznámka} & \bf{Implementováno}\\
\hline
Zviditelnění knihovny	& Přeskakuje se &	Ne \\
\hline
Zviditelnění knih. Jednotky	& Přeskakuje se &	Ne \\
\hline
\bf{Primární jednotky} & &\\		
\hline
Deklarace entity & &		Ano\\
\hline
Deklarace konfigurace	& &	Ne\\
\hline
Deklarace package & &		Ne\\
\hline
\bf{Sekundární jednotky} & &		\\
\hline
Architektura	& &	Ano\\
\hline
Tělo knih. Jednotky (package)	& &	Ne\\
\hline
\end{tabular}
\caption{Soubor VHDL}
\end{center}
\label{tab:soubor}
\end{table}

\section{Deklarace Entity}
\begin{table}[h]
\begin{center}
\begin{tabular}{|l|l|c|}
\hline
\bf{Konstrukce} & \bf{poznámka} & \bf{Implementováno}\\
\hline
\bf{Hlavička Entity}	& & \\
\hline	
Generické parametry	& &	Ne \\
\hline
Deklarace portů	& &	Ano \\
\hline
\bf{Deklarační část Entity} &	Nejsou povoleny žádne deklarace	& Ne\\
\hline
\bf{Příkazová část Entity} &	Nejsou povoleny žádné příkazy	& Ne\\
\hline
\end{tabular}
\caption{Deklarace Entity}
\end{center}
\label{tab:entita}
\end{table}

\clearpage
\section{Deklarace Architektury}
\begin{table}[h]
\begin{center}
\begin{tabular}{|l|l|c|}
\hline
\bf{Konstrukce} & \bf{poznámka} & \bf{Implementováno}\\
\hline
\bf{Deklarační část architektury} & &\\
\hline		
Deklarace a tělo Subprogramu & &		Ne\\
\hline
Deklarace typu a podtypu	& &	Ne\\
\hline
Deklarace konstanty	& &	Ne\\
\hline
Deklarace signálu	& &	Ano\\
\hline
Deklarace proměnné ( variable )	& &	Ne\\
\hline
Deklarace souboru ( file )& &		Ne\\
\hline
Deklarace aliasu	& &	Ne\\
\hline
Deklarace komponenty	& &	Ano\\
\hline
Deklarace a specifikace atributu & &		Ne\\
\hline
Specifikace konfigurace	& &	Ne\\
\hline
Specifikace odpojení (disconnection) & &		Ne\\
\hline
Klauzule use	& &	Ne\\
\hline
\bf{Příkazová část architektury}	& &\\
\hline	
Příkaz bloku	& &	Ne\\
\hline
Příkaz procesu	& &	Ne\\
\hline
Paralelní volání procedury	& &	Ne\\
\hline
Paralelní příkaz assert	& &	Ne\\
\hline
Paralelní příkaz přiřazení signálu	& &	Ano\\
\hline
Příkaz instalace komponenty	& &	Ano\\
\hline
Příkaz generate	& &	Ne\\
\hline
\end{tabular}
\caption{Deklarace Architektury}
\end{center}
\label{tab:architektura}
\end{table}

\section{Deklarace rozhraní (signálu)}
\begin{verbatim}
[signal] identifier_list : [mode] subtype_indication [bus] [:=static_expression]
\end{verbatim}


\begin{table}[h]
\begin{center}
\begin{tabular}{|l|l|c|}
\hline
\bf{Konstrukce} & \bf{poznámka} & \bf{Implementováno}\\
\hline
seznam identifikátorů	& &	Ano\\
\hline
mód 	& &	Ano\\
\hline
typ signálu &	{pouze typ std\_logic a std\_logic\_vector } &	Ano\\
\hline
Inicializace & &		Ne\\
\hline
\end{tabular}
\caption{Deklarace rozhraní}
\end{center}
\label{tab:rozhrani}
\end{table}

Pokud je signál typu std\_logic\_vector musí mít zadán rozsah, 
zadání rozsahu je povoleno pouze číslem typu integer. 
Př: std\_logic\_vector( 7 downto 0 )

\pagebreak
\section{Deklarace komponenty}
\begin{verbatim}
component jméno [ is ] 
[ generické_parametry ] 
[ rozhraní_portů ] 
end component [ jméno ] ;
\end{verbatim}

\begin{table}[h]
\begin{center}
\begin{tabular}{|l|l|c|}
\hline
\bf{Konstrukce} & \bf{poznámka} & \bf{Implementováno}\\
\hline
Generické parametry	& &	Ne\\
\hline
Rozhraní portů	& &	Ano\\
\hline
\end{tabular}
\caption{Deklarace rozhraní}
\end{center}
\label{tab:komponenta}
\end{table}

Je podporováno pouze automatické osazení komponenty, tzn. není 
možné specifikovat explicitní konfiguraci komponenty. Jméno komponenty
 tedy musí odpovídat jménu konfigurované entity a rozhraní entity a 
 komponenty musí být také shodné. Pokud je třeba specifikovat s jakou 
 architekturou má být entita nakonfigurována je možné využít automatické 
 instalace komponenty v příkazové části.
 
\section{Paralelní příkaz přiřazení signálu }
Je podporován pouze nepodmíněný příkaz. Jako operandy se mohou 
vyskytovat jména signálů (u více bitových s indexací), 
porty rozhraní entity, a konstanty '1' nebo '0'.
Při práci se signály nebo porty které jsou typu pole \verb|std_logic_vector|
je povoleno pouze jednoduché indexování. Následující operace pro
porty typu \verb|std_logic_vector|  nejsou povoleny:
\begin{verbatim}
  x(1 downto 0) <= A(1 downto 0);
  x <= A;
\end{verbatim}
Je povoleno jednoduché indexování:
\begin{verbatim}
  x(0) <= A(0);
  x(1) <= A(1);
\end{verbatim}

\section{Příkaz instalace komponenty}
\begin{verbatim}
jméno_instance : 
[ component ] jméno_komponenty
[ mapování_generických_parametrů ] 
[ mapování_portů ] ;
\end{verbatim}

Automatická instalace komponenty:

\begin{verbatim}
jméno_instance : 
entity jméno_entity [ ( identifikátor_architektury ) ]
[ mapování_generických_parametrů ] 
[ mapování_portů ] ; 
\end{verbatim}
Mapování generických parametrů není povoleno.
Mapování portů je řešeno seznamem asociativních elementů: 
\begin{verbatim}
[ formal_part => ] actual_part 
\end{verbatim}
Je podporováno jmenné i asociativní mapování. Jako formální a 
aktuální část může být dosazeno jméno. Aktuální část podporuje i parametr 
{\bf open} tzn. že port komponenty nebude zapojen.

\pagebreak
\section{Specifikace jména}
\begin{table}[h]
\begin{center}
\begin{tabular}{|l|l|c|}
\hline
\bf{Konstrukce} & \bf{poznámka} & \bf{Implementováno}\\
\hline
Identifikátor	& &	Ano\\
\hline
Vybrané jméno	(prefix.sufix)	& &		Ne\\
\hline
Indexace	& &		Ano\\
\hline
Jméno atributu	& &		Ne\\
\hline
\end{tabular}
\caption{Specifikace jména}
\end{center}
\label{tab:jmeno}
\end{table}

\section{Výrazy}
Struktura výrazů je zpracována tak jak je popsána v gramatice, části 
které nejsou implementovány jsou až u primárního výrazu.
\begin{table}[h]
\begin{center}
\begin{tabular}{|l|l|c|}
\hline
\bf{Konstrukce} & \bf{poznámka} & \bf{Implementováno}\\
\hline
Jméno	& &	Ano\\
\hline
Literál	& &	Ano\\
\hline
Aggregate	& &	Ne\\
\hline
Volání funkce	& &	Ne\\
\hline
Qualified expression & &		Ne\\
\hline
Alokátor& &		Ne\\
\hline
( výraz )	& &	Ano\\
\hline
\end{tabular}
\caption{Primární výraz}
\end{center}
\label{tab:vyraz}
\end{table}




