1 |
125 |
guanucolui |
%*****************************************************************************************
|
2 |
|
|
%*********************************** Second Chapter **************************************
|
3 |
|
|
%*****************************************************************************************
|
4 |
|
|
|
5 |
127 |
guanucolui |
\chapter{Fundamentos y Planteamiento del Desarrollo}
|
6 |
125 |
guanucolui |
|
7 |
|
|
\ifpdf
|
8 |
|
|
\graphicspath{{Chapter2/Figs/Raster/}{Chapter2/Figs/PDF/}{Chapter2/Figs/}}
|
9 |
|
|
\else
|
10 |
|
|
\graphicspath{{Chapter2/Figs/Vector/}{Chapter2/Figs/}}
|
11 |
|
|
\fi
|
12 |
|
|
|
13 |
127 |
guanucolui |
\section{Dispositivos Lógicos Programables}
|
14 |
|
|
\label{sec:pld}
|
15 |
125 |
guanucolui |
|
16 |
128 |
guanucolui |
Los \emph{Dispositivos Lógicos Programables} (PLDs) fueron introducidos a medidos de 1970s. La idea era construir circuitos lógicos combinacionales que fueran \emph{programables}. Contrariamente a los microprocesadores, los cuales pueden \emph{correr} un programa sobre un hardware \emph{fijo}, la programabilidad de los PLDs hace referencia a niveles de \emph{hardware}. En otras palabras. un PLD es un chip de \emph{propósitos generales} cuyo \emph{hardware} puede ser reconfigurado dependiendo de especificaciones particulares del programador.
|
17 |
125 |
guanucolui |
|
18 |
128 |
guanucolui |
EL primer PLD se llamaba PAL (\textsl{Programmable Array Logic}). Estos dispositivos disponían solo de compuertas lógicas (no tenían flip-flop), por lo que solo permitía la implementación de circuitos \emph{combinacionales}. Para salvar este problema, Los \emph{\textsl{registered}} PLDs fueron lanzados pocos después, los cuales incluían un flip-flop por cada salida del circuito. Con esta versión de los PAL, se podría implementar funciones \emph{secuenciales} simples.
|
19 |
125 |
guanucolui |
|
20 |
128 |
guanucolui |
En el comienzo de 1980s, se agregaba más circuitos lógicos adicionales a la salida de los PLD. Este circuito de salida se lo identificaba como celda, llamado también \emph{Microcelda}, que contenía (además de flip-flop) compuertas lógicas y multiplexores. Por otra parte, la celda era reprogramable, permitiendo varios modos de operación. Además, se podía proveer una señal de retorno (\textsl{feedback}) desde la salida del circuito a la lógico principal de la PAL, lo que le daba mayor flexibilidad a estos dispositivos reprogramables. Esta nueva estructura era llamada \emph{\textsl{generic PAL}} o GAL. Una arquitectura de dispositivo similar fue conocido como PALCE (\textsl{PAL CMOS Electrically erasable/programmable}).
|
21 |
|
|
|
22 |
|
|
Todos estos chips (PAL, \textsl{registered} PLD, y GAL/PALCE) son ahora categorizados como SPLDs (\textsl{Simple} PLDs). Los dispositivos GAL/PALCE son los únicos fabricados aún en una encapsulado independiente.
|
23 |
|
|
|
24 |
|
|
Luego, varios dispositivos GAL fueron fabricados en un solo chip, usando un esquema de direccionamiento más sofisticado, mayor tecnología en su fabricación, y varias características adicionales (como soporte JTAG e interfaces para varios estándares lógicos). Esta nueva propuesta se la conoció como CPLD (\textsl{Complex} PLD). Los CPLDs son actualmente muy populares debido a su alta densidad, funcionalidad, y bajo costo.
|
25 |
|
|
|
26 |
|
|
Finalmente, a mediados de 1980s, las FPGA (\textsl{Field Programmable Gate Array}) fueron introducidos al mercado de los IC. Las FPGAs diferían de los CPLDs en su arquitectura. tecnología, recursos internos, y costo. Estos dispositivos tenían como principal objetivo su implementación en diseños de gran requerimientos en recursos de hardware como así también un alto rendimiento.
|
27 |
|
|
|
28 |
|
|
Un pequeño resumen de los diferentes dispositivos PLDs se puede observar en la Tabla \ref{tab:evo-plds}.
|
29 |
|
|
|
30 |
|
|
\begin{table}[h]
|
31 |
127 |
guanucolui |
\centering
|
32 |
128 |
guanucolui |
\begin{tabular}[h]{|c | l l|}
|
33 |
|
|
\hline
|
34 |
|
|
\multirow{5}{*}{PLDs} & \multirow{3}{*}{Sample PLD (SPLD)} & \multicolumn{1}{|l|}{PAL} \\
|
35 |
|
|
& \multicolumn{1}{|l|}{}& Registered PAL \\
|
36 |
|
|
& \multicolumn{1}{|l|}{}& GAL \\ \cline{2-3}
|
37 |
|
|
& Complex PLD (CPLD) & \\ \cline{2-3}
|
38 |
|
|
& FPGA & \\
|
39 |
|
|
\hline
|
40 |
|
|
\end{tabular}
|
41 |
|
|
\caption{Evolución de los PLDs}
|
42 |
|
|
\label{tab:evo-plds}
|
43 |
|
|
\end{table}
|
44 |
125 |
guanucolui |
|
45 |
128 |
guanucolui |
Por último, todos los PLDs (\textsl{simple} o \textsl{complex}) son no volátiles. Estos puede ser OTP (\textsl{One-Time Programmable}), en la que pequeños fusibles electrónicos son usados para la reprogramación, de igual forma que las EEPROM o memorias Flash. Las FPGAs, por otra lado, son en su mayoría volátiles. Para estas últimas se deben usar dispositivos externos para cargar las conexiones.
|
46 |
125 |
guanucolui |
|
47 |
128 |
guanucolui |
Actualmente los dispositivos más utilizados son los CPLDs y FPGAs. De estas dos tecnología, se optó por trabajar con las FPGAs pues, como bien se dijo antes, cuentan con mayor recursos de \textsl{hardware} que los CPLDs. Lo que permitirá dar un mayor margen a los desarrollos digitales que se quieran implementar. Se detallará con mayor profundidad la tecnología y estructura de las FPGAs.
|
48 |
125 |
guanucolui |
|
49 |
130 |
guanucolui |
\subsection{FPGAs}
|
50 |
128 |
guanucolui |
\label{sec:pld-fpga}
|
51 |
127 |
guanucolui |
|
52 |
128 |
guanucolui |
Las FPGAs fueron introducidas al mercado por la empresa Xilinx Inc. a mediados de 1980s. Estos dispositivos se diferencian de los CPLDs en su arquitectura, tecnología de almacenamiento, funcionalidades integradas, y costo, y además están orientadas a la implementación de altos rendimientos y grandes tamaños en lo que se refiere a recursos de hardware.
|
53 |
127 |
guanucolui |
|
54 |
128 |
guanucolui |
La arquitectura básica de una FPGA se ilustra en la Figura \ref{fig:fpga-arch}. Esta consiste de una matriz de \emph{CLBs} (\textsl{Configurable Logic Blocks}), interconectados por un arreglo de matrices de conmutadores (\emph{\textsl{Switch Matrix}}). Para caracterizar con más detalle estos dispositivo se debe recurrir a la información de los fabricantes, donde además se puede disponer de un interfaz JTAG a diversos niveles lógicos, otra funcionalidad como memorias SRAM, multiplicadores de clock (PLL o DLL), interfaz PCI, etc. Algunos chips también incluyen bloques dedicados como multiplicadores, DPSs, y microprocesadores.
|
55 |
127 |
guanucolui |
|
56 |
128 |
guanucolui |
\begin{figure}
|
57 |
|
|
\centering
|
58 |
|
|
\includegraphics[width=0.4\textwidth]{fpga_arch}
|
59 |
|
|
\caption{Arquitectura básica de una FPGA}
|
60 |
|
|
\label{fig:fpga-arch}
|
61 |
|
|
\end{figure}
|
62 |
127 |
guanucolui |
|
63 |
128 |
guanucolui |
Las FPGAs puede ser muy sofisticadas. La fabricación de chips con una tecnología CMOS de 90 nm., con nueve capas ed cobre y mas de 1000 pines de I/O, se encuentran actualmente disponible en el mercado. Algunos ejemplos de los empaquetados (\textsl{package}) de las FPGAs son ilustrados en la Figura \ref{fig:pkg-fpga}, en los cuales se puede apreciar uno de los \textsl{package} más pequeños (Fig. \ref{fig:pgk-fpga-vq100}) con 100 pines, un \textsl{package} de tamaño mediano (Fig. \ref{fig:pgk-fpga-csg324}) de 324 pines, y uno de los grandes \textsl{package} con 1156 pines (Fig. \ref{fig:pgk-fpga-ffg1156}.
|
64 |
127 |
guanucolui |
|
65 |
128 |
guanucolui |
\begin{figure}
|
66 |
|
|
\centering
|
67 |
|
|
\subfloat[\footnotesize{\textsl{Package} VQ100}]{\label{fig:pgk-fpga-vq100}\includegraphics[width=0.25\textwidth]{pkg100}}
|
68 |
|
|
\qquad
|
69 |
|
|
\subfloat[\footnotesize{\textsl{Package} CSG324}]{\label{fig:pgk-fpga-csg324}\includegraphics[width=0.25\textwidth]{pkg356}}
|
70 |
|
|
\qquad
|
71 |
|
|
\subfloat[\footnotesize{\textsl{Package} FFG1156}]{\label{fig:pgk-fpga-ffg1156}\includegraphics[width=0.25\textwidth]{pkg1156}}
|
72 |
|
|
\caption{Diferentes \textsl{package} de las FPGAs comerciales.}
|
73 |
|
|
\label{fig:pkg-fpga}
|
74 |
125 |
guanucolui |
\end{figure}
|
75 |
|
|
|
76 |
128 |
guanucolui |
Varias compañías fabrican FPGAs, como Xilinx., Actel, Altera, QuickLogic, Atmel, etc. Ejemplo de dos fabricantes (Xilinx y Actel) se disponen en las Tablas \ref{tab:char-xilinx} y \ref{tab:char-actel}. Como puede verse, estos dispositivos pueden contener miles de flip-flops y varios millones de compuertas lógicas.
|
77 |
125 |
guanucolui |
|
78 |
128 |
guanucolui |
\begin{table}[h]
|
79 |
|
|
\centering
|
80 |
|
|
{\footnotesize
|
81 |
|
|
\begin{tabular}[c]{|m{0.1\textwidth}|m{0.1\textwidth}|m{0.1\textwidth}|m{0.1\textwidth}|m{0.1\textwidth}|m{0.1\textwidth}|m{0.1\textwidth}|m{0.1\textwidth}|}
|
82 |
|
|
\hline
|
83 |
|
|
Familia & Virtex II Pro & Virtex II & Virtex E & Virtex & Spartan 3 & Spartan IIE & Spartan II \\
|
84 |
|
|
\hline
|
85 |
|
|
CLBs & 352 -- 11.024 & 64 -- 11.648 & 384 -- 16.224 & 384 -- 6.144 & 192 -- 8.320 & 384 -- 3.456 & 96 -- 1.176 \\
|
86 |
|
|
\hline
|
87 |
|
|
Celdas Lógicas & 3.168 -- 125.136 & 576 -- 104.882 & 1.728 -- 73.008 & 1.728 -- 27.648 & 1.728 -- 74.880 & 1.728 -- 15.552 & 432 -- 5.292 \\
|
88 |
|
|
\hline
|
89 |
|
|
\textsl{System gates} & & 40k -- 8M & 72k -- 4M & 58k -- 1.1M & 50k -- 5M & 23k -- 600k & 15k -- 200k \\
|
90 |
|
|
\hline
|
91 |
|
|
Pines de I/O & 204 -- 1200 & 88 -- 1108 & 176 -- 804 & 180 -- 512 & 124 -- 784 & 182 -- 514 & 86 -- 284 \\
|
92 |
|
|
\hline
|
93 |
|
|
Flip-flops & 2.816 -- 88.192 & 512 -- 93.184 & 1.392 -- 64.896 & 1.392 -- 24.576 & 1.536 -- 66.560 & 1.536 -- 13.824 & 384 -- 4.704 \\
|
94 |
|
|
\hline
|
95 |
|
|
Frec. máxima interna & 547 MHz & 420 MHz & 240 MHz & 200 MHz & 326 MHz & 200 MHz & 200 MHz \\
|
96 |
|
|
\hline
|
97 |
|
|
Voltaje & 1.5 V & 1.5 V & 1.8 V & 2.5 V & 1.2 V & 1.8 V & 2.5 V \\
|
98 |
|
|
\hline
|
99 |
|
|
Inter\-conexiones & SRAM & SRAM & SRAM & SRAM & SRAM & SRAM & SRAM \\
|
100 |
|
|
\hline
|
101 |
|
|
\multirow{3}{*}{Tecnología} & 0.13 $\mu$m & .15 $\mu$m & 0.18 $\mu$m & 0.22 $\mu$m & 0.09 $\mu$m & & \\
|
102 |
|
|
& 9 capas de cobre & 8 capas de metal & 6 capas de metal & 5 capas de metal & 8 capas de metal & & \\
|
103 |
|
|
& CMOS & CMOS & CMOS & CMOS &CMOS & & \\
|
104 |
|
|
\hline
|
105 |
|
|
SRAM bits (Bloques de RAM) & 216k -- 8M & 72k -- 3M & 64k -- 832k & 32k -- 128k & 72k -- 1.8M & 32k -- 288k & 16k -- 56k \\
|
106 |
|
|
\hline
|
107 |
|
|
\end{tabular}
|
108 |
|
|
} % END \footnotesize{} segmentation
|
109 |
|
|
\caption{Características de FPGAs fabricadas por Xilinx.}
|
110 |
|
|
\label{tab:char-xilinx}
|
111 |
|
|
\end{table}
|
112 |
125 |
guanucolui |
|
113 |
128 |
guanucolui |
\begin{table}[h]
|
114 |
|
|
\centering
|
115 |
|
|
{\footnotesize
|
116 |
|
|
\begin{tabular}[c]{|m{0.13\textwidth}|m{0.13\textwidth}|m{0.13\textwidth}|m{0.13\textwidth}|m{0.13\textwidth}|m{0.13\textwidth}|}
|
117 |
|
|
\hline
|
118 |
|
|
Familia & Accelerator & ProASIC & MX & SX & eX \\
|
119 |
|
|
\hline
|
120 |
|
|
Módulos lógicos & 2.016 -- 32.256 & 5.376 -- 56.320 & 295 -- 2.438 & 768 -- 6.036 & 192 -- 768 \\
|
121 |
|
|
\hline
|
122 |
|
|
\textsl{System gates} & 125k -- 2M & 75k -- 1M & 3k -- 54k & 12k -- 108k & 3k -- 12k \\
|
123 |
|
|
\hline
|
124 |
|
|
Pines de I/O & 168 -- 684 & 204 -- 712 & 57 -- 202 & 130 -- 360 & 84 -- 132 \\
|
125 |
|
|
\hline
|
126 |
|
|
Flip-flops & 1.344 -- 21.504 & 5.376 -- 26.880 & 147 -- 1.822 & 512 -- 4.024 & 128 -- 512 \\
|
127 |
|
|
\hline
|
128 |
|
|
Frec. máxima interna & 500 MHz & 250 MHz & 250 MHz & 350 MHz & 350 MHz \\
|
129 |
|
|
\hline
|
130 |
|
|
Voltaje & 1.5 V & 2.5 V, 3.3 V & 3.3 V, 5 V & 2.5 V, 3.3 V, 5 V & 2.5 V, 3.3 V, 5 V \\
|
131 |
|
|
\hline
|
132 |
|
|
Inter\-conexiones & \textsl{Antifuse} & \textsl{Flash} & \textsl{Antifuse} & \textsl{Antifuse} & \textsl{Antifuse}\\
|
133 |
|
|
\hline
|
134 |
|
|
\multirow{3}{*}{Tecnología} & 0.15 $\mu$m & .22 $\mu$m & 0.45 $\mu$m & 0.22 $\mu$m & 0.22 $\mu$m \\
|
135 |
|
|
& 7 capas de metal & 4 capas de metal & 3 capas de metal & & \\
|
136 |
|
|
& CMOS & CMOS & CMOS & CMOS &CMOS \\
|
137 |
|
|
\hline
|
138 |
|
|
SRAM bits & 29 k -- 339 k & 14 k -- 198 k & 2.56 k & n.a. & n.a. \\
|
139 |
|
|
\hline
|
140 |
|
|
\end{tabular}
|
141 |
|
|
} % END \footnotesize{} segmentation
|
142 |
|
|
\caption{Características de FPGAs fabricadas por Actel.}
|
143 |
|
|
\label{tab:char-actel}
|
144 |
|
|
\end{table}
|
145 |
125 |
guanucolui |
|
146 |
128 |
guanucolui |
Nótese que todas las FPGAs de Xilinx usan SRAM para almacenar las interconexiones, por lo que son reprogramables, pero volátiles (es así que requieren de una ROM externa). en cambio, las FPGAs de Actel son no-volátiles (estos usan fusibles electrónicos), pero no son reprogramables (excepto una familia, la cual usa memoria \textsl{Flash}). Ya que cada enfoque tiene sus propias ventajas y desventajas, la aplicación real dictará cual arquitectura de chip es la apropiada.
|
147 |
125 |
guanucolui |
|
148 |
128 |
guanucolui |
\nomenclature[z-pal]{PAL}{\textsl{Programmable Array Logic}} % first letter Z is for Acronyms
|
149 |
|
|
\nomenclature[z-ff]{FF}{flip-flop, circuito que tiene dos estados estables y puede ser usado para almacenar información}
|
150 |
|
|
\nomenclature[z-palce]{PALCE}{\textsl{PAL CMOS Electrically erasable/programmable}}
|
151 |
|
|
\nomenclature[z-cpld]{CPLD}{\textsl{Complex Programmable Logic Device}}
|
152 |
|
|
\nomenclature[z-fpga]{FPGA}{\textsl{Field Programmable Gate Array}}
|
153 |
|
|
\nomenclature[z-eeprom]{EEPROM}{\textsl{Electrically Erasable Programmable Read-Only Memory}}
|
154 |
|
|
\nomenclature[z-clb]{CLB}{\textsl{Configurable Logic Block}}
|
155 |
|
|
\nomenclature[z-sram]{SRAM}{\textsl{Static-RAM}}
|
156 |
|
|
\nomenclature[z-pll]{PLL}{\textsl{Phase-Locked Loop}}
|
157 |
|
|
\nomenclature[z-dll]{DLL}{\textsl{Delay-Locked Loop}}
|
158 |
|
|
\nomenclature[z-pci]{PCI}{\textsl{Peripheral Component Interconnect}}
|
159 |
|
|
\nomenclature[z-dsp]{DSP}{\textsl{Digital Signal Processor}}
|
160 |
|
|
|
161 |
|
|
\section{Ámbito de implementación}
|
162 |
|
|
\label{sec:amb-impl}
|
163 |
|
|
|
164 |
|
|
\subsection{Antecedentes}
|
165 |
|
|
\label{sec:amb-impl-antec}
|
166 |
|
|
|
167 |
125 |
guanucolui |
\begin{landscape}
|
168 |
|
|
|
169 |
|
|
\section*{Subplots}
|
170 |
|
|
I can cite Wall-E (see Fig.~\ref{fig:WallE}) and Minions in despicable me (Fig.~\ref{fig:Minnion}) or I can cite the whole figure as Fig.~\ref{fig:animations}
|
171 |
|
|
|
172 |
|
|
|
173 |
|
|
\begin{figure}
|
174 |
|
|
\centering
|
175 |
|
|
\subfloat[A Tom and Jerry]{\label{fig:TomJerry}\includegraphics[width=0.3\textwidth]{TomandJerry}}
|
176 |
|
|
\subfloat[A Wall-E]{\label{fig:WallE}\includegraphics[width=0.3\textwidth]{WallE}}
|
177 |
|
|
\subfloat[A Minion]{\label{fig:Minnion}\includegraphics[width=0.3\textwidth]{minion}}
|
178 |
|
|
\caption{Best Animations}
|
179 |
|
|
\label{fig:animations}
|
180 |
|
|
\end{figure}
|
181 |
|
|
|
182 |
|
|
|
183 |
|
|
\end{landscape}
|