% Diplomova prace: pos_buf
% Michal Trs
% Analýza a návrh řešení

V této kapitole je uveden přehled dostupných řešení na trhu, které se zabývají zpracováním protokolu Packet over SONET. U každého řešení je rozbor jejich výhod a omezení. 

FrameLink a RocketIO jsou proprietální protokoly, a proto je jasné, že množina dostupných, bez úprav použitelných, řešení bude velice malá, pravděpodobně prázdná. Z RFC 2615 \cite{rfc2615} (viz. kapitola \ref{par:pos}) je dobře patrné jak postupovat při vkládání paketů síťové vrstvy do SONET/SDH rámce.

\begin{figure}[!htp]
\begin{center}
\scalebox{0.95}{\includegraphics{img/block_sch_easy.pdf}}
\end{center}
\caption{Ilustrační schéma jednotky pro zpracování Packet over SONET}
\label{img:block_sch_easy}
\end{figure}

Obrázek \ref{img:block_sch_easy} znázorňuje jednotlivé bloky, na které se dá zpracování protokolu Packet over \mbox{SONET} rozebrat. Krátce je zde popíšu a v následujících podkapitolách budou již konkrétní řešení.

\begin{description}
   \item[SONET/SDH Framer] je koncové zařízení na SONET/SDH síti, které generuje/ověřuje TOH a vkládá/extrahuje data do/z SPE.
   \item[HDLC controller] se stará o oddělení rámců vyšší vrstvy od sebe a detekuje chyby pomocí kontrolního součtu.
   \item[PPP controller] přidává k paketům síťové vrstvy pole \uv{protocol}, pomocí kterého je možné snadno rozlišit obsah PPP rámce. Dále se stará o navázání/ukončení spojení.
\end{description}




\section{Dostupná řešení SONET/SDH Frameru}
Univerzální SONET/SDH Framer, který by pracoval s rozhraním RocketIO se mi nepodařilo nalézt. Uvádím zde zajímavá (architekturou, vlastnostmi, použitím,...) řešení s jiným rozhraním a jednoduché komponenty od firmy Xilinx, ze kterých se dá Framer částečně poskládat.



\subsection{Altera SONET/SDH Compiler}
\label{par:altera}
Tato kapitola popisuje SW nástroj SONET/SDH Compiler \cite{alt_comp} od firmy Altera, který generuje SONET/SDH Framer. Na základě specifikace vlastností frameru, v nástroji IP Toolbench (Altera), je vygenerován zakódovaný netlist (trial verze), VHDL nebo Verilog soubor.

Tato implementace dokáže pracovat až na rychlosti OC-192 a podporuje plné zpracování TOH. Je určena pro platformu Altera Stratix (až OC-192) a APEX/APEX II (do OC-48). Ostatní platformy a výrobci nejsou z výkonnostních a licenčních důvodů podporovány.

\medskip
Výčet vlastností: 
\begin{itemize}
   \item Podporované rychlosti OC: 1, 3, 12, 48 a 192
   \item Struktury SONET rámce: odpovídající rychlosti OC (concatenated), STS-1/AU-3 (channelized), STS-3c/AU-4 (channelized) viz. \cite{itu707}
   \item Generuje a detekuje Byte A1/A2
   \item Generuje a sleduje Byte B1/B2/B3
   \item Ukončuje section (SOH), line (LOH) a path (POH) overhead
   \item Zahrnuje kódování/dekódování
   \item Generování a zpracování ukazatelů na data (Byte H1/H2)
   \item Plně duplexní
   \item Rozhraní Midbus (Altera) pro připojení do designu, datová šířka 8, 16, 32, 64 b (závisí na rychlosti OC a frekvenci designu)
\end{itemize}

Na obrázku \ref{img:altera-sonet_apl} je doporučené zapojení této jednotky. Znázorňuje použití ATM, PPP, nebo GFP pro přenos dat po SONET/SDH síti. Aplikační rozhraní je UTOPIA POS-PHY nebo CSIX-L1.

\begin{figure}[!htp]
\begin{center}
\scalebox{1.0}{\includegraphics{img/altera-sonet_apl.pdf}}
\end{center}
\caption{Altera SONET/SDH Framer - doporučené zapojení (zdroj Altera)}
\label{img:altera-sonet_apl}
\end{figure}


\subsubsection{Popis funkce/architektury}
SONET/SDH framer se skládá z 3 jednotek (vysílací část, přijímací část a řídicí procesor) pracujících v navzájem různých časových doménách. Na následujících obrázcích \ref{img:altera-ssrx} a \ref{img:altera-sstx} je blokové schéma vysílací a přijímací části. Uvádím je zde proto, že je z nich velice dobře patrná funkcionalita při vysílání/příjmu dat po síti SONET.

\begin{figure}[!htp]
\begin{center}
\scalebox{1.0}{\includegraphics{img/altera-ssrx.pdf}}
\end{center}
\caption{Přijímací část Altera SONET/SDH Frameru (zdroj Altera)}
\label{img:altera-ssrx}
\end{figure}

\begin{figure}[!htp]
\begin{center}
\scalebox{1.0}{\includegraphics{img/altera-sstx.pdf}}
\end{center}
\caption{Vysílací část Altera SONET/SDH Frameru (zdroj Altera)}
\label{img:altera-sstx}
\end{figure}

Jak vysílací, tak přijímací část je dále rozdělena na 2 části zpracovávající zvlášť hlavičku TOH a POH.

\medskip
Přijímací část se skládá z jednotky RXT a RXP. RXT zajišťuje zpracování hlavičky TOH (SOH + LOH). Na vstupu jednotky je blok Aligment, který detekuje začátek rámce. Za ním je blok Descrambler (viz. kapitola \ref{par:kodovani}) a bloky pro monitorování chyb B1, B2 a ztrátu nosné LOS. Dále obsahuje paměť TOH Capture Memory pro průběžné ukládání hlavičky.

RXP zpracovává POH a samotná data (SPE). Blok Pointer delay je FIFO paměť, kde je průběžně ukládáno SPE, dokud není zjištěn jeho začátek v bloku H1/H2 pointer processing. Dále obsahuje blok pro monitorování chyby B3 a paměť pro uložení POH.

\medskip
Vysílací část se skládá z jednotky TXT a TXP. TXT generuje TOH, což znamená generování A1, A2, B1, B2, kódování (viz. kapitola \ref{par:kodovani}) a přepínání mezi TOH a SPE. Dále obsahuje paměť, ze které je možné vkládat další položky do hlavičky.

Hlavní funkcí jednotky TXP je přepínání mezi jednotlivými SPE. Dále počítá položku B3, generuje ukazatele H1/H2 a obsahuje paměť, ve které jsou uloženy další POH položky.

\medskip
AIRbus je sběrnice pro připojení externího procesoru. Midbus slouží pro připojení jednotky do designu.



\subsubsection{Klady/zápory}
Klady a zápory jsou shrnuty v tabulce \ref{tab:altera+-}

\begin{table}[!htp]
   \begin{center}
   \begin{tabular}{|l|l|}
      \hline
      Klady & Zápory \\
      \hline \hline
      Podpora všech SONET/SDH standardů & Určeno pouze pro FPGA f. Altera \\ \hline
      Plné zpracování TOH informací & \\ \hline
      Podporuje rychlost až OC-192 & \\ \hline
      Podrobný a přehledný manuál & \\
      \hline
   \end{tabular}
   \end{center}
   \caption{Klady a zápory SONET/SDH Framer firmy Altera}
   \label{tab:altera+-}
\end{table}



\subsection{Xelic SONET/SDH Transport processor core (XCS48F)}
XCS48F \cite{xelic-48f} poskytuje vkládání/sledování TOH, zarovnává příchozí SONET/SDH rámce, detekuje chyby a sleduje výkon.

Jednotka se skládá z nezávislé vysílací a přijímací části. Zahrnuje porty pro vkládání a zpracování TOH v externí jednotce.
Podporovanou rychlostí je pouze OC-48. Rozhraní pro připojení do designu má datová šířku 32b při frekvenci 77,76MHz.

Ostatní vlastnosti jsou totožné s předchozí jednotkou.


\subsubsection{Klady/zápory}
Klady a zápory jsou shrnuty v tabulce \ref{tab:xelic+-}

\begin{table}[!htp]
   \begin{center}
   \begin{tabular}{|l|l|}
      \hline
      Klady & Zápory \\
      \hline \hline
      Dodáváno ve formě VHDL kódů nebo EDIF & Pouze OC-48 \\ \hline
      Splňuje ITU-T G.707 a Telcordia GR-253-CORE & Fixní datové rozhraní 32b/77,76MHz \\ \hline
      Plné zpracování TOH informací & Blackbox (velice stručný manuál)\\
      \hline
   \end{tabular}
   \end{center}
   \caption{Klady a zápory Xelic XCS48F}
   \label{tab:xelic+-}
\end{table}



\subsection{Calyptech Performance monitor core}
Pro zajímavost zde uvádím jednotky CORE-PM-2G5 \cite{cal-core-2G5} a CORE-PM-10GB \cite{cal-core-10G} poskytující sledování výkonu pro technologie SONET/SDH, Fibre Channel a Gigabit Ethernet. Nejedná se sice o SONET/SDH Framer a nelze je tedy využít pro implementaci PoS, nicméně nynější projekty, aktivity Liberouter, jsou zaměřeny na síťovou bezpečnost, kde by jistě tyto jednotky našli uplatnění, a proto je zde uvádím.

\begin{figure}[!htp]
\begin{center}
\scalebox{1.0}{\includegraphics{img/calyptech-bd.pdf}}
\end{center}
\caption{Sledovač výkonu CORE-PM f. Calyptech (zdroj Calyptech)}
\label{img:calyptech-bd.pdf}
\end{figure}

Obě jednotky mají stejnou architekturu (obrázek \ref{img:calyptech-bd.pdf}), liší se pouze v podporovaných rychlostech.

\medskip
Vlastnosti:
\begin{itemize}
   \item Přenosová rychlost až 2.488 Gb/s (CORE-PM-10GB až 9,953 Gb/s)
   \item podporované standarty: OC-3, OC-12, OC48, OC192 (pouze CORE-PM-10GB), GbE, FC
   \item Detekce ztráty signálu (Loss Of Signal)
   \item Stav zarovnání rámce (Frame Alignment)
   \item Čítač chyb Bytů B1/B2
   \item Stav AIS, RDI, REI
   \item Ukládání M1 (pouze CORE-PM-2G5), K1, K2 a J0 Bytů
   \item dekódování 8B / 10B
   \item rozhraní pro CPU
   \item dodáváno ve formě VHDL kódů nebo EDIF
\end{itemize}

Nebudu zde uvádět klady a zápory, protože jednotky jsou určeny pro jinou aplikaci, než zpracování PoS.



\subsection{Xilinx}
Firma Xilinx neposkytuje kompletní řešení Frameru, ale nabízí dokumentované příklady, ze kterých se dá SONET/SDH Framer částečně poskládat.

Xilinx je v současnosti jedním z největších výrobců FPGA. Kromě vlastního \uv{železa} poskytuje vývojové nástroje ISE a EDK. Součásti těchto nástrojů je mimo jiné CORE generátor, který slouží k parametrizaci dodávaných \uv{soft} IP jader. Dále firma publikuje mnoho tzv. \uv{Application Note} pod označením xapp. Jedná se většinou o jednoduché jednotky na řešení daného problému. Jsou nabízeny se zdrojovými kódy a manuálem.

\medskip
Pro Framer s fyzickým rozhraním RocketIO-X jsou použitelné tyto jednotky:

\begin{description}
   \item[xapp649] Konverze datové šířky/frekvence \\ SONET Rate Conversion in Virtex-II Pro Devices
   \item[xapp651] Scrambler/descrambler \\ SONET and OTN Scramblers/Descramblers
   \item[xapp652] Detekce začátku rámce \\ Word Alignment and SONET/SDH Deframing
\end{description}


\subsubsection{Konverze datové šířky/frekvence  (xapp649)}
\label{par:xapp649}
Rychlé sériové rozhraní RocketIO-X uvnitř pracuje s datovou šířkou 20 bitů. Pokud je uvnitř použito kódování 8b/10b (Ethernet) venkovní rozhraní má obvyklou šířku 16 bitů. Pro aplikace kde není toto kódování použito (např. SONET/SDH) má venkovní rozhraní datovou šířku 20 bitů, což je značně nestandardní.

Komponenta Xilinx xapp649 \cite{xapp649} poskytuje řešení jak převést 20b na běžných 16b. Skládá se ze 2 částí. První částí je logika, která dělá vlastní konverzi datové šířky. Jedná se o 80b registr, do kterého je v 5 taktech uloženo 16b a na výstupní straně vyčteno 20b ve 4 taktech. Pro opačný směr je princip analogický. Druhou částí je časování. 16b data musí být přenášena s větší hodinovou frekvencí než 20b, aby byla zaručena funkčnost jednotky. Z datových šířek dostáváme poměr 5:4 pro hodinovou frekvenci. Frekvence odpovídající datové šířce je shrnuta v tabulce \ref{tab:widthxfreq}

\begin{table}[!htp]
   \begin{center}
   \begin{tabular}{|l|l|}
      \hline
      Datová šířka [b] & Hodinová frekvence [Mhz] \\ \hline
      16 & 155,56 \\ \hline
      20 & 124,416 \\ \hline
   \end{tabular}
   \end{center}
   \caption{Hodinová frekvence x datová šířka}
   \label{tab:widthxfreq}
\end{table}

Je nutné zajistit, aby referenční hodiny pro RocketIO-X \verb|REFCLK| byly přesně $0.8$ násobek systémových hodin. Bohužel nejde použít DCM (Digital clock manager), které je uvnitř FPGA. Rozptyl periody nutný pro RocketIO-X musí být menší než 40 ps, což DCM nesplňuje. V dokumentu \cite{xapp649} jsou popsány 2 možnosti získání takto přesných hodin, ale obě dvě vyžadují externí součástky, které nejsou na kartě k dispozici.



\subsubsection{Scrambler/descrambler (xapp651)}
SONET/SDH extrahuje hodiny z přijímaných sériových dat. Aby nedocházelo ke ztrátám synchronizace, musí být zaručeno dostatečné množství změn přijímaného signálu. To je zajištěno kódováním na vysílací a dekódováním na přijímající straně. Je použit ireducibilní polynom.

\begin{figure}[!htp]
\begin{center}
\scalebox{1.0}{\includegraphics{img/xapp651-scrambler.pdf}}
\end{center}
\caption{SONET/SDH scrambler/descrambler, 1 bit (zdroj Xilinx)}
\label{img:xapp651-scrambler}
\end{figure}


Pro SONET/SDH je použit 7b polynom $1 + x^{6} + x^{7}$. Resetován je signálem INIT (na obr. pojmenovaný Frame pulse) do známého stavu \uv{1111111}. Schematické znázornění situace je na obrázku \ref{img:xapp651-scrambler}, kde je vstup a výstup sériový. SONET OC-48 většinou zpracováváme paralelně po slovech (16b). Proto je nutné výpočet paralelizovat. Takovéto řešení je na obrázku \ref{img:xapp651-scrambler-n}. Toto řešení \cite{xapp651} pracuje dobře pro datové šířky 8, 16, 32 a 64 bitů. Pro datovou cestu 16b širokou, jednotka pracuje až do frekvence 360 MHz, zabírá pouze 24 Flip-flopů a 25 LUT.

\begin{figure}[!htp]
\begin{center}
\scalebox{1.0}{\includegraphics{img/xapp651-scrambler-n.pdf}}
\end{center}
\caption{SONET/SDH scrambler/descrambler, n bitů (zdroj Xilinx)}
\label{img:xapp651-scrambler-n}
\end{figure}


\subsubsection{Detekce začátku rámce (xapp652)}
Po síti SONET/SDH jsou data přenášena sériově. Zpracování se však provádí paralelně, protože jsme limitováni frekvencí designu (max. 100ky MHz). Typicky SONET OC-48 je zpracováván po 16b při frekvenci 155 MHz. Aplikace potřebuje určit jakých 16b odpovídá původním 1b toku dat. Proto jsou v hlavičce SONET/SDH rámce byty A1 a A2. Jakmile je zjištěna tato posloupnost bytů, můžeme následně posunout slovo tak, aby odpovídalo hranicím bytu.

\medskip
Vysvětlující příklad: Mějme datovou cestu 16b širokou. Nalezli jsme posloupnost bytů A1, A2 a pomocí ni určili začátek dat na bit [5] v aktuálním slově. To vyžaduje posunutí bitů [15:5] aktuálního slova na pozici [10:0] výstupního slova. Bity [15:11] výstupního slova jsou vzaty z předchozího slova z pozice [4:0].

\begin{figure}[!htp]
\begin{center}
\scalebox{0.9}{\includegraphics{img/xapp652-scheme.pdf}}
\end{center}
\caption{Zarovnávací obvod, 16b data (zdroj Xilinx)}
\label{img:xapp652-scheme}
\end{figure}

\medskip
Zarovnávací obvod \cite{xapp652} je poměrně snadný. Varianta pro 16b datovou cestu je zobrazena na \mbox{obrázku \ref{img:xapp652-scheme}}.
Pro následné snadnější zpracování jsou k dispozici 2 signály určující aktuální řádek (line\_number [0 - 8]) a sloupec (word\_number [0 - 2159]) rámce. Dále máme k dispozici signály, které určují, zda výstup odpovídá TOH (overhead) nebo SPE (payload). Poslední výstupní signál se jmenuje descramble a zapíná dekódování dat (popsáno v předchozí kapitole). Pro další podrobnosti ohledně funkce obvodu odkazuji na \cite{xapp652}.


\subsubsection{Core generátor RocketIO 8.2i}
Core generátor pro RocketIO je dodáván bezplatně s ISE. Umožňuje vytvoření konfigurací pro SONET OC-48, SONET OC-192, PCI Express, Infiniband, XAUI (10-Gigabit Ethernet), XAUI (10-Gigabit Fibre Channel) a Aurora (Xilinx protocol).

Tuto jednotku je při použití karty Combo 4SFPRO/OC-48 nutno zapojit vždy, protože SFPRO cartrige jsou připojeny pouze přes RocketIO-X k FPGA.

Obsáhlá problematika RocketIO rozhraní je popsána v \cite{ug035}.




\section{Dostupná řešení PPP a HDLC kontroléru}


\subsection{MTI 6.195 Byte-wide HDLC controller}
\label{par:mit}
Jedná se o projekt z univerzity MIT \cite{mit-hdlc}, který implementuje HDLC (High-level Data Link Control) kontrolér velice přehledným způsobem. Na následujícím obrázku \ref{img:mit-hdlc} je ilustrující blokové schéma.

\begin{figure}[!htp]
\begin{center}
\scalebox{0.7}{\includegraphics{img/mit-hdlc.png}}
\end{center}
\caption{MTI 6.195 HDLC controller (zdroj MTI)}
\label{img:mit-hdlc}
\end{figure}

Je rozdělen na vysílací a přijímací část, která se vždy skládá z řídicího automatu a jednotky pro výpočet kontrolního součtu. Jak již název naznačuje datová šířka je 8b, což znemožňuje snadné použití pro SONET OC-48. Snadnému rozšíření pro datovou šířku 16b brání řídicí automat, který je napsán \uv{zvláštním} způsobem. Stavy automatu jsou konstanty kódovány 1 z N, což znemožňuje syntéznímu nástroji optimalizaci. Zásadní překážkou v rozšíření však je pouze jeden automat, který generuje/přijímá L1 datový proud a zároveň převádí byty 0x7D a 0x7E. Při zvýšení datové šířky 2x se počet stavů zvýší přibližně 4x, protože musíme brát v úvahu různé kombinace bytů 0x7D a 0x7E.

Další možností je zapojit 2 tyto jednotky paralelně vedle sebe. Zařadit před a za ně multiplexor/demultiplexor a vyrovnávací FIFO paměti.

\subsubsection{Klady/zápory}
Klady a zápory jsou shrnuty v tabulce \ref{tab:mit+-}

\begin{table}[h]
   \begin{center}
   \begin{tabular}{|l|l|}
      \hline
      Klady & Zápory \\
      \hline \hline
      Otevřený kód, dobře dokumentovaný & kód obsahuje chyby \\ \hline
      bezplatné použití & obtížná rozšiřitelnost na 16b datovou cestu \\ \hline
   \end{tabular}
   \end{center}
   \caption{Klady a zápory HDLC kontroléru z MIT}
   \label{tab:mit+-}
\end{table}



\subsection{Modelware: nAccess HDLC controller}
Soft core použitelné pro FPGA a ASIC je opět rozděleno na nezávislou vysílací a přijímací část. Pro úplnost je na obrázku \ref{img:modelware-hdlc} uvedeno blokové schéma.

\begin{figure}[!htp]
\begin{center}
\scalebox{1.0}{\includegraphics{img/modelware-hdlc.pdf}}
\end{center}
\caption{Modelware HDLC controller}
\label{img:modelware-hdlc}
\end{figure}

Základní funkce jsou stejné jako u předchozího kontroléru z MIT. Přidané jsou možnosti konfigurace. Můžeme definovat obsah pole address, control a protocol které budeme generovat nebo naopak přijímat. Ostatní rámce budou při přijetí zahozeny. Je možné volit mezi kontrolním součtem CRC16 a CRC32. Dále jednotka poskytuje velké množství kontrolních statistik. Jsou to čítače přijatých rámců, přijatých krátkých rámců (příliš krátké pro výpočet CRC), přijatých rámců se špatným kontrolním součtem, odmítnutých rámců (jiné pole address, control, protocol), odeslaných rámců.

Dále nabízí kódování/dekódování dat polynomem $x^{43}+1$, které vyžaduje \cite{rfc2615} pro vložení do SONET/SDH SPE.


\subsubsection{Klady/zápory}
Klady a zápory jsou shrnuty v tabulce \ref{tab:modelware+-}

\begin{table}[!htp]
   \begin{center}
   \begin{tabular}{|l|l|}
      \hline
      Klady & Zápory \\
      \hline \hline
      Dodáváno ve formě VHDL kódů nebo EDIF & nejasná licence \\ \hline
      Robustní řešení & datová šířka není uvedena (nepochybně 8b) \\ \hline
      volitelné (de)kódování polynomem $x^{43}+1$ & \\ \hline
      poskytované statistiky & \\ \hline
   \end{tabular}
   \end{center}
   \caption{Klady a zápory HDLC kontroléru f. Modelware}
   \label{tab:modelware+-}
\end{table}



\subsection{CoreEL PPP8 HDLC core (CC318f)}
\label{par:CoreEL}
Mezi další komerční řešení ve formě IP core patří CC318f \cite{wp109} od firmy CoreEL MicroSystems. Jedná se o 8b PPP/HDLC kontrolér, který splňuje
RFC 1619 (nahrazeno RFC 2615 \cite{rfc2615}).

Datová šířka je opět 8b a proto by bylo nutné zapojit více těchto jednotek paralelně. Blokové schéma vysílací a přijímací části nebudu uvádět, protože nepřináší nic nového vzhledem k předchozím dvěma kontrolérům. Prostudování \cite{wp109} mě přivádí k závěru, že se rozhodně nejedná o PPP kontrolér ve smyslu udržování spojení na linkové vrstvě. Tento kontrolér pouze přidává pole PPP rámce, které je nastaveno na předem definovanou hodnotu. Zpracování LCP (Link Control Protocol) a NCP (Network Control Protocol) paketů by bylo nutné řešit v externí jednotce.

Doporučené zapojení této jednotky pro PoS je na obrázku \ref{img:coreEL-app}. Uvádím jej zde pro představu, jak může implementace PoS vypadat.

\begin{figure}[!htp]
\begin{center}
\scalebox{1.1}{\includegraphics{img/coreEL-app.pdf}}
\end{center}
\caption{Zapojení CoreEL CC318f}
\label{img:coreEL-app}
\end{figure}


\subsubsection{Klady/zápory}
Klady a zápory jsou shrnuty v tabulce \ref{tab:coreEL+-}

\begin{table}[!htp]
   \begin{center}
   \begin{tabular}{|l|l|}
      \hline
      Klady & Zápory \\
      \hline \hline
      Robustní řešení & Datová šířka 8b \\ \hline
      Pseudo PPP kontrolér & Neimplementuje LCP a NCP \\ \hline
      Poskytované statistiky & \\ \hline
      Zahazování poškozených paketů & \\ \hline
   \end{tabular}
   \end{center}
   \caption{Klady a zápory HDLC kontroléru f. CoreEL}
   \label{tab:coreEL+-}
\end{table}


\section{Komplexní HW řešení}
Pro zajímavost a srovnání zde uvádím již hotová hardwarová řešení v podobě čipů.

\subsection{Conexant SONET/SDH OC-48 POS/ATM Mapper (Roshni PX-4805)}
Jedná se o hardwarové řešení, které v čipu zahrnuje dvou-kanálový SONET/SDH OC-48 framer a pointer procesor s možností zpracovávat PoS a ATM. Výrobce \cite{conexant} uvádí nízkou spotřebu, která je 1,25W na jeden OC-48 kanál. Čip je vyroben 0,14$\mu$m technologií a použité pouzdro je TBGA s 648 piny. Blokové schéma je na obrázku \ref{img:conexant-pos}.

\begin{figure}[!htp]
\begin{center}
\scalebox{1.3}{\includegraphics{img/conexant-pos.pdf}}
\end{center}
\caption{HW řešení PoS f. Conexant}
\label{img:conexant-pos}
\end{figure}

Je možné zapnout tzv. transparentní mód, ve kterém jsou pakety pouze přeposílány. To je výhodné pro RPR (Resilient Packet Rings) aplikace.
Jako u samostatných HDLC kontrolérů je též možné filtrování polí address, control a protocol. Každý kanál může být nezávisle nakonfigurován pro STS-48c, STS-12c a 4x STS-12c. Dále pro každý SONET/SDH datový proud je možné použít mapování do ATM buněk nebo PoS. Dvě nezávislá rozhraní do systému podporují protokoly UTOPIA Level 2/3, POS-PHY Level 2/3, Packet Bus Level 3 nebo 8/32b \uv{telecom bus}.
Připojení k fyzickému rozhraní je realizováno několika způsoby. První se nazývá OIF-54, což je 4 bitový LVDS (Low Voltage Differential Signal). Další jsou 16b LVPECL (Low Voltage Positive Emitter Coupled Logic) v STS-48 módu a 8 bitový LVPECL v STS-12 módu.

Samozřejmostí je zpracování/generování pointerů na data, SOH (Section Overhead), LOH (Line Overhead) a POH (Path Overhead).
Dále jednotka detekuje a generuje: OOF (Out Of Frame), LOF (Loss Of Frame), LOS (Loss Of Signal), chyby APS (Automatic Protection Switch), AIS (line/path alarm), RDI (line/path remote defect). Implementuje specifikace ATM Forum User Network a PPP over SONET/SDH (RFC 2615).



\subsection{Exar SONET/SDH OC-48 ATM/UNI/POS Mapper (XRT95L51)}
Velice komplexní HW řešení je od firmy Exar \cite{exar}. Pro představu jak je jednotka navržena, opět uvádím blokové schéma, které je na obrázku \ref{img:exar-pos}. Čip je zapouzdřen v PBGA (Plastic Ball Grid Array) a má 388 pinů.

\begin{figure}[!htp]
\begin{center}
\scalebox{1.0}{\includegraphics{img/exar-pos.pdf}}
\end{center}
\caption{HW řešení PoS f. Exar}
\label{img:exar-pos}
\end{figure}

Jedná se o ATM/PPP procesor s integrovanou jednotkou pro zapouzdření dat do SONET/SDH OC-48 rámců. SONET/SDH framer splňuje specifikace ANSI/ITU-T a má podobné možnosti generování/detekce hlavičky (SOH, LOH, POH)jako předchozí řešení. Samozřejmostí je (de)kódování dat jak 7b polynomem pro SONET/SDH tak rozšířeným 43b polynomem pro PoS. Dále umožňuje vkládání a zpracování alarm signálů. SONET/SDH vysílací a přijímací část je možné nakonfigurovat pro OC-48c nebo 4x OC-12. Rozhraní do systému má datovou šířku 32b při frekvenci 77 MHz.
Zařízení je konfigurovatelné přes registry, které jsou přístupné přes 8b paralelní rozhraní. Pro výčet všech vlastností doporučuji přečtení \cite{exar}.




\section{Zhodnocení dostupných řešení}
Jednotka, která převádí Packet over SONET (přenášený po rozhraní RocketIO) na FrameLink (LocalLink), není na trhu dostupná.
Největší výhody představuje použití již hotového hardwarového řešení. Ušetříme zdroje v aplikačním FPGA a vývoj je možné soustředit k samotným aplikacím. Tento přístup však znamená redesign celé interfacové karty a to vzhledem k již existujícímu PCB není možné. Také by to znamenalo snížení univerzality této karty.

Proto navrhneme vlastní jednotku inspirovanou předešlou analýzou. Pro návrh komponenty SONET Framer bude dobré vycházet z Altera SONET/SDH Compiler (viz. kapitola \ref{par:altera}). Je velice dobře dokumentovaný, univerzální a odpovídá požadavkům kladených ve specifikaci na tuto jednotku.
HDLC kontroléry jsou dostupné s datovou šířkou pouze 8b, což je neslučitelné s požadavkem přenést OC-48 (2,5Gb/s). Budu nutné navrhnout paralelní zapojení již hotových 8b HDLC kontrolérů, nebo navázat na projekt z univerzity MIT (viz. kapitola \ref{par:mit}) a rozšířit jej na datovou šířku 16b.
PPP kontrolér řešící pouze enkapsulaci a dekapsulaci paketů síťové vrstvy z/do PPP rámců je součástí HDLC kontroléru CoreEL PPP8 (viz. kapitola \ref{par:CoreEL}). Takový PPP kontrolér, který zpracovává pakety linkové vrstvy, není dostupný. Návrhem vlastního řešení jednotky se budu zabývat v následující kapitole.


