6. Placa de desarrollo IIE-PCI

6.1. Organización del capítulo

El capítulo se encuentra organizado en las siguientes secciones:
Características de la placa
Resumen de las características técnicas de la placa.
Descripción general
Descripción de los bloque principales que componen la placa y su interconexión.
Descripción funcional
Breve descripción del funcionamiento de la placa, alimentación, programación, etc. Un mayor detalle puede encontrarse en el manual de usuario, en los apéndices.
Diseño

Se exponen las decisiones de diseño para la elección del FPGA, la memoria, los conversores DC-DC y el PLL.
Citerios utilizados para ubicar los componentes.
Información sobre adaptación de impedancias, crosstalk, planos de tierra, etc.
Fabricación
Circuitos impresos de prueba, software de diseño, fabricante y características de la placa fabricada.
Montaje
Recomendaciones y equipo necesario para soldar componentes de empaque superficial.
Pruebas
Primeras pruebas de funcionamiento realizadas.
Costos
Detalle de los costos de fabricación.
Conclusiones
Conclusiones, mejoras y recomendaciones.

6.2. Características de la placa

Principales características de la placa:

6.3. Descripción general

La placa IIE-PCI es una placa de propósito general de bajo costo. Su diseño está pensado para permitir desarrollar y probar diseños basados en la interfaz PCI.

bloquesplaca.jpg

El corazón de la placa es un FPGA de ALTERA, en el cual se implementa toda la lógica de la placa. Sus patas están conectadas al bus PCI, a la memoria SDRAM y a conectores de expansión.

El FPGA se desconfigura al quitarle la alimentación, por lo que la placa cuenta con una EPROM de configuración que permite que el FPGA se autoconfigure al encenderse.

Tanto la programación de la EPROM como la configuración del FPGA se realizan mediante el protocolo JTAG.

Cuenta con conectores del tipo header hembra que permiten conectar placas de expansión a la IIE-PCI.

Un PLL en la placa provee señal de reloj al FPGA, a la memoria y a uno de los conectores de expansión. Estas señales de reloj pueden ser múltiplos de la frecuencia del reloj PCI o de la frecuencia de un cristal; esto se selecciona mediante jumpers en la placa.

La alimentación de los componentes proviene de dos conversores DC-DC, uno a 3.3V y el otro a 2.5V. La distribución de la alimentación (fuente y tierra) se hace utilizando las 2 capas interiores de las 4 que componen la placa.

foto de la placa pci - frente

6.4. Descripción funcional

A continuación se analizará cada componente por separado.

bloques de la placa pci

6.4.1. Alimentación

El plano interno de alimentación está partido en tres zonas, 3.3v, 2.5v y 5v. La zona de 5V está conectada a los contactos de 5V del bus PCI y al pin 4 del conector Molex. Este es el plano por el cual se alimenta la placa.

El plano de tierra está conectado a los contactos de GND del bus PCI y a los pines centrales del conector Molex.

La placa está diseñada para ser alimentada desde el bus PCI o utilizando una fuente de PC. Cuando la placa está conectada al bus PCI no es necesario proveer de alimentación adicional a través del conector Molex.

Los expansores tienen disponibles fuentes y tierras en sus pines:

6.4.2. Señales de Reloj

Los relojes que llegan al FPGA, la SDRAM y el bus de expansión, son generados por el PLL.

EL PLL genera una señal de reloj por el pin Q/N y múltiplos de ésta por los pins Q[2..0]. La frecuencia de Q/N está dada por un cristal o el reloj PCI.

Las señales se conectan de la siguiente forma:

Observación: la señal de reloj que llega a la SDRAM, puede provenir de Q1 o del pin 176 del FPGA, que se comparte con la señal IO_EXP30 (pin 6 del conector EXP). Esto se selecciona soldando una resistencia de 0 ohm en una de dos posibles posiciones. Esto fue hecho para poder generar la señal de reloj desde dentro del FPGA.

reloj.jpg

El origen de las señales de reloj se elige con los jumpers JPOSC.

El factor de multiplicación para la frecuencia de salida se escoge mediante los Jumpers JPS1 y JPS0. Este puede ajustarse entre x2 y x8.

6.4.3. Configuración

El FPGA puede ser configurado utilizando los protocolos JTAG o modo serie pasivo (PS).

La configuración JTAG se hace utilizando el ByteBlasterMV conectado en el HEADER etiquetado JTAG.

La configuración en modo serie es utilizada por la memoria EPC2 o por el programador ByteBlasterMV a través del conector BBLASTER. En caso de seleccionar este modo, la EPC2 no debe de estar en su zócalo.

La memoria EPC2 es configurada utilizando el protocolo JTAG y se programa en la placa misma.

6.4.4. JTAG

El protocolo JTAG permite conocer el estado interno de un chip que soporte este protocolo y en el caso de los FPGAs también permite su configuración.

La placa permite encadenar la EPC2, el FPGA y cualquier dispositivo que soporte el protocolo, en el expansor. El orden de los dispositivos en la cadena JTAG es el siguiente:

  1. EPC2
  2. FPGA
  3. EXPANSOR

jtag.jpg

La cadena entre los pines TDI y TDO del HEADER JTAG siempre debe de estar cerrada. En caso de que la EPC2 no esté presente o que no haya un dispositivo que soporte el protocolo JTAG en el conector de expansión, se deben manipular los jumpers JTAG_EXP y JTAG_BRIDGE_EPC2 para que la cadena JTAG quede cerrada de todas formas.

6.4.5. Expansores

A ambos lados del FPGA hay conectores Header hembra de 1mm, que permiten conectar a la IIE-PCI placas hijas, cuando se necesite electrónica adicional para implementar un diseño.

Al conector EXP llegan los pines libres del FPGA, reloj, fuentes de 3.3V y 5V y GND.

En el expansor del bus RAM pueden verse las señales del bus de datos de la SDRAM si se sueldan las resistencias de 0 ohm correspondientes.
Esto último permite hacer aplicaciones que lean datos de la SDRAM o utilizar estos pines sin usar la RAM. Para ello se debe de desactivar la SDRAM mediante la pata CS que está conectada al pin 175 del FPGA.

busram.jpg

Señales en bus EXP (tabla dispuesta con la forma del expansor):

PIN_EXP SEÑAL(PIN FPGA) - SEÑAL(PIN FPGA) PIN_EXP
1 EXPCLK   GND 2
3 GND   3.3v 4
5 5V   IO_EXP30(176) 6
7 IO_EXP29(197)   IO_EXP28(198) 8
9 IO_EXP27(199)   IO_EXP26(200) 10
11 IO_EXP25(202)   IO_EXP24(203) 12
13 IO_EXP23(204)   IO_EXP22(205) 14
15 IO_EXP21(206)   IO_EXP20(207) 16
17 IO_EXP19(208)   IO_EXP18(7) 18
19 IO_EXP17(8)   IO_EXP16(9) 20
21 IO_EXP15(10)   IO_EXP14(11) 22
23 IO_EXP13(12)   IO_EXP12(13) 24
25 IO_EXP11(14)   IO_EXP10(15) 26
27 IO_EXP9(16)   IO_EXP8(17) 28
29 IO_EXP7(18)   IO_EXP6(24) 30
31 IO_EXP5(25)   IO_EXP4(26) 32
33 IO_EXP3(27)   IO_EXP2(28) 34
35 IO_EXP1(29)   IO_EXP0(30) 36
37 JTAG_EXP_TDI   JTAG_EXP_TDO 38
39 FPGA_TMS   JTAG_TCK 40

Señales del bus RAM (tabla dispuesta con la forma del expansor):

PIN_RAM SEÑAL - SEÑAL PIN_RAM
1 GND   DQ 0 2
3 DQ 1   DQ 2 4
5 DQ 3   DQ 4 6
7 DQ 5   DQ 6 8
9 DQ 7   GND 10
11 GND   DQ 15 12
13 DQ 14   DQ 13 14
15 DQ 12   DQ 11 16
17 DQ 10   DQ 9 18
19 DQ 8   GND 20
21 GND   DQ 31 22
23 DQ 30   DQ 29 24
25 DQ 28   DQ 27 26
27 DQ 26   DQ 25 28
29 DQ 24   GND 30
31 GND   DQ 16 32
33 DQ 17   DQ 18 34
35 DQ 19   DQ 20 36
37 DQ 21   DQ 22 38
39 DQ 23   GND 40

DQ NN indica que la señal de datos NN de la SDRAM está conectada al pin del expansor.

6.4.6. Llaves y leds

La placa cuenta con 2 leds y 4 llaves de propósito general.

Las 4 llaves de dos posiciones están conectadas, utilizando pull-ups, a 4 patas de entrada del FPGA.

CLOCK_LOCK: LED1 está conectado a pin CLOCK_LOCK del FPGA. En el software sintetizador se puede escoger que se encienda este led si el PLL interno del FPGA se "engancha" con la señal de reloj. En caso de no utilizarse, el pin puede ser manejado por una aplicación.

INIT_DONE: Si el FPGA se configura correctamente, se enciende LED2. También puede ser manejado por una aplicación luego de la configuración del FPGA.

6.5. Diseño

6.5.1. Selección de componentes

Con la idea de cumplir los objetivos planteados, se tomaron decisiones sobre qué componentes se utilizarían y cuál seria la arquitectura y la topología de la placa.

6.5.1.1. FPGA

De todas las familias de FPGAs de ALTERA, la que ofrecía la mayor cantidad de compuertas a menor precio era la ACEX. Esta familia de FPGAs tiene la misma estructura interna que los FLEX10K (FPGAs de la placa ARC-PCI) pero son menos costosos y más rápidos.
Se escogió utilizar el chip más grande de dicha familia, el EP1K100.

Los empaques disponibles para dicho integrado son TQFP y FBGA. Como el montaje sería realizado por los integrantes del proyecto o por alguna empresa del medio, se optó por el empaque TQFP (en el empaque TQFP, las patas están dispuestas en el perímetro del chip, mientras que en el FBGA, en vez de patas, el chip posee contactos en el cara inferior y no están accesibles directamente).
Ya que se desea tener la mayor cantidad de patas disponibles, se seleccionó el EP1K100QC208.

El modelo de integrado finalmente escogido fue el EP1K100QC208-1 de ALTERA.
El dígito final del número de parte (-1) está relacionado con los retardos de propagación del chip. Cuanto menor es éste número, menores son los retardos de propagación y por lo tanto se pueden implementar diseños que funcionen a mayor velocidad, es decir con frecuencias de reloj mayores.
Afortunadamente dicho FPGA pudo ser conseguido a través de una donación de la empresa ALTERA, ya que es el integrado más caro de la placa (U$S63.00 en enero del 2002). Se consiguieron 2 integrados EP1K100QC208-1 y 2 EP1K100QC208-2.

Se podría haber optado por un FPGA de XILINX, pero el grupo de trabajo tiene una mayor experiencia con las herramientas e integrados de la compañía ALTERA.


La siguiente tabla comparativa muestra las diferencias entre los FPGAs con los que cuenta el IIE:

placa FPGA Typ. gates Max. gates LEs EAB FPGA RAM Ext. RAM
IIE-PCI EP1K100 100,000 257,000 4.992 12 48 kbit 16 MByte
ARC-PCI EPF10K50 50,000 116,000 2.880 10 20 kbit 12 MByte
UP1 EPF10K20 20,000 63,000 1.152 6 12 kbit 0

6.5.1.2. PLL

La norma PCI es bastante estricta en cuanto al largo de la pista de reloj. Esta debe de tener 2.5 pulgadas dentro de la placa y debe conectarse a un solo componente. Como se debe proveer de una señal de reloj para el FPGA, la memoria SDRAM y el conector de expansión, se decidió utilizar un circuito regenerador de la señal de reloj PCI con al menos 3 salidas. Esta fue una de las razones para agregar un PLL a la placa. La otra razón era poder generar, a partir de una frecuencia de reloj dada, frecuencias superiores. La frecuencia de reloj del bus PCI es de 33MHz, pero la memoria SDRAM puede funcionar hasta a 133MHz.

Por otro lado como la placa debe de poder funcionar sin estar conectada al PC, el PLL tiene que poder generar el reloj a partir de un cristal.

La elección final fue el modelo 5V925 de IDT. El mismo cumple con los siguientes requerimientos:

El cristal empleado es de 7.164MHz, al ser un múltiplo de la frecuencia de PALN se deja prevista la posibilidad de utilizar la placa para generar señales para televisión.

6.5.1.3. Conversores DC-DC

Los componentes de la placa funcionan con 3.3V y 2.5V. El conector PCI proporciona 3.3V y 5V. Se optó por tomar como entrada de alimentación sólo la fuente de 5V y generar las fuentes de 3.3V y la de 2.5V. De esta forma solo se necesita una fuente que entregue 5 o más volts.

La conversión de voltajes podía ser realizada mediante reguladores lineales (mas baratos, menos componentes pero menos eficientes) o conversores DC-DC (más componentes pero mucho más eficientes).

Para tomar la decisión de cuán importante es la eficiencia de la conversión se hizo la siguiente estimación de consumo de la placa.

SDRAM MT48LC4M32B2

FPGA

PLL IDT5V925

EPC2

TOTALES

Utilizando un conversor lineal, se disminuye el voltaje manteniendo constante la corriente. Por lo tanto deberían drenarse 3A (2A @ 3.3V y 1A @ 2.5V) de la fuente de 5V.

Utilizando conversores DC-DC, en total se necesitan 3A (2A @ 3.3V y 1A @ 2.5V) o 9.1W. Suponiendo una eficiencia típica de 0.87 para el conversor DC-DC, esto significa que la fuente de 5V debe entregar 10.4W. Por lo tanto deberían drenarse 2.1A de la fuente de 5V

Las motherboards de PC estándar están diseñadas para entregar aproximadamente 2A a 5V por conector PCI. Se optó entonces por utilizar los conversores DC-DC.

Los modelos de componentes escogidos fueron el LT1767EMS8E-2.5 para 2.5V y el LT1506CS8-3.3 para 3.3V.

6.5.1.4. Memoria

Se seleccionó memoria de tipo SDRAM ya que, por el momento, es la memoria más utilizada por la industria de PCs, y por lo tanto, su costo por MB es el más bajo.

Otra razón para seleccionar SDRAM es la existencia de controladores implementados en cores IP de libre distribución, utilizando interfaz Wishbone. Estos cores pueden ser integrados de forma relativamente sencilla en un diseño.

En una primera instancia se pensó en utilizar un DIMM de PC, pero la cantidad de señales necesarias para manejarlos, consumían casi todos las patas del FPGA (un módulo DIMM contiene 168 patas). El costo del conector DIMM también resultaba excesivo y sus dimensiones ocuparían mucho espacio de circuito impreso, aumentando el costo de fabricación de la placa. Por estas razones se optó por soldar un solo integrado de memoria SDRAM directamente sobre la placa.

Se escogió una memoria de ancho de palabra 32 bits para facilitar el diseño de las aplicaciones que hagan uso del bus PCI (este tiene ancho de palabra 32 bits).

La memoria SDRAM escogida fue la MT48LC4M32B2 de la empresa MICRON. Tiene una capacidad de 4M*32, dando un total de 128 Mbits.

Afortunadamente, la memoria SDRAM fue donada por la empresa MICRON.

6.5.2. Decisiones de layout

Una vez que estuvieron los componentes principales seleccionados, se pasó a estudiar como se realizaría su interconexión.

6.5.2.1. Distribución de pines del FPGA

Luego de restar las patas utilizadas para configuración, JTAG y alimentación, quedan disponibles 147 de las 208 patas del FPGA.
Estas fueron distribuidas de la siguiente forma:

Las 32 señales del bus de datos de la RAM pueden ser conectadas a uno de los expansores hembra. Las pistas que van desde la memoria hasta el expansor están cortadas. En el corte se dejó previsto un footprint para resistencias. En caso de querer conectar el bus de datos al expansor basta con soldar resistencias de 0 ohms en estos lugares.

busram.jpg

Esto fue hecho para no dejar pistas libres sin terminación que pudieran producir ondas reflejadas e impedir la transferencia de datos a alta velocidad entre el FPGA y la memoria.

6.5.2.2. Posición de expansores

Las tiras de conexión de expansores fueron colocadas de modo de servir de conexión eléctrica y a la vez de soporte físico. Si en la placa de expansión que se diseña se colocan los componentes del lado interior (contra la placa IEE-PCI), el ancho total apenas excede el ancho de una ranura PCI.

6.5.2.3. Posición de conectores de programación y dip switches.

Los conectores de programación fueron colocados sobre el borde superior de la placa, a modo de simplificar la conexión del cable de programación cuando la placa está conectada en el bus PCI. Lo mismo fue tomado en cuenta para las ubicar las 4 llaves de dos posiciones (dip switches).

6.5.2.4. Posición de los conversores DC-DC.

Para minimizar las interferencias producidas por la conmutación de los conversores, éstos fueron ubicados sobre el borde opuesto al conector PCI. Esto también facilita la disipación de calor por convección.

6.5.2.5. Posición del FPGA

La posición del FPGA fue elegida de modo de minimizar la distancia de las pistas de conexión con el bus PCI. El FPGA fue centrado respecto al largo del conector PCI.
La orientación fue seleccionada para que la mayor cantidad de patas de I/O estuviesen lo más cerca del conector PCI y las patas de programación lo más cerca del EPC2 y los conectores de programación. Debido a esto sólo quedaba una orientación posible.

6.5.2.6. Posición de capacitores de desacople

Los capacitores de desacople fueron colocados lo más cerca posible de las patas de alimentación de los integrados, como recomiendan los fabricantes. Para lograr este objetivo, muchos capacitores fueron colocados en el lado opuesto al de componentes.

6.5.3. Diseño con señales digitales de alta frecuencia

Para el diseño de la placa nos basamos mayormente en el libro "BLACK MAGIC HI-SPEED DIGITAL DESIGN" [10.1.E ] y en la nota de aplicación Nº75 "High-speed board design" de ALTERA.[10.1.B ]

Dada la cantidad de señales a encaminar y que muchas de ellas son de alta velocidad, se optó por un diseño de 4 capas, las exteriores se utilizan para señal y las interiores para tener un plano de tierra y potencia. Con esto se consigue tener un plano de tierra muy cerca del plano de señal, reduciendo la impedancia característica de las pistas de alta frecuencia y minimizando la inductancia mutua entre pistas. Se intentó encaminar la mayor parte de señales por la cara de componentes dado que el plano de tierra está más próximo a este.

6.5.3.1. Lineas de transmisión.

Un circuito compuesto por dos dispositivos interconectados mediante una una pista sobre un plano de tierra puede ser estudiado como un circuito de parámetros distribuidos o de parámetros concentrados.

En los circuitos de parámetros concentrados, puede considerarse que el voltaje en toda la pista es uniforme. Mientras que en los circuitos de parámetros distribuidos, la pista debe ser tratada como una línea de transmisión, que presenta sobretiros, oscilaciones y atenuaciones.

El comportamiento del circuito está determinado por las siguientes relaciones:

Siendo Tr el tiempo de levantamiento de la señal y Tpd el tiempo de propagación.

El tiempo de propagación depende de la constante dieléctrica (Er) del material entre la pista y el plano de tierra, y el largo de la pista (l).

 T_{pd} = l/V_p = l \sqrt{E_r}/C_

Con

 C_0 = 3 \times 10^8 m/s

Tiempo de levantamiento
El tiempo de levantamiento de la señal está dado por las características del dispositivo que genera la señal y el tipo de carga al que esta conectado.

La carga del bus PCI y la memoria SDRAM pueden aproximarse a capacitores de 40pf.

El siguiente gráfico muestra la corriente de salida entregada por los drivers del FPGA ACEX (Iol) en función del voltaje de salida (Vol).

output_current.GIF

Basándonos en los cálculos propuestos en la nota de aplicación Nº75 de Altera, el tiempo de levantamiento será aproximadamente: 1.1ns

Parámetros distribuidos o concentrados
El largo de pista (l) límite a partir del cual el comportamiento del circuito debe considerarse de parámetros distribuidos se puede calcular como:

 l > T_r C_o / (4 \sqrt{E_r}) = 3.9 cm Se tomó en cuenta este valor al momento de ubicar los componentes y encaminar las pistas, tratando, siempre que fuese posible, no superarlo.

6.5.3.2. Crosstalk

El crosstalk entre las pistas es causado por corrientes inducidas entre ellas. Se percibe como pulsos en lineas adyacentes a aquellas lineas en las que se produce un cambio de voltaje.
Este efecto depende de la inductancia mutua entre pistas (Lm), del tiempo de levantamiento de las señales (Tr) y la impedancia característica del circuito que genera el cambio (Ra). Estos términos se relacionan de la siguiente forma:

 Crosstalk = L_m / (R_a T_r)

Por lo general al momento de diseñar el impreso el único parámetro que podemos controlar es Lm, dado que Ra y Tr estarán fijados por los componentes seleccionados. En algunos FPGA de Altera, el valor de Tr puede ser aumentado al momento de programarlo, mediante una opción de síntesis.

La inductancia mutua puede ser de tipo sélfico o capacitivo, en circuitos digitales el primer tipo es el que más influye en el crosstalk.

La inductancia mutua entre lineas depende de la distancia entre estas y la distancia al plano de tierra.

 L_m = L \times \frac{1}{ 1+ (s/h)^2 }

Donde L es la inductancia de una de las pistas, s la distancia entre las pistas y h la distancia al plano de tierra.

Por lo cual los caminos para disminuir el crosstalk son:

Se debe evitar dejar aberturas o ventanas en el plano de tierra, debajo de las pistas de señal, ya que esto hace que el camino de retorno de las corrientes sea más largo aumentando la L de la pista.

"groundplanehole.jpg"

La corriente de retorno del driver en A no puede fluir directamente debajo de la pista A-B ya que hay un hueco en el plano de tierra. Por lo tanto la única opción posible es que fluya alrededor del hueco. Este camino forma un lazo aumentando así la inductancia del camino A-B.
La corriente desviada también se solapa con el lazo de corriente formado por pista C-D y su camino de retorno de corriente. Este solapamiento produce una gran inductancia mutua entre las pistas A-B y C-D.
La inductancia de la traza A-B es aproximadamente:

 L = 5D \ln(D/W)

Donde L es la inductancia, D es el largo del hueco en sentido perpendicular a la pista, y W es el ancho de la pista.

Se tuvo especial cuidado en que no quedaran demasiadas vías juntas que atravesaran el plano de tierra de manera de no originar largas aberturas en dicho plano.

Dado que la L también depende del largo de la pista, se intentó minimizar esta distancia siempre que fuese posible.

6.5.3.3. Terminación de lineas y adaptación de impedancias

Diferencias entre la impedancia de un emisor y un receptor hacen que se produzcan reflexiones a lo largo de la línea de transmisión que los une. Estas reflexiones son perjudiciales pues hacen que la línea demore más tiempo en alcanzar el valor de reposos y los cambios de voltaje debido a las continuas reflexiones entre el driver y la carga inducen corrientes en pistas adyacentes, favoreciendo el efecto de crosstalk.

Para minimizar estos efectos se optó por utilizar resistencias en serie a la salida de las patas que manejan lineas de alta velocidad. El propósito de estas es:

Dado que la función de esta resistencia es adaptar la impedancia del driver a la de la pista, solo es necesario colocarla en la salida del driver. Por esto se empleó únicamente en líneas manejadas en un solo sentido, por ejemplo pistas de reloj y bus de control de memoria. No se colocaron resistencias en las líneas que comunican el FPGA con el bus PCI o en el bus de datos de la memoria por ser bidireccionales.

El valor de la resistencia serie debe ser elegido para que la suma de la impedancia del driver más la de la resistencia sea igual a la impedancia de la pista.

Cálculo de impedancia de las pistas
De la bibliografía consultada obtenemos que la impedancia de las pistas puede aproximase por:

 Z_0 = \frac{87}{\sqrt{ E_r + 1.41 } \times \ln(5.98 \times \frac{h}{0.8w+t})}

Siendo:

En el libro BLACK MAGIC HI-SPEED DIGITAL DESIGN se realizan los cálculos con los siguientes valores genéricos:

Zo=45 ohm.

La nota de aplicación Nº75 de Altera recomienda utilizar resistencias en serie de 33 ohm, cuyo valor es consistente con los cálculos realizados anteriormente.
Por esta razones se adquirieron resistencias de 33 ohm.

El proceso de fabricación escogido hace que los parámetros sean los siguientes:

Para estos valores, la impedancia es de Zo = 76 ohm

En este caso, el valor de las resistencias de ajuste de impedancia debería ser de cerca de 60 ohm, pero ya habían sido adquiridas de 33 ohm

Esta diferencia de valores puede hacer que el ajuste de impedancias no este siendo tan eficiente, pero dado que se está en el entorno de los valores a partir de los cuales las pistas deben ser modeladas como lineas de transmisión, es de esperar que no surjan inconvenientes.
En la práctica, no hemos tenido ningún tipo de problema.

6.5.3.4. Retardos de propagación en pistas de reloj.

La señal de reloj debe ser distribuida desde el PLL hasta el FPGA, la memoria y el conector de expansión.

En un diseño digital, se debe de asegurar que los flancos de la señal de reloj lleguen al mismo tiempo a todos los componentes para preservar el sincronismo.
Para esto debe asegurarse que todas las pistas de reloj tengan longitudes similares.

En nuestro diseño se encaminó primero la pista más larga y finalmente se agregaron bucles en el resto de las pistas de forma de mantener igual su longitud.

6.5.3.5. Distribución de potencia a integrados

Para disminuir el ruido de baja frecuencia causado por la fuente de poder debe filtrarse la alimentación en los puntos de entrada a la placa y en las patas de alimentación de los dispositivos.
Para eso Altera recomienda utilizar en los puntos de entrada capacitores electrolíticos de 100 uF. En los casos en que se usan reguladores de voltaje o conversores dc-dc, estos capacitores deben colocarse lo más cerca posible de la salida.
Estos capacitores no solo filtran el ruido de baja frecuencia de la fuentes sino que proveen la corriente necesaria cuando varias salidas cambian simultáneamente en el circuito.

Los integrados producen ruido de alta frecuencia en el plano de alimentación. Para filtrar este ruido generalmente se utilizan capacitores de desacople colocados lo más cerca posible de las patas de alimentación y tierra del dispositivo.
El uso de planos de alimentación y tierra paralelos y separados por un dieléctrico también funciona como capacitor de desacople, reduciendo el ruido de alta frecuencia.

Dado que un plano de alimentación cubre un área relativamente grande, su resistencia es baja, permitiendo la distribución uniforme de la alimentación a todos los componentes de la placa.

6.6. Fabricación

6.6.1. Fabricación de impresos de prueba de conversores dc-dc y PLL

Para estar seguros de que los diseños de los conversores dc-dc eran correctos, se realizaron circuitos impresos de prueba de una capa. La disposición de los componentes y la forma de las pistas era lo más parecida posible a la que se utilizaría en la placa IIE-PCI.

reg_25.jpg

Esta placa permitió hacer pruebas de la estabilidad de los conversores frente a cargas cercanas al valor máximo para el que fueron diseñados. Se observó que al colocar 2 capacitores en paralelo en la salida, el ripple en la fuente disminuía debido a que bajaba la resistencia serie equivalente de los capacitores. Por este motivo se dejó previsto un par de pads extra en cada salida de los conversores para soldar otro capacitor en caso de ser necesario.

reg25_10u_y_12upar10u.jpg

El gráfico superior muestra la salida del regulador con un capacitor de 10uF en la salida. El inferior con un capacitor de 10uF en paralelo con uno de 12uF. Todos los capacitores son cerámicos y de baja resistencia serie equivalente.

También se fabricó un circuito de prueba para el PLL, de forma de estar seguros de su correcto funcionamiento con el cristal seleccionado.

pll.jpg

La experimentación necesaria para realizar estas placas de pruebas caseras fue transmitida y aportó ideas que han sido provechosas más allá del grupo de proyecto. El proceso se documentó en: http://iie.fing.edu.uy/~sebfer/pcb/index.htm.

6.6.2. Herramientas

6.6.2.1. Software de layout.

La placa fue diseñada utilizando la versión de prueba del software Protel (www.protel.com).

Se probaron otros programas de diseño y se eligió éste debido a que era relativamente sencillo de utilizar y era suficientemente potente como para nuestro diseño.

El Protel es capaz de generar archivos gerber a partir de los diseños realizados. Los archivos gerber son utilizados ampliamente por la industria de fabricación de circuitos impresos.

El enrutamiento automático fue descartado luego de varios intentos fallidos. Se probaron enrutamientos automáticos completos y parciales (con ciertos grupos de señales enrutadas previamente en forma manual), pero ninguno fue satisfactorio, ya que utilizaban una excesiva cantidad de vías o no lograban una disposición óptima para las pistas.
Finalmente se realizó manualmente el enrutamiento de todas las señales.

6.6.2.2. Software de visualización de archivos gerber

Para verificar los diseños se utilizó el visor de archivos gerber View Mate, de la empresa Pentalogix (www.pentalogix.com).

6.6.3. Fabricación del impreso

Se fabricaron dos placas en PCBExpress (www.pcbexpress.com) a un costo de U$S150 por placa.

Características de la fabricación:

Los archivos necesarios para la fabricación son los siguientes:

6.7. Montaje

Se montaron los conversores DC-DC y se verificó que el voltaje obtenido era el deseado.

Para montar la primera placa, por falta de experiencia el la soldadura de integrados de distancia entre patas de 1.60mm, recurrimos a CCC del Uruguay S.A. Gentilmente, la gente de CCC realizó la soldadura del FPGA y de la memoria SDRAM.

El resto de los componentes superficiales (capacitores, pll, zócalo EPC2, resistencias, etc.) fueron soldados por los integrantes del proyecto. Para esto, sólo fue necesario un soldador JBC de 25W de punta fina (1.5 mm), una pinza fina y flux líquido.

El montaje de la segunda placa y el cambio del FPGA y la memoria de la primera placa fueron realizadas enteramente por los integrantes del proyecto, utilizando los siguientes elementos:

Aunque se utilizó un microscopio de 20 aumentos (con zoom), se comprobó que 12 aumentos son suficientes. Es imprescindible que sea bifocal y que tenga suficiente campo. La iluminación coaxial (mismo eje visual) tampoco es necesaria, es más, el brillo que produce en las patas metálicas hace el trabajo más dificultoso.

6.7.1. La aventura de la soldadura superficial en casa

Y se mandaron a la guerra con un tenedor. En realidad era más que un tenedor.

El soldador de punta fina (0.4 mm) lo usaron para tocar las patas de las cucarachas negras, de a una sola a la vez. Se los prestó gentilmente Etienne, y tenía una perilla para poder elegir qué era lo que querían derretir.

Pero las patitas eran tan finitas, o los gurises estaban tan chicatos ya, que para poder ver algo no tuvieron más remedio que pedirle la lupa al Dr.Mondueri. La lupita era enorme, de microcirugía, decía. Parece que con 15 aumentos ya daba, pero eso si, tiene que ser para los dos ojos, sino no se sabe a que altura uno viene arrimándose con el soldador y puede hacer cualquier desastre.

Por ahí habían escuchado que el flux era bárbaro para que el pegote saliera bien prolijo. Así que se compraron algo que se parecía a un sylvapen bien grueso llenito de flux, y no dudaron ni un segundo: antes de poner la cucaracha, vamos a pasarle esta agüita sobre los pads.

Apoyaron las cucarachas sobre la placa, y como era de esperar, no se quedaban quietas. Iban de un lado a otro y nunca querían dejar las patas quietas sobre los pads. Entonces surgió la idea de meterle un dedo encima, pero despacito, ya que no les queríamos quebrar ninguna pata, pobrecitas. Para la cucaracha grande, estaba bien, pero para la chiquita, era imposible. Entonces el Dr. les prestó una pinza chata. Con la pinza se aguantaba la cucaracha por el lomo, y con la otra arrimaba el soldador para pegarle un par de patitas de cada esquina y ver si iba quedando derechita en su lugar, inquieta.

Que descubrimiento el flux! Al arrimar el soldador, tocando sobre el pad, el estaño que ya venía en la placa se fundía y gracias al flux, corría y se le subía por la patita de la cucaracha, dejando un menisco de estaño muy bonito.

En muy pocas patitas, faltaba un poco de estaño, pero la punta del soldador era muy finita y el estaño tiene algo que se llama tensión superficial, entonces no había forma sencilla de cargar una nadita en la punta del soldado, era o nada o mucho. Pero con un poco de maña se lograba hacer alguna pelota de estaño y dejar tremendo cortocircuito. Con una malla de cobre para quitar estaño, se dejaba todo limpito de nuevo, pero había una pata que no quería. Terca la pata, no quería que el estaño se derritiera. Intrigados, le preguntaron porqué, y la cucaracha les enseño que esa era una pata de tierra, y que se habían olvidado del "thermal relief". Pero claro, se habían olvidado, y el pad estaba todo pegado al plano de tierra, y el soldador no le hacía ni cosquillas.

Ahí fue que sacaron del bolsillo el soldador de siempre, ese que compraron en primero de facultad, el de punta medianita (2mm). Al arrimarlo era del ancho de 3 patas de la cucaracha mínimo, pero con cuidadito pudieron limpiar el enchastre.
Pero les faltaba una herramienta, y la fueron a buscar, que estaba bien guardadita. Se hicieron de la paciencia que les estaba faltando, una bien grande.

Y así, despacito, fueron pegando patita por patita, hasta que quedaron todas bien pegadas.

Te vas a mover, si, seguro.

6.7.2. Recomendaciones para soldadura superficial casera

Antes que nada es interesante afirmar que es perfectamente posible soldar en casa componentes superficiales, incluyendo integrados de alta densidad de patas, como ser el FPGA o la SDRAM de la placa.

Las herramientas necesarias son:

El microscopio o la lupa permiten ver la soldadura que se está realizando. Las patas y los pads son demasiado pequeños para trabajar con ellos a simple vista.

Se debe empezar por soldar los circuitos más complicados, en nuestro caso los integrados de FPGA y SDRAM. De esa forma se logra trabajar con una placa sin componentes que puedan llegar a molestar al acercar el soldador.

Pre-estañar los pads de los integrados no es necesariamente bueno, ya que el estaño se acumula y no deja que todas las patas apoyen a la vez. Basta utilizar flux que haga correr el estaño que ya está en el pad y el que se agrega con la punta del soldado.

Las patas que conectan a planos de tierra y alimentación, si no tienen thermal reliefs, son muy difíciles de soldar, y más complicado aún es limpiar el estaño que se acumule en ellas, ya que entre el calor disipado por el plano y la cinta de cobre, el soldador no es capaz de derretir el estaño.

Después de soldar los circuitos integrados, es conveniente empezar a colocar el resto de los componentes desde adentro hacia afuera, para no molestarse al soldar, y dejar los componentes más altos para el final.

El soldador fino es solamente útil para las patas bien finas de los integrados. Para el resto es más útil el soldador mediano, ya que entrega el calor necesario por los pads y componentes de más tamaño. Hasta los bancos de resistencias son más cómodos de soldar con el soldador mediano.

El flux es indispensable, casi tanto como el estaño. Es lo que permite que las soldaduras pequeñas queden bien terminadas.

6.8. Costo de la placa

El costo de la placa se detalla a continuación:
Item Costo (en dólares americanos)
FPGA 70
SDRAM 7.8
EPC2 33.5
otros componentes 69.671
circuito impreso 150
total 330.971

El costo supera los U$S 250 esperados. Hay que tener en cuenta que este es el costo de un prototipo, y simplemente haciendo una tirada de 10 impresos, el costo unitario sería de U$S 48, logrando así un costo final de U$S 230.
También hay que tener en cuenta que el FPGA utilizado es el más rápido de la gama, y por ende el más caro.

6.9. Pruebas

Para probar el funcionamiento de FPGA y la EPC2 en la placa, se realizó un diseño sencillo que manipula los leds de acuerdo a la posición de los dip switches y las señales de reloj provenientes del PLL.

Para probar el funcionamiento de la memoria SDRAM, se realizó un diseño que escribe y lee datos del la memoria, comparando lo leído con lo escrito. Para esto se utilizó un core IP controlador SDRAM disponible en opencores.org.

Para probar el funcionamiento del FPGA con el bus PCI se utilizó el core PCI de Altera y una aplicación que consistía en una memoria RAM implementada dentro del mismo FPGA. Se verificó que la placa era reconocida por el sistema y se podían realizar lecturas y escrituras a la RAM dentro del FPGA.

En una de las pruebas, la placa se conectó corrida en el bus PCI lo que produjo daños irreparables en el FPGA y supuestamente en la memoria RAM.

6.10. Conclusiones

El objetivo de bajo costo fue alcanzado, ya que de realizar un tiraje de 10 placas el costo sería de U$S230.

Fue posible diseñar, fabricar y probar una placa PCI de propósito general, que funcionó en el primer intento. El diseño es satisfactorio y cumplió con los objetivos propuestos.

Realizando las pequeñas correcciones mencionadas más abajo, es una placa que puede producirse para ser utilizada en diseños genéricos que hagan uso del bus PCI.
Sin crear grandes expectativas, creemos que es un producto final que puede posicionarse favorablemente como placa de desarrollo. Todos los componentes utilizados son fácilmente conseguibles, se utilizaron FPGAs y memorias baratas y la fabricación del circuitos impresos puede realizarse a costos razonables. El montaje de las partes tampoco requiere equipamientos demasiado sofisticados.

6.10.1. Mejoras y recomendaciones

Afortunadamente no hubo ningún error de gravedad tal que impidiera utilizar el diseño original de las placas. Sin embargo, mencionamos a continuación posibles mejoras o correcciones a tener en cuenta.

6.10.1.1. Contactos a planos de alimentación y tierra

Realizar soldaduras en las patas de alimentación y tierra de los componentes resultó dificultoso debido a que el gran tamaño de los planos de tierra y alimentación disipa el calor y no permite llegar a la temperatura de fusión del estaño. Para esto se debieron haber realizado las conexiones de los pads de soldadura a los planos a través de "thermal reliefs".

La idea es disminuir el área de contacto con el plano en cuestión. Esto se logra haciendo huecos entre el pad o vía y el plano, cómo se indica en el siguiente diagrama:

thermal_relief.jpg

6.10.1.2. Señales de reloj

Se proponen una serie de modificaciones que permitirían utilizar una combinación más variada de fuentes de reloj, incluyendo una entrada externa de reloj para que el funcionamiento stand-alone no este limitado a frecuencias del cristal y sus múltiplos.

El diagrama modificado sería el siguiente:
reloj_fixed.jpg

Las combinaciones de soldaduras de resistencias de 0 ohm entre pads de acuerdo a cómo se desean encaminar las señales de reloj se muestran en la siguiente tabla:

FPGA GCLK1 FPGA CLK, SDRAM y EXP Cortocircuitar
PCI PCI x N P1-E2, QN1-QN2
PCI cristal x N P3-P4, P5-QN2
PCI reloj externo x N P3-P4, P5-QN2, E1-E2
cristal cristal x N QN1-QN2
reloj externo reloj externo x N E1-E2, QN1-QN2
reloj externo cristal x N E1-P1, P3-P4, P5-QN2

6.10.1.3. Jumpers cerca de zócalo EPC2

Los jumpers de PLL fueron colocados muy cerca del zócalo de la EPC2, lo que dificulta su extracción con la pinza para encapsulados PLCC.

6.10.1.4. Modificar máscara antisoldante

Al momento de generar la máscara antisoldante se debe verificar que esté presente entre las patas de los integrados. Esto facilita el trabajo de soldadura ya que dificulta la formación de gotas de estaño entre las patas. En la placa IIE-PCI, no hay máscara antisoldante entre las patas del FPGA y de la memoria SDRAM.

nosoldermask.jpg

6.10.1.5. Omisiones en silkscreen

Las indicaciones sobre posiciones de los jumpers no se incluyeron en el archivo de silkscreen.
Tampoco se incluyó la polaridad de los LEDs.

6.10.1.6. Compra de componentes previa a realizar el layout de la placa.

Es recomendable adquirir todos los componentes antes de realizar el layout de la placa, ya que a veces no es sencillo conseguir los componentes deseados. Al elegir un reemplazo, no siembre posee el mismo footprint o encapsulado, lo cual indefectiblemente modifica el layout del circuito impreso.

Es extremadamente útil poseer los componentes ya que al colocarlos todos sobre una impresión en papel del diseño de la placa, pueden indicar eventuales problemas que no son visibles en un simple dibujo. También permite corroborar que los footprints de los componentes coinciden con el diseño realizado.