OpenCores
URL https://opencores.org/ocsvn/phr/phr/trunk

Subversion Repositories phr

[/] [phr/] [trunk/] [doc/] [informe-tesis/] [phd-thesis-template-master/] [ProyectoPHR/] [ProyectoPHR.tex] - Diff between revs 284 and 299

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 284 Rev 299
Line 6... Line 6...
    \graphicspath{{ProyectoPHR/Figs/Raster/}{ProyectoPHR/Figs/PDF/}{ProyectoPHR/Figs/}}
    \graphicspath{{ProyectoPHR/Figs/Raster/}{ProyectoPHR/Figs/PDF/}{ProyectoPHR/Figs/}}
\else
\else
    \graphicspath{{ProyectoPHR/Figs/Vector/}{ProyectoPHR/Figs/}}
    \graphicspath{{ProyectoPHR/Figs/Vector/}{ProyectoPHR/Figs/}}
\fi
\fi
 
 
En la actualidad todos los desarrollos en recursos físicos basados en dispositivos lógicos programables son de origen extranjero. Se puede encontrar desarrollos nacionales pero estos no son comercializados por ningún emprendimiento local. Esta situación no es necesariamente por falta de recursos humanos calificados, sino por la demanda de la industria nacional. De todas formas el proyecto \emph{Plataforma de Hardware Reconfigurable} pretende abrir camino hacia el desarrollo de plataformas educativas que permitan la difusión del diseño digital utilizando estos dispositivos PLDs.
 
 
 
Los desarrolladores de este proyecto, la mayoría de ellos miembros investigadores del CUDAR\footnote{Centro Universitario de Desarrollo en Automoción y Robótica -- Universidad Tecnológica Nacional - Facultad Regional Córdoba.}, cuentan con experiencia en el manejo de plataformas evaluadoras basadas en CPLDs/FPGAs. Además, como se describió en el Capítulo \ref{chap:antecedentes}, el Centro tiene antecedentes en el desarrollo de plataformas educativas y la transferencia de recursos físicos a Laboratorios e Instituciones Académicas.
 
 
 
\section{Desarrollos comerciales}
 
\label{sec:desa-referencia}
 
 
 
En el mercado internacional existen varias empresas desarrolladoras de plataformas evaluadoras con dispositivos PLDs. Las principales empresas fabricantes de sistemas embebidos basados en dispositivos PLDs son Xilinx, Altera y Digilent. Estos fabricantes desarrollan plataformas para determinados perfiles de usuarios. En la Sección \ref{sec:infl-program} se realiza un análisis sobre la importancia de la flexibilidad que presentan los dispositivos programables como las FPGAs, y esta posibilidad de reconfigurar su arquitectura permite implementar esta tecnología en diferentes aplicaciones. Las líneas de desarrollo más destacadas son,
 
 
 
\begin{itemize}
 
\item Sistemas de comunicaciones digitales
 
\item Procesamiento de Señales Digitales (DSP)
 
\item Automoción
 
\end{itemize}
 
 
 
A continuación se describe algunas de los desarrollos fabricados por las empresas anteriormente nombradas. De esta manera se pretende dilucidar los perfiles de plataformas y lo que se ofrece en el mercado.
 
 
 
\subsection{Xilinx Spartan-6 FPGA LX9 MicroBoard}
 
\label{sec:placa-xilinx-avnet}
 
 
 
La plataforma \emph{Spartan-6 FPGA LX9 MicroBoard} ofrece un completo entorno de \textsl{hardware} para que los diseñadores aceleren su tiempo de desarrollo y comercialización. Este kit presenta una estable plataforma para desarrollar y testear diseños de bajo costo/consumo de potencia sobre la familia de FPGA Xilinx Spartan-6. Esta placa contiene las siguientes características\footnote{La características se las describe tal cual las hojas de datos publicadas por los fabricantes, con su idioma original.}.
 
 
 
\begin{itemize}
 
\item FPGA
 
  \begin{itemize}
 
  \item Xilinx Spartan-6 XC6SLX9-2CSG324C FPGA
 
  \end{itemize}
 
\item Clocks
 
  \begin{itemize}
 
  \item Triple output, user programmable, Texas Instruments CDCE913 clock
 
  \item  Optional user installable Maxim DS1088LU-66+, low-cost, fixed-frequency oscillator
 
  \end{itemize}
 
\item Memory
 
  \begin{itemize}
 
  \item  32 Mb x 16 (512 Mb) Micron LPDDR Mobile SDRAM component.
 
  \item  128 Mb Micron Multi-I/O SPI Flash
 
  \end{itemize}
 
\item Communication
 
  \begin{itemize}
 
  \item  One USB 2.0, Full Speed USB-to- JTAG bridge via Atmel AT90USB162, Digilent JTAG firmware, and Tyco USB-A connector
 
  \item  One USB 2.0, Full Speed USB-to-UART bridge via Silicon Labs CP2102 and Tyco Micro-B connector.
 
  \item  One 10/100 Ethernet port via National Semiconductor DP83848J PHY and Tyco RJ45 connector with Integrated Magnetics.
 
  \end{itemize}
 
\item User I/O and Expansion Connectors
 
  \begin{itemize}
 
  \item Two Digilent 12-pin, 0.245mm pitch, Peripheral Module (PMOD) headers support 3rd party expansion modules.
 
  \end{itemize}
 
\item User Interfaces
 
  \begin{itemize}
 
  \item  Four user LEDs
 
  \item  Four configurable FPGA user DIP switches
 
  \item  Two system push-button switches: one tied to user I/O and used for logical reset in the factory test image, one hardwired for FPGA program initialization.
 
  \end{itemize}
 
\item Power
 
  \begin{itemize}
 
  \item  Texas Instruments TPS65708 PMU multi-channel regulator, with 5V input supplied by either USB connection.
 
  \end{itemize}
 
\item Configuration
 
  \begin{itemize}
 
  \item  128Mb SPI Configuration Flash
 
  \item  On-board USB Programming/Configuration based on the Digilent USB Full Speed JTAG design utilizing the Atmel AT90USB162
 
  \item  Xilinx Compatible JTAG Cable
 
  \end{itemize}
 
\end{itemize}
 
 
 
\begin{figure}
 
  \centering
 
  \includegraphics[width=0.5\textwidth]{AES-S6MB-LX9}
 
  \caption{Placa Xilinx Spartan-6 FPGA LX9 MicroBoard.}
 
  \label{fig:xilinx-avnet-lx9}
 
\end{figure}
 
 
 
\subsection{Altera DE0-Nano}
 
\label{sec:altera-de0-nano}
 
 
 
La placa \emph{DE0-Nano} presenta una plataforma de desarrollo FPGA en un tamaño compacto adecuado para un gran rango de diseños portables, tales como robótica y móviles. EL DE0-Nano es ideal para usar con \textsl{soft processors} embebidos. Esto se debe a las potentes características que presenta con la FPGA Altera Cyclone IV (con 22,230 celdas lógicas), 32MB de SDRAM, 2 Kb de EEPROM, y un dispositivo de memoria de configuración serial de 64Mb. En fin, es un desarrollo completo con todos los recursos físicos necesarios para la evaluación y prueba de sistemas embebidos. A continuación se listan lo que ofrece esta plataforma.
 
 
 
\begin{itemize}
 
\item Featured device
 
  \begin{itemize}
 
  \item Altera Cyclone® IV EP4CE22F17C6N FPGA
 
  \item 153 maximum FPGA I/O pins
 
\end{itemize}
 
\item Configuration status and set-up elements
 
  \begin{itemize}
 
  \item On-board USB-Blaster circuit for programming
 
  \item Spansion EPCS64
 
  \end{itemize}
 
\item Expansion header
 
  \begin{itemize}
 
  \item Two 40-pin Headers (GPIOs) provide 72 I/O pins, 5V power pins, two 3.3V power pins and four ground pins
 
  \end{itemize}
 
\item Memory devices
 
  \begin{itemize}
 
  \item 32MB SDRAM
 
  \item 2Kb I2C EEPROM
 
  \end{itemize}
 
\item General user input/output
 
  \begin{itemize}
 
  \item 8 green LEDs
 
  \item 2 debounced pushbuttons
 
  \item 4-position DIP switch
 
  \end{itemize}
 
\item G-Sensor
 
  \begin{itemize}
 
  \item ADI ADXL345, 3-axis accelerometer with high resolution (13-bit)
 
  \end{itemize}
 
\item A/D Converter
 
  \begin{itemize}
 
  \item NS ADC128S022, 8-Channel, 12-bit A/D Converter
 
  \item 50 Ksps to 200 Ksps
 
  \end{itemize}
 
\item Clock system
 
  \begin{itemize}
 
  \item On-board 50MHz clock oscillator
 
  \end{itemize}
 
\item Power Supply
 
  \begin{itemize}
 
  \item USB Type mini-AB port (5V)
 
  \item DC 5V pin for each GPIO header (2 DC 5V pins)
 
  \item 2-pin external power header (3.6-5.7V)
 
  \end{itemize}
 
\end{itemize}
 
 
 
\begin{figure}
 
  \centering
 
  \includegraphics[width=0.5\textwidth]{de0-nano}
 
  \caption{Placa DE0-Nano.}
 
  \label{fig:altera-de0-nano}
 
\end{figure}
 
 
 
 
 
\subsection{Digilent Spartan-3 Board}
 
\label{sec:digilent-spartan3-board}
 
 
 
La placa \emph{Spartan-3 Starter Board} proporciona una potente y autónoma plataforma de desarrollo para diseños basados en la FPGA Spartan-3 de Xilinx. Ésta cuenta con 200K compuertas, dispositivos de entrada y salidas, y una memoria SRAM rápida de 1MB; haciendo esta una perfecta plataforma para experimentar con diferentes diseños desde simples circuitos lógicos a implementación de procesadores embebidos. La placa también contiene un dispositivo PROM programable por JTAG, por lo que los diseños puede fácilmente ser no volátiles. Las características de esta plataforma se describen a continuación.
 
 
 
\begin{itemize}
 
 
 
\item 200,000-gate Xilinx Spartan-3 XC3S200 FPGA in a 256-ball thin Ball Grid Array package (XC3S200FT256)
 
  \begin{itemize}
 
    \item 4,320 logic cell equivalents
 
    \item Twelve 18K-bit block RAMs (216K bits)
 
    \item Twelve 18x18 hardware multipliers
 
    \item Four Digital Clock Managers (DCMs)
 
    \item Up to 173 user-defined I/O signals
 
  \end{itemize}
 
 
 
\item 2Mbit Xilinx XCF02S Platform Flash, in-system programmable configuration PROM
 
\item   1Mbit non-volatile data or application code storage available after FPGA configuration
 
 
 
\item 1M-byte of Fast Asynchronous SRAM
 
  \begin{itemize}
 
  \item   Two 256Kx16 ISSI IS61LV25616AL-10T 10 ns SRAMs
 
  \item   Configurable memory architecture
 
    \begin{itemize}
 
    \item Single 256Kx32 SRAM array, ideal for MicroBlaze code images
 
    \item Two independent 256Kx16 SRAM arrays
 
    \end{itemize}
 
  \item   Individual chip select per device
 
  \item   Individual byte enables
 
  \end{itemize}
 
 
 
\item 3-bit, 8-color VGA display port
 
 
 
\item 9-pin RS-232 Serial Port
 
  \begin{itemize}
 
  \item   DB9 9-pin female connector (DCE connector)
 
  \item   RS-232 transceiver/level translator
 
  \item   Uses straight-through serial cable to connect to computer or workstation serial port
 
  \item   Second RS-232 transmit and receive channel available on board test points
 
  \end{itemize}
 
 
 
\item PS/2-style mouse/keyboard port
 
\item Four-character, seven-segment LED display
 
\item Eight slide switches
 
\item Eight individual LED outputs
 
\item Four momentary-contact push button switches
 
\item 50 MHz crystal oscillator clock source
 
\item Socket for an auxiliary crystal oscillator clock source
 
\item FPGA configuration mode selected via jumper settings
 
\item Push button switch to force FPGA reconfiguration (FPGA configuration happens automatically at power-on)
 
\item LED indicates when FPGA is successfully configured
 
 
 
\item Three 40-pin expansion connection ports to extend and enhance the Spartan-3 Starter Kit Board
 
  \begin{itemize}
 
  \item   See www.xilinx.com/s3boards for compatible expansion cards
 
  \item   Compatible with Digilent, Inc. peripheral boards
 
  \item   FPGA serial configuration interface signals available on the A2 and B1 connectors
 
    \begin{itemize}
 
    \item   PROG\_B, DONE, INIT\_B, CCLK, DONE
 
    \end{itemize}
 
  \end{itemize}
 
 
 
\item JTAG port      for low-cost download cable
 
\item Digilent JTAG download/debugging cable connects to PC parallel port
 
\item JTAG download/debug port compatible with the Xilinx Parallel Cable IV and MultiPRO Desktop Tool
 
\item AC power adapter input for included international unregulated +5V power supply
 
\item Power-on indicator LED
 
\item On-board 3.3V, 2.5V, and 1.2V regulators
 
\end{itemize}
 
 
 
\begin{figure}
 
  \centering
 
  \includegraphics[width=0.5\textwidth]{S3BOARD-top}
 
  \caption{Placa S3BOARD.}
 
  \label{fig:digilent-s3board}
 
\end{figure}
 
 
 
Todos los desarrollos anteriormente vistos, como se mencionó al comienzo de este Capítulo, son manufacturados en el exterior del país. Los requerimientos tecnológicos para poder lograr estos productos son complejos pero no necesariamente alejado a la realidad de nuestra región. En el país se tiene algunas experiencias de plataformas basadas en FPGA.
 
 
 
\section{Desarrollos nacionales}
 
\label{sec:desarrollos-nacionales}
 
 
 
En nuestra región las tecnologías PLD se encuentran integradas en varias líneas de investigación y desarrollos hace algunos años. Instituciones gubernamentales de defensa como es el \emph{Instituto de Investigación Científica y Técnicas para la Defensa} que en una de sus líneas de desarrollo implementa algunos sistemas electrónicos de adquisición de datos controlados con FPGA. Así también otros organismos vinculados al área aeroespaciales y comunicaciones como la \emph{Comisión Nacional de Actividades Espaciales} están implementando dispositivos como FPGAs y CPLDs en sus sistemas electrónicos. Además existe una constante actualización por parte de las instituciones académicas en los programas analíticos de las carreras relacionadas a los sistemas embebidos. El Instituto Nacional de Tecnología Industrial impulsa un proyecto denominado \emph{FPGALibre}. Este proyecto busca desarrollar y brindar herramientas de \textsl{software} libre y diseños de \textsl{hardware} abiertos para trabajar con tecnologías FPGA.
 
 
 
\subsection{S2PROTO}
 
\label{sec:s2proto}
 
 
 
Desarrollado por el \emph{Instituto Nacional de Tecnología Industrial} (INTI), el S2PROTO es el resultado de un laboratorio de \emph{Software Libre} de dicha organización estatal. La \emph{Unidad Técnica en Informática y Control} (UTIC) sostiene un proyecto libre llamado FPGALibre que alberga a desarrolladores que tengan intensiones de compartir sus proyectos basados en PLDs.
 
 
 
\begin{figure}
 
  \centering
 
  \includegraphics[width=0.5\textwidth]{S2PROTO}
 
  \caption{Placa S2PROTO.}
 
  \label{fig:inti-s2proto}
 
\end{figure}
 
 
 
Algunas de las principales características del circuito son,
 
\begin{itemize}
 
\item Diseño brindado bajo licencia GPL para permitir su libre utilización, implementación, modificación y comercialización.
 
\item Diseño ensamblado y probado.
 
\item Desarrollado y probado con herramientas de software libre: Kicad y GNU jtag.
 
\item Impreso doble faz de 12x10 cm de fácil fabricación en el país y posibilidad de montaje manual de los componentes.
 
\item Soporte para dispositivos Xilinx Spartan II PQ208 (hasta XC2S150 equivalente a 150.000 compuertas).
 
\item Puerto de niveles RS-232 para implementar transmisión y recepción serie.
 
\item Puerto JTAG compatible con el cable Parallel III de Xilinx, también conocido como DLC5. Circuito realizado en Kicad, y también disponible en el proyecto FPGA Libre.
 
\item 152 pines de I/O disponibles para el usuario, distribuidos en cinco conectores. Estos permiten conectar plaquetas adicionales con pulsadores, leds, displays, etc.
 
\item Conector USB tipo B y driver para soportar niveles estándares USB.
 
\item Alimentación simple de 5 V CC.
 
\end{itemize}
 
 
 
\subsection{S3PROTO-MINI}
 
\label{sec:s3proto-mini}
 
 
 
Continuando con las ideas abordadas en la S2PROTO se encaró un proyecto con Spartan-3 y encapsulado BGA. El primer resultado es la S3PROTO-MINI.
 
 
 
La tarjeta S3PROTO-MINI es una plataforma básica y simple de hardware libre para desarrollo con FPGA. Posee un dispositivo Xilinx Spartan 3E (XC3S1600E) con encapsulado BGA de 320 pads. Utiliza el módulo de alimentación triple S3Proto, también disponible como hardware libre.
 
 
 
\begin{figure}
 
  \centering
 
  \includegraphics[width=0.5\textwidth]{S3PROTO-MINI}
 
  \caption{Placa S3PROTO-MINI.}
 
  \label{fig:inti-s2proto-mini}
 
\end{figure}
 
 
 
Las principales características de esta plataforma son,
 
\begin{itemize}
 
\item Dispositivo FPGA Xilinx Spartan 3E (XC3S1600E) de 33.192 celdas lógicas.
 
\item 2 Memorias de configuración XCF04S (4+4 Mbit).
 
\item USB Transceiver TUSB1106 de 12 Mb/s (Full Speed) con conector tipo B.
 
\item 2 Puertos seriales RS232 de hasta 300Kbps (ST3232). Uno con conector DB-9.
 
\item 4 Pulsadores.
 
\item 5 Dip switch.
 
\item 4 LEDs.
 
\item 1 Puerto JTAG.
 
\item 26 Pines de I/O.
 
\item Oscilador con zócalo.
 
\item Alimentación simple de 5V.
 
\item Dimensiones de 7x7 cm.
 
\end{itemize}
 
 
 
Estas primeras experiencias locales resulta alentadoras para realizar nuestros propios recursos académicos para la enseñanza de tecnologías programables como son los PLDs. Si bien los proyectos realizados por el INTI aún no se encuentran comercializados, se encuentran antecedentes de la transferencia de estos desarrollos a instituciones académicas.
 
 
 
Tantos los desarrollos comerciales como los académicos presentan perfiles de \textsl{hardware} similares y no es casualidad pues son los recursos que se necesitan para la enseñanza y ejercitación en un ámbito académicos y de protipado. Por lo tanto son estos diseños que nos sirven como referencias para plantear y definir que recursos físicos se debe disponer para la \emph{Plataforma de Hardware Reconfigurable}.
 
 
 
\section{Estructura general del proyecto}
\section{Estructura general del proyecto}
\label{sec:estruct-gral}
\label{sec:estruct-gral}
 
 
Al comienzo de la década de los 90s surgieron varios trabajos donde se planteaba la necesidad de una plataforma educativa orientada a la implementación de diseños lógicos digitales basados en PLDs. Los principales demandantes eran diseñadores de arquitecturas de microprocesadores, desarrollos que años anteriores resultaban dificultosos por el costo de la implementación en \textsl{hardware}. El avance en el proceso de integración de los circuitos integrados ha llevado a que se desarrollen plataformas más complejas que ofrecen una gran cantidad de recursos de hardware. Al día de hoy se han generado varios proyectos desarrollados por instituciones académicas, otras con especificaciones abiertas y también con fines comerciales. Todos estos trabajos tienen algunas características en común\footnote{La caracterización anterior no es un intento de generalizar a todas las plataformas educativas basadas en PLDs, pero sí resulta útil para definir el perfil de la plataforma que se describe en este trabajo.}:
Al comienzo de la década de los 90s surgieron varios trabajos donde se planteaba la necesidad de una plataforma educativa orientada a la implementación de diseños lógicos digitales basados en PLDs. Los principales demandantes eran diseñadores de arquitecturas de microprocesadores, desarrollos que años anteriores resultaban dificultosos por el costo de la implementación en \textsl{hardware}. El avance en el proceso de integración de los circuitos integrados ha llevado a que se desarrollen plataformas más complejas que ofrecen una gran cantidad de recursos de hardware. Al día de hoy se han generado varios proyectos desarrollados por instituciones académicas, otras con especificaciones abiertas y también con fines comerciales. Todos estos trabajos tienen algunas características en común\footnote{La caracterización anterior no es un intento de generalizar a todas las plataformas educativas basadas en PLDs, pero sí resulta útil para definir el perfil de la plataforma que se describe en este trabajo.}:
 
 
Line 322... Line 46...
\end{tabular}
\end{tabular}
\end{table}
\end{table}
 
 
La estructura del proyecto \emph{Plataforma de Hardware Reconfigurable} debe ser un proyecto a medida de las necesidades en la  enseñanza de los sistemas digitales lógicos en las cátedras iniciales. Se debe ofrecen recursos básicos para que los estudiantes interactúen con la tecnología de los dispositivos PLDs, pero también dispone de puertos para conectar otros recursos físicos permitiendo que estudiantes avanzados puedan hacer uso de ellas sin limitaciones. Al ser publicado bajo licencia libre/abierta permitirá que el diseño, o parte de él, sirva como referencia a otras instituciones académicas que se encuentren en búsqueda de una plataforma para implementar en sus diferentes cátedras.
La estructura del proyecto \emph{Plataforma de Hardware Reconfigurable} debe ser un proyecto a medida de las necesidades en la  enseñanza de los sistemas digitales lógicos en las cátedras iniciales. Se debe ofrecen recursos básicos para que los estudiantes interactúen con la tecnología de los dispositivos PLDs, pero también dispone de puertos para conectar otros recursos físicos permitiendo que estudiantes avanzados puedan hacer uso de ellas sin limitaciones. Al ser publicado bajo licencia libre/abierta permitirá que el diseño, o parte de él, sirva como referencia a otras instituciones académicas que se encuentren en búsqueda de una plataforma para implementar en sus diferentes cátedras.
 
 
\section{Definición de estructura de las placas}
\section{Consideraciones sobre la estructura de las placas}
\label{sec:def-estr-placas}
\label{sec:def-estr-placas}
 
 
Las dimensiones y disposiciones de las diferentes placas que forman este proyecto también ha requerido un previo análisis por parte de los desarrolladores. Si bien parece un tema trivial, las consecuencias de las definiciones a tomar implican alteraciones tanto funcionales como económicas.
Las dimensiones y disposiciones de las diferentes placas que forman este proyecto también ha requerido un previo análisis por parte de los desarrolladores. Si bien parece un tema trivial, las consecuencias de las definiciones a tomar implican alteraciones tanto funcionales como económicas.
 
 
Como se describió en la Sección \ref{sec:estruct-gral}, en esta parte del desarrollo se conoce que dispositivos electrónicos se van a incluir en nuestro proyecto como así también las dimensiones y distribuciones que se puede tomar. Los principales dispositivos que requieren mayor importancia y que definirán la estructura física del diseño son:
Como se describió en la Sección \ref{sec:estruct-gral}, en esta parte del desarrollo se conoce que dispositivos electrónicos se van a incluir en nuestro proyecto como así también las dimensiones y distribuciones que se puede tomar. Los principales dispositivos que requieren mayor importancia y que definirán la estructura física del diseño son:
Line 389... Line 113...
\item Interfaz de configuración para PROMs estándar.
\item Interfaz de configuración para PROMs estándar.
  \begin{itemize}
  \begin{itemize}
  \item PROM flash SPI, bajo costo.
  \item PROM flash SPI, bajo costo.
  \item PROM flash NOR paralelo x8 o x8/x16.
  \item PROM flash NOR paralelo x8 o x8/x16.
  \end{itemize}
  \end{itemize}
\item reconfiguración automática Multi-boot entre dos archivos.
\item Reconfiguración automática Multi-boot entre dos archivos.
\item \textsl{Package} de bajo costo QFP y BGA.
\item \textsl{Package} de bajo costo QFP y BGA.
\end{itemize}
\end{itemize}
 
 
La arquitectura de la Spartan-3 consiste de cinco elementos fundamentales funcionales programables:
La arquitectura de la Spartan-3 consiste de cinco elementos fundamentales funcionales programables:
\begin{description}
\begin{description}
Line 408... Line 132...
 
 
Todas las señales que entran y salen de la FPGA deben pasar a través de los recursos I/O, conocidos como IOBs. Ya que las FPGAs son usadas en muchas aplicaciones complejas, estos dispositivos deben soportan un incremento variable de I/O. La revolucionaría \emph{SelectIO} (patentado por xilinx), que contiene la Spartan-3 reúne esta necesidad proporcionando una enorme \emph{configurabilidad}, alto \textsl{performance} de recursos adecuados para aplicaciones como son memorias de alta velocidad y interfaces de placas complejas programables.
Todas las señales que entran y salen de la FPGA deben pasar a través de los recursos I/O, conocidos como IOBs. Ya que las FPGAs son usadas en muchas aplicaciones complejas, estos dispositivos deben soportan un incremento variable de I/O. La revolucionaría \emph{SelectIO} (patentado por xilinx), que contiene la Spartan-3 reúne esta necesidad proporcionando una enorme \emph{configurabilidad}, alto \textsl{performance} de recursos adecuados para aplicaciones como son memorias de alta velocidad y interfaces de placas complejas programables.
 
 
La generación de FPGA Spartan-3 simplifica diseños de alto-\textsl{performance} ofreciendo un seleccionable diseño I/O estándar para entrada y salida. Más de 20 diferentes estándares son soportados en cada familia, con diferentes especificaciones de corriente, voltaje, I/O baffering, y terminaciones técnicas. Como un resultado, la generación de FPGA Spartan-3 puede ser usada para transformadas integrales discreta y drive direccional en muchas placas avanzadas, buses, y memorias. Directamente proporciona el interfaz estándar necesario no solo para eliminar el costo externo de traslación, sino también mejora significativamente la velocidad de \emph{chip-to-chip} y reduce el consumo de potencia.
La generación de FPGA Spartan-3 simplifica diseños de alto-\textsl{performance} ofreciendo un seleccionable diseño I/O estándar para entrada y salida. Más de 20 diferentes estándares son soportados en cada familia, con diferentes especificaciones de corriente, voltaje, I/O baffering, y terminaciones técnicas. Como un resultado, la generación de FPGA Spartan-3 puede ser usada para transformadas integrales discreta y drive direccional en muchas placas avanzadas, buses, y memorias. Directamente proporciona el interfaz estándar necesario no solo para eliminar el costo externo de traslación, sino también mejora significativamente la velocidad de \emph{chip-to-chip} y reduce el consumo de potencia.
 
 
 
La FPGA que se utiliza pertenece a la familia Spartan-3 de Xilinx Inc. Esta familia a la vez se clasifican en
 
 
 
\begin{itemize}
 
\item Familia Spartan-3A extendida (bajo costo):
 
  \begin{itemize}
 
  \item Spartan-3A
 
    \begin{itemize}
 
    \item Ideal para uso de interfaz entre dispositivos.
 
    \end{itemize}
 
  \item Spartan-3A DSP
 
    \begin{itemize}
 
    \item Mayor densidad de recursos en comparación que la familia Spartan-3A
 
    \item Dispone de un dispositivo DSP (DSP48A)
 
    \end{itemize}
 
  \item Spartan-3AN
 
    \begin{itemize}
 
    \item Dispositivos no volátiles
 
    \item Ideal para aplicaciones con restricciones de espacio
 
    \end{itemize}
 
  \end{itemize}
 
\item Familia Spartan-3E
 
\item Familia Spartan-3
 
\end{itemize}
 
 
 
Altera, Atmel y otros fabricantes de FPGAs también presentan familias similares a las Spartan-3. Aquí se optó por Xilinx Inc. debido a la experiencia en software/hardware con que cuenta el Centro de Investigación\footnote{CUDAR -- Centro Universitario de Desarrollo en Automoción y Robótica.} donde se desarrolla el proyecto. La familia extendida Spartan-3A es la que se utiliza en el diseño de la PHR, que   se distingue en la comparativa entre costo y recursos de hardware. Las Spartan-3A, permiten una gran variedad de modos de configuración en contraste con la familia Spartan-3. Por otro lado, no es necesaria una gran capacidad de procesamiento que justifique la inclusión de un DSP, debido al perfil del usuario de la plataforma que se desarrolla. Las principales características de las FPGAs Spartan-3A se describen en la Tabla \ref{tab:char-fpga}.
 
 
 
\begin{table}[!t]
 
%increase table row spacing, adjust to taste
 
\renewcommand{\arraystretch}{1.3}
 
% if using array.sty, it might be a good idea to tweak the value of
 
% \extrarowheight as needed to properly center the text within the cells
 
\caption{Característica de la familia Spartan-3A}
 
\label{tab:char-fpga}
 
\centering
 
% Some packages, such as MDW tools, offer better commands for making tables
 
% than the plain LaTeX2e tabular which is used here.
 
\begin{tabular}{|l|c|c|c|c|}
 
\hline
 
\multirow{2}{*}{\textbf{Devices}} & \textbf{System} & \textbf{Block RAM} & \textbf{Dedicated} &  \textbf{Maximum} \\
 
 & \textbf{Gates} & \textbf{bits} & \textbf{Multipliers} & \textbf{User I/O} \\
 
\hline
 
XC3S50A & 50K & 54K & 3 & 144 \\
 
\hline
 
\textbf{XC3S200A} & \textbf{200K} & \textbf{288K} & \textbf{16} & \textbf{248} \\
 
\hline
 
XC3S400A & 400K & 360K & 20 & 311 \\
 
\hline
 
XC3S700A & 700K & 360K & 20 & 372 \\
 
\hline
 
XC3S1400A & 1400K & 576K & 32 & 502 \\
 
\hline
 
\end{tabular}
 
\end{table}
 
 
 
El dispositivo seleccionado, como se puede ver en la Tabla \ref{tab:char-fpga}, es el XC3S200A. Éste cuenta con una gran densidad de recursos de hardware (200K compuertas lógicas) a la vez que se puede encontrar en un encapsulado de pequeñas dimensiones (VQ100) que facilita el diseño del PCB (Printed Board Circuit). En este encapsulado se puede contar con 68 puertos de entrada/salida (I/O) para ser utilizados externamente a diferentes tecnologías programables (LVTTL, LVCMOS33/25/18, entre otros). El perfil del diseño de la PHR no requiere de una gran cantidad de puertos de I/O debido a las aplicaciones para las que se lo diseña.
 
 
\subsection{Memoria de configuración}
\subsection{Memoria de configuración}
\label{sec:sel-disp-prin-mem}
\label{sec:sel-disp-prin-mem}
 
 
 
La tecnología utilizada en las FPGAs Spartan-3A requieren de una memoria externa que configure al dispositivo ya que es volátil. Esta familia permite la utilización de varios tipos de memorias como modos de configuración para embeber el diseño digital en la FPGA. Xilinx comercializa memorias Flash PROM para todas sus familias de FPGA. Hay una relación directa entre la capacidad lógica de una FPGA con el tamaño de la memoria de configuración, en la Tabla \ref{tab:mem-fpga} se puede apreciar esta relación para el caso de la familia Spartan-3A.
 
 
 
\begin{table}[!t]
 
\renewcommand{\arraystretch}{1.3}
 
\caption{Tipo de memoria para la familia Spartan-3A}
 
\label{tab:mem-fpga}
 
\centering
 
\begin{tabular}{|l|c|c|}
 
\hline
 
\multirow{2}{*}{\textbf{Devices}} & \textbf{Configuration} & \textbf{ISP PROM} \\
 
 & \textbf{Bits} & \textbf{Solution} \\
 
\hline
 
XC3S50A   & 437,312   & XCF01S \\
 
\hline
 
\textbf{XC3S200A}  & \textbf{1,196,128} & \textbf{XCF02S} \\
 
\hline
 
XC3S400A  & 1,886,560 & XCF02S \\
 
\hline
 
XC3S700A  & 2,732,640 & XCF04S \\
 
\hline
 
XC3S1400A & 4,755,296 & XCF08P     \\
 
\hline
 
\end{tabular}
 
\end{table}
 
 
 
Tanto la FPGA como la memoria de configuración Flash PROM se encuentran conectadas en cadena a través de una interfaz JTAG Boundary-Scan (IEEE 1149.1) que Xilinx Inc. implementa en sus dispositivos FPGAs, CPLDs y memorias Flash PROM para transferir los diseños sintetizados.
 
 
\section{Descripción de las placas}
\section{Descripción de las placas}
\label{sec:desc-placas}
\label{sec:desc-placas}
 
 
\subsection{PHR}
La \emph{Plataforma de Hardware Reconfigurable} (PHR) consiste fundamentalmente en tres módulos de soporte físico. El módulo principal es  la \emph{placa PHR} donde se encuentran el chip FPGA, relojes, interfaces de entradas y salidas, periféricos (tales como LEDs, botones, llaves DIP, Displays de siete segmentos), etc.
 
 
 
Además tiene conectores especiales para otros dos módulos sin los cuales la placa principal carece de funcionalidad. Uno de ellos se emplea para la regulación de las tensiones que alimentan al resto de los dispositivos. Se trata de la denominada \emph{placa S3Power}. El otro módulo es una interfaz de comunicaciones necesaria para configurar la FPGA o escribir la memoria PROM de configuración y se dispone en la  \emph{placa OOCD Link}.
 
 
 
La conexión de las placas auxiliares a la principal se ilustra en la Fig. \ref{intro:conexionado}. La placa S3Power se acopla con los conectores que se indican con los números 8 y 16 en la Fig. \ref{intro:componentes}, mientras que la OOCD Link se une a la principal (mediante un adaptador) con los pines demarcados con 7. Esta última, a diferencia de la S3Power, no precisa estar siempre conectada, pero si cada ves que se desee configurar la FPGA o grabar su memoria PROM.
 
 
 
\begin{figure}[h!]
 
\begin{center}
 
  \includegraphics{./img/intro/placasConexionado.pdf}
 
\end{center}
 
\caption[Conexionado de las placas]{Conexionado de la placa PHR con las placas auxiliares.}
 
\label{intro:conexionado}
 
\end{figure}
 
 
 
\section{Diagrama de bloques del hardware}
 
 
 
Un esquema algo mas detallado del funcionamiento de la plataforma se ilustra en la Fig. \ref{intro:bloques}. En líneas punteadas se demarcan las distintas plaquetas, y en línea continua se muestran los bloques que componen a cada una. Cuando hay funciones desempeñadas por un chip en particular los rectángulos se destacan con un fondo gris.
 
 
 
\begin{figure}[h]
 
\begin{center}
 
  \includegraphics{./img/intro/block.pdf}
 
\end{center}
 
\caption[Diagrama de bloques de la plataforma]{Diagrama de bloques de la plataforma.}
 
\label{intro:bloques}
 
\end{figure}
 
 
 
La función de la placa S3Power la realiza principalmente el \emph{chip TPS75003} el cuál tiene un regulador lineal y controladores para dos fuentes conmutadas, lo cual permite suministrar energía regulada con tres valores de tensión y distintas características de arranque\footnote{Una explicación mas detallada de \emph{S3Power} puede consultarse en el capítulo \ref{sec:s3power-placa}.}.
 
Los voltajes utilizados por la FPGA son de 1.2V, 2.5V y 3.3V.
 
 
 
En la placa PHR, la FPGA se conecta a los distintos periféricos que se distinguen en la Fig. \ref{intro:bloques} con un fondo amarillo. El conjunto de periféricos está compuesto por \emph{LEDs}, \emph{Llaves DIP},  \emph{Botones}, el \emph{display de siete segmentos cuádruple} y el \emph{puerto serie}\footnote{Mas información sobre \emph{periféricos} en capítulo \ref{sec:phr-placa}, página \pageref{phr:sec:perifericos}.}.
 
 
 
Un recurso que puede facilitar el diseño de los proyectos es la señal de reloj. La placa PHR pone a disposición del usuario diversas señales de clock que van desde  una frecuencia mínima de 977 Hz hasta una frecuencia máxima de 50MHz\footnote{Mas información sobre \emph{relojes} en capítulo \ref{sec:phr-placa}, página \pageref{phr:sec:clocks}.}.
 
 
 
Para que la placa sea apta además para la realización de prototipos, se incluyeron dos conectores, con los cuales se el usuario tine acceso directo a los pines de la FPGA\footnote{Mas información sobre \emph{entradas y salidas de propósito general} en capítulo \ref{sec:phr-placa}, página \pageref{phr:sec:gpio}.}.
 
 
 
La placa OOCD Link incluye el \emph{chip FT2232D} que establece una interfaz JTAG controlable mediante una conexión USB. Un anillo JTAG se establece con la FPGA y la memoria PROM, esta ultima implementada con el \emph{chip XCF02S}\footnote{Mas información sobre la \emph{placa OOCD Link} en capítulo \ref{sec:oocdlink-placa}. Sobre el proceso de configuración refiérase a la sección \emph{Configuración de la FPGA} del capítulo \ref{sec:phr-placa}, página \pageref{phr:sec:fpga_conf}.}.
 
 
 
 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
%NEW SECTION  NEW SECTION  NEW SECTION  NEW SECTION  NEW SECTION%
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
 
\section{Componentes de la placa principal}
 
 
 
En la Fig. \ref{intro:componentes} se tiene la vista superior de la placa PHR con sus principales componentes demarcados. Según la numeración, estos componentes son:
 
 
 
\begin{figure}[h!]
 
\begin{center}
 
  \includegraphics{./img/intro/phr_top.pdf}
 
\end{center}
 
\caption[Componentes de la placa PHR]{Componentes de la placa PHR.}
 
\label{intro:componentes}
 
\end{figure}
 
 
 
\begin{enumerate}
 
 
 
\item Selector de \textsl{clocks}.
 
\item Conector de módulos externos macho.
 
\item Conector de módulos externos hembra.
 
\item Entrada de voltaje de alimentación (5V).
 
\item Selector de modo de configuración.
 
\item Boton de RESET.
 
\item Conector de la plaqueta \emph{OOCDLink}.
 
\item Conector de alimentación de la placa \emph{S3Power}.
 
\item Memoria PROM.
 
\item LEDs.
 
\item Llaves DIP.
 
\item Chip FPGA XC3S200A.
 
\item Botones pulsadores.
 
\item Display de 7 segmentos cuádruple.
 
\item Conector para puerto serie.
 
\item Conector de alimentación para la placa PHR desde S3Power.
 
 
 
\end{enumerate}
 
 
 
\section{PHR}
\label{sec:phr-placa}
\label{sec:phr-placa}
 
 
\subsection{S3Power}
\subsection{El chip FPGA}
\label{sec:s3power-placa}
 
 
 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
 
\subsubsection{Características principales}
 
 
 
\begin{itemize}
 
\item Número de compuertas: 200K
 
\item Celdas lógicas equivalentes: 4032
 
\item CLBs: 448 (distribuidos en 32 filas y 16 columnas)
 
\item Bits de RAM distribuida: 28K
 
\item Bits de Bloques de RAM: 288K
 
\item Multiplicadores dedicados: 16
 
\item DCMs: 4
 
\item Máximo número de E/S = 248
 
\item E/S pares diferenciales máximo: 112
 
 
 
\end{itemize}
 
 
 
 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
 
\subsubsection{Descripción de la arquitectura}
 
 
 
La familia Spartan-3A tiene cinco bloques fundamentales a tener en cuenta respecto de la arquitectura:
 
 
 
\begin{description}
 
 
 
\item[Bloques Lógicos Configurables (CLBs)] contienen \textsl{Look-Up Tables} (LUTs) que implementan funciones lógicas y además sirven como elementos de almacenamiento.
 
 
 
\item[Bloques de Entrada/Salida (IOBs)] controlan el flujo de datos entre los pines de E/S y la lógica interna del dispositivo. Los IOBs soportan datos en forma bidireccional además de la operación 3-state.
 
 
 
\item[Bloque de RAM] sirve como forma de almacenamiento.
 
 
 
\item[Bloques multiplicadores] aceptan como entrada dos números de 18 bits cada uno y calcula el producto entre ambos.
 
 
 
\item[Bloque DCM (\textsl{Digital Clock Manager})] tiene la capacidad para distribuir, retardar, multiplicar, dividir y desplazar en fase las señales de clock.
 
 
 
\end{description}
 
 
 
\begin{figure}[h]
 
\begin{center}
 
  \includegraphics{./img/phr/arquitectura.pdf}
 
\end{center}
 
\caption[Bloques fundamentales de la FPGA]{Bloques fundamentales de la FPGA.}
 
\label{phr:arquitectura}
 
\end{figure}
 
 
 
Para el caso del chip XC3S200A, la Fig. \ref{phr:arquitectura} muestra la organización de estos bloques fundamentales dentro del dispositivo. Los IOBs se ubican alrededor de la matriz de CLBs. Los bloques de memoria RAM se encuentran en dos columnas, en cada una se disponen varios bloques de RAM de 18 Kbit asociados con un multiplicador dedicado. Dos DCM se ubican en el centro hacia arriba y otros dos en el centro hacia abajo.,
 
 
 
 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
 
\subsubsection{Capacidades de E/S}
 
 
 
La familia Spartan-3A soporta varios estándares para sus entradas y salidas que deberán ser configurados apropiadamente para el uso específico.
 
 
 
\begin{itemize}
 
\item Terminales simples
 
%Para el caso de terminaciones simples estas FPGAs cumplen con:
 
\begin{itemize}
 
\item TTL de 3.3V (LVTTL).
 
\item CMOS de bajo voltaje (LVCMOS) en tensiones de 3.3V, 2.5V, 1.8V, 1.5V o 1.2V.
 
\item PCI de 3.3V a frecuencias de 33MHz o 66MHz.
 
\item HSTL I, II y III a 1.5V y 1.8V (comúnmente usado en memorias).
 
\item SSTL I y II a 1.8V, 2.5V y 3.3V (comúnmente usado en memorias).
 
\end{itemize}
 
 
 
%Los estándares con terminación diferencial que soportan son:
 
\item Terminales diferenciales
 
\begin{itemize}
 
\item Entradas/Salidas LVDS, mini-LVDS, RSDS y PPDS a 2.5V o 3.3V.
 
\item Bus LVDS a 2.5V.
 
\item TMDS a 3.3V.
 
\item HSTL y SSTL diferenciales.
 
\item Entradas LVPECL a 2.5V y 3.3V.
 
\end{itemize}
 
\end{itemize}
 
 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
 
\subsubsection{Requerimientos de alimentación}\label{phr:alimentacion}
 
 
 
El chip XC3S200A tiene varias entradas de alimentación que se describen de manera sucinta en la Tabla \ref{phr:powersignals}. La FPGA cuenta con un circuito especializado de \textsl{Power-On Reset} (POR) que controla tres tensiones de alimentación (VCCINT, VCCAUX y VCCO2) y mantiene al chip en estado de reset hasta que se alcanzan los niveles seguros de trabajo para proseguir con la carga del sistema.
 
 
 
\begin{table}[h]
 
\begin{center}
 
\begin{tabular}{|c|p{8cm}|p{5cm}|}
 
        \hline
 
        \textbf{Entrada} & \textbf{Descripción} & \textbf{Tensión nominal} \\ \hline
 
        \hline
 
   VCCINT  & Es la tensión de alimentación del núcleo interno. Alimenta las funciones lógicas internas como los CLBs (\emph{Bloques Lógicos Configurables}) y los bloques de RAM.  & 1.2V    \\    \hline
 
   VCCAUX  & Fuente de tensión auxiliar. Alimenta elementos tales como los DCMs (\textsl{Digital Clock Managers}), drivers diferenciales, pines de configuración dedicados y la  interfaz JTAG.    & 2.5V o 3.3V    \\        \hline
 
   VCCO0  & Alimenta los buffers de salida del Banco de E/S número 0.    & Seleccionable entre 3.3V, 3.0V, 2.5V, 1.8V, 1.5V y 1.2V.    \\      \hline
 
   VCCO1  & Alimenta los buffers de salida del Banco de E/S número 1.    & Seleccionable entre 3.3V, 3.0V, 2.5V, 1.8V, 1.5V y 1.2V.   \\       \hline
 
   VCCO2  & Alimenta los buffers de salida del Banco de E/S número 2.    & Seleccionable entre 3.3V, 3.0V, 2.5V, 1.8V, 1.5V y 1.2V.    \\      \hline
 
   VCCO3  & Alimenta los buffers de salida del Banco de E/S número 3.    & Seleccionable entre 3.3V, 3.0V, 2.5V, 1.8V, 1.5V y 1.2V.    \\      \hline
 
\end{tabular}
 
\end{center}
 
\caption[Voltajes de alimentación]{Voltajes de alimentación para la familia Spartan-3A.}
 
\label{phr:powersignals}
 
\end{table}
 
 
 
A diferencia de otras FPGAs, la XC3S200A no tiene requerimientos respecto de la secuencia en se deben activar las fuentes de alimentación, pero si respecto de la pendiente de arranque. Los tiempos de pendiente recomendados se muestran en la Tabla \ref{phr:ramprate}.
 
 
 
 
 
\begin{table}[h]
 
\begin{center}
 
\begin{tabular}{|c|l|c|c|}
 
        \hline
 
        \textbf{Símbolo} & \textbf{Descripción} & \textbf{Min} & \textbf{Max} \\      \hline
 
        \hline
 
   VCCINTR & Rampa desde GND a VCCINT  & 0.2 ms & 100 ms   \\   \hline
 
        VCCAUXR & Rampa desde GND a VCCAUX  & 0.2 ms & 100 ms   \\      \hline
 
        VCCO2R  & Rampa desde GND a VCCO del Banco 2  & 0.2 ms & 100 ms   \\    \hline
 
\end{tabular}
 
\end{center}
 
\caption[Rampas de las fuentes de alimentación]{Tiempos de subida para las rampas al encender las fuentes de alimentación.}
 
\label{phr:ramprate}
 
\end{table}
 
 
 
 
 
Para mas información referida al sistema de alimentación ver el capitulo \ref{sec:s3power-placa} en la pág. \pageref{sec:s3power-placa}.
 
 
 
 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
%NEW SECTION  NEW SECTION  NEW SECTION  NEW SECTION  NEW SECTION%
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
 
\subsection{Configuración de la FPGA}\label{phr:sec:fpga_conf}
 
 
 
La FPGA al inicializarse no contiene dato alguno y para que trabaje como lo desea el usuario debe  pasar por el proceso de \emph{configuración}. Los datos se cargan desde el exterior en \textsl{latches} de configuración CMOS (CCLs según las iniciales en inglés) y usando alguno de los siguientes modos aplicables a  la familia Spartan-3A:
 
 
 
\begin{itemize}
 
\item \textsl{Master Serial} desde una memoria PROM Flash de Xilinx.
 
\item \textsl{Serial Peripheral Interface} (SPI) desde una memoria Flash SPI.
 
\item \textsl{Byte Peripheral Interface} (BPI) desde una memoria NOR Flash.
 
\item \textsl{Slave Serial}, típicamente cargada desde un procesador.
 
\item \textsl{Slave Parallel}, típicamente cargada desde un procesador.
 
\item \textsl{Boundary Scan} (JTAG), típicamente cargada desde un procesador.
 
\end{itemize}
 
 
 
La elección de cada uno de los modos se hace mediante tres pines de la FPGA a los que se hace referencia con M[2:0]. La Tabla \ref{phr:modes} muestra cuales son los valores lógicos de los modos aplicables para ésta familia de FPGA, y  se resaltan con color aquellos a los que se recurre en la placa PHR.
 
 
 
\begin{table}[h!]
 
\begin{center}
 
\begin{tabular}{|c|l|}
 
        \hline
 
        \textbf{Pines M[2:0]} & \textbf{Modo}  \\       \hline\hline
 
        \cellcolor{yellow!65}<0:0:0>  & \cellcolor{yellow!65}Modo \textsl{Master Serial}    \\  \hline
 
        <0:0:1>  & Modo \textsl{Master SPI}   \\        \hline
 
        <0:1:0>  & \textsl{BPI Up}   \\ \hline
 
        <0:1:1>  & Reservado \\ \hline
 
        <1:0:0>  & Reservado   \\       \hline
 
        \cellcolor{yellow!65}<1:0:1>  & \cellcolor{yellow!65}Modo JTAG   \\     \hline
 
        <1:1:0>  & Modo \textsl{Slave Parallel}    \\   \hline
 
        <1:1:1>  & Modo \textsl{Slave Serial}   \\      \hline
 
\end{tabular}
 
\end{center}
 
\caption[Seteo de los modos de configuración]{Seteo de los modos de configuración para la familia Spartan-3A. Se resaltan con amarillo los usados en la placa PHR.}
 
\label{phr:modes}
 
\end{table}
 
 
 
En la placa PHR los modos utilizados son el \emph{JTAG} (a través de la placa OOCDLink) y el \emph{Master Serial} (desde la memoria PROM XCF02S). Cuando se elije el primer método se configura el chip con una computadora que debe correr una aplicación al efecto. Asimismo, para aplicar el segundo método, hay que usar la placa OOCDLink para programar la PROM al menos una vez. De ahí en mas, con cada ciclo de arranque de la FPGA, ésta tendrá la posibilidad de trabajar en forma independiente de la computadora cargando los datos pre-grabados en la memoria.
 
 
 
La Fig. \ref{phr:confmodes} muestra el diagrama de como se ve la elección del modo de configuración a un nivel físico. Sin puente alguno se leen 3.3V en los pines M0 y M2, mientras que se lee 0V en M1 (la FPGA recibirá los datos desde JTAG). Al colocar un jumper entre los pines 1 y 2 se tira la tensión de M0 y M2 al potencial de masa (la FPGA intentará cargar desde la PROM).
 
 
 
\begin{figure}[h!]
 
\begin{center}
 
  \includegraphics{./img/phr/config_modes.pdf}
 
\end{center}
 
\caption[Modos de configuración]{Modos de configuración.}
 
\label{phr:confmodes}
 
\end{figure}
 
 
 
A nivel de usuario la selección se trata simplemente de cambiar la posición del jumper indicado con 5 en la Fig. \ref{intro:componentes}. Una ilustración de las dos posibles vías que toman los datos para alcanzar la FPGA se muestra en la Fig. \ref{phr:confmodes_sche}.
 
 
 
 
 
\begin{figure}[h!]
 
\begin{center}
 
  \includegraphics[width=15cm]{./img/phr/conf_mod_sche.pdf}
 
\end{center}
 
\caption[Modos de configuración]{Modos de configuración.}
 
\label{phr:confmodes_sche}
 
\end{figure}
 
 
 
 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
%NEW SECTION  NEW SECTION  NEW SECTION  NEW SECTION  NEW SECTION%
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
 
\subsection{Fuentes de \textsl{clock}} \label{phr:sec:clocks}
 
 
 
La placa PHR provee a la FPGA de cuatro fuentes de reloj. Uno de los relojes (el más rápido) tiene una frecuencia de oscilación fija de 50 MHz. El resto tienen frecuencias seleccionables por usuario. En la Fig. \ref{intro:componentes} se indican con el numero 1 los jumpers con los cuales se eligen las frecuencias para estos relojes.
 
 
 
Los pines de la FPGA a los cuales se asignan  cada clock se muestran en la Tabla \ref{phr:pines-relojes}. Estos son pines de \textsl{Global Clock} que están especialmente diseñados para tratar señales de alta frecuencia. Proveen una capacidad asociada muy baja y un retardo uniforme para cada bloque dentro del chip.
 
 
 
\begin{table}[h!]
 
\begin{center}
 
\begin{tabular}{|c|c|c|c|c|}
 
        \hline
 
        \textbf{Reloj} & Fijo (50 MHz) &        Seleccionable 1 & Seleccionable 2 & Seleccionable 3 \\  \hline
 
        \textbf{Pin}   & 43     & 44     & 41     & 40     \\   \hline
 
\end{tabular}
 
\end{center}
 
\caption[Pines para los relojes]{Pines para los relojes.}
 
\label{phr:pines-relojes}
 
\end{table}
 
 
 
 
 
 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
 
\subsubsection{El reloj de 50 MHz}
 
 
 
Esta frecuencia se genera con el dispositivo ACOL-50MHZ-EK, que tiene un oscilador a cristal y encuentra aplicaciones en chips digitales y microprocesadores. Se alimenta con un bajo nivel de tensión (3.3V) y su salida es compatible con HCMOS y TTL.
 
 
 
 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
 
\subsubsection{Relojes seleccionables}\label{phr:sec:clock}
 
 
 
El conjunto de relojes se basa en un cristal y el chip contador MC74HC4060A. Una frecuencia principal de 16 MHz es dividida en dos sucesivamente por el contador para obtener todas las frecuencias seleccionables.
 
 
 
Los pines para selección de los relojes se muestran en la Fig. \ref{phr:relojes}. En los primeros dos relojes se puede elegir una de entre cuatro  frecuencias mientras que para el tercer reloj se puede elegir una de entre tres frecuencias.
 
 
 
\begin{figure}[h!]
 
\begin{center}
 
  \includegraphics{./img/phr/relojes.pdf}
 
\end{center}
 
\caption[Selectores de los relojes en la placa]{Selectores de los relojes en la placa.}
 
\label{phr:relojes}
 
\end{figure}
 
 
 
El conexionado de los jumpers para los clocks se muestra junto con las posibles frecuencias seleccionables en la Fig. \ref{phr:relojesSeteo}.
 
 
 
\begin{figure}[h!]
 
\begin{center}
 
  \includegraphics{./img/phr/relojesSeteo.pdf}
 
\end{center}
 
\caption[Configuración de los relojes]{Disposición de los jumpers para la configuración de los relojes.}
 
\label{phr:relojesSeteo}
 
\end{figure}
 
 
 
 
 
 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
%NEW SECTION  NEW SECTION  NEW SECTION  NEW SECTION  NEW SECTION%
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
 
\subsection{Periféricos}\label{phr:sec:perifericos}
 
 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
 
\subsubsection{LEDs}
 
 
 
En la placa se encuentran ocho LEDs de montaje superficial indicados con el numero 10 en la Fig. \ref{intro:componentes}. Son etiquetados desde LED1 a LED8 y su relación con los pines de la FPGA se muestra en la Tabla \ref{phr:LEDpins}.
 
 
 
 
 
\begin{table}[h!]
 
\begin{center}
 
\begin{tabular}{|c|c|c|c|c|c|c|c|c|}
 
        \hline
 
        \textbf{Periférico} & LED1 & LED2 & LED3 & LED4 & LED5 & LED6 & LED7 & LED8 \\ \hline
 
        \textbf{Pin}        & 84   & 86   & 89   & 93   & 98   & 3    & 5    & 7    \\  \hline
 
\end{tabular}
 
\end{center}
 
\caption[Pines para los LEDs]{Correspondencia entre los  pines de la FPGA y los LEDs (periféricos).}
 
\label{phr:LEDpins}
 
\end{table}
 
 
 
Los cátodos de cada LED se conectan a potencial cero y los ánodos se conectan a los pines respectivos de la FPGA mediante un resistencia de 330 $\Omega$. Para encender un determinado LED basta con poner en alto la señal de control.
 
 
 
 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
 
\subsubsection{Pulsadores (\textsl{Tact switches})}
 
 
 
Están disponibles cuatro botones pulsadores como los esquematizados en la Fig. \ref{phr:tact} y son identificados con el numero 13 en la Fig. \ref{intro:componentes}. Los mismos son etiquetados como PBTN1, PBTN2, PBTN3 y PBTN4. Los pines de la FPGA relacionados con estos periféricos se identifican en la Tabla \ref{phr:PBTNpins}. El esquemático detallado del circuito puede encontrarse en el Apéndice \ref{appendix:sche}.
 
 
 
\begin{figure}[h!]
 
\begin{center}
 
  \includegraphics{./img/phr/tact_switch.pdf}
 
\end{center}
 
\caption{\textsl{Tact switches}.}
 
\label{phr:tact}
 
\end{figure}
 
 
 
\begin{table}[h!]
 
\begin{center}
 
\begin{tabular}{|c|c|c|c|c|}
 
        \hline
 
        \textbf{Periférico} & PBTN1 & PBTN2 & PBTN3 & PBTN4 \\ \hline
 
        \textbf{Pin}        & 77    & 78    & 82    & 83    \\  \hline
 
\end{tabular}
 
\end{center}
 
\caption[Pines para los botones]{Correspondencia entre los  pines de la FPGA y los botones.}
 
\label{phr:PBTNpins}
 
\end{table}
 
 
 
Cuando se presiona alguno de los botones se genera un valor lógico alto en el pin asociado de la FPGA. No hay circuito antirrebote y esto debe ser tenido en cuenta al momento de escribir el código que luego vaya a cargarse en el dispositivo.
 
 
 
 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
 
\subsubsection{Llaves DIP}
 
 
 
Alternativamente a los pulsadores se puede optar como periféricos de entrada a unas llaves DIP como se muestran en la Fig. \ref{phr:DIP}. La ubicación de las llaves en la placa PHR se muestra con el índice numero 11 en la Fig. \ref{intro:componentes}. El circuito de estas llaves puede consultarse en el Apéndice \ref{appendix:sche} y los pines de la FPGA que los controlan se revelan en la Tabla \ref{phr:DIPpins}.
 
 
 
\begin{table}[h!]
 
\begin{center}
 
\begin{tabular}{|c|c|c|c|c|c|c|c|c|}
 
        \hline
 
        \textbf{Periférico} & SW1 & SW2 & SW3 & SW4 & SW5 & SW6 & SW7 & SW8 \\ \hline
 
        \textbf{Pin}        & 85  & 88  & 90  & 94  & 97  & 4   & 6   & 9   \\  \hline
 
\end{tabular}
 
\end{center}
 
\caption[Pines para las llaves]{Correspondencia entre los  pines de la FPGA y las llaves.}
 
\label{phr:DIPpins}
 
\end{table}
 
 
 
Cuando una llave se coloca en la posición de \emph{encendido}, el pin de la FPGA correspondiente se pone a un valor lógico \emph{alto}. En contraposición, si la llave se coloca en la posición \emph{apagado}, la FPGA leerá un valor lógico \emph{bajo}. Al igual que con el caso de los botones pulsadores, no se provee un circuito antirrebote, y debe ser tenido en cuenta en el diseño del sistema.
 
 
 
\begin{figure}[h!]
 
\begin{center}
 
  \includegraphics{./img/phr/DIPswitch.pdf}
 
\end{center}
 
\caption{\textsl{DIP switches}.}
 
\label{phr:DIP}
 
\end{figure}
 
 
 
 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
 
\subsubsection{Displays de 7 segmentos}
 
 
 
La placa PHR cuenta con un display de siete segmentos cuádruple de \emph{ánodo común} indicado con el índice 14 en la Fig. \ref{intro:componentes}. El circuito de conexión entre la FPGA y el display se muestra en la Fig. \ref{phr:quad7seg} y se resalta la denominación alfabética para los segmentos de cada display.
 
 
 
Esta misma figura además muestra como ejemplo, el estado de los pines de la FPGA para indicar el numero 3 en la posición 2. Al tener esta configuración, cada LED encenderá con un \emph{nivel bajo} en el pin correspondiente al segmento pero además necesitará que el ánodo del carácter particular esté energizado. Este ultimo también es activo por bajo (\textsl{active low}).
 
 
 
\begin{figure}[h!]
 
\begin{center}
 
  \includegraphics{./img/phr/quad7seg.pdf}
 
\end{center}
 
\caption[Circuito del display de siete segmentos]{Conexionado del display de siete segmentos cuádruple.}
 
\label{phr:quad7seg}
 
\end{figure}
 
 
 
Para dar el efecto deseado de representar cuatro caracteres distintos a la vez, se recurre a la técnica de multiplexación en el dominio del tiempo. La técnica consiste en mostrar uno a uno y cíclicamente cada carácter a una frecuencia lo suficientemente alta para que el ojo humano persiva una imagen completa. Un diagrama temporal de las señales se muestra en la Fig. \ref{phr:multiplex}.
 
 
 
\begin{figure}[h!]
 
\begin{center}
 
  \includegraphics{./img/phr/multiplex.pdf}
 
\end{center}
 
\caption[Diagrama temporal de la multiplexación]{Diagrama temporal de la multiplexación.}
 
\label{phr:multiplex}
 
\end{figure}
 
 
 
Si bien el método requiere algo mas de complejidad que la conexión directa a cada segmento de cada display, reduce el numero de pines necesarios de $8 \times 4=32$ a $8+4=12$ lo cuál representa un significativo ahorro en recursos de hardware.
 
 
 
La Tabla \ref{phr:quad7seg:pines} muestra los pines de conexión de la FPGA a las distintas entradas del periférico. La Fig \ref{phr:quad7seg:chars} muestra las representaciones de los caracteres comunes en los displays de siete segmentos. Además de los dígitos, se pueden utilizar los caracteres desde la A a la F para representar números en notación hexadecimal.
 
 
 
\begin{table}[h!]
 
\begin{center}
 
 
 
\begin{tabular}{|c|c|c|c|c|}
 
        \hline
 
        \textbf{Periférico} & Caracter1 & Caracter2 & Caracter3 & Caracter4 \\ \hline
 
        \textbf{Pin}        & 59        & 57        & 61        & 60        \\  \hline
 
\end{tabular}
 
 
 
\vspace{.2cm}
 
 
 
\begin{tabular}{|c|c|c|c|c|c|c|c|c|}
 
        \hline
 
        \textbf{Segmento} & A  & B  & C  & D  & E  & F  & G  & DP  \\   \hline
 
        \textbf{Pin}      & 65 & 64 & 72 & 70 & 68 & 62 & 73 & 71  \\   \hline
 
\end{tabular}
 
 
 
\end{center}
 
\caption[Pines para el diplay de segmentos]{Conexionado del diplay de 7 segmentos cuádruple a la FPGA.}
 
\label{phr:quad7seg:pines}
 
\end{table}
 
 
 
\begin{figure}[h!]
 
\begin{center}
 
  \includegraphics{./img/phr/chars.pdf}
 
\end{center}
 
\caption[Caracteres comunes en los displays de 7 segmentos]{Representación de caracteres comunes en los displays de siete segmentos.}
 
\label{phr:quad7seg:chars}
 
\end{figure}
 
 
 
 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
 
\subsubsection{Puerto serie}
 
 
 
La placa PHR dispone de un puerto serial RS-232. El conector DB9 hembra/macho se señala con el numero 15 en la Fig. \ref{intro:componentes}. La placa representa un \textsl{Data Communications Equipment} (DCE) y se puede conectar a una computadora personal con un cable serial derecho.
 
 
 
La Fig. \ref{phr:3232} muestra el circuito de la interfaz entre la FPGA y el conector DB9. Un chip (ST3232) permite una alimentación de entre 3V y 5.5V y utiliza un conjunto de capacitores para alcanzar los niveles de tensión RS-232, garantizando tasas de transferencia de hasta 250 kbps.
 
 
 
El control de flujo por hardware está deshabilitado. Las lineas de DCD, DTR y DSR se conectan entre sí. Analogamente para las señales RTS y CTS.
 
 
 
Los pines de la FPGA que controlan las señales seriales se muestran en la Tabla \ref{phr:RS232pins}.
 
\begin{figure}[h!]
 
\begin{center}
 
  \includegraphics{./img/phr/3232.pdf}
 
\end{center}
 
\caption[Circuito de la interfaz RS-232]{Circuito de la interfaz RS-232.}
 
\label{phr:3232}
 
\end{figure}
 
 
 
\begin{table}[h!]
 
\begin{center}
 
\begin{tabular}{|c|c|c|}
 
        \hline
 
        \textbf{Señal serial}   & RX & TX  \\  \hline
 
        \textbf{Pin en la FPGA} & 52 & 56  \\   \hline
 
\end{tabular}
 
\end{center}
 
\caption[Pines para la conexión RS-232]{Correspondencia entre los  pines de la FPGA y el puerto serie RS-232.}
 
\label{phr:RS232pins}
 
\end{table}
 
 
 
 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
%NEW SECTION  NEW SECTION  NEW SECTION  NEW SECTION  NEW SECTION%
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
 
\subsection{Entradas y salidas de propósito general} \label{phr:sec:gpio}
 
 
 
Para que el usuario realice prototipos,  use placas de expansión de terceros o diseñe sus propias placas de expansión, se proveen dos conectores, uno macho y otro hembra, que pueden reconocerse respectivamente con los números 2 y 3 en la Fig. \ref{intro:componentes}. Una imagen ampliada se muestra en la Fig. \ref{phr:gpio} indicando además la numeración de los pines. La mayoría de estos pines están conectados directamente al chip FPGA tal como lo muestra la Tabla \ref{phr:GPIOpins}. También se proveen pines de alimentación de 3.3V y GND.
 
 
 
\begin{figure}[h!]
 
\begin{center}
 
  \includegraphics{./img/phr/gpio_header.pdf}
 
\end{center}
 
\caption[Conectores de propósito general]{Conectores para entradas y salidas de propósito general.}
 
\label{phr:gpio}
 
\end{figure}
 
 
 
\begin{table}[h!]
 
\begin{center}
 
\begin{tabular}{|c|c|c|c|c|c|}
 
        \hline
 
        \multicolumn{6}{ |c| }{\emph{Conector macho}} \\
 
        \hline
 
        \hline
 
        \textbf{Dir} & \textbf{Conectado a} & \textbf{Pin} & \textbf{Pin} & \textbf{Conectado a} & \textbf{Dir} \\ \hline\hline
 
        E & FPGA Pin 39 &  1 &  2 & FPGA Pin 50 & E/S \\ \hline
 
        E/S & FPGA Pin 37 &  3 &  4 & FPGA Pin 49 & E/S \\ \hline
 
        E/S & FPGA Pin 36 &  5 &  6 & FPGA Pin 46 & E/S \\ \hline
 
        E/S & FPGA Pin 35 &  7 &  8 & FPGA Pin 34 & E/S \\ \hline
 
        E/S & FPGA Pin 33 &  9 & 10 & FPGA Pin 32 & E/S \\ \hline
 
        E/S & FPGA Pin 31 & 11 & 12 & FPGA Pin 30 & E/S \\ \hline
 
        E/S & FPGA Pin 29 & 13 & 14 & +3.3V       &  \\ \hline
 
        E/S & FPGA Pin 28 & 15 & 16 & No conectado &  \\ \hline
 
        E/S & FPGA Pin 27 & 17 & 18 & GND         &   \\ \hline
 
\end{tabular}
 
 
 
\vspace{0.5cm}
 
 
 
\begin{tabular}{|c|c|c|c|c|c|}
 
        \hline
 
        \multicolumn{6}{ |c| }{\emph{Conector hembra}} \\
 
        \hline
 
        \hline
 
        \textbf{Dir} & \textbf{Conectado a} & \textbf{Pin} & \textbf{Pin} & \textbf{Conectado a} & \textbf{Dir} \\ \hline\hline
 
        E & FPGA Pin 21 & 1 &  2 & FPGA Pin 20 & E/S \\ \hline
 
        E/S & FPGA Pin 19 & 3 &  4 & FPGA Pin 16 & E/S \\ \hline
 
        E/S & FPGA Pin 15 & 5 &  6 & FPGA Pin 13 & E/S \\ \hline
 
        E/S & FPGA Pin 12 & 7 &  8 & +3.3V       &  \\ \hline
 
        E/S & FPGA Pin 10 & 9 & 10 & GND         &  \\ \hline
 
\end{tabular}
 
\end{center}
 
\caption[Pines para las E/S de propósito general]{Conexión de los pines para las entradas/salidas de propósito general.}
 
\label{phr:GPIOpins}
 
\end{table}
 
 
 
 
 
\section{OOCDLink}
 
\label{sec:oocdlink-placa}
 
 
 
Esta placa es la interfaz que permite la comunicación entre una computadora y la placa PHR. Su característica modular, o de circuito separado de la placa PHR principal, hace que su utilización no quede restringida a la FPGA y posibilita la interacción con los multiples dispositivos que soportan JTAG.
 
 
 
La idea original de esta placa no nace en este proyecto sino que es parte de los pensamientos de Joern Kaipf quien publica su diseño en  su sitio web\footnote{Diríjase a \texttt{http://www.oocdlink.com/}.}.
 
 
 
La placa OOCDLink se muestra en la Fig. \ref{oocdlink:componentes} donde también identifican los elementos principales que la constituyen. Un esquemático mas detallado se muestra en el Apéndice \ref{appendix:sche}.
 
 
 
\begin{figure}[h]
 
\begin{center}
 
  \includegraphics{./img/oocdlink/oocdlink_top.pdf}
 
\end{center}
 
\caption[Componentes de la placa OOCDLink]{Componentes de la placa OOCDLink.
 
1) Conector UART,
 
2) LED RX (UART),
 
3) LED TX (UART),
 
4) Conector JTAG,
 
5) LED FT\_OK,
 
6) Conector USB 2.0,
 
7) EEPROM,
 
8) FT2232D,
 
9) LED Alimentación,
 
10) Oscilador de 6 MHz.
 
}
 
\label{oocdlink:componentes}
 
\end{figure}
 
 
 
El dispositivo que cumple la función primordial dentro de la placa OOCDLink es el chip FT2232D. Este es un conversor de USB a UART u otras interfaces seriales que dispone de dos canales de comunicación (\emph{conversor dual}).
 
 
 
Si bien para el fin de configurar la FPGA es suficiente solo uno de los canales (configurado en modo JTAG), en la placa además se encuentra habilitado el segundo canal (configurado como UART) para que se use con propósitos generales. Los conectores para los canales JTAG y UART se indican en la Fig. \ref{oocdlink:componentes} con los números 4 y 1 respectivamente.
 
 
 
El conector JTAG es el que debe usarse para el acoplamiento con la placa PHR mediante un adaptador que cambia la disposición mecánica de los pines.
 
%El \textsl{layout} de una placa adaptadora se muestra en la Fig. \ref{oocdlink:adaptador}. Tiene como agregado un indicador LED para el voltaje de alimentación y un capacitor de filtro.
 
 
 
%\begin{figure}[h]
 
%\begin{center}
 
%  \includegraphics{./img/oocdlink/adaptador.pdf}
 
%\end{center}
 
%\caption[Adaptador entre PHR y OOCDLink]{Conector adaptador entre placas PHR y OOCDLink.}
 
%\label{oocdlink:adaptador}
 
%\end{figure}
 
 
 
La placa OOCDLink tiene varios LEDs indicadores. El LED numerado con 9 en la Fig. \ref{oocdlink:componentes} ilumina cuando la  placa está encendida. Aquellos demarcados con los números 2 y 3 (RX y TX) encienden cuando el chip tiene flujos de datos en la UART. El LED indicado con 5 (FT\_OK) señala si hay un dispositivo JTAG activo y conectado a la placa OOCDLink.
 
 
 
 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
%NEW SECTION  NEW SECTION  NEW SECTION  NEW SECTION  NEW SECTION%
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
 
\subsection{El chip FT2232D}
 
 
 
Algunas características del FT2232D que se pueden destacar son:
 
\begin{itemize}
 
\item Cumple con las especificaciones de USB 2.0 Full Speed (12 Mbits/sec).
 
\item Simplifica la comunicación de USB con los protocolos de comunicaciones seriales JTAG, I2C y SPI.
 
\item Tiene una tasa de transferencia de entre 300 y 3 MBaud.
 
\item Desde el sistema operativo, la interfaz puede verse como un \emph{puerto serie virtual} (necesita el driver que provee el fabricante sin costo adicional).
 
\item También están disponibles librerías para facilitar el uso de JTAG, I2C y SPI (compatible con sistemas Windows y Linux).
 
\end{itemize}
 
 
 
La Fig. \ref{oocdlink:ftblock} muestra de manera esquemática el funcionamiento del chip aplicado a la placa OOCDLink.
 
 
 
\begin{figure}[h]
 
\begin{center}
 
  \includegraphics{./img/oocdlink/FTblock.pdf}
 
\end{center}
 
\caption[Diagrama de bloques del chip FT2232D]{Empleo del chip FT2232D.}
 
\label{oocdlink:ftblock}
 
\end{figure}
 
 
 
El chip necesita que por fuera se provean una memoria EEPROM (para almacenar los datos de configuración) y una señal de reloj de 6 MHz.
 
 
 
El flujo de datos (descripto desde la computadora del usuario) comienza  por el bus de comunicaciones USB (función en la que interviene el \emph{transceptor USB}), luego sigue a través del \emph{Motor serial} (que podría considerarse el núcleo del sistema) y continua por alguno de los dos controladores capaces de manejar protocolos seriales.
 
 
 
El canal A es el que efectivamente permite implementar una interfaz JTAG cuando trabaja en el modo denominado \emph{MPSSE}  (\textsl{Multi-Protocol Synchronous Serial Engine}). El canal B tiene posibilidades de funcionamiento mas acotadas por lo que se usa como UART.
 
 
 
Para usar apropiadamente las interfaces se pueden usar los controladores de sistema operativo que el fabricante pone a disposición de los usuarios de Windows y Linux.
 
 
 
 
 
\section{S3Power}
 
\label{sec:s3power-placa}
 
 
 
Tal como se describió en el capitulo \ref{sec:phr-placa}, el chip FPGA tiene requerimientos de tensión que deben satisfacerse para que funcione correctamente. Para cumplir con las especificaciones se utiliza la placa S3Power\footnote{Puede consultar el paper \emph{Módulo de alimentación para placas con dispositivos FPGA}, por Christian Huy y Diego Brengi, del \emph{Instituto Nacional de Tecnología Industrial}.}, que fue desarrollada por el \emph{Instituto Nacional de Tecnología Industrial} (INTI) y que está disponible bajo licencia GNU.
 
Una imagen de la placa se muestra en la Fig. \ref{s3power:componentes} en donde también se señalan sus principales elementos.
 
 
 
\begin{figure}[h]
 
\begin{center}
 
  \includegraphics{./img/s3power/s3power_top.pdf}
 
\end{center}
 
\caption[Componentes de la placa S3Power]{Componentes de la placa S3Power. Las distintas partes resaltadas representan: 1) LED de tensión VCCO, 2) LED de tensión VCCAUX, 3) Conector de salida de la placa, 4) Chip TPS75003, 5) Conector de tensión de entrada.}
 
\label{s3power:componentes}
 
\end{figure}
 
 
 
La placa se alimenta con una tensión de 5V y en la salida es capaz de proporcionar tres valores de tensión regulados:
 
 
 
\begin{itemize}
 
\item 1.2V y 2.5A para la lógica interna.
 
\item 3.3V y 2.5A para los bancos de pines.
 
\item 2.5V y 200mA para el módulo de comunicación JTAG.
 
\end{itemize}
 
 
 
El componente principal de la placa es el chip TPS75003 que no solo se encarga de regular las tensiones, sino que además asegura un arranque lo suficientemente suave para las FPGA actuales y sus predecesoras con requerimientos mas exigentes. Un diagrama temporal de la repuesta en el arranque se muestra en la Fig. \ref{s3power:arranque}.
 
 
 
\begin{figure}[h]
 
\begin{center}
 
  \includegraphics{./img/s3power/arranque.pdf}
 
\end{center}
 
\caption[Arranque de la placa S3Power]{Tensiones de salida en el arranque.}
 
\label{s3power:arranque}
 
\end{figure}
 
 
 
\subsection{El chip TPS75003}
 
 
 
Este chip es un regulador de tensiones de \emph{Texas Instruments} especialmente diseñado para servir de fuente para las familias de FPGA de Xilinx Spartan-3, Spartan-3E y Spartan-3L. Entre las características mas importantes se pueden mencionar:
 
 
 
\begin{itemize}
 
\item Posee tres reguladores de tensión: Dos tipo Buck de 3A y eficiencia del 95\% y otro regulador lineal de 300 mA.
 
\item Voltaje de entrada de entre 2.2V y 6.5 V.
 
\item Arranque suave e independiente para cada regulador.
 
\item Tensiones ajustables de 1.2 V a 6.5 V para los convertidores Buck y de 1.0 V a 6.5 V para el convertidor lineal.
 
\end{itemize}
 
 
 
 
 
\section{Proceso para el diseño de Placas}
 
\label{sec:proceso-placas}
 
 
 
El desarrollo de una placa sigue un proceso que se podría describir como la Figura \ref{fig:hw-ciclo}. Cada una de estas etapas se encuentra documentada y ha sido utilizada para el presente informe. La interacción entre las diferentes etapas se representa por flechas. De aquí se puede obtener otra información sobre la metodología de trabajo, que es el sentido en que se comparte información. Por ejemplo, la etapa denominada \emph{Especificaciones generales} proporciona información a las etapas de \emph{Diseño del esquemático} y la etapa \emph{Diseño de la placa electrónica}, y a su vez estas últimas ofrecen información a la primera para asegurar que determinados aspectos definidos inicialmente se estén cumpliendo. Se hace una breve descripción de las etapas.
 
 
 
\begin{figure}[h]
 
  \centering
 
  \includegraphics[width=0.7\textwidth]{images/hardware_ciclo_diseno}
 
  \caption{Proceso de diseño de las placas}
 
  \label{fig:hw-ciclo}
 
\end{figure}
 
 
 
\begin{description}
 
\item[Especificaciones generales] En el diseño de un circuito electrónico se deben determinar las pautas y características que éste debe cumplir. Por ejemplo, tecnología a utilizar, dimensiones, costo, etc..
 
\item[Diseño del esquemático] Con la utilización de herramientas de \textsl{software}, en este caso kiCAD\footnote{kiCAD es un entorno de \textsl{software} usado para el diseño de circuitos electrónicos. El paquete kiCAD posee licencia GNU GPL (licencia libre).}, se realiza el diseño del esquema de conexiones del circuito eléctrico. Aquí se representan los componentes electrónicos con símbolos y bloques en vez de sus verdaderas formas físicas, lo que facilita su interpretación.
 
\item[Diseño de la placa electrónica] Luego de obtener el circuito esquemático, se debe convertir dicho esquema en su equivalente real. Aquí sí se tiene un modelo de los dispositivos electrónicos reales (dimensiones y formas), con la ventaja que las conexiones eléctricas se encuentran ya definidas. Lo importante de esta etapa es definir la dimensión de la placa, como así también la disposición de cada componente electrónico.
 
\item[Selección de componentes electrónicos] En esta etapa se lleva un registro de los dispositivos electrónicos a utilizar. Para el caso de la generación del circuito esquemático, se determina que simbología utilizar en la representación de los componentes. Y en el caso de la generación de la placa, cada símbolo debe tener su representación física real. Gran parte de esta etapa se basa en documentación para generar la compra de los materiales necesarios.
 
\item[Armado y pruebas funcionales] El montaje de los componentes electrónicos sobre las placas requieren toda la documentación previa generadas en las etapas anteriores. Una vez que se logran ensamblar todos los dispositivos, se realizan pruebas sobre éstas, donde se registran e intentan resolver los inconvenientes que se presenten. Es esta etapa clave donde se define si el desarrollo ha sido exitoso o deben realizarse modificaciones, lo que implica volver al comienzo, desde la etapa \emph{Especificaciones generales}.
 
\item[Modificaciones] El desarrollador evalúa la ``gravedad'' de los inconvenientes presentados en la etapa de \emph{Armado y pruebas funcionales}. También se aclara que resulta fundamental la documentación en esta etapa ya que servirá para describir como se ha llegado a una versión funcional.
 
\item[Versión Final] En el caso ideal, luego de que se hayan realizado las pruebas correspondientes sobre la placa, y todas éstas hayan sido exitosas, la documentación final se referencia a dicha versión.
 
\end{description}
 
 
 
\section{Conceptos para el Armado}
 
\label{sec:armado}
 
 
 
Aquí se busca una metodología a implementar en el proceso de armado de las placas. Si bien a primera vista resulta una actividad sencilla, aquí se utilizan tecnologías SMD para los encapsulados y al tener varios componentes es necesario documentar el proceso a seguir. Además se tiene en cuenta que la documentación generada será útil para otros proyectos similares. El proceso de armado podría componerse por,
 
 
 
\begin{itemize}
 
\item Identificación de los componentes.
 
\item Instalación y reconocimiento de las herramientas necesarias para el proceso de soldadura SMD.
 
\item Testeo visual (utilización de cámaras con zoom) y eléctrico sobre los pines de alimentación de los dispositivos SMD, especialmente los dispositivos semiconductores.
 
\end{itemize}
 
 
 
\subsection{Identificación  de los componentes}
 
\label{sec:arm-ide-comp}
 
 
 
Para el armado de las diferentes placas, en principio, se podría suponer que se quieren montar y soldar todos los componentes. Por lo tanto se necesitará disponer de la lista de componentes por cada una de las placas. Se debe tener en cuenta que los componentes SMD son de dimensiones muy pequeñas y para algunos dispositivos pasivos no se encuentra visible su valor.
 
 
 
Por otro lado, los componentes que tienen una gran cantidad de pines y dimensiones chicas (como por ejemplo los encapsulados SMD de los microprocesadores, QFN) son los primeros en ser soldados. Al requerir mayor precisión en la ubicación sobre sus pines es recomendable que no se tenga la incomodidad de otros componentes en aproximaciones del componente.
 
 
 
\begin{figure}[hb]
 
  \centering
 
  \subfloat[\footnotesize{Soldadura simple.}]{\label{fig:smd-sold-simple}\includegraphics[width=0.3\textwidth]{images-sch3/smd-sold-simple}}
 
  \hfill
 
  % --
 
  \subfloat[\footnotesize{Soldadura media.}]{\label{fig:smd-sold-media}\includegraphics[width=0.3\textwidth]{images-sch3/smd-sold-media}}
 
  \hfill
 
  % --
 
  \subfloat[\footnotesize{Soldadura compleja.}]{\label{fig:smd-sold-complex}\includegraphics[width=0.2\textwidth]{images-sch3/smd-sold-complex}}
 
  % --
 
  \caption{Diferentes niveles de complejidad en el soldado de componentes con varios pines SMD.}
 
  \label{fig:smd-sold}
 
\end{figure}
 
 
 
\subsection{Herramientas para soldadura SMD}
 
\label{sec:arm-smd-tools}
 
 
 
La soldadura de componentes SMD fácilmente puede ser realizada con los soladores comunes. Los equipos especializados para la soldadura de componentes SMD son costosos y en algunos casos innecesarios o fácilmente suplantado con soldadores básicos. Lo que realmente marca una diferencia entre realizar una buena o mala soldadura es tener en cuenta,
 
 
 
\begin{description}
 
\item[... un buen Flux] El flux es una resina adherente, que mejora substancialmente la adherencia del estaño. Esta sustancia se presenta en dos formas, una líquida y otra en pasta.
 
\item[... una buena máscara del PCB] La máscara de una placa PCB permite identificar el área sobre el pads que está en contacto con pin/pines de componente a soldar. Esta máscara es de un material aislante y térmicamente resistente al proceso de soldadura. De no existir esta capa sobre el cobre, el estaño se desplazaría por todas las pistas.
 
\end{description}
 
 
 
Obviamente que se necesitarán otras herramientas comunes como son,
 
 
 
\begin{itemize}
 
\item Lupa o cámara de video con zoom óptico y digital
 
\item Estaño de 0.5 mm de diámetro
 
\item Pinzas para sostener componentes pequeños (SMD)
 
\item Alcohol isopropílico y telas de algodón
 
\item Mallas de cobre para retirar estaño
 
\end{itemize}
 
 
 
Cada una de las placas que se armaron siguieron la estructura planteada. En las secciones siguientes se muestran las diferentes placas ya listas y se realizarán observaciones que se encontraron en su armado.
 
 
 
\section{Placas armadas}
 
\label{sec:placas}
 
 
 
Las placas que se listan a continuación fueron armadas en el orden cronológico dispuesto. El orden fue propuesto por la complejidad que presentan cada una de ellas y la rapidez con la que se podría probar independientemente una de otra.
 
 
 
\begin{itemize}
 
\item OOCDLinks
 
\item S3Power
 
\item PHRBoard
 
\end{itemize}
 
 
 
Las primeras dos placas ya fueron testeadas anteriormente pero en estas versiones se presentan cambios que no son significativos. La última placa es la continuación del desarrollo llevado anteriormente con la placa FPGA (PHR version BETA)\cite{schedule_2012-08-24}.
 
 
 
En la descripción de cada una de las placas armadas se marcarán las \emph{modificaciones} necesarias para mejorar las próximas versiones.
 
 
 
\newpage{}
 
\clearpage{}
 
\subsection{OOCDLink}
 
\label{sec:oocdlink}
 
 
 
\begin{figure}[h!]
 
  \centering
 
  \includegraphics[width=0.3\textwidth]{images/OOCDLink-pcb-layers}
 
  \caption{Distribución de los componentes en la placa \emph{OOCDLink}.}
 
  \label{fig:oocdlik-pcb-layers}
 
\end{figure}
 
 
 
\begin{figure}[h!]
 
  \centering
 
  \subfloat[\footnotesize{Perspectiva 1.}]{\label{fig:oocdlink-pcb-3d-1}\includegraphics[width=0.4\textwidth]{images/OOCDLinks-pcb-3d-1}}
 
  \hfill
 
  % --
 
  \subfloat[\footnotesize{Perspectiva 2.}]{\label{fig:oocdlink-pcb-3d-2}\includegraphics[width=0.4\textwidth]{images/OOCDLinks-pcb-3d-2}}
 
  \caption{Modelo en 3D de la placa \emph{OOCDLink}.}
 
  \label{fig:oocdlink-pcb-3d}
 
\end{figure}
 
 
 
\begin{figure}[h!]
 
  \centering
 
  \subfloat[\footnotesize{Perspectiva 1.}]{\label{fig:oocdlink-foto-1}\includegraphics[width=0.4\textwidth]{images/OOCD_placa-foto-1}}
 
  \hfill
 
  % --
 
  \subfloat[\footnotesize{Perspectiva 2.}]{\label{fig:oocdlink-foto-2}\includegraphics[width=0.4\textwidth]{images/OOCD_placa-foto-2}}
 
  \caption{Fotografías de la placa \emph{OOCDLink}.}
 
  \label{fig:oocdlink-foto}
 
\end{figure}
 
 
 
\subsubsection{Modificaciones}
 
\label{sec:oocdlink-modif}
 
 
 
La placa OOCDLink fue la primera en ser armada y probada. Sobre esta placa se realizó un reporte \cite{schedule_2012-03-20} donde se explica como usar con diferentes placas que implementan el protocolo JTAG para la programación y depuración del dispositivo central utilizado. En el proceso de testeo se encontraron varios cambios a implementar en las nuevas versiones. A continuación se describen los más relevantes.
 
 
 
\paragraph{Gabinete}
 
 
 
Se podría pensar en dimensionar la nueva versión de la placa para que quepa en algún gabinete estándar. Por lo pronto la versión actual tiene agujeros para sujetar en un principio a una base de acrílico.
 
 
 
\paragraph{Eliminar resistores}
 
 
 
Se podría pensar en eliminar los resistores que se encuentran conectados entre el FT2232D y el conector JTAG. Estos resistores son: $R17$, $R18$ y $R19$. Originalmente se utilizaban los resistores para que la tensión $V_{REF}$, a $3.3V$, y las señales $TDI$, $TMS$ y $TCK$, a $2.5V$, que darán todas adaptadas. Es decir, los resistores funcionaban como divisores resistivos. Para la placa PHR se utilizan las señales JTAG (TDI, TDO, TMS, TCK) y $V_{REF}$ a $2.5V$. Por lo que ya no se necesitan los resistores divisores.
 
 
 
\paragraph{Cambio de conector JTAG}
 
 
 
Se podría pensar en utilizar otro conector más pequeño relacionado a las dimensiones. El conector que utiliza la placa OOCDLink actualmente es un conector para microcontroladores ARM7, ARM9, ARM10 y XSCALE, denominado \emph{ARM 20-PIN}. Se podría apuntar a que el conector sea compatible con dispositivos programables PLDs de Xilinx. Por ejemplo, el \emph{Xilinx Parallel Cable IV 14-PIN}. En el caso de no querer perder la compatibilidad con las señales de \textsl{debugging} para los microcontroladores ARM, se podría utilizar el mismo conector ARM 20-PIN pero con un encapsulado más pequeño.
 
 
 
\paragraph{Usar el FT232H (simple canal)}
 
 
 
El FT2232D dispone de dos canales independientes. Uno se utiliza para acceder a un puerto JTAG y el otro como una UART. Si bien la prestación de tener acceso a un puerto serial desde USB resulta muy beneficioso, no lo es así en el costo del programador JTAG. El FT232H cuenta con un solo canal que implementa la tecnología MPSSE (\textsl{Multi-Protocol Synchronous Serial Engine}). De esta forma se tendría un diseño más reducido y de menor costo.
 
 
 
\paragraph{Conector micro-USB}
 
 
 
Se podría utilizar un conector micro-USB en vez del mini-USB.
 
 
 
 
 
\paragraph{Utilizar menos indicadores LED}
 
 
 
La actual placa tiene muchos indicadores LED.
 
 
 
 
 
\paragraph{Selección automática del modo de configuración de la FPGA}
 
 
 
El modo de configuración de la FPGA actualmente es manual. A través del \textsl{jumper} $K1$ el usuario elije el modo de configuración. Se podría utilizar el canal libre del FT2232D (actualmente UART) para configurar la señales del modo de la FPGA.
 
 
 
\newpage{}
 
\clearpage{}
 
 
 
\subsection{S3Power}
 
\label{sec:s3power}
 
 
 
\begin{figure}[h!]
 
  \centering
 
  \includegraphics[width=0.3\textwidth]{images/S3Power_layers}
 
  \caption{Distribución de los componentes en la placa.}
 
  \label{fig:s3power-pcb-layers}
 
\end{figure}
 
 
 
\begin{figure}[h!]
 
  \centering
 
  \subfloat[\footnotesize{Perspectiva 1.}]{\label{fig:s3power-pcb-3d-1}\includegraphics[width=0.4\textwidth]{images/s3power_pcb_3d_1}}
 
  \hfill
 
  % ---
 
  \subfloat[\footnotesize{Perspectiva 2.}]{\label{fig:s3power-pcb-3d-2}\includegraphics[width=0.4\textwidth]{images/s3power_pcb_3d_2}}
 
  \caption{Modelo en 3D de la placa \emph{S3Power}.}
 
  \label{fig:s3power-pcb-3d}
 
\end{figure}
 
 
 
\begin{figure}[h!]
 
  \centering
 
  \subfloat[\footnotesize{Perspectiva 1.}]{\label{fig:s3power-foto-1}\includegraphics[width=0.4\textwidth]{images/s3power_foto_1}}
 
  \hfill
 
  % --
 
  \subfloat[\footnotesize{Perspectiva 2.}]{\label{fig:s3power-foto-2}\includegraphics[width=0.4\textwidth]{images/s3power_foto_2}}
 
  \caption{Fotografías de la placa \emph{S3Power}.}
 
  \label{fig:s3power-foto}
 
\end{figure}
 
 
 
 
 
\subsubsection{Modificaciones}
 
\label{sec:s3power-modif}
 
 
 
Para esta versión no hay observaciones/modificaciones que se puedan hacer. Quizá se pueda pensar en el futuro embeber la parte de potencia en la misma placa. En esta versión del proyecto PHR se utilizó la placa S3Power desarrollada por el INTI con la intensión de re-utilizar desarrollos libres y dar un marco de cooperativismo sobre los desarrollos locales.
 
 
 
\newpage{}
 
\clearpage{}
 
 
 
\subsection{PHRBoard}
 
\label{sec:phrboard}
 
 
 
\begin{figure}[h!]
 
  \centering
 
  \includegraphics[width=0.5\textwidth]{images/PHRboard_layers}
 
  \caption{Distribución de los componentes en la placa.}
 
  \label{fig:phr-pcb-pcbnew-top}
 
\end{figure}
 
 
 
\begin{figure}[h!]
 
  \centering
 
  \subfloat[\footnotesize{Perspectiva 1.}]{\label{fig:phr-pcb-3d-1}\includegraphics[width=0.4\textwidth]{images/PHRboard_3d_1}}
 
  \hfill
 
  % --
 
  \subfloat[\footnotesize{Perspectiva 2.}]{\label{fig:phr-pcb-3d-2}\includegraphics[width=0.4\textwidth]{images/PHRboard_3d_2}}
 
  \caption{Modelo en 3D de la placa \emph{S3Power}.}
 
  \label{fig:phrboard-foto}
 
\end{figure}
 
 
 
 
 
\begin{figure}[h!]
 
  \centering
 
  \subfloat[\footnotesize{Perspectiva 1.}]{\label{fig:phr-pcb-foto-1}\includegraphics[width=0.4\textwidth]{images/DSCN4528}}
 
  \hfill
 
  % --
 
  \subfloat[\footnotesize{Perspectiva 2.}]{\label{fig:phr-pcb-foto-2}\includegraphics[width=0.4\textwidth]{images/DSCN4529}}
 
  \caption{Fotografías de la placa \emph{S3Power}.}
 
  \label{fig:phrboard-foto}
 
\end{figure}
 
 
 
\subsubsection{Modificaciones}
 
\label{sec:phrboard-modif}
 
 
 
\paragraph{Recableado de puertos}
 
 
 
En la FPGA XC3S200A se dispone de varios pines de entradas y salidas. Muchos de estos puertos no son bidireccionales. En la primera versión de la \emph{PHRBoard} se tuvo errores en la asignación de algunos puertos de solo-entrada a periféricos de salida. Se ha solucionado el inconveniente ``\emph{recableando}'' estos puertos y asignando a otros bidireccionales.
 
 
 
\vspace{.5cm}
 
\begin{tabular}[h]{|l|c|c|}
 
  \hline
 
  \textbf{Periférico (etiqueta)} & \textbf{PIN FPGA PCB} & \textbf{PIN FPGA corregido} \\
 
  \hline
 
  IOports\_display\_seg\_e & 68 & 28 \\
 
  \hline
 
  IOports\_led\_8 & 7 & 27 \\
 
  \hline
 
\end{tabular}
 
\vspace{.5cm}
 
 
 
Se podría asignar a todos los puertos \emph{solo-entradas} de la FPGA a los periféricos de entrada.
 
 
 
\paragraph{Indicadores}
 
 
 
Se debería agregar texto que describa las funcionalidades de cada \textsl{jumpers}, conectores, o secciones de la placa PHR. A continuación se describen algunas que se encontraron:
 
\begin{itemize}
 
\item \textsl{Jumper} que configura la FPGA (JTAG - PROM)
 
\item Nombre de cada pin del conector JTAG
 
\item Señalar el sentido de \textsl{ON/OFF} de las llaves (revisar esquemático y el texto sobre el componente que dice ON)
 
\item Números de los pines de los conectores para entradas y salidas de propósito general (especialmente el \emph{PIN 1}).
 
\item Indicación de las frecuencias seleccionadas con el selector de \textsl{clocks}.
 
\item Señalar GND y +5V en la entrada de alimentación.
 
\end{itemize}
 
 
 
 
 
\paragraph{Conector JTAG}
 
 
 
Se podría seguir utilizando el conector de \emph{6 PINES} pero cambiando el \textsl{footprint} de 90 grados, por uno común. También se podría pensar para la nueva versión utilizar un conector estándar de Xilinx por ejemplo el \emph{XILINX PARALLEL CABLE III AND IV 9-PIN}.
 
 
 
\paragraph{Resistores \textsl{pullups}}
 
 
 
En la versión actual se tiene varios resistores \textsl{pullups} que se pusieron provisoriamente. Se debería chequear cuales quedarían definitivamente y cuales no.
 
 
 
\paragraph{Conector E/S}
 
 
 
Se debe reemplazar los dos conectores de propósitos generales por un solo conector. Preferentemente se utilizará un conector hembra. Se podría tomar como referencia los conectores estándares de Arduino.
 
 
 
\paragraph{Memoria de configuración}
 
 
 
Se podría reemplazar la memoria XCF02S de Xilinx por otra memoria de menor costo, por ejemplo SPI. Esto también está vinculado con la disponibilidad del \textsl{software}. El programa \emph{xc3sprog}, en la versión utilizada, soporta memorias SPI y otras más.
 
 
\subsection{OOCDLink}
 
\label{sec:oocdlink-placa}
 
 
 
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.