PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE...

129
PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE ESCUELA DE INGENIERIA PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY Memoria para optar al título de Ingeniero Civil Electricista Profesor Supervisor: MARGELO GUARINI Santiago de Chile, 2008

Transcript of PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE...

Page 1: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE ESCUELA DE INGENIERIA

PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE

ALTO DESEMPEÑO

JUAN PABLO CARAM WIGDORSKY

Memoria para optar al título de Ingeniero Civil Electricista

Profesor Supervisor: MARGELO GUARINI

Santiago de Chile, 2008

Page 2: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE ESCUELA DE INGENIERIA Departamento de (departamento)

PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO

DESEMPEÑO

JUAN PABLO CARAM WIGDORSKY

Memoria presentada a la Comisión integrada por los profesores:

MARCELO GUARINI

MIGUEL RIOS

SERGIO ENRIQUE GUTIÉRREZ

Para completar las exigencias del título de Ingeniero Civil Electricista

Santiago de Chile, 2008

Page 3: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

ii

A mis Padres, hermanos y amigos, que me apoyaron mucho.

Page 4: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

iii

Page 5: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Índice

1. Motivación y Objetivos 91.1. Plataforma Educacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.2. Placa Madre multipropósito . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2. Teoría 122.1. Lógica Programable y FPGAs . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.1.1. Introducción y Reseña Histórica . . . . . . . . . . . . . . . . . . . . 122.1.2. Arquitectura de los dispositivos lógicos programables . . . . . . . . 132.1.3. Lenguajes de modelamiento de hardware . . . . . . . . . . . . . . . 14

2.2. Dimensión Analógica de la Electrónica Digital . . . . . . . . . . . . . . . . 152.2.1. Interconexiones como Líneas de Transmisión . . . . . . . . . . . . . 162.2.2. Tipos de Líneas de Transmisión . . . . . . . . . . . . . . . . . . . . 172.2.3. Efectos de las Líneas de Transmisión sobre las señales . . . . . . . . 192.2.4. Línea con fuente de baja impedancia y carga de alta impedancia . . . 202.2.5. Corrientes de retorno y Continuidad en las líneas de transmisión . . . 222.2.6. Interferencia cruzada o Crosstalk . . . . . . . . . . . . . . . . . . . 242.2.7. Distribución de Poder . . . . . . . . . . . . . . . . . . . . . . . . . 262.2.8. Rebote de Tierra (Ground Bounce) . . . . . . . . . . . . . . . . . . . 282.2.9. Simulación y modelamiento . . . . . . . . . . . . . . . . . . . . . . 292.2.10. Conclusión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

3. Diseño 323.1. Diseño del Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3.1.1. FPGA, Configuración y Alimentación . . . . . . . . . . . . . . . . . 323.1.2. Periféricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.1.3. Microcontrolador . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

3.2. Diseño del Circuito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.2.1. Diseño resistente a errores . . . . . . . . . . . . . . . . . . . . . . . 383.2.2. JTAG y configuración del FPGA a 3.3V . . . . . . . . . . . . . . . . 393.2.3. Controlador USB en la cadena JTAG . . . . . . . . . . . . . . . . . 393.2.4. USB con alimentaciones del bus USB y de la placa . . . . . . . . . . 403.2.5. Circuitos de Reseteo . . . . . . . . . . . . . . . . . . . . . . . . . . 413.2.6. Buses de las memorias SRAM y SDRAM . . . . . . . . . . . . . . . 41

1

Page 6: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

3.2.7. Configuración de la fuente de poder . . . . . . . . . . . . . . . . . . 423.2.8. ICSP a 5V y PIC alimentado con 3.3V . . . . . . . . . . . . . . . . . 423.2.9. Particularidades en el circuito de conversión A/D . . . . . . . . . . . 43

3.3. Diseño del PCB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433.3.1. Restricciones al diseño . . . . . . . . . . . . . . . . . . . . . . . . . 433.3.2. Parámetros de las líneas de transmisión . . . . . . . . . . . . . . . . 453.3.3. Proceso de diseño . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463.3.4. Diseño flexible . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

3.4. Recursos, Técnicas y Herramientas . . . . . . . . . . . . . . . . . . . . . . . 543.4.1. Software de Diseño . . . . . . . . . . . . . . . . . . . . . . . . . . . 543.4.2. Software de Simulación . . . . . . . . . . . . . . . . . . . . . . . . 553.4.3. Otro Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553.4.4. Herramientas de Soldadura y Montaje . . . . . . . . . . . . . . . . . 563.4.5. Instrumentos de Medición . . . . . . . . . . . . . . . . . . . . . . . 57

4. Implementación y verificación del prototipo 594.1. Fabricación de la PCB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594.2. Adquisición de componentes . . . . . . . . . . . . . . . . . . . . . . . . . . 594.3. Ensamblaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594.4. Verificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

4.4.1. Prueba de Fuente de Poder . . . . . . . . . . . . . . . . . . . . . . . 604.4.2. Verificación de la cadena JTAG . . . . . . . . . . . . . . . . . . . . 604.4.3. APP1: Divisor de reloj . . . . . . . . . . . . . . . . . . . . . . . . . 614.4.4. Programación del PIC vía ICSP . . . . . . . . . . . . . . . . . . . . 634.4.5. APP2: Generación de onda cuadrada en el PIC . . . . . . . . . . . . 634.4.6. APP3: Comunicación entre el PIC y el FPGA . . . . . . . . . . . . . 644.4.7. APP4: Comunicación Serial . . . . . . . . . . . . . . . . . . . . . . 654.4.8. APP5: Lectura de los ADCs y transmisión serial al PC . . . . . . . . 674.4.9. APP6: Uso de memoria FLASH . . . . . . . . . . . . . . . . . . . . 684.4.10. APP7: Uso de memoria SRAM . . . . . . . . . . . . . . . . . . . . 694.4.11. APP8: Comunicación USB . . . . . . . . . . . . . . . . . . . . . . . 71

5. Aplicaciones y ejercicios propuestos 72

2

Page 7: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

6. Producción 756.1. Adquisiciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

6.1.1. Circuitos Impresos . . . . . . . . . . . . . . . . . . . . . . . . . . . 756.1.2. Componentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

6.2. Ensamblaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756.2.1. Indicaciones Generales . . . . . . . . . . . . . . . . . . . . . . . . . 756.2.2. Procedimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

6.3. Pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

3

Page 8: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Índice de cuadros

1. Tiempo de propagación de campos electromagnéticos en distintos medios. . . 172. Distribución de condensadores balanceada [Xapp623]. . . . . . . . . . . . . 273. Fuentes de poder para las secciones de comunicación USB y TTL/CMOS del

chip USB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404. Restricciones técnicas de Advanced Circuits para la promoción de prototipos

de 4 capas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445. Tiempos de levantamiento Tr para distintas configuraciones de los estándares

de E/S del FPGA, LVCMOS33 y LVTTL según los modelos IBIS de Xilinx,y la longitud critica de la línea de transmisión correspondiente. . . . . . . . . 45

6. Opciones de ensamblaje. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

4

Page 9: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Índice de figuras

1. Arquitectura de una CI GAL22V10 (Lattice Semiconductor) . . . . . . . . . 132. Arquitectura de un FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153. Tipos de líneas de transmisión utilizadas en circuitos digitales. . . . . . . . . 184. Formas de onda en una línea de transmisión ideal en circuito abierto. . . . . . 215. Simulación de una compuerta CMOS de la familia HC sobre una línea de 75

Ω y un retardo de 100 ps, terminada en 1.0 MΩ. . . . . . . . . . . . . . . . . 226. Misma configuración de la figura 5 pero con una línea con retardo de 3ns. . . 227. Camino de las corrientes de retorno a alta y baja frecuencia. . . . . . . . . . 238. Corrientes de retorno y plano de tierra interrumpida. . . . . . . . . . . . . . . 249. Corrientes de retorno y cambio de lado de una pista. . . . . . . . . . . . . . . 2410. Mecanismos de interferencia cruzada. . . . . . . . . . . . . . . . . . . . . . 2511. Circuito equivalente de un condensador de desacoplo en una PCB y su curva

de impedancia en función de la frecuencia. . . . . . . . . . . . . . . . . . . . 2612. Ejemplo de impedancia versus frecuencia de un sistema de distribución de

potencia [Xapp623]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2813. Causa del Rebote de tierra. . . . . . . . . . . . . . . . . . . . . . . . . . . . 2814. Diagrama de bloques del diseño . . . . . . . . . . . . . . . . . . . . . . . . 3315. Circuito externo de reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4116. Geometría de la PCB de 4 capas de Advanced Circuits . . . . . . . . . . . . 4517. Dibujo tri-dimensional y huella de un empaquetado de circuito integrado

DPAK. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4618. Casos críticos (a) y (b): Líneas con 2 cargas. Caso (c): líneas largas paralelas. 4919. Especificación de la geometría y materiales del PCB para el programa Hy-

perLynx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5020. Simulación del caso (a) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5121. Simulación del caso (b) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5122. Simulación del caso (c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5323. Osciloscopio Tektronix 5054B-NV . . . . . . . . . . . . . . . . . . . . . . . 5824. Cadena JTAG de la Plataforma de Desarrollo . . . . . . . . . . . . . . . . . 6125. Formas de onda de APP1. Izquierda: LVTTL a 2mA. Derecha: LVTTL a 8mA. 6226. APP2, Onda rectangular generada en el PIC . . . . . . . . . . . . . . . . . . 6327. APP3, FSK Controlada desde el PIC . . . . . . . . . . . . . . . . . . . . . . 6528. Señal serial en niveles TTL (canal 1) y RS232 (canal 2). . . . . . . . . . . . 65

5

Page 10: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

29. Terminal que la operación de la aplicación APP4. . . . . . . . . . . . . . . . 6630. Señal original en osciloscopio . . . . . . . . . . . . . . . . . . . . . . . . . 6731. Sinusoidal capturada. (a) Datos en terminal serial. (b) Gráfico para el ADC

número 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6832. APP6 en terminal serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6933. Máquina de estados APP7 . . . . . . . . . . . . . . . . . . . . . . . . . . . 7034. Terminal exhibiendo la actividad de la aplicación. . . . . . . . . . . . . . . . 7035. Fotografía de la plataforma completamente armada y operando. . . . . . . . . 7236. Esquemáticos: Diagrama principal . . . . . . . . . . . . . . . . . . . . . . . 8137. Esquemáticos: Configuración del FPGA . . . . . . . . . . . . . . . . . . . . 8238. Esquemáticos: Memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8339. Esquemáticos: Comunicaciones . . . . . . . . . . . . . . . . . . . . . . . . 8440. Esquemáticos: Microcontrolador . . . . . . . . . . . . . . . . . . . . . . . . 8541. Esquemáticos: I/O del FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . 8642. Esquemáticos: Fuente de Poder . . . . . . . . . . . . . . . . . . . . . . . . . 8743. Esquemáticos: Puertos de Expansión . . . . . . . . . . . . . . . . . . . . . . 8844. Serigrafía cara superior. No a escala. . . . . . . . . . . . . . . . . . . . . . . 8945. Cobre cara superior. No a escala. . . . . . . . . . . . . . . . . . . . . . . . . 8946. Cobre capa de alimentación (Vcc). No a escala. . . . . . . . . . . . . . . . . 9047. Plano de tierra (Negativo). No a escala. . . . . . . . . . . . . . . . . . . . . 9048. Serigrafía cara inferior (Invertida). No a escala. . . . . . . . . . . . . . . . . 9149. Cobre cara inferior (Invertida). No a escala. . . . . . . . . . . . . . . . . . . 91

6

Page 11: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Resumen

Esta memoria explora y analiza los conceptos teóricos y prácticos del desarrollo de cir-cuitos electrónicos digitales de alta velocidad, y describe el diseño e implementación de unaplataforma de desarrollo de aplicaciones digitales mediante lógica programable y basada enun FPGA1. Los propósitos de este desarrollo son aplicar la teoría estudiada, proveer unaplataforma de aprendizaje de estos conceptos y permitir el desarrollo de aplicaciones digi-tales avanzadas, mediante técnicas y hardware modernos. Para facilitar el aprendizaje se pro-porcionan ejemplos del uso de esta plataforma. Sin embargo, este trabajo se enfoca ante todoen los aspectos de hardware, mientras que las aplicaciones y su programación son ejerciciopara el lector.

1Field Programmable Gate Array, que en castellano significa Arreglo de Compuertas programable en Ter-reno. Este concepto es central en esta memoria y es desarrollado en profundidad en el capítulo 2

7

Page 12: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Abstract

This document explores and studies the concepts involved in the development of high-speed digital circuits. It describes the design and fabrication of a multi-purpose programmablelogic circuit board based on an FPGA2. It’s intended to provide a hardware platform to aid inthe teaching and learning of advanced digital electronics concepts. Examples and guidelinesfor software application development are provided. However this work focuses mainly in thehardware and analog aspects of digital design. The programmable logic tasks are left to theapplication developer.

2Field Programmable Gate Array. This is a crucial concept in this thesis and will be developed further inchapter 2.

8

Page 13: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

1. Motivación y Objetivos

1.1. Plataforma Educacional

La motivación original de este proyecto surgió con la intención de facilitar la ampliacióndel currículo de Ingeniería Eléctrica de la Pontificia Universidad Católica de Chile (PUC) enel área de la electrónica digital. Si bien al momento de desarrollar esta memoria existen ramosde aplicación en sistemas digitales, tales como Procesamiento Digital de Señales, Arquitec-tura de Computadores y Comunicaciones Digitales, el aprendizaje en el currículum podríafavorecerse y potenciarse, mediante la ayuda de tecnologías, metodologías y procedimien-tos prácticos, que permitan la implementación de sistemas que en otros ramos son descritasúnicamente en forma teórica.

La importancia de completar la cadena de aprendizaje en sistemas digitales no solo radicaen el nexo entre los conceptos básicos y los de aplicación. También en que, dados los requer-imientos del mercado mundial, la Ingeniería Eléctrica a nivel educacional universalmente seestá enfocando cada vez más en la electrónica digital.

El autor ha tenido la oportunidad de conocer y participar poco tiempo atrás del programaeducacional en Ingeniería Eléctrica de la universidad Carnegie Mellon (Pittsburg, Pensylva-nia, EE.UU.). Pudo observar allí la marcada tendencia hacia la electrónica digital del cur-rículo. Los ramos cubren desde los aspectos de fabricación en silicio hasta el diseño digitalasistido por computadora, donde a alumnos de tercero y cuarto año de pregrado ya se lesasigna el diseño completo de CPUs a nivel de silicio como proyecto de ramo.

Aspectos como la actual duración del plan de estudios, limitaciones presupuestarias, yla realidad tecnológica nacional, sin duda hacen poco factible agregar al currículo de inge-niería eléctrica de la PUC ramos con tal nivel de profundidad. El alumno, sin embargo puedeadquirir conocimientos con un nivel de abstracción levemente mayor, si se le entregan losconceptos necesarios para comprender lo que puede fabricarse hoy, así como los bloquesconstructivos básicos de diseño y fabricación actuales de circuitos digitales.

Los FPGA son una parte de estos bloques constructivos. A la vez, estos últimos estánconstruidos sobre la base de bloques constructivos menores interconectables mediante soft-ware. Con FPGAs, complejos sistemas digitales pueden diseñarse e implementarse en formade productos finales (cuando el número de unidades es pequeño), o como prototipos para serfabricados posteriormente como ASICs (Application Specific Integrated Circuits). Estas dosvías son las preferidas en la industria a menos que la complejidad del sistema requiera algúntipo de control específico sobre los parámetros de fabricación en el sustrato. Si los alumnos

9

Page 14: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

alcanzan el dominio de los conceptos involucrados en la estructura y diseño con FPGAs ydesarrollan habilidad práctica con ellos, estarán capacitados para diseñar los más complejossistemas digitales a nivel de prototipo o producción.

El acceso a una placa de desarrollo con FPGA, que sea versátil, de bajo costo y a lavez de alto desempeño, permite acceder a la experiencia práctica necesaria para alcanzarlos objetivos mencionados. Adicionalmente, una adecuada documentación, con ejemplos dediferente complejidad, son necesarios para acelerar el proceso de aprendizaje y hacer factiblela creación de proyectos en ramos relacionados.

Los conceptos teóricos que acompañen el hardware deben ser transmitidos a los alumnosa través de ramos específicos, cuyos nombres podrían ser, por ejemplo “Electrónica Digitalde Alta Velocidad” y “Diseño Digital asistido por Computadora”, donde se describiesen lastécnicas de diseño a nivel de hardware y a nivel de software respectivamente. Estos ramosrequieren ser dictados por profesores especializados en el área de electrónica digital.

Se espera que esta memoria pueda proveer un resumen de gran parte de los conceptosteóricos para aquellos posibles ramos, y que otorgue una estructura lógica para transmitirlosa los alumnos, así como una fuente de literatura y una guía para el diseño y confección dehardware digital sofisticado.

1.2. Placa Madre multipropósito

Además de cumplir con los objetivos educacionales se espera que el diseño del hardwarepropuesto cumpla con condiciones de versatilidad y desempeño, de manera tal que permitasu uso como parte de sistemas más complejos, en el ejercicio profesional y la investigación.

Estas son característica difícil de encontrar en placas de desarrollo con FPGAs disponiblesen el mercado, debido a que estas últimas están diseñadas con el objetivo de familiarizar aldesarrollador con las funcionalidades del dispositivo específico embedido en la placa, y noa obtener su máximo desempeño. Tampoco están diseñadas para utilizarlas embedidas enproductos de tipo comercial.

La forma de alcanzar estos objetivos, que sin duda no son sencillos - y considerando queel autor no tiene experiencia ni educación formal en profundidad en esta área, sino sólo auto-aprendizaje y el desarrollo de algunos proyectos personales relacionados - será hacer uso delos recursos que el alumno dispone actualmente en su entorno de trabajo. Esto es, el National

Radio Astronomy Observatory (NRAO) en los EE.UU, que cuenta con un equipamiento depunta y expertos a nivel mundial en esta y otras áreas.

Ante un resultado exitoso, el hardware desarrollado podrá ser de utilidad para desarrollar

10

Page 15: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

productos a la medida o de consumo, en las más variadas áreas, como son, por ejemplo elprocesamiento digital de señales, control automático, instrumentación, telecomunicaciones,y muchos otros.

11

Page 16: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

2. Teoría

2.1. Lógica Programable y FPGAs

2.1.1. Introducción y Reseña Histórica

Hacia el principio de los años 80, los medios para desarrollar circuitos digitales eran,principalmente, la interconexión de numerosos circuitos integrados (chips) de compuertaslógicas discretas en un gran circuito impreso3, o la fabricación de un circuito integrado espe-cializado (aquel en que toda la aplicación es fabricada en un único chip) que implementaselas funciones específicas deseadas. La primera opción tenía las desventajas de tener un altocosto unitario, gran tamaño, bajo desempeño debido a las longitudes de la interconexiones, yde tomar mucho tiempo en su fabricación. La segunda opción tenía las desventajas de tenerun costo inicial muy alto, haciéndola muy desfavorable para diseños con pocas unidades deproducción o prototipos.

En aquellos tiempos los dispositivos de lógica programable - entendidos como circuitosintegrados cuyos componentes y estructura son fijos pero que cuentan con elementos queel usuario puede modificar para definir o alterar su función - estaban limitados a memo-rias PROM (Programmable Read-Only Memory) para la implementación de lógica combi-nacional4. A la vez primeros PLDs (Programmable Logic Devices) contaban sólo con unascuantas decenas de compuertas lógicas que podían interconectarse, en el momento de sufabricación o, posteriormente por el usuario5. Estas limitaciones hacían que los circuitos delógica programable disponibles en aquel entonces, sólo fueran de interés para aplicacionesde baja densidad y baja velocidad.

En 1984, Ross Freeman, fundador de la compañía Xilinx6, inventó el FPGA. El diseñode los primeros FPGAs estaba basado en el de los CPLDs (Complex Programmable Logic

Devices), predecesores de esta tecnología, pero de mucha menor densidad. Los FPGAs in-cluyen un gran número de compuertas, tanto combinacionales como secuenciales, un flexiblesistema de interconexión, y re-programabilidad por el usuario, lo que resuelve los principalesinconvenientes que enfrentaba hasta entonces el diseñador.

En otras palabras, los FPGAs son dispositivos lógicos programables con muchas más

3O en un circuito tipo wire-wrap.4Donde las entradas al circuito son la dirección de memoria en la PROM y las salidas son las líneas de datos.5Electrónicamente, y cuyo borrado (deshacer las interconexiones) generalmente no era posible, o mediante

exposición a luz ultravioleta.6Xilinx, San José, California. www.xilinx.com. Actualmente es la empresa líder en la fabricación de circuitos

lógicos programables como FPGAs y CPLDs.

12

Page 17: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Figura 1: Arquitectura de una CI GAL22V10 (Lattice Semiconductor)

macroceldas (a definir más adelante) que sus predecesores, muchos más recursos de inter-conexión, y cuya estructura ha madurado durante casi tres décadas para que los diseños lógi-cos basados e implementados en ellos resulten más eficientes.

2.1.2. Arquitectura de los dispositivos lógicos programables

La figura 1 muestra la arquitectura de un dispositivo de lógica programable GAL22V10de Lattice Semiconductor. A pesar de ser un dispositivo muy limitado en comparación conlos CPLDs y FPGAs en términos de flexibilidad, velocidad y número de compuertas, llevacasi dos décadas en el mercado y, estructuralmente, es representativo de la arquitecturas delos actuales dispositivos lógicos programables. Es un ejemplo de los circuitos lógicos de laantigüedad, pero su legado es fundamental. Este cuenta con 22 pines, todos los cuales puedenoperar como entradas, pero solo 10 de ellos como salidas. Estructuralmente, cuenta con unagran matriz de interconexión de las 22 entradas, que conectan a la vez con las 10 etapas desalida. Cada etapa de salida contiene varias compuertas lógicas y registros, cuyo conjuntose conoce como Macro-celda. En la figura están identificadas como OLMCs (Output Logic

Macrocells) y su estructura se muestra en el costado derecho.La figura 2 muestra la estructura típica de un FPGA destacando sus principales elementos,

que se describen a continuación.Los elementos fundamentales de la arquitectura de los FPGAs son los bloques lógicos

13

Page 18: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

configurables (CLB, Configurable Logic Blocks), descendientes de las Macro-celdas, y quepermiten la implementación de lógica combinacional mediante elementos conocidos como“Look-up tables”, similares a una memoria, donde las entradas equivalen a la dirección y lasalida al valor en memoria correspondiente. Permiten también la implementación de lógicasecuencial mediante registros que pueden ser utilizados como flip-flops o latches.

Los bloques lógicos se encuentran distribuidos físicamente en forma matricial en el FP-GA, y pueden interconectarse con cualquiera de los bloques lógicos vecinos, con un bloquede entrada y salida u otro recurso en el FPGA.

Los bloques de entrada y salida (E/S) permiten interfasar el circuito digital interno alFPGA con el exterior. Éstos permiten controlar las características analógicas de las señalesdigitales, como por ejemplo, si una línea de datos será referida a tierra o será diferencial(utilizando 2 pines), los niveles de voltaje, las velocidad de los flancos de subida y bajada yla capacidad de corriente de cada pin.

La mayoría de los fabricantes incorpora algún tipo de controlador de reloj, que permite,a partir de una señal de reloj externa de frecuencia fija, generar distintas frecuencias y alterarsu fase (introducir retardo). Estos sistemas pueden ser de tres tipos: completamente digitalesy que se conocen como DDLs (Digital Delay Loops), donde la síntesis de frecuencias seimplementa mediante retardos, contadores y otras compuertas; completamente analógicoscuya implementación es mediante PLLs (Phase-Locked Loops); o híbridos.

La mayoría de los fabricantes incorporan memoria RAM y elementos para acelerar opera-ciones matemáticas requeridas en el procesamiento digital de señales (DSP), principalmentemultiplicadores.

El detalle de la estructura de los distintos circuitos integrados de lógica programablepuede encontrarse en su respectiva hoja de datos. Es esencial conocer la arquitectura de estosdispositivos si se ha de optimizar el uso de recursos y el desempeño en el diseño final.

2.1.3. Lenguajes de modelamiento de hardware

Los lenguajes de modelamiento de hardware o HDLs (Hardware Description Languages)son un tipo de lenguaje computacional que permite describir circuitos digitales en su dimen-sión temporal (comportamiento) y espacial (física). Los primeros HDLs fueron creados afines de los años 70, y los dos más utilizados actualmente, Verilog y VHDL (VHSIC - Very

High Speed Integrated Circuit - Hardware Description Language), fueron creados en 1985 y1987 respectivamente.

Estos lenguajes difieren de los lenguajes de computador en hecho que están especialmente

14

Page 19: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Figura 2: Arquitectura de un FPGA

diseñados para describir procesos paralelos, lo que es una característica propia del hardware.Adicionalmente, algunos de estos lenguajes permiten describir un set de estímulos externospara simular el comportamiento de un diseño.

En general, permiten describir hardware con distintos niveles de abstracción, facilitandoel diseño de sistemas complejos, dejando que un software compilador realice la tarea detraducir el diseño a nivel físico. El compilador está optimizado para aprovechar al máximo losrecursos físicos provistos por un determinado dispositivo de lógica programable. El procesode traducción de un diseño en HDL a una especificación de interconexión de recursos en undispositivo de lógica programable se conoce como síntesis.

El desarrollo de aplicaciones con FPGAs se realiza hoy mediante lenguajes de descrip-ción de hardware. El desarrollador debe dominar estos lenguajes para diseñar aplicacionesdigitales. Sin embargo, debe tener claros los niveles de abstracción que se están utilizando.Éstos van desde el nivel más bajo y que corresponde a la estructura interna de los bloquesconstructivos del dispositivo específico que se pretende utilizar, hasta la representación al niv-el de transferencia de registros utilizada en el lenguaje de su elección para lograr aplicacioneseficientes.

2.2. Dimensión Analógica de la Electrónica Digital

Los circuitos digitales han alcanzado velocidades de reloj y tiempos de transición queacentúan las características “parásitas” (como se conocen las no idealidades de los compo-

15

Page 20: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

nentes electrónicos a bajas frecuencias) en las interconexiones de los componentes. En laactualidad, la interconexión de circuitos integrados digitales presenta un gran desafío y esparte esencial del diseño del sistema.

El diseño presentado en esta memoria considera velocidades de reloj y tiempos de tran-sición de estado que requieren un análisis analógico electromagnético para poder predecirsu comportamiento. A continuación se presenta un resumen de los conceptos fundamentalesque permiten enfrentar el problema de diseño en cuestión y que constituyen la base teóricade esta memoria y del hardware desarrollado.

2.2.1. Interconexiones como Líneas de Transmisión

Toda interconexión eléctrica7 entre dos puntos es una línea de transmisión. Cuando lalongitud de esta conexión es relativamente pequeña en comparación con la longitud de ondade la señal transmitida por ella, es válido hacer aproximaciones basándose en el supuestode que la onda se transfiere infinitamente rápido. De esta manera, asumimos que cuando undeterminado voltaje y corriente se presentan en cierto instante en un extremo de la línea, estosson invariables a lo largo de toda su longitud.

Para tratar una conexión como línea de transmisión se utiliza como criterio la longitud deésta. A saber, una longitud tal que causa efectos importantes sobre las señales transmitidaspor ella. Esto ocurre usualmente cuando la longitud de la línea l y la longitud de onda λ de lacomponente de mayor frecuencia de la señal transmitida cumplen con la siguiente relación8:

l >λ

6(1)

En el caso de las señales digitales, la mayor frecuencia relevante (correspondiente a λen la ecuación 1) puede ser de varios órdenes de magnitud por sobre la frecuencia de reloj,ya que se trata de ondas (idealmente) cuadradas, que contienen armónicas de magnitudesdependientes de los tiempo de elevación Tr y caída de los flancos de las señales. La frecuenciaa considerar como máxima relevante en una señal digital, en tanto la potencia de la señal porsobre dicha frecuencia es una fracción despreciable de la potencia total de la señal, está dadapor:9:

7De dos conductores, donde uno es considerado para las corrientes de retorno.8Este criterio es sólo de referencia y su validez dependerá de la sensibilidad de la aplicación.9Esta también es una aproximación. El nombre fknee, donde knee significa rodilla en ingles, proviene de la

característica gráfica del espectro de una señal digital donde se produce un incremento en la pendiente negativade la amplitud. La frecuencia a la que ocurre este incremento en la pendiente (punto que denominamos knee orodilla) se considera como la frecuencia máxima relevante.

16

Page 21: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Cuadro 1: Tiempo de propagación de campos electromagnéticos en distintos medios.Medio Retardo Tp [ns/m] Constante del dieléctrico εr

Aire (Ondas de Radio) 3.35 1.0Cable Coaxial (75 % velocidad) 4.45 1.8Cable Coaxial (66 % velocidad) 5.08 2.3

FR4 PCB, pista externa 5.51-7.09 2.8-4.5FR4 PCB, pista interna 7.09 4.5

Alumina PCB, pista interna 9.45-10.63 8-10

fknee =0,5

Tr

(2)

Para el cálculo de la longitud de onda es necesario conocer la velocidad de propagaciónde ésta, la cual depende únicamente del dieléctrico10 a través del cual la onda se propaga. Elcuadro 1 presenta los tiempos de propagación en algunos medios (dieléctricos) comunes.

Teniendo la información de la tabla conviene escribir la ecuación 1 en función del tiempototal de propagación T = Tp × l y el tiempo de levantamiento de una señal digital Tr como:

T >Tr

3(3)

2.2.2. Tipos de Líneas de Transmisión

La figura 3 muestra las secciones transversales de 4 tipos comunes de líneas de trans-misión. Entre estos, Microstrip y Stripline son los más comunes en circuitos impresos digi-tales. Ambos pueden coexistir en un mismo circuito impreso de varias capas, donde aquellaspistas en las caras de la placa corresponden a los primeros, mientras que los segundos corre-sponden a las pistas en sus capas internas entre planos de tierra.

En el caso de Stripline, las líneas de campo eléctrico sólo cruzan el dieléctrico del circuitoimpreso, por lo tanto, la constante efectiva o permitividad del dieléctrico es la del material dela placa. Para Microstrip en cambio, las líneas de campo que emergen del lado superior delconductor, cruzan el aire antes de penetrar en el dieléctrico. La permitividad efectiva depende,entonces, de cuánto se concentre el campo eléctrico bajo la pista, en comparación con cuántocruza el aire, lo que a la vez depende de la geometría de la línea.

En [Johnson93] se pueden encontrar fórmulas para calcular parámetros de distintos tiposde líneas de transmisión en función de su geometría y del dieléctrico.

10La constante del dieléctrico εr se conoce también como permitividad relativa del dieléctrico.

17

Page 22: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Figura 3: Tipos de líneas de transmisión utilizadas en circuitos digitales.

Para Microstrip, las siguientes aproximaciones para la impedancia natural Z0 y el tiempode propagación Tp entregan buenos resultados cuando 0,1 < w/h < 2,0 y 1 < εr < 15,donde w, h y t son el ancho de la pista, la separación entre la pista el plano de tierra, y elespesor del conductor respectivamente. εr es la permitividad realtiva del dieléctrico:

Z0 =87√

εr + 1,41ln

(5,98h

0,8w + t

)[Ω] (4)

Tp = 3,35√

0,475εr + 0,67 [ns

m] (5)

Para Stripline, las siguientes aproximaciones son válidas cuando w/b < 0,35 y t/b <0,25, donde w, b y t son el ancho de la pista, la separación entre ambos planos de tierra y elespesor del conductor respectivamente:

Z0 =60√εrln

(1,9b

0,8w + t

)[Ω] (6)

Tp = 3,35√εr [

ns

m] (7)

18

Page 23: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

2.2.3. Efectos de las Líneas de Transmisión sobre las señales

La respuesta en frecuencia entre la fuente y la carga a través de una línea de transmisión,considerando infinitas reflexiones entre la carga y la fuente, está dada por [Johnson93]:

S∞ =A(ω)Hx(ω)T (ω)

1−R2(ω)H2x(ω)R1(ω)

(8)

A(ω) representa la fracción de la señal que es transmitida desde la fuente hacia la línea.Depende de la impedancia de salida Zs de la fuente y de la impedancia natural de la línea Z0.Z0 es la impedancia instantánea que “ve” una señal hacia la línea de transmisión. Esto causaque una señal que emerge de la fuente se vea afectada por un divisor de voltaje durante eltiempo que toma a la señal en viajar por la línea y reflejarse de vuelta, afectando su amplitudcon un factor A(ω):

A(ω) =Z0(ω)

Zs(ω) + Z0(ω)(9)

Este efecto puede observarse en la figura 4, donde la señal en el origen solo alcanza unafracción de su amplitud final en el flanco de subida.

HX(ω) es la respuesta de la línea a una distancia X de la fuente y considera las pérdidasy el desfase causado por el comportamiento LC distribuido11:

HX(ω) = e−X√

(R(ω)+jωL)(jωC) (10)

T (ω) representa cuánto es transmitido hacia la carga de impedancia ZL, mientras queR2(ω) representa cuánto es reflejado de vuelta a la fuente.

T (ω) =2ZL

ZL(ω) + Z0(ω)(11)

R2(ω) =ZL(ω)− Z0(ω)

ZL(ω) + Z0(ω)(12)

R1(ω) representa cuánto es reflejado nuevamente de la señal incidente en la fuente devuelta hacia la línea.

R1(ω) =Zs(ω)− Z0(ω)

Zs(ω) + Z0(ω)(13)

11La inductancia y capacitancia por unidad de longitud están dadas por L = Z0Tp y C = Tp/Z0 respectiva-mente. Estas relaciones se desprenden de que Z0 =

√L/C y Tp =

√LC.

19

Page 24: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Estas ecuaciones resumen los efectos que las líneas de transmisión tienen sobre las señalesque viajan por ellas. Es importante destacar que siempre se producirán reflexiones cuandohaya una discontinuidad en la impedancia, y que siempre se verán afectadas la amplitud y lafase a lo largo de la línea.

Es importante destacar que los parámetros y ecuaciones presentadas en esta sección sontodos funciones de la frecuencia debido a los materiales involucrados en la fabricación delcircuito. En general, las variaciones de los parámetros debido a la frecuencia se presentan amuy altas frecuencias. Esto se debe a fenómenos como el efecto pelicular, donde las corri-entes tienden a viajar por la superficie de los conductores (siguiendo el camino de mínimainductancia) causando un aumento en la resistividad del conductor, así como pérdidas en eldieléctrico, lo que se debe a que la resistividad del material comienza a reducir su valor.

2.2.4. Línea con fuente de baja impedancia y carga de alta impedancia

El efecto más evidente de las líneas de transmisión utilizadas en circuitos digitales de unsolo circuito impreso (sin cables de interconexión), se debe a que la impedancia de salida delas compuertas lógicas es muy baja y es comparable a la impedancia natural de la línea, y alhecho que la impedancia de la carga (la impedancia de entrada de las compuertas lógicas) esmuy alta y típicamente capacitiva.

La figura 4 muestra, el voltaje entregado por una compuerta cuya resistencia de salida es10Ω y su tiempo de levantamiento es de 1ns, así como el voltaje recibido en una compuertacuya impedancia de entrada es de 5pF . La señal se transmite por una línea de transmisiónideal cuyo tiempo de propagación es de 10ns y Z0 = 50Ω.

En este caso, T (ω) ≈ +2, R1(ω) ≈ −1 y R1R2 ≈ −1, lo que resulta en sucesivoscambios de signo de las señales reflejadas, produciendo oscilaciones. Éstas tienen un períodoigual a 4 veces el tiempo total de propagación en la línea y su constante de decaimiento estádada por:

τ =X√LC

−ln(|R1(2πfknee)R2(2πfknee)|)(14)

Las formas de onda pueden comprenderse sobre la base de que las reflexiones en el desti-no son positivas y de amplitud prácticamente igual a la magnitud del flanco incidente, y queen el origen éstas son de valor negativo y amplitud similar.

El problema de esta situación es que debido a la amplitud de las oscilaciones posterioresa un flanco de subida o bajada, el voltaje puede interpretarse con un valor lógico erróneo, par-

20

Page 25: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

4 5 6 7 8 9 10 11 12 13

x 10−7

−2

0

2

4

6

8

Tiempo [s]

Vol

taje

[V]

OrigenDestino

Figura 4: Formas de onda en una línea de transmisión ideal en circuito abierto.

ticularmente en señales de reloj que afectan al sistema mediante un flanco. Adicionalmente,se reduce el margen disponible para tolerar ruido de diferentes índoles.

Simulación

La figura 5 muestra un modelo de simulación bajo un software especializado en la simu-lación de compuertas digitales y su efecto sobre las líneas de transmisión. La compuerta eneste caso es un modelo SPICE de la etapa de salida de una compuerta de la familia 74HCalimentada con 5V, cuyo tiempo de levantamiento es aproximadamente 6 ns. La línea detransmisión es de 75 Ω, y un tiempo de propagación de 100 ps, que es considerablementemenor al tiempo de levantamiento de la compuerta (la línea es muy corta).

Ya que la línea es tan corta, aún cuando la carga de 1 MΩ está muy desbalanceada conla impedancia natural de la línea, se puede observar en el resultado de la simulación, quela forma de onda en el origen y el destino son coincidentes. No se produce sobrepaso nioscilaciones.

21

Page 26: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

0 10 20 30 40 50−1

0

1

2

3

4

5

6

Forma de onda en el origen y el destino en una línea muy cortay carga de alta impedancia

Tiempo [ns]

Vol

taje

[V]

Tr≈ 6ns

Figura 5: Simulación de una compuerta CMOS de la familia HC sobre una línea de 75 Ω yun retardo de 100 ps, terminada en 1.0 MΩ.

La figura 6 sin embargo muestra los resultados de la simulación donde se ha reemplazadola línea de transmisión por una cuyo tiempo de propagación es de 3 ns. Las reflexiones en eldestino causan un sobrepaso debido a la suma de las ondas incidente y reflejada del mismosigno. En el origen, el flanco de subida pierde impulso (toma más tiempo en alcanzar sumáximo), debido a que la compuerta “ve” 75 Ω por más tiempo (Esto puede puede calcularseen forma aproximada como Tr + 2Tp ≈ 6ns+ 2× 3ns = 12ns y es visible en la figura 6).

0 10 20 30 40 50−2

−1

0

1

2

3

4

5

6

7

Formas de onda en el origen y el destino en una líneade transmisión con 3ns de tiempo de propagación.

Tiempo [ns]

Vol

taje

[V]

DestinoOrigen

Figura 6: Misma configuración de la figura 5 pero con una línea con retardo de 3ns.

2.2.5. Corrientes de retorno y Continuidad en las líneas de transmisión

Al trabajar con líneas de transmisión Microstrip o Stripline, donde se tienen ampliosplanos de tierra, es importante comprender cuál es el camino que toman las corrientes deretorno a través de ellos y por qué.

22

Page 27: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

(A) Alta Frecuencia

(B) DC o baja frecuencia

Fuente

Carga

Carga

Fuente

Plano de Tierra

Corriente de

retorno

Figura 7: Camino de las corrientes de retorno a alta y baja frecuencia.

Las corrientes que fluyen de la fuente hacia la carga están confinadas a la pista conduc-tora, sin embargo las corrientes de regreso a la fuente viajan por el plano de tierra y siempreseguirán el camino de menor impedancia. A frecuencias bajas, la resistividad del plano detierra es el factor dominante en la impedancia (el factor mínimo de la impedancia), por lotanto, las corrientes siguen el camino más corto (Figura 7 (B)). Sin embargo, a altas frecuen-cias, es la inductancia el factor dominante, por lo tanto, las corrientes de retorno seguirán elcamino que las minimice. Como la inductancia es proporcional al área que encierra el caminode la corriente, la mínima inductancia se obtiene cuando las corrientes de retorno viajan porel plano de tierra justo bajo la pista (Figura 7 (A)).

El caso A de la figura 7 es el que más nos concierne, dadas las posibles interrupcionesque puedan producirse en el camino ideal de la corriente de retorno. La figura 8 muestra unainterrupción en el plano de tierra bajo dos líneas de transmisión Microstrip. La corriente deretorno se ve obligada a bordear la interrupción. El área encerrada por el lazo de corrienteresulta en un incremento de la inductancia total de la línea de transmisión y, por lo tanto, deltiempo que toma en propagarse por ella una señal.

Otra discontinuidad en el camino de retorno de la corriente ocurre cuando una pista cam-bia de capa en el circuito impreso y el plano de tierra deja de estar inmediatamente adyacentea la pista. La figura 9 muestra un circuito impreso de 4 capas, en la cual la superior y lainferior son de señal, mientras que la segunda es plano de tierra y la tercera es plano de al-imentación. La señal se origina en la fuente y la corriente de retorno fluye por el plano detierra (Gnd) hasta que la pista cambia a la otra cara del circuito impreso. En este segmentoel plano de alimentación (Vcc) se interpone entre el plano de tierra y la señal, aislándolos

23

Page 28: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Figura 8: Corrientes de retorno y plano de tierra interrumpida.

C

C

CargaFuente

Gnd

Vcc

Figura 9: Corrientes de retorno y cambio de lado de una pista.

electromagnéticamente. El camino de retorno ideal para la corriente en este segmento es através del plano de alimentación. La forma de crear continuidad entre ambos planos (sin cor-tocircuitarlos, naturalmente), es mediante un condensador muy cerca del punto de cambio delado de la pista. Mientras más cerca se encuentre el condensador, menor será la inductanciade la línea.

2.2.6. Interferencia cruzada o Crosstalk

La figura 10 representa los 2 principales mecanismos por los cuales la señal en una pistapuede interferir la señal en una pista cercana. El primero (A) y el más importante, es quecualquier corriente inducirá un campo magnético alrededor de dicha corriente. Este campoa la vez puede inducir corriente en cualquier otra pista a la que enlace. La figura muestralas líneas de campo generadas por la corriente en la pista m, que a su vez enlazan la pista n

induciendo una corriente en ella. Este tipo de interferencia cruzada se conoce como interfer-encia inductiva, debido a que al compartirse flujo magnético entre las pistas existe inductancia

24

Page 29: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Gnd

m n

Gnd

m n

(A)

(B)

Figura 10: Mecanismos de interferencia cruzada.

mutua entre ellas. El segundo mecanismo (B) se debe a las corrientes de retorno por el planode tierra. La figura muestra las distribuciones de la corriente en el plano de tierra para lasseñales transmitidas en cada pista. Si las pistas están suficientemente cerca, las corrientes deretorno se pueden interferir.

En general, la interferencia cruzada entre dos pistas paralelas se mide como el porcentajede la amplitud del voltaje de la señal de la pista m que es inducido sobre la pista n. La interfer-encia cruzada es dependiente de la distancia D entre los centros de las pistas en cuestión y ladistancia entre las pistas y el plano de tierraH .K es función de los tiempos de levantamientopor las líneas y de la longitud en la cual las pistas se interfieren.

Crosstalk ∝ K

1 + (D/H)2(15)

La interferencia puede ser mucho más severa si se da el caso de la figura 8. En este caso,las superficies creadas por los lazos de corriente de ambas señales cubren un área común porla que atraviesan líneas de campo magnético de ambas señales. En este caso la interferenciacruzada es proporcional al área común de flujo magnético.

Lo mismo puede ocurrir cuando varias pistas cambian de capa en un circuito impreso. Sino hay un condensador que permita el flujo de corriente de retorno muy cerca del cambiode capa de la pista, las corrientes de retorno pueden ir muy lejos, creando grandes lazos decorriente por cuya área pueden pasar las líneas de campo de muchas otras señales.

25

Page 30: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

2.2.7. Distribución de Poder

La función del sistema de distribución de potencia en un circuito es responder a la cor-riente demandada por las cargas, y responder tan rápido como sea posible a los cambios endicha demanda. Cuando no se logra cumplir estas demandas, se observa un cambio en elvoltaje de alimentación de los dispositivos y esto, a la vez, afecta las señales trasmitidas enforma de ruido.

El consumo de potencia de los circuitos digitales modernos se concentra en las etapas deentrada y salida de los circuitos integrados. Este consumo a su vez, ocurre principalmentedurante las transiciones de estado y se debe a la baja impedancia de las etapas de salida y alcomportamiento capacitivo de las etapas de entrada.

Para permitir altas velocidades de reloj, las transiciones de estado deben ocurrir muyrápido, requiriendo altas corrientes por períodos muy breves. En otras palabras, se requierenI y dI/dt muy altos.

Para cumplir con estos requerimientos la fuente de alimentación de los circuitos integra-dos digitales debe tener la capacidad de corriente necesaria y una baja impedancia de salida,principalmente la inductiva.

Generalmente, las demandas transitorias en los circuitos digitales son tan altas que si seusase una fuente que sea capaz de suministrarla en régimen permanente, ella sería absurda-mente voluminosa. La forma de resolver esto es mediante condensadores conectados entrelos pines de alimentación y tierra de los circuitos integrados para proveer la corriente durantelas transiciones, y ubicados tan cerca de los pines de alimentación como sea posible paraminimizar la inductancia.

CI

L1

L2

LS

C

Z

F

(a) Circuito equivalente (b) Impedancia

Figura 11: Circuito equivalente de un condensador de desacoplo en una PCB y su curva deimpedancia en función de la frecuencia.

26

Page 31: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Cuadro 2: Distribución de condensadores balanceada [Xapp623].Valor Cantidad Tipo Inductancia Típica

470 uF a 1000 uF 4 % Tantalio E 2.8 nH1.0 a 4.7 uF 14 % X7R 0805 2.0 nH

0.1 a 0.47 uF 27 % X7R 0603 1.8 nH0.01 a 0.047 uF 55 % X7R 0402 1.5nH

La figura 11 (a) muestra el circuito equivalente del sistema de distribución de potenciacon un condensador de desacoplo12 (recuadro gris). El circuito equivalente de este último secompone de un condensador ideal C y una inductancia en serie Ls. Ls es una característicapropia del encapsulado del condensador, motivo por el cual al elegir un condensador para estepropósito (desacoplo), debe escogerse aquel con un encapsulado del menor tamaño posible.Igualmente, para un mismo encapsulado debe elegirse el condensador de mayor capacitancia.

L1 generalmente es de un valor relativamente alto, dado que es difícil ubicar la fuente devoltaje cerca de cada uno de los circuitos integrados. L2 es la inductancia entre el conden-sador y los pines de alimentación del circuito integrado. Esta inductancia puede minimizarseubicando el condensador lo más cerca posible de los pines de alimentación de CI. Esto últi-mo, no solo para minimizar la inductancia, sino también para minimizar el tiempo que tomanlos condensadores en entregar corriente al CI. El tiempo es igual a la velocidad de propa-gación en el medio por el doble de la distancia entre el condensador y el CI. A una distanciade λ/4 o superior, el condensador no puede entregar energía al CI. Una distancia adecuadaes < λ/40 [Xapp623].

La figura 11 (b) muestra la impedancia del condensador equivalente en función de lafrecuencia. A frecuencias bajo la frecuencia de resonancia indicada en el eje de las abscisas,el condensador se comporta como tal, mientras que por sobre la frecuencia de resonanciase comporta como inductancia. A la frecuencia de resonancia el condensador presenta sumínima impedancia, logrando su efectividad máxima.

Una regla empírica para el número y tamaño de los condensadores es agregar al menos,uno por cada par de pines de alimentación y tierra, ubicando los condensadores de encapsu-lado más pequeños más cerca de estos pines, y distribuido según el cuadro 2.

La figura 12 muestra un ejemplo de la impedancia total de los condensadores de desacop-lo del sistema de distribución de poder en un circuito. Al utilizar distintas capacitancias,encapsulados y factores de calidad Q, se obtiene un amplio ancho de banda efectivo.

12Nombre con el cual se conocen los condensadores utilizados con el fin de proveer corrientes transitorias.

27

Page 32: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

F

Z

1000100101

1

0.1

0.01

(Ohm)

(MHz)

2 x 680uF

Tantalum E7 x 2.2uF

X7R 0805

13 x 0.22uF

X7R 060326 x 0.022uF

X7R 0402

Figura 12: Ejemplo de impedancia versus frecuencia de un sistema de distribución de poten-cia [Xapp623].

GND

Via al plano

de tierra

Vcc

(A) (B)

Figura 13: Causa del Rebote de tierra.

2.2.8. Rebote de Tierra (Ground Bounce)

El rebote de tierra es un fenómeno que se debe a la inductancia entra el plano de tierrade un circuito impreso y la tierra interna a un circuito integrado. Esta inductancia dependede la longitud de la conexión entre ambas tierras. A esta longitud contribuyen la longitud delpin del circuito integrado y la longitud de la pista desde el pin hasta el plano de tierra. Estasituación se ilustra en la figura 13 (A).

El fenómeno que ocurre a causa de esta inductancia, es que el voltaje en la tierra inter-na al circuito integrado puede variar considerablemente con respecto a la tierra del circuitoimpreso. Cuando ocurre una transición lógica de “0” a “1” en la salida de la compuerta, lacorriente que fluye entre la tierra interna y externa presenta un dI/dt muy grande y de signo

28

Page 33: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

negativo, causando que el voltaje en la tierra interna al CI con respecto a la tierra del circuitoimpreso se haga negativa. Del mismo modo, al haber una transición de “1” a “0” en la salida,ocurre un dI/dt grande de signo positivo, causando un incremento en el voltaje de la tierrainterna con respecto a la del circuito impreso.

El efecto que producen estos cambios de voltaje en la tierra interna sobre el voltaje desalida de las compuertas es pequeño, sin embargo, como se puede observar en la figura 13 (B),el voltaje de entrada de la compuerta es comparado con un valor de referencia que es funcióndel voltaje de la barra de tierra interna al circuito integrado (que se encuentra conectada con latierra del circuito impreso mediante una inductancia). Por, las tanto variaciones en el voltajede tierra interno pueden inducir a una interpretación errónea del valor lógico de entrada.

En grandes circuitos integrados como los FPGAs, generalmente existen varios pines deentrada y salida por cada pin de tierra. Por lo tanto, la problemática del rebote de tierra esproporcional al número de pines de salida que estén simultáneamente cambiando de estadológico. Generalmente los fabricantes especifican el número máximo de pines de salida porcada pin de tierra que pueden estar simultáneamente en transición y que mantienen el rebotede tierra dentro de márgenes aceptables. Este criterio sólo considera la inductancia de lospines de tierra, la que es constante, mientras que la inductancia de la pista que conecta el pinde tierra al plano de tierra del circuito impreso, puede ser varias veces mayor, debiendo, porlo tanto, cuidarse de mantener su longitud tan corta como sea posible.

2.2.9. Simulación y modelamiento

La simulación del comportamiento analógico de los circuitos digitales requiere podermodelar, cuantitativa y temporalmente, sobretodo, las etapas de entrada y salida de las com-puertas digitales, así como las líneas de transmisión que las interconectan.

Las etapas de entrada y salida generalmente se modelan mediante estructuras SPICE,que representan la interconexión de elementos circuitales y sus características técnicas, obien, mediante modelos IBIS. Estos últimos describen el comportamiento de una compuertasolamente mediante tablas de voltaje y corriente en función del tiempo, y tienen la ventajapara el fabricante de no revelar cómo están construidas dichas compuertas.

Las líneas de transmisión son elementos pasivos lineales (Combinaciones R, L y C)aunque distribuidos, y existen como elementos discretos bajo SPICE y otros simuladoresde circuitos. Como se ha ilustrado anteriormente, sus parámetros son fáciles de calcular,sin embargo, en un circuito impreso pueden existir interacciones entre múltiples líneas detransmisión, o entre líneas de transmisión y otros elementos, como son por ejemplo las vías,

29

Page 34: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

interrupciones en los planos de tierra, etc. Estos fenómenos, aunque generalmente de carácterlineal, son mucho más difíciles de predecir y cuantificar, y más aún, de modelar mediante loselementos provistos por los simuladores de circuitos basados en SPICE o similares.

Cuando las frecuencias involucradas en un circuito son muy altas comienzan a cobrarrelevancia aspectos no-lineales como el efecto pelicular y las pérdidas en el dieléctrico. Am-bos son efectos resistivos en función de la frecuencia, aunque respectivamente, en serie o enparalelo con respecto a la línea.

Cuando se combinan muchos efectos como los recién descritos, el modelo SPICE delínea de transmisión resulta poco preciso y es preferible utilizar software especializado en elmodelamiento de líneas de transmisión. Ver 3.4.2.

En casos de complejidad extrema, es a veces necesario recurrir a la simulación electro-magnética, donde ya no se requiere utilizar equivalentes circuitales de líneas de transmisióny otros elementos presentes en un circuito impreso. En este caso, se modela mediante estruc-turas físicas tridimensionales de distintos materiales bajo el estímulo de ondas electromag-néticas. Naturalmente, este es el método más exacto y preciso, sin embargo, exige modelar elcircuito impreso como un objeto físico tridimensional. Esto que puede tomar mucho tiempo sies que el software de diseño de la PCB no facilita la trasformación. Requiere además, largostiempos de simulación y los programas disponibles son extremadamente costosos. Ejemp-los de este tipo de programas son Ansoft Designer, utilizado en la simulación de estructurasplanares como PCBs, y Ansoft HFSS, que permite la simulación de estructuras tridimension-ales complejas. Ver www.ansoft.com.

2.2.10. Conclusión

La teoría recién presentada, como en todas las otras disciplinas de la ingeniería, puedeser aplicada en forma analítica, experimental o en simulación para resolver un problema. En-tre los métodos analíticos aplicables al estudio de la dimensión analógica de la electrónicadigital es poco lo que se puede extraer que no haya sido ya resuelto y que se aplique comonorma. Si se entienden bien los fundamentos y modos de aplicación de estas normas, ellaspueden ser suficientes para resolver problemas y diseñar sistemas de un gran nivel de com-plejidad, es decir, circuitos con velocidades de reloj de hasta GigaHertz de frecuencia, y asíes como se ha procedido en el diseño del hardware que acompaña esta memoria. Durante elproceso de diseño del proyecto práctico de esta memoria, se ha recurrido a la simulación decasos extremos en que se transgreden estas normas, intentando verificar la funcionalidad yel desempeño. Por último, las simulaciones han revelado un margen de seguridad tal, que no

30

Page 35: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

se ha requerido validarlas mediante el uso intensivo de instrumentos de medición, salvo parailustrar algunos conceptos.

El análisis instrumental, al igual que la simulación, se vuelven indispensables cuandoocurren o se sospecha que pueden ocurrir muchos de los fenómenos antes descritos. En sis-temas complejos y a GigaHertz de frecuencias de reloj, recurrir a estos métodos se vuelveextremadamente costoso. Los equipos de medición, ya sea el osciloscopio, analizador de es-pectro, analizador de red, u otro, deben ser capaces de medir fidedignamente varias vecesmayor a la frecuencia de reloj para dar cuenta de la integridad de las señales. A la vez, estudi-ar un problema de diseño mediante experimentación puede requerir el desarrollo de sucesivosprototipos y otros subsistemas de prueba, incrementando todavía más el costo y el tiempo dedesarrollo.

Por otro lado, la simulación electromagnética, que es la opción actual para estudiar elcomportamiento de los sistemas digitales más complejos, involucra la adquisición de licen-cias de software cuyo costo es del orden de cientos de miles de dólares. A demás, tomamucho tiempo modelar los circuitos en estructuras tridimensionales de múltiples materiales,y se requiere de una poderosa infraestructura computacional para resolver estos modelos.

En resumen, cada ingeniero debe aprovechar las oportunidades de involucrarse en el de-sarrollo de hardware, y aprender de los éxitos y fracasos propios y ajenos para poder desarrol-lar un conjunto de normas propias. Ésta deberían permitirle diseñar en forma predominante-mente eficiente y segura y, a la vez, minimizar costos en estudios de laboratorio y licencias desoftware. [Johnson93] presenta varias configuraciones experimentales que son simples y debajo costo de implementación. Además existe software de simulación gratis aunque limitado.Ambas son alternativas que deben ser tomadas en consideración.

31

Page 36: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

3. Diseño

El diseño y a la implementación, son las dos etapas conducentes a obtener el productoentregado junto a esta memoria. La etapa de diseño puede descomponerse en 3 principalesniveles de abstracción: el nivel de sistema o funcional, el circuital esquemático y el físico opre-implementacional. Ese orden de abstracción descendente en el proceso es imperativo, nosolo por el ordenamiento jerárquico de las distintas etapas, sino además por la combinaciónde dicha jerarquía con la naturaleza diferente de cada nivel de abstracción. Ésta metodologíadifiere de aquella que se utiliza en el diseño en otras disciplinas, como es el caso del desarrollode software, en que ambas direcciones de nivel de abstracción son válidas al desarrollar unproyecto.

Las tres etapas de diseño pueden segmentarse a la vez en niveles de abstracción y desar-rollarse en nivel de abstracción creciente o decreciente. Esto se debe a que los segmentos deuna misma etapa son de igual naturaleza.

3.1. Diseño del Sistema

La plataforma de desarrollo está representada en un diagrama de bloques en la figura14. Ésta cuenta con 2 unidades de procesamiento, una de bajo nivel (de abstracción) paraprocesamiento paralelo de alto desempeño y que consiste en un FPGA, y otra de alto niv-el para procesos secuenciales, compuesta por un microcontrolador. Estos son los elementosque permiten a quien desarrolle aplicaciones con este hardware, implementar sus diseños víasoftware. Otras unidades en la plataforma permiten el almacenamiento de datos y la comuni-cación con el exterior.

3.1.1. FPGA, Configuración y Alimentación

El elemento principal del sistema es el FPGA. Se ha optado por el FPGA Spartan 3E deXilinx en su versión de 250k compuertas, ya que es el más grande (según número de CLBs)en encapsulado QFP13 - con pines en su periferia, a diferencia del encapsulado BGA14 quetiene contactos en su cara posterior y es mucho más difícil de soldar - y que es soportado porel software de desarrollo gratuito de Xilinx. Los principales recursos con los que cuenta estedispositivo se resumen a continuación:

Número equivalente de macroceldas: 550813QFP: Quad Flat Pack.14BGA: Ball Grid Array.

32

Page 37: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Figura 14: Diagrama de bloques del diseño

CLBs (Configurable Logic Blocks): 612Los Bloques Lógicos Configurables contienen LUTs (Look-Up Tables) que implemen-tan lógica combinacional, además de elementos de almacenamiento como Flip-Flops

o Latches, y que permiten el desarrollo de lógica secuencial.

Slices: 2448Cada CLB está compuesto de 4 Slices, que replican exactamente el mismo hardware.

RAM distribuida: 38KbElementos de memoria distribuida a través de los CLBs del dispositivo.

RAM en bloque: 216KbBloques exclusivos de 18Kb de memoria RAM de doble puerto (un puerto para entraday otro para salida).

Multiplicadores dedicados: 12Multiplicadores de 18 x 18 bits implementados mediante recursos exclusivos.

DCMs (Digital Clock Managers): 4Los Administradores Digitales de Reloj proveen distribución, retardo, multiplicación,división y ajuste de fase de las señales de reloj.

33

Page 38: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Máx. I/O: 17215

Los pines de entrada y salida permiten una amplia variedad de estándares digitales,facilitando en gran medida la interfaz con otros dispositivos.

Max. I/O diferenciales: 6816

Estos datos permiten estimar la complejidad y tamaño de los diseños que pueden ser imple-mentados sobre este dispositivo, aunque la práctica común es diseñar primero la aplicación yluego seleccionar el dispositivo. Naturalmente, en una plataforma de propósito general estono es posible. Información detallada del dispositivo puede encontrarse en la hoja de datos[DS312].

La gran mayoría de los FPGAs tiene memoria de configuración (aquella donde se alma-cena el programa que determina su funcionalidad) de carácter volátil, es decir, que no retienesu configuración cuando se desconecta el voltaje de alimentación. Por este motivo, la may-oría de los diseños con FPGA incorpora una memoria EPROM en el circuito impreso, conel propósito de almacenar la configuración del FPGA. El FPGA la leerá cada vez que sele aplique voltaje y entre en funcionamiento. Para este propósito pueden utilizarse distintostipos de EPROM, sin embargo, el más común es aquel para operar en modo “Master Serial”,donde el FPGA inicia la comunicación con le EPROM y lee los datos serialmente. Xilinxprovee memorias especializadas para este propósito. Esta ha sido la opción en el diseño de laplataforma. La hoja de datos de cada FPGA indica el tamaño requerido de la EPROM paraalmacenar su configuración.

Para cargar la configuración en el FPGA existen dos métodos en este diseño. En elprimero, el FPGA lee la configuración de la EPROM automáticamente al inicializarse. Enel segundo, la configuración puede escribirse externamente mediante la interfaz JTAG (Joint

Test Action Group, un estándar de comunicación y monitoreo de circuitos). Para escribir laconfiguración en la EPROM también se utiliza JTAG. Además, se ha incluido un chip decomunicación USB que permite comunicación JTAG, en caso que el usuario desarrolladorquisiera implementar software para utilizar USB como medio de programación.

El FPGA requiere 3 distintos voltajes de alimentación, 1.2V para su operación interna,2.5V para configuración, y 3.3V para entrada y salida (este último es una opción de diseñoy puede tomar otros valores). Ello determina, en parte, los requerimientos para la fuente de

15El diseño de la plataforma ya ha hecho uso de parte de estos recursos, por lo que la disponibilidad para elusuario es menor.

16Ídem.

34

Page 39: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

poder. En este caso se ha optado por generarlos a partir de un voltaje de alimentación principalde 5V.

Probablemente la aplicación más simple de un FPGA es la de matriz de interconexión.Por este motivo, en la figura 14 se lo ubica en el centro con todos los otros dispositivos a sualrededor y ninguno de ellos conectado directamente. En el FPGA estas interconexiones sepueden implementar de manera flexible y óptima.

3.1.2. Periféricos

Dos elementos esenciales en sistemas embedidos son el almacenamientos de datos y lascomunicaciones. Por este motivo se han incorporado 3 tipos de memoria: 4Mb de almace-namiento no volátil con tecnología Flash, y dos tipos de memoria RAM: SRAM (100MHz)y SDRAM (133MHz). La ventaja de la primera es que es muy fácil uso en términos de in-terfaz lógica con el dispositivo al cual se comunica, peor su tamaño (en bytes) y velocidadson relativamente reducidos debido a la tecnología utilizada en su implementación y estruc-tura interna. La segunda, tiene las ventajas de ser de gran tamaño y generalmente operar másrápido que las SRAM. Sin embargo, la interfaz de esta última es compleja, requiriendo queel usuario desarrolle código adicional para acceder a sus datos con una sencillez equivalentea la de la SRAM.

RS232 y USB son las interfaces de comunicación incorporadas. El circuito integrado USBelegido, el FT2232 de FTDI (www.ftdichip.com), es extremadamente flexible y cuenta con2 interfases independientes que pueden operar, desde el punto de vista del chip, como dobleFIFO, una para entrada y otra para salida, o en modo Bit-Bang, donde los pines de cada inter-faz pueden usarse como pines de entrada y salida en forma arbitraria. Adicionalmente, una delas interfases permite implementar distintos tipos de protocolos seriales, incluido JTAG. Poreste motivo, se ha diseñado en el circuito la posibilidad de conectar el chip USB como partede la cadena JTAG. Desde el punto de vista del PC, el fabricante provee controladores quepermiten acceder al dispositivo como si fuera un puerto serial, minimizando el desarrollo desoftware requerido, y también provee una interfaz de programación para acceder a funcionesmás complejas.

Se han incorporado también al diseño dos convertidores análogo-digitales (ADC) AD9283de Analog Devices (www.analog.com) cuyas características principales son:

8 bits de resolución de cuantización

100 Mega-muestras por segundo

35

Page 40: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Circuito Track & Hold incorporado

475 MHz de ancho de banda analógico (-3dB).

SNR = 46.5 dB @ 41 MHz a 100M-muestras/seg.

Rango de entrada de 1Vp-p.

Voltaje de referencia interno.

Estas características lo hacen muy versátil, ya que este ADC mantiene un excelente desem-peño en los distintos factores que definen su desempeño global y a lo largo de todo su rango deoperación. En [AN282] se explican en detalle los parámetros de desempeño, tipos de conver-tidores análogo-digitales, y los efectos prácticos bajo distintas aplicaciones. Este documentopermite interpretar en profundidad todas las características técnicas de estos convertidores,descritas en la lista anterior y en la hoja de datos del dispositivo.

Es buena práctica incorporar los ADCs en el lado digital de un sistema de procesamientode señales. A velocidades de reloj de 100MHz la integridad de señal (digital) se puede vermuy deteriorada si el dispositivo está lejos del FPGA. Si, por el contrario, se incorporan losADCs en una placa de procesamiento analógico externa, puede contaminarse severamente laintegridad de las señales analógicas en dicha placa debido al bus de datos digitales que debellegar hasta ella.

3.1.3. Microcontrolador

Se ha incorporado un microcontrolador de 8 bits, el PIC18F458 de Microchip (www.microchip.com)para realizar tareas de alto nivel (de abstracción), tareas que al ser programadas en el FPGA,pueden resultar tediosas y requerir una innecesaria cantidad de tiempo y recursos. Tener unmicrocontrolador en la plataforma de desarrollo permite concentrarse en el motivo principaldel proyecto basado en lógica programable. Al mismo tiempo, una interesante metodologíade desarrollo puede ser la de implementar funcionalidad prototipo en el PIC para transferirla,en etapas posteriores, al FPGA cuando se requiera mejorar el desempeño. También constituyeun desafío la forma en que se reparten en una aplicación, las tareas entre el microcontrolador,un dispositivo basado en una CPU y un programa, y un dispositivo de lógica programablecomo el FPGA. Este desafío involucra eficiencia y metodología en el diseño y desempeñofinal.

36

Page 41: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

El microcontrolador puede acelerar y simplificar el proceso de desarrollo de aplicacionesya que por una parte, es posible programarlo en lenguajes de alto nivel y, por otra, que muchosingenieros están familiarizados con la arquitectura del PIC.

Las características principales de este dispositivo se señalan a continuación:

Memoria de programa: 32KB (16384 Instrucciones)

Memoria RAM: 1536 Bytes

Memoria EPROM: 256 Bytes

I/O: 3317

ADC: 8 Canales de 10 bits de resolución

Comparadores Analógicos: 2

CCP (Capture, Compare and PWM (Captura, Comparación y Modulación por anchode pulso))

Puerto serial síncrono que soporta: SPI (Serial Peripheral Interface (Interfaz de per-iférico serial)) e I2C Maestro

Hasta 10 Mips18

Interrupciones con prioridad configurable

Multiplicador de 8 x 8 bits de un solo ciclo de instrucción

3 Pines de interrupción externa

3 Contadores, 2 de 16 bits, 1 de 8 bits

Puerto serial asíncrono

Interfaz CAN19 2.0B hasta 1 Mbps

Ejemplos en la distribución de tareas entre una CPU y un FPGA son muchos instrumentos demedición o procesamiento de datos, en que el FPGA realiza la medición y cálculos, mientrasque la CPU se encarga de la interfaz del usuario y otras funcionalidades secundarias delaparato.

17El diseño de la plataforma ya ha hecho uso de parte de estos recursos, por lo que la disponibilidad para elusuario es menor.

18Millones de instrucciones por segundo.19Controller Area Network, un estándar de comunicaciones industriales desarrollado por Bosch.

37

Page 42: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

3.2. Diseño del Circuito

Esta etapa de diseño permite implementar la funcionalidad explicitada en la sección an-terior, en función de los requerimientos específicos de cada componente. Para lograr esto,primero deben haberse elegido los componentes adecuados que permitan y faciliten la inter-faz entre ellos, así como la implementación de la funcionalidad deseada. Esto requiere estu-diar en profundidad las especificaciones técnicas (hojas de datos) de todos los componentesdel circuito. Es ésta la etapa en que se cometen la mayor cantidad de errores de diseño, porlo tanto es relevante recalcar la importancia de este proceso.

Al mismo tiempo, debe considerarse cómo afectarán al diseño del circuito impreso lasdecisiones de diseño que se toman a nivel de circuito . Las huellas (foot-prints) de cadacomponente deben diseñarse u obtenerse de una librería de componentes, considerándosela disponibilidad del mercado. Generalmente, es conveniente adquirir los componentes conanticipación para poder realizar mediciones para diseñar la huella.

El diseño de circuitos digitales es relativamente sencillo comparado con el diseño decircuitos analógicos a nivel esquemático. Por lo general el diseñador debe concentrarse másque nada en cómo satisfacer mejor las especificaciones de sistema. Más aún, en el caso deuna plataforma multipropósito como ésta, ello es crítico. Por otra parte, las hojas de datosde los distintos componentes describen el circuito de soporte que debe implementarse paraque aquellos operen correctamente. El diseñador debe mantenerse dentro de los márgenesespecificados y si, por algún motivo, debe o desea modificar estos circuitos, es importanteque comprenda su propósito para lograr mantener la funcionalidad con su propio diseño.

En esta sección se describen algunas estrategias utilizadas y algunas partes del circuitoque son relevantes al funcionamiento y uso del hardware desarrollado.

3.2.1. Diseño resistente a errores

Debe tenerse presente que en proyectos de este nivel de complejidad los errores de diseñoson frecuentes, e incluir en el circuito recursos que permitan implementar modificacionesposteriores a la fabricación del circuito impreso. En este caso, algunos de esto recursos son:

Resistencias de 0Ω: Éstas permiten cortocircuitar dos segmentos o dejarlos en circuitoabierto si no son soldadas en su lugar. Pueden también ser reemplazadas por resisten-cias de valor finito si fuese necesario.

Puentes de Soldadura: Cumplen el mismo propósito de las resistencias de 0Ω, sinembargo, permiten mayor paso de corriente.

38

Page 43: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Jumpers: Cumplen el mismo propósito que las resistencias de 0Ω, sin embargo, loscambios pueden ser realizados por el usuario sin requerir soldar o de-soldar compo-nentes.

Usar el FPGA como matriz de interconexión: Al conectar la gran mayoría de loscomponentes al FPGA, debido a su reprogramabilidad, éste puede usarse para inter-conectar componentes vía software, lo que flexibiliza el diseño.

Resistencias pull-up y pull-down: Si se estima que eventualmente podrían requerirse,pueden incluirse en el diseño. Si finalmente no se requieren, simplemente no son sol-dadas en su lugar.

3.2.2. JTAG y configuración del FPGA a 3.3V

La interfaz JTAG y la de configuración (comunicación con la EPROM de configuración)del Spartan 3E utilizan 2.5V. Algunos pines del FPGA son dedicados a estas tareas, perootros, luego de que la configuración del FPGA ha concluido, pueden utilizarse como pinesde E/S. La configuración estos pines para trabajar con 2.5V, requiere alimentar un banco deE/S20 completo a 2.5V, obligando al usuario a trabajar con todos los pines de ese banco adicho voltaje.

Es deseable evitar esta situación por dos motivos. Primero, porque en una plataforma dedesarrollo es preferible usar el/los estándares de E/S más comunes, que son LVCMOS33 yLVTTL33 que operan a 3.3V. Segundo, porque es más fácil encontrar programadores JTAGque operen a 3.3V que aquellos que operan a 2.5V.

Para lograr la operación de todos los bancos y la interfaz JTAG a 3.3V se han implemen-tado las modificaciones a la interfaz del FPGA, su memoria de configuración y el circuitode soporte según se describe en [Xapp453]. Dichas modificaciones se pueden observar en eldiagrama esquemático del proyecto (Ver Apéndice), figura 37.

3.2.3. Controlador USB en la cadena JTAG

Como ya se ha mencionado, el chip USB puede ser usado como dispositivo maestro oprogramador de la cadena JTAG. Sin embargo, sólo puede existir solo un dispositivo maestroen el circuito, por lo tanto, por defecto, este chip se ha dejado fuera de la cadena, aunque conla capacidad de incorporarlo, exclusivamente mediante configuración con jumpers.

20Los pines de E/S del XC3S250E están separados en 4 bancos, los que pueden alimentarse con distintosvoltajes para operar mediante distintos estándares de E/S.

39

Page 44: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Normalmente, los pines 3 y 5 del conector JTAG_TAP (Ver figura 39 del esquemáticodel proyecto en el Apéndice) se cortocircuitan dejando todos los demás desconectados. Estodeja al chip USB fuera de la cadena. Para incorporarlo, es necesario cortocircuitar los pines2 (TDI) y 3 (TDO) del conector JTAG (Figura 37), y cortocircuitar los pares 1 y 2, 3 y 4, 5 y6, 7 y 8, en el conector JTAG_TAP.

Con esta modificación debiera ser evidente cómo se ha reemplazado el conector JTAGpor el chip USB.

3.2.4. USB con alimentaciones del bus USB y de la placa

El chip USB requiere una alimentación de 5V para la sección de comunicación con elBUS serial USB y de 3.3V o 5V para sus buses de datos (interfaz con otros dispositivosTTL/CMOS). El bus USB provee 5V y hasta 500mA de corriente, por lo que puede usarseesta u otra fuente regulada de 5V para alimentar dicha sección del chip.

La hoja de datos del dispositivo proporciona esquemáticos para la distribución de podercon las siguientes configuraciones:

Cuadro 3: Fuentes de poder para las secciones de comunicación USB y TTL/CMOS del chipUSB.

Comunicación USB TTL/CMOSBus USB (5V) Bus USB (5V)Bus USB (5V) Bus USB regulado a 3.3VExterna a 5V Externa de 5VExterna a 5V Externa de 5V regulada a 3.3V

En el diseño se ha deseado usar el bus USB como fuente de 5V para la comunicaciónUSB. La placa puede ser alimentada externamente no sólo con 5V regulados, sino que aceptaleves variaciones, las que no serían apropiadas para alimentar el chip. Mientras tanto, se hadeseado alimentar la interfaz TTL/CMOS del chip mediante los 3.3V provistos por la placa.Es innecesario utilizar potencia adicional del bus USB y agregar otro regulador de 3.3V ala placa para obtener dicho voltaje. Esta configuración, con fuentes independientes, no seincluye entre los esquemáticos guía de la hoja de datos.

Sobre la base del segundo caso de la tabla se improvisó con éxito una solución como ladeseada. Posteriormente, se encontró en la página web del fabricante una nota que sugeríano utilizar fuentes independientes. Sin embargo, el único inconveniente encontrado consisteen que el chip completo se resetea al encenderse o apagarse la fuente de 3.3V del circuito, loque no tiene consecuencias operacionales.

40

Page 45: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

3.2.5. Circuitos de Reseteo

En el diseño de este proyecto el microcontrolador y el FPGA pueden resetearse indepen-dientemente mediante pulsadores, mutuamente uno al otro, o desde una conexión externa.El chip USB también puede ser reseteado desde el FPGA. Los pines de reset de estos dis-positivos son todos “Active Low”, por lo que se diseñan para estar normalmente en estadológico “1” , mediante una resistencia pull-up y un condensador a tierra para obtener un filtropasa-bajos.

Esta estructura facilita la incorporación de fuentes de reseteo externas e independientesmediante un circuito como el que se observa en la figura 15

Figura 15: Circuito externo de reset

Este ejemplo, extraído del esquemático del proyecto (figura 37), utiliza un transistor depropósito general con la suficiente capacidad de corriente para descargar rápidamente el con-densador del filtro - si es que existe - y así llevar el pin de Reset a tierra gracias a la caídade voltaje que se produce en la resistencia pull-up. La resistencia de la base a tierra (R120en este caso), asegura que el transistor esté en corte si es que la fuente externa de reset está“flotando”. Ésta debe ser considerablemente más grande que la resistencia en series (R119)para no producir entre ambas un divisor de voltaje muy grande. El propósito de esta resisten-cia es limitar la corriente y debe calcularse en función de la ganancia del transistor elegido,la resistencia pull-up, el tamaño del condensador del filtro y la rapidez con que se desea queel pin de reset llegue a un voltaje lo suficientemente bajo que resetee el dispositivo.

3.2.6. Buses de las memorias SRAM y SDRAM

Estas memorias comparten el bus de dirección y el bus de datos. Sus líneas de control sonindependientes y llevan resistencias pull-up en su pin de activación para prevenir colisiones.

41

Page 46: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

3.2.7. Configuración de la fuente de poder

La placa debe ser alimentada por una fuente regulada de 5,0± 0,5V. En su entrada com-prende un diodo Zenner de 5.6V y 3W entre los terminales de entrada. De esta manera, si lafuente principal de alimentación cuenta con limitador de corriente, el diodo proveerá protec-ción en el caso que se supere el máximo voltaje de alimentación o que se conecte la fuenteen polaridad inversa.

A partir del voltaje de alimentación principal se generan:

3.3V para la alimentación de todos los dispositivos mediante un regulador switching oconmutado capaz de entregar hasta 2.5A.

2.5V para la configuración del FPGA mediante un regulador lineal tipo Low-dropout.

3.0V para la alimentación la parte analógica de los convertidores A/D mediante unregulador lineal tipo Low-dropout.

Adicionalmente, y a partir de los 3.3V ya generados, se generan 1.2V para la lógica internadel FPGA, también mediante un regulador lineal tipo Low-dropout, capaz de entregar hasta800mA.

Las fuentes de 5V, 3.3V, 2.5V y 1.2V alimentan LEDs para indicar su funcionamiento.

3.2.8. ICSP a 5V y PIC alimentado con 3.3V

El PIC18F458 puede operar con un voltaje de alimentación entre 1.8V y 6V. Como laplataforma opera con todas sus señales digitales a 3.3V, el PIC debe, naturalmente, operarseal mismo voltaje.

Sin embargo, durante su proceso de programación, el PIC debe ser alimentado con 5Vque son entregados por el programador. Por este motivo, la alimentación normal del PIC serealiza a través de un diodo Schottky de potencia. Esto último para que al aplicar los 5V enlos pines de alimentación del PIC, este voltaje no se propague al resto del circuito y cause uncorto-circuito con la fuente de 3.3V de la placa. Ver el esquemático del proyecto, figura 40.

Este diodo tiene el efecto de reducir el voltaje de alimentación del PIC cuando éste deman-da mucha corriente. Cuando la corriente demandada es mínima, el voltaje de alimentación esde aproximadamente 3V. Se han observado casos, sin embargo, en que éste se ha reducido casia 2.5V. Esto no es problema para la operación del PIC y generalmente tampoco en su interfazcon el FPGA, ya que el umbral entre estados lógicos de este dispositivo es el valor medio delvoltaje de alimentación del banco de E/S, que en este caso corresponde a 3,3V/2 = 1,65V .

42

Page 47: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Por si la caída de voltaje en el diodo causase problemas, se ha incluido un jumper (JP63)en paralelo al diodo con el fin de cortocircuitarlo. Es importante recordar que hay que quitarlocuando se programe el microcontrolador.

Otro aspecto a considerar durante la programación de PIC es que se aplican 13V en supin de reset o MCLR/Vpp. Se han tomado las precauciones en el diseño para que este voltajeno se propague al resto del circuito.

3.2.9. Particularidades en el circuito de conversión A/D

El principal objetivo al diseñar un circuito de conversión análogo-digital, es mantener laintegridad de la señal analógica. Para este propósito, se ha tenido gran cuidado en el sistemade alimentación, utilizando varios condensadores de filtro, antes y después de la regulación,y una ferrita en la entrada para eliminar las componentes de alta frecuencia que se pudieranhaber propagado a la fuente de 5V debido a la fuente conmutada de 3.3V o las transicionesdigitales en la placa.

Luego, por simplicidad, se optó por utilizar los convertidores con su entrada analógicareferida a tierra, aún cuando pudiese haberse configurado la entrada en forma diferencial.

En el lado digital, las líneas PWRDOWN, que permiten deshabilitar el dispositivo (Active-

Low), se conectaron vía resistencias pull-up a Vcc y se incorporó un filtro RC para evitar queel ADC se resetease por ruido inducido en dicha línea.

3.3. Diseño del PCB

3.3.1. Restricciones al diseño

Lo primero a considerar son las posibles restricciones a los objetivos planteados. La ver-satilidad en el diseño ya se ha establecido a nivel de sistema. Al diseñar la PCB los parámetrosa optimizar son costo, tamaño y desempeño. Este último, se refiere principalmente a la in-tegridad de señal, la cual es la principal limitante a las altas velocidades de reloj. Como seha ilustrado anteriormente, la integridad de señal requiere de conexiones cortas entre compo-nentes (dado que no es factible incluir terminaciones en todas las líneas), lo que naturalmentehace que el circuito impreso sea más pequeño (menor superficie). Entonces, el tamaño y eldesempeño se optimizan mutuamente. Sin embargo, comprimir un circuito impreso en unárea menor, implica por lo general, aumentar el número de capas de cobre. El número decapas de cobre es el factor principal en el costo de la PCB. A la vez la PCB constituye granparte del costo del circuito. Por este motivo el costo juega en sentido opuesto a los otros dos

43

Page 48: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Cuadro 4: Restricciones técnicas de Advanced Circuits para la promoción de prototipos de 4capas.

Parámetro RestricciónTiempo de Fabricación 5 días

Número de capas 4Dieléctrico FR-4

Espesor del cobre 1 oz/ft2 (0.035mm)Ancho/Espacio entre líneas >0.006” (0.15mm)

Diámetro de agujeros >0.015” (0.38mm)

factores mencionados.Las empresas en el rubro de fabricación de circuitos impresos en los EE.UU. general-

mente ofrecen promociones para la fabricación de prototipos en 2 y en 4 capas. Más de 4capas implica un costo desproporcionadamente mayor.

Considerando el número de componentes (~250), de pines en cada uno (~1000 en total),y el número de distintos voltajes de alimentación requeridos (5), se ha estimado que no sonnecesarias más de 4 capas. Es prácticamente imposible implementar el diseño en sólo 2 capasa menos que se utilice una placa muy grande, lo que requeriría pistas muy largas y con muchoscambios de lado (capa). Esto deterioraría el desempeño.

La empresa que se seleccionó en el presente trabajo para fabricar la placa es Advanced

Circuits (www.4pcb.com) ya que sus precios son razonables y varios de los ingenieros quehan apoyado este trabajo han tenido buena experiencia con esta empresa. El precio por lafabricación de prototipos de 4 capas no es más que el doble del precio de aquellos de 2capas. Esta elección implica las restricciones técnicas impuestas por la compañía para estapromoción. Éstas se encuentran resumidas en la tabla 4. El grosor de las distintas capas,la elección de utilizar las pistas exteriores para las señales y las interiores para la tierra yalimentación pueden observarse en la figura 16.

A partir de esta información se ha elegido arbitrariamente un ancho de pista de 0.010”(0.254 mm) y una separación entre pistas de al menos 0.010”, lo que cumple con las restric-ciones con un buen margen de seguridad, y se adecua bien al ancho y separación de los pinesde todos los circuitos integrados en este diseño. Las vías se han diseñado con un agujero de0.015” de diámetro y un diámetro exterior de 0.028”.

Con esta información sabemos que las pistas en ambos lados forman líneas Microstrip, ycontamos con la información suficiente para calcular sus parámetros.

44

Page 49: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Figura 16: Geometría de la PCB de 4 capas de Advanced Circuits

Cuadro 5: Tiempos de levantamiento Tr para distintas configuraciones de los estándares deE/S del FPGA, LVCMOS33 y LVTTL según los modelos IBIS de Xilinx, y la longitud criticade la línea de transmisión correspondiente.

Estándar Tr[ns] fknee [MHz] λ/6 [mm]

LVTTL_S_2 1.27 394.9 38LVTTL_S_8 1.20 418.4 36LVTTL_F_2 0.36 1408 11LVTTL_F_8 0.33 1502 10

LVCMOS_S_2 1.27 394.6 38LVCMOS_S_16 1.02 488.8 30LVCMOS_F_2 0.36 1404 11

LVCMOS_F_16 0.32 1558 10

3.3.2. Parámetros de las líneas de transmisión

Evaluando las fórmulas 4 y 5 con la información anterior sobre geometría y material,obtenemos una impedancia característica Z0 = 61,6 Ω y un tiempo de propagación de Tp =

5,61 nsm

.El cuadro 5 muestra la longitud de la línea de transmisión, λ/6, longitud a la cual se

comienza a comportar como tal para distintos tiempos de levantamiento, y que correspondena distintos estándares de entrada y salida soportados por el Spartan 3E.

La información de esta tabla permite discriminar si las pistas en el diseño requieren aten-ción especial por estar cerca o sobre el límite de λ/6, en cuyo caso deben realizarse simu-

45

Page 50: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

laciones para verificar la integridad de la señal en ellas. Si ésta no es adecuada, puede sernecesario redistribuir componentes para disminuir la longitud de las pistas, minimizar bifur-caciones, u otros.

3.3.3. Proceso de diseño

El proceso de diseño de una PCB de nivel profesional es un proceso iterativo entre actu-alizaciones de los esquemáticos, simulaciones circuitales, simulaciones electromagnéticas yactualizaciones de la PCB. La base teórica para el diseño de la PCB es principalmente lo quese describe en la sección 2.2. A continuación se presentan los distintos pasos requeridos eneste proceso.

(a) Verificar todas las huellas

La huella de un componente es el patrón de cobre sobre el cual va soldado el componenteen el circuito impreso. La figura 17 muestra la huella y las dimensiones sugeridas para uncomponente de empaquetado DPAK.

Esta información se encuentra en las hojas de datos de los componentes, por lo que puedecontrastarse con librerías preexistentes o pueden crearse nuevas librerías a partir de la infor-mación del fabricante. Es importante asegurarse que el componente que se adquiere final-mente tenga la geometría que se ha utilizado en la PCB.

Figura 17: Dibujo tri-dimensional y huella de un empaquetado de circuito integrado DPAK.

(b) Distribuir componentes

Consiste en ubicar los componentes del circuito estratégicamente sobre las caras de laplaca para cumplir varios propósitos. Dos de los principales son a) facilitar la interconexiónentre los componentes, tanto para minimizar el tiempo y esfuerzo de ruteo y mantener una

46

Page 51: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

buena integridad de señal y, b) lograr un diseño espacialmente adecuado, como sería porejemplo, ubicar aquellos componentes destinados a la interfaz del circuito con el exterior enla periferia de la placa.

Algunos programas computacionales realizan la distribución de componentes en formaautomática, intentando optimizar ciertas variables predefinidas o especificadas por el usuario,como las mencionadas anteriormente.

(c) Verificar sugerencias de diseño de cada CI en hojas de datos

En muchos casos, los fabricantes ya han determinado los circuitos de soporte óptimospara ciertos circuitos integrados, al igual que su distribución geométrica en la PCB. Particu-larmente, en el diseño de este circuito, el fabricante de los convertidores A/D establece unaserie de reglas y sugerencias para evitar la contaminación de la señal analógica. En el casode circuitos integrados digitales de alta velocidad, como el reloj de 100MHz, se especificadónde ubicar el condensador de desacoplo en relación al dispositivo.

(d) Establecer reglas de diseño

Entre las reglas principales se encuentran el ancho mínimo de las pistas, la distanciamínima entre pistas de distinta señal, el diámetro mínimo de los agujeros, el diámetro mínimodel cobre alrededor de una vía, entre muchas otras. La gran mayoría de los programas dediseño de circuitos impresos permite definir estas reglas y muchas más.

Es importante que el software elegido para el diseño cuente con a) la factibilidad de definircon precisión reglas de diseño en las áreas de funcionalidad electrónica, de factibilidad defabricación, de costos, de integridad de señal, y otros y, b) permita verificar dichas reglasen un diseño. No es posible para una persona llevar a cabo esta tarea en forma metódica,completa y en tiempo razonable. Un computador puede llevarla a cabo en segundos o minutosy sin omisiones.

(e) Realizar ruteo21 tentativo

El ruteo consiste en definir geométricamente las conexiones eléctricas determinadas pre-viamente en forma esquemática entre dispositivos. La dificultad de esta tarea radica en que,a su vez, consiste en optimizar el proceso en varias variables con los recursos limitados de

21Castellanización de Routing. Formalmente debiese ser Enrutamiento.

47

Page 52: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

área y número de capas de la PCB (Tiempo y presupuesto también son restricciones de unenfoque no técnico).

La mayoría de los paquetes de software de diseño de circuitos impresos de nivel profe-sional, incluye la funcionalidad de ruteo automático con optimización de parámetros, inclui-do el software utilizado para desarrollar este proyecto. Desafortunadamente, el proceso es tancomplejo, que el resultado del ruteo automático es generalmente poco óptimo. Por este mo-tivo, muchos ingenieros prefieren realizar manualmente el ruteo completo o, al menos de laspartes críticas, dejando el resto al sistema de ruteo automático. Esto, si el tiempo lo permitey/o si es absolutamente necesario, ya que el ruteo es un proceso iterativo que comprende ungran porcentaje del diseño total de un circuito electrónico. El ruteo automático puede lograrresultados aceptables en pocas horas o minutos, permitiendo minimizar el tiempo de salidaal mercado.

En esta etapa el ruteo es tentativo, ya que se encontrarán numerosas dificultades que haránnecesario re-intentar o cambiar una estrategia de ruteo, o volver a reacomodar componentespara facilitar el proceso.

En el caso de la interconexión de dispositivos con un FPGA, el proceso consiste en inten-tar el ruteo y luego reasignar las señales del FPGA a distintos pines. Como se puede observaren los diagramas del circuito impreso del proyecto, muchas interconexiones mantienen el or-den de las señales en el FPGA según el orden de los pines del dispositivo al cual se conecta,sin la necesidad de cambios de capa.

(f) Simular integridad de señal

En aquellos casos en que las pistas sean muy largas, tengan muchas bifurcaciones, cam-bios de capas en la PCB, estén enrutadas con muy poca separación entre una y otra, ocualquier otra situación en la que se sospeche que pueda verse afectada la integridad de lasseñales, puede ser necesario realizar simulaciones para comprobar esta posibilidad.

A pesar de que existe software que permite verificar la integridad de señal en todo uncircuito impreso en forma automatizada y en base a restricciones predefinidas, la relativasimplicidad de esta PCB, es decir pocas capas, líneas de transmisión relativamente cortas,pocas vías y pocas bifurcaciones, solo hicieron necesaria la verificación por simulación dealgunas situaciones que significaban casos extremos y, por lo tanto, representarían a todos losotros casos si es que se cumple con la integridad de señal mínima necesaria.

La figura 18 ilustra los 3 casos que se han considerado como críticos. (a) y (b) son líneascon 2 cargas en distintas configuraciones y relativamente largas en las que se presume puede

48

Page 53: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

existir oscilaciones debido a las reflexiones en 3 distintos puntos. El caso (c) puede presen-tar un alto acoplamiento inductivo y, por lo tanto, interferencia cruzada. Estos casos se hansimulado bajo distintos escenarios.

Figura 18: Casos críticos (a) y (b): Líneas con 2 cargas. Caso (c): líneas largas paralelas.

Para simular con precisión es necesario contar a la vez con los modelos más precisos delos distintos elementos involucrados en la simulación. Los modelos de las compuertas delFPGA utilizados son modelos IBIS descargados del sitio web de Xilinx, mientras que lascompuertas utilizadas como carga son modelos SPICE de compuertas genéricas CMOS de3.3V que se encuentran incluidas en la librería de componentes del programa utilizado. Elmodelo de las líneas de transmisión puede especificarse mediante los parámetros ya calcula-dos en 3.3.2, o especificando la geometría y materiales del circuito impreso. Se ha optado poreste segundo método, ya que ofrece mayor precisión que las aproximaciones provistas por lasfórmulas de la sección 3 y que se observa en la figura 19. Compárese los valores obtenidospara Z0, en este caso, con aquellos calculados en 3.3.2.

49

Page 54: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Figura 19: Especificación de la geometría y materiales del PCB para el programa HyperLynx.

La simulación de los casos (a) y (b) se ha ejecutado utilizando 3 distintos estándares desalida configurables en el FPGA: LVCMOS33_S_6, LVCMOS33_S_12 y LVCMOS33_F_12.Ver la tabla 5.

La figura 20 muestra el modelo de simulación para (a) donde U3.1 representa la com-puerta de salida del FPGA, U4.1 representa la compuerta de entrada de la SDRAM y U6.1la compuerta de entrada de la SRAM. TL3 y TL7 representan los segmentos de línea que in-terconectan estas compuertas. Los gráficos posteriores representan las formas de onda en losdistintos nodos para los 3 estándares de I/O mencionados, con una frecuencia de reloj de 75MHz. La última fila muestra los diagramas de ojo respectivos para un tren de datos aleatorioa la misma frecuencia.

La figura 21 muestra lo mismo para el caso (b) a excepción de los diagramas de ojo.

50

Page 55: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

0 5 10 15 20−0.5

0

0.5

1

1.5

2

2.5

3

3.5

4

Tiempo [ns]

Vol

tage

[V]

Formas de onda en fuente y cargasutilizando una etapa de salida LVCMOS33_S_6

FPGASDRAMSRAM

0 5 10 15 20−1

0

1

2

3

4

5

Tiempo [ns]

Vol

taje

[V]

Formas de onda en fuente y cargasutilizando una etapa de salida LVCMOS33_S_12

FPGASDRAMSRAM

0 5 10 15 20−2

−1

0

1

2

3

4

5

Tiempo [ns]

Vol

taje

[V]

Formas de onda en fuente y cargasutilizando una etapa de salida LVCMOS33_F_12

FPGASDRAMSRAM

Figura 20: Simulación del caso (a)

0 5 10 15 20−0.5

0

0.5

1

1.5

2

2.5

3

3.5

4

Formas de onda en fuente y cargasutilizando una etapa de salida LVCMOS33_S_6

Tiempo [ns]

Vol

taje

[V]

FPGASDRAMSRAM

0 5 10 15 20−1

0

1

2

3

4

5

Tiempo [ns]

Vol

taje

[V]

Formas de onda en fuente y cargasutilizando una etapa de salida LVCMOS33_S_6

FPGASDRAMSRAM

0 5 10 15 20−2

−1

0

1

2

3

4

5

Tiempo [ns]

Vol

taje

[V]

Formas de onda en fuente y cargasutilizando una etapa de salida LVCMOS33_F_12

FPGASDRAMSRAM

Figura 21: Simulación del caso (b)

51

Page 56: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

La figura 22 muestra el modelo y los resultados de la simulación para el caso (c). Estemodelo requiere la especificación, adicional a la provista e ilustrada en la figura 19, de lainteracción entre ambas líneas de transmisión, que consta básicamente en la longitud de laregión de acoplamiento, el ancho de las pistas y la separación entre sus centros. La líneapunteada diagonal entre las líneas de la figura indica que se encuentran acopladas.

U7.1 se encuentra en el estado “0” durante toda la simulación, mientras que U3.1 oscilaa una frecuencia de 75 MHz. El objetivo es observar el efecto de TL8 sobre TL7 en la carga(R1 y R2 están balanceadas con la impedancia de la línea). Por este motivo, denominamos lalínea TL8 como Agresor y a la TL7 como víctima.

Los gráficos de la figura muestran distintas configuraciones. La primera, utiliza un están-dar LVCMOS33_S_6 y el resto de los parámetros son tal como se han construido el circuitoimpreso real. Las configuraciones utilizadas en los otros casos están descritas en los títulosde los gráficos. Compárese entre gráficos y verifique la validez de la ecuación 15.

52

Page 57: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

0 5 10 15 20 25 30−0.2

−0.15

−0.1

−0.05

0

0.05

0.1

0.15

0.2

Formas de onda en línea agresora y línea víctimautilizando una etapa de salida LVCMOS33_S_6

Tiempo [ns]

Vol

taje

[V]

R1 (Agresor)R2 (Víctima)

0 5 10 15 20 25 30−0.2

−0.15

−0.1

−0.05

0

0.05

0.1

0.15

0.2

Tiempo [ns]

Vol

tage

[V]

Formas de onda en línea agresora y línea víctimautilizando una etapa de salida LVCMOS33_F_12

R1 (Agresor)R2 (Víctima)

0 5 10 15 20 25 30−0.2

−0.1

0

0.1

0.2

0.3

0.4

Tiempo [ns]

Vol

taje

[V]

Formas de onda en línea agresora y línea víctimautilizando una etapa de salida LVCMOS33_S_6 y doble longitud

R1 (Agresor)R2 (Víctima)

0 5 10 15 20 25 30−0.1

−0.05

0

0.05

0.1

0.15

0.2

Tiempo [ns]

Vol

taje

[V]

Formas de onda en línea agresora y línea víctimautilizando una etapa de salida LVCMOS33_S_6 y mitad de separación

R1 (Agresor)R2 (Víctima)

0 5 10 15 20 25 30−0.5

−0.4

−0.3

−0.2

−0.1

0

0.1

0.2

0.3

0.4

0.5

Tiempo [ns]

Vol

taje

[V]

Formas de onda en línea agresora y línea víctimautilizando una etapa de salida LVCMOS33_S_6, doble longitud y carga capacitiva de 10pF

R1 (Agresor)R2 (Víctima)

Figura 22: Simulación del caso (c)

(g) Reacomodar componentes o intercambiar líneas en el FPGA:

Gracias a que en el FPGA, la líneas de entrada y salida pueden configurarse vía software,las interconexiones entre el FPGA y otros dispositivos pueden reacomodarse para facilitar eldiseño de la PCB. Por este motivo, puede observarse, en casos como las memorias RAM, quetodas las líneas de datos, control y dirección, se encuentran paralelas y en la misma cara dela placa.

53

Page 58: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

(h) Verificar las reglas de diseño

Aunque esta es una tarea que realiza el software de diseño, siempre es necesario inspec-cionar visualmente los resultados. Imprimir el diseño en tamaño doble puede ayudar a lo-calizar zonas críticas y potenciales problemas.

3.3.4. Diseño flexible

Como se ha mencionado antes, es crucial tener los potenciales errores en mente al mo-mento de diseñar. Además, en el caso de la PCB, es importante considerar las potencialesdificultades de ensamblaje y uso que puedan surgir debido a un inadecuado diseño mecánico.

3.4. Recursos, Técnicas y Herramientas

3.4.1. Software de Diseño

Altium DXP (www.altium.com)

Este es un paquete de software integrado para el diseño completo de sistemas electrónicosembedidos. Está orientado principalmente al diseño de aplicaciones con FPGAs.

Del conjunto de herramientas provistas por este software se han utilizado únicamenteel editor esquemático de circuitos y el diseñador de circuitos impresos. Ambos trabajan enforma integrada permitiendo exportar las modificaciones al circuito de un ambiente a otro.

Altium DXP es uno de los paquetes de diseño más utilizados hoy en la industria elec-trónica. Provee funcionalidad para desarrollar los proyecto más complejos que se puedanconcebir. Aprender su uso y desarrollar habilidad con este software es una inversión valiosapara el ingeniero.

La última versión de este software se conoce como Altium Designer.

Xilinx ISE Webpack 9.2i (www.xilinx.com)

Esta es la versión gratuita del ambiente de desarrollo para dispositivos de lógica pro-gramable de Xilinx. Permite desarrollar aplicaciones para FPGAs y CPLDs en los lenguajesde descripción de hardware VHDL y Verilog, al igual que en forma esquemática. Puedencombinarse en un mismo proyecto componentes lógicos desarrollados mediante estas distin-tas vías.

54

Page 59: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Adicionalmente, el software realiza la síntesis del diseño para el dispositivo específico autilizar, y genera las archivos de configuración para ser cargados directamente en los dispos-itivos de lógica programable o en memorias de configuración no volátiles.

Este software se ha utilizado para el desarrollo de las aplicaciones de prueba del hardwareque requieren de la intervención del FPGA.

CCS PIC C Compiler 3.2 (www.ccsinfo.com)

PIC C es un compilador de lenguaje C (ANSI con pequeñas modificaciones para adaptarloa microcontroladores) para microcontroladores PIC de Microchip.

Este compilador se ha utilizado para el desarrollo de las aplicaciones de prueba del hard-ware, en la que se requiere la intervención del microcontrolador.

3.4.2. Software de Simulación

Microcap 7.0 (www.spectrum-soft.com)

Microcap es un popular software de captura de esquemáticos y simulación SPICE. Per-mite diseñar y verificar componentes analógicos incorporados en el diseño, al igual que elcomportamiento de líneas de transmisión bajo la presencia de pulsos cuadrados con distintostiempos de levantamiento.

HyperLynx 7.5 (www.mentor.com)

Este es un software especializado en la simulación de líneas de transmisión con señalesdigitales, permitiendo especificar, en particular, mediante distintos modelos, las etapas deentrada y salida de las compuertas digitales, todos los parámetros de las líneas, y simular lainterferencia cruzada entre líneas de transmisión paralelas.

3.4.3. Otro Software

PICkit 2 v2.11 (www.microchip.com)

Este es un kit de hardware y software para la programación (cargar el programa en eldispositivo) y depuración de microcontroladores PIC en forma In Circuit Serial Programming

(ICSP) o programación del dispositivo en circuito, lo que quiere decir que el dispositivo norequiere ser retirado de su circuito huésped para ser programado, siempre y cuando el circuitohuésped esté diseñado con este propósito en mente y cuente con el conector adecuado.

55

Page 60: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Digilent Export 1.8.0 (Adept Suite, www.digilent.com)

Este es un software que en combinación con el cable USB-JTAG de Digilent, permitecargar programas y monitorear circuitos mediante el estándar JTAG, como es el caso de losFPGAs y sus memorias de configuración.

MProg 3.0a (www.ftdichip.com)

Este software permite configurar los dispositivos USB de FTDI. La configuración esgrabada en la EPROM externa conectada al dispositivo, si es que la memoria está presente.

En el caso del dispositivo utilizado en este hardware, el FT2232, MProg permite config-urar el chip para operar en sus distintos modos, ya sea RS232, FIFO, BitBang, y otros, asícomo explicitar qué controladores, Puerto Serial Virtual o D2XX, se utilizará para acceder aldispositivo desde el PC.

3.4.4. Herramientas de Soldadura y Montaje

Estación de soldadura de temperatura regulable y puntas intercambiables

Es imprescindible contar con control de temperatura en la punta de soldar, ya que existencomponentes de tamaño físico muy variado, al igual que las superficies de cobre a las cualesserán conectados. Por lo tanto, es necesario adecuar la temperatura del cautín a la cantidad decalor disipada por estas combinaciones. Por ejemplo, para soldar adecuadamente un pin deun dispositivo QFP a una pista de 0.010 pulgadas, se requiere muchísima menos temperaturaque para soldar un diodo de potencia a un plano de tierra.

Microscopio Estereoscópico

Debido a los tamaños de los componentes en el circuito impreso, para soldar y verificar lasoldadura, es necesario trabajar bajo un microscopio. Es importante que sea estereoscópicopara poder tener una visión tridimensional de los componentes y para poder trabajar concomodidad durante períodos prolongados utilizando ambos ojos. Es indispensable que losniveles de aumento y la intensidad de la luz sean regulables.

Horno de Soldadura

Esta herramienta permite un método de soldadura alternativo al cautín y presenta ventajascuando se desea soldar una gran cantidad de componentes a la vez. El procedimiento de

56

Page 61: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

soldadura con esta herramienta consiste en la aplicación de soldadura en pasta en los puntos asoldar sobre la placa, poner los componentes en su lugar, con sus contactos sobre la soldadura.Luego la placa se introduce en el horno, el que aplica un perfil de temperatura genérico, queen la mayoría de los casos es adecuado, o puede ser configurado por el usuario.

Si se van a soldar componentes en ambos lados de la placa mediante este mismo método,es necesario que aquellos componentes soldados en el primer lado sean pequeños y de pocopeso, de manera que al voltear la placa para soldar los componentes en el otro lado, aquelloscomponentes que quedan cara abajo en el horno, se sostengan en su lugar por la tensiónsuperficial de la soldadura cuando ésta se funda.

3.4.5. Instrumentos de Medición

Se han utilizado distintos instrumentos de medición en el proceso de verificación delhardware, no tanto así durante el ensamblaje, donde se utilizaron más que nada para verificarconexiones y corto-circuitos.

Osciloscopio

Este es el instrumento principal para verificar sistemas cuyas señales eléctricas evolucio-nan en el tiempo. Ya que el hardware desarrollado es principalmente digital, gran parte de laverificación se ha realizado enviando datos al puerto serial del PC. Sin embargo, el oscilosco-pio es imprescindible en aquellos casos en que lo anterior falla y/o en que se desea verificar laintegridad de las señales estudiadas. En otras palabras, permite una observación del sistemaa más bajo nivel.

Este instrumento debe cumplir con ciertas características técnicas, específicas para la ob-servación de señales digitales. Debe permitir, principalmente, observar sin distorsión los flan-cos de subida y bajada de las señales digitales. Esto se logra cuando el instrumento cuentacon un ancho de banda superior a fknee y una frecuencia de muestreo varias veces la tasa deNyquist para esta frecuencia. Algunos osciloscopios poseen una tasa de Nyquist inferior a lacorrespondiente a su ancho de banda, lo que permite igualmente, mostrar señales con com-ponentes de frecuencia hasta dicho ancho de banda, pero sólo cuando éstas son periódicas.

La figura 23 muestra el osciloscopio utilizado para las pruebas del circuito, el que cuentacon un ancho de banda de 500MHz y una tasa de muestreo de 5 Giga-muestras por segundo.

57

Page 62: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Figura 23: Osciloscopio Tektronix 5054B-NV

Fuente DC, Generador de señales, multímetro, etc.

Es evidentemente necesario utilizar una fuente de poder para alimentar el circuito. Ideal-mente, debe tener limitador de corriente en caso de ocurrir cualquier falla o que se hayainvertido la polaridad. Un multímetro es necesario para verificar los voltajes de alimentación,cortocircuitos, circuitos abiertos e impedancias. Se ha utilizado un generador de señales, úni-camente para verificar la operación de los convertidores análogo-digitales.

58

Page 63: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

4. Implementación y verificación del prototipo

4.1. Fabricación de la PCB

Como se mencionó anteriormente, la empresa seleccionada para la fabricación de lasPCB fue Advanced Circuits (www.4pcb.com). Ellos imponen ciertas restricciones técnicasque debe cumplir el diseño antes de que se lo acepte para ser fabricado. Estas restriccionespueden ser verificadas por el usuario mediante la funcionalidad de chequeo de reglas o DRC(Design Rule Check) provista por la mayoría de los programas de diagramación de PCBs, obien, mediante un sistema en línea que provee el fabricante para verificar que se cumpla suset de restricciones. Para este proyecto se utilizaron ambos métodos de verificación.

No tan solo deben verificarse las restricciones técnicas de fabricación, sino también, er-rores circuitales, orientación de componentes, facilidad de ensamblaje, entre otros. El costode la PCB es un porcentaje importante dentro del costo total del producto, por lo que las ver-ificaciones mencionadas son sumamente importantes. Pasar por alto errores puede significarque se deba rehacer por completo el prototipo, dañar componentes, limitar la utilidad, o re-querir reparación “artesanal” que puede afectar considerablemente la presentación visual yconfiabilidad de la placa.

4.2. Adquisición de componentes

Los componentes fueron adquiridos vía Internet en la compañía Digi-key (www.digikey.com),proveedora de componentes electrónicos más grandes de Norteamérica.

Se realizaron varios pedidos. Los primeros destinados a realizar mediciones físicas a loscomponentes para diseñar su huella (foot-print). Los que siguieron completaban los compo-nentes requeridos y, los últimos consistieron en la adquisición de componentes olvidados oque fueron dañados en alguna etapa del proceso de implementación.

4.3. Ensamblaje

Se utilizaron dos métodos de soldadura: soldadura en horno para los componentes en lacara posterior de la PCB y soldadura manual con cautín para los componentes de la capasuperior.

La soldadura en horno consiste en aplicar soldadura en pasta en todas las huellas delos componentes en una sola cara de la PCB y luego poner los componentes en su lugar.Posteriormente, se introduce la PCB en el horno, el cual aplica un perfil de temperatura ideal

59

Page 64: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

que primero activa la pasta y posteriormente derrite la soldadura. Después de esperar que laplaca se enfríe lentamente, puede limpiarse con alcohol y una brocha. Este método es idealpara la cara posterior de la PCB debido a que contiene casi únicamente condensadores yresistencias, ambos en gran cantidad.

La capa superior contiene componentes muy diversos en estructura y tamaño, lo quela hace más apta para soldadura manual con cautín. Además, es recomendable soldar loscomponentes en etapas, para poder realizar pruebas antes de proseguir con la siguiente. Estoes especialmente importante en el caso de la fuente de poder, de la cual hay que asegurarseque esté entregando los voltajes adecuados antes de soldar el resto de los circuitos integrados.

El tamaño de los componentes, así como el tamaño y separación de los pines hacen nece-sario trabajar constantemente bajo el microscopio durante el proceso de soldadura y ensam-blaje.

La soldadura manual requiere mucha práctica y conocimiento. No es el propósito de estamemoria profundizar en esto, pero determina la calidad y durabilidad del producto.

4.4. Verificación

Para la verificación de la placa se han diseñado las pruebas enumeradas a continuación.APP1 a APP8 son pequeños diseños de prueba y que se recomiendan como ejercicio paranuevos usuarios. En el caso puntual de esta memoria sólo cumplen con la función de de-mostrar el correcto diseño y su funcionalidad.

4.4.1. Prueba de Fuente de Poder

Esta prueba debe realizarse después de soldar los componentes de la fuente de poder yantes que los componentes restantes. El propósito es verificar que la fuente de poder estéentregando los voltajes esperados, y así evitar que se dañe algún componente.

Al agregar más componentes y realizar aplicaciones más complejas los voltajes se man-tuvieron estables y en ninguno de los componentes de la fuente de poder aumentó significa-tivamente temperatura.

La corriente en las aplicaciones más complejas alcanzó aproximadamente 400mA.

4.4.2. Verificación de la cadena JTAG

Esta prueba puede llevarse a cabo una vez que se han soldado en su lugar el FPGA y laEPROM de configuración con todos sus componentes anexos. Ambos conforman la cade-

60

Page 65: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

na JTAG. Si el programador reconoce ambos componentes, quiere decir que ya pueden serprogramados.

La mayoría de los programadores JTAG despliega una representación gráfica de la cadena,que en el caso de este proyecto, debería ser similar a lo ilustrado en la figura 24

Figura 24: Cadena JTAG de la Plataforma de Desarrollo

4.4.3. APP1: Divisor de reloj

Esta prueba consiste en escribir un pequeño programa en VHDL que divide la frecuenciadel reloj principal (100MHz), compilarlo y cargarlo en la EPROM de configuración para quesea ejecutado en el FPGA. Esto permite demostrar que la EPROM puede ser programadavía JTAG, que el FPGA puede leer su configuración de la EPROM, y que puede ejecutar sufunción.

El programa divide la frecuencia del reloj por 16 y está implementado como un contadorde 4 bits donde el bit más significativo es asignado a la salida.

61

Page 66: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Listado 1 Divisor de reloj (VHDL)library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity div16 isPort ( clock : in STD_LOGIC;

reset : in STD_LOGIC;divided : out STD_LOGIC);

end div16;

architecture Behavioral of div16 isbegin

process (clock)variable count: STD_LOGIC_VECTOR (3 downto 0);

beginif (reset = ’1’) then

count := "0000";elsif (clock’event and clock = ’1’) thencount := count + 1;

end if;divided <= count(3);

end process;

end Behavioral;

Figura 25: Formas de onda de APP1. Izquierda: LVTTL a 2mA. Derecha: LVTTL a 8mA.

La figura 25 muestra la forma de onda de salida resultante para dos estándares de E/Sposibles en el FPGA. Se puede observar que el período es de 160ns, lo que corresponde a6.25 MHz, o 100/16 MHz.

62

Page 67: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

4.4.4. Programación del PIC vía ICSP

Esta prueba, pretende demostrar la programabilidad “en circuito” del PIC. Puede no fun-cionar o ser dañinamente invasiva para el resto del circuito si es que no se ha diseñado paraaceptar este proceso. La sección 3.2.8 describe las dificultades presentes en este segmentodel diseño y el modo se han enfrentado. Está prueba está implícita en APP2.

4.4.5. APP2: Generación de onda cuadrada en el PIC

En esta prueba se programa una simple rutina que crea una onda rectangular con dura-ciones distintas para los dos estados lógicos. Está implementada en lenguaje C (Compatiblecon el compilador PIC C) y consiste en un loop infinito, donde se cambia de estado lógico yse aplica un retardo diferente para cada uno.

Listado 2 Generador de onda rectangular en el PIC (C para PIC C)#include "app2.h"

void main()

// Set pin directionsSET_TRIS_C(0b11110111); // 1=Input, 0=Outputwhile(1)

// PF6 <=>Pin C3 <->EXP4-2 Connector <->FPGA Pin 200delay_us(6);OUTPUT_HIGH(PIN_C3);delay_us(4);OUTPUT_LOW(PIN_C3);

Figura 26: APP2, Onda rectangular generada en el PIC

63

Page 68: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

La figura 26 muestra la señal resultante. Al costado derecho se encuentra informacióntemporal de la señal y que confirma los tiempos especificados en el programa.

4.4.6. APP3: Comunicación entre el PIC y el FPGA

En el FPGA se ha generado una señal de frecuencia en función del estado lógico de unade sus entradas. A esta entrada se ha conectado la señal generada por el PIC y que se obtuvoen la prueba anterior. La figura 27 muestra la señal del PIC en el canal 1 del osciloscopio yla señal resultante en el FPGA en el canal 2.

El programa está implementado como un contador síncrono de 6 bits, del cual se utilizael bit 6 (más significativo) cuando la entrada es ’1’, y el bit 4 cuando la entrada es ’0’.Esto equivale a dividir el reloj principal de 100 MHz en 64 (1.5625 MHz) y 16 (6.25 MHz)respectivamente.

Listado 3 APP3, Modulador FSK (VHDL)library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity dual_freq isPort ( clock : in STD_LOGIC;

choice : in STD_LOGIC;output : out STD_LOGIC);

end dual_freq;

architecture Behavioral of dual_freq isbegin

process (clock,choice)variable count: STD_LOGIC_VECTOR(5 downto 0) := "000000";

beginif (clock’event and clock = ’1’) thencount := count + 1;

end if;if (choice = ’1’) thenoutput <= count(5);

elseoutput <= count(3);

end if;end process;

end Behavioral;

64

Page 69: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Figura 27: APP3, FSK Controlada desde el PIC

4.4.7. APP4: Comunicación Serial

Esta prueba involucra al PIC, al FPGA y a la interfaz RS232. En primera instancia, seprogramó una pequeña rutina en el PIC, que envía en forma serial, reiteradamente un car-acter a una frecuencia fija de 10 Hz. La señal TTL resultante se observó en el osciloscopio.Posteriormente, se escribió un programa en VHDL para el FPGA que interconecta las líneasseriales del PIC con las de la interfaz RS232. La conversión de niveles LVTTL a RS232 sepudo verificar en el osciloscopio como se muestra en la figura 28.

Figura 28: Señal serial en niveles TTL (canal 1) y RS232 (canal 2).

Finalmente, para verificar la comunicación serial bidireccional, se escribió un programa

65

Page 70: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

en el PIC que envía a una frecuencia fija el caracter ’-’, y cuando recibe un caracter lo envíade vuelta.

Listado 4 Programa simple de RS232 bidireccional#include "APP4.h"

char received_ch;int1 got_data;

#int_RDARDA_isr()

received_ch = getc();got_data = 1;

void main()

enable_interrupts(INT_RDA);enable_interrupts(GLOBAL);while(1)

if (got_data)

putc(received_ch);got_data = 0;

putc(’-’);delay_ms(100);

Figura 29: Terminal que la operación de la aplicación APP4.

66

Page 71: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

4.4.8. APP5: Lectura de los ADCs y transmisión serial al PC

En esta aplicación se alimentan los convertidores análogo-digitales con una señal sinu-soidal de baja frecuencia. Se les suministra una señal de reloj de 25 MHz (El reloj principaldel FPGA dividido en 4). La salida de uno u otro es muestreada y entregada en paralelo almicrocontrolador en función de una línea de control.

Listado 5 Extracto de APP5process (clock, adcA, adcB, get)

variable last_get : STD_LOGIC := ’0’;begin

if (clock’event and clock = ’1’) thenif (last_get = ’0’ and get = ’1’) then

adc_out <= adcA;elsif (last_get = ’1’ and get = ’0’) thenadc_out <= adcB;

end if;last_get := get;

end if;

end process;

process (clock)variable clk_count : STD_LOGIC_VECTOR (1 downto 0) := "00";

beginif (clock’event and clock = ’1’) then

clk_count := clk_count + 1;end if;adcA_clk <= clk_count(1); -- 25 MHzadcB_clk <= clk_count(1); -- 25 MHz

end process;

Figura 30: Señal original en osciloscopio

67

Page 72: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

(a)

300 350 400 450 500 5500

20

40

60

80

100

120

140

160

180

200

Muestras

Val

or (

8 bi

ts)

ADC #1

(b)

Figura 31: Sinusoidal capturada. (a) Datos en terminal serial. (b) Gráfico para el ADC número1.

Es importante destacar que esta prueba solamente demuestra que los ADCs no están daña-dos y que se encuentran correctamente conectados al FPGA. Se deja como ejercicio al lectordemostrar la correcta operación de los ADCs a su máxima tasa de muestreo. Esto puedehacerse entregando una señal sinusoidal de entre 1 y 5 MHz a los ADCs, muestreando a 100Mega-muestras por segundo y almacenando al menos 200 muestras consecutivas en la memo-ria interna del FPGA. Posteriormente ésta puede ser transferida a un PC a una tasa menor,para poder graficar los puntos y observar la reconstrucción de la señal. El uso de una señaltriangular puede revelar mejor, a simple vista la integridad de la señal capturada.

4.4.9. APP6: Uso de memoria FLASH

Para demostrar el funcionamiento de la memoria FLASH se ha utilizado el FPGA, sim-plemente para interconectar el microcontrolador con la memoria y con la interfaz RS232.La memoria utiliza una interfaz SPI al igual que el microcontrolador, lo que hace que lacomunicación entre ellos sea muy simple.

En el microcontrolador se han implementado 4 rutinas que se comunican con la memo-ria. Éstas son: la lectura del identificador (3 bytes que identifican el fabricante y el tamañode la memoria), el borrado de la memoria completa, la escritura de una frase pre-definidaen una ubicación predefinida de la memoria, y la lectura de un número fijo de bytes de esaubicación. La figura 32 muestra un terminal serial donde se observa la ejecución del progra-ma del microcontrolador. Se observa el resultado de la secuencia de comandos: Lectura delidentificador, borrado, escritura, lectura, borrado y lectura.

68

Page 73: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Figura 32: APP6 en terminal serial

4.4.10. APP7: Uso de memoria SRAM

Esta prueba consiste en generar una secuencia de números pseudo-aleatorios, almacenar-los en la memoria SRAM y luego recuperarlos desde el microcontrolador, para finalmentetransmitirlos en forma serial al PC y verificar que todo el proceso ha funcionado correcta-mente.

Para esto se ha diseñado una máquina de estados (ver figura 33) que contiene 2 estadosprincipales, READ (y READ_B22), en el cual se puede realizar la lectura de la RAM desdeel PIC, y WRITE, donde se genera la secuencia de números pseudo-aleatóreos y se escribenen la RAM. El paso de un estado a otro se realiza con la línea de control W generada desdeel PIC. Los estados intermedios TO READ y TO WRITE existen para asegurar que en latransición de WRITE a READ y viceversa, se hayan deshabilitado los pines de salida delFPGA o de la RAM, respectivamente. Al estado FULL se llega desde WRITE cuando lamemoria se ha llenado. El estado READ_B permite acceder al segundo byte entregado por laRAM. READ sólo presenta el primer byte. El paso de READ_B a READ obtiene la palabrasiguiente de la RAM. La línea de control get_clk controla el paso entre estos dos estados.

La figura 33 es una simplificación de la máquina de estados. El detalle puede observarseen el código VHDL de esta aplicación en el anexo.

22READ y READ_B se requieren para obtener los bits 0 a 7 y 8 a 15 respectivamente ya que el PIC trabajasolo con 8 bits a la vez.

69

Page 74: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

W=1

W=1

ADDR="111..."

W=0

W=0

W=0

get_clk=0

get_clk=1

READ TO WRITE

WRITE

FULL

TO READ

READ_B

Figura 33: Máquina de estados APP7

Figura 34: Terminal exhibiendo la actividad de la aplicación.

La generación de números pseudo-aleatorios se ha realizado mediante la técnica de reg-istros (shift-registers) con re-alimentación. Se ha utilizado un registro de 16 bits de largo ylos bits realimentados han sido elegidos según [[Xapp052]] para obtener una secuencia demáxima longitud sin repetición. La implementación sólo requiere 2 líneas en VHDL:

lfsr(15 downto 1) <= lfsr(14 downto 0);

lfsr(0) <= lfsr(16) xnor lfsr(15) xnor lfsr(13) xnor lfsr(4);

70

Page 75: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

En la primera línea se desplaza el registro (lfsr), y en la segunda, se genera el primer bit enfunción de los bits 16,15,13 y 4. En este caso se ha usado una semilla de valor 0xAAAA.

4.4.11. APP8: Comunicación USB

Esta prueba utiliza el segundo canal del chip USB FT2232 en el modo USB a puerto serialasíncrono, y el FPGA se configura para reproducir en la línea de transmisión lo que recibe enla línea de recepción (interfaz loopback).

La primera parte de la prueba consiste en verificar que el PC detecte el dispositivo USBal conectarlo. Para esto deben estar instalados los controladores para puerto serial virtual(www.ftdichip.com). La primera vez que se conecta al PC, éste debe reportar que ha encon-trado 2 puertos seriales virtuales USB y que están listos para ser utilizados.

El programa que implementa la interfaz loopback debe instalarse en el FPGA. Este no semuestra aquí pero es muy simple y puede encontrarse en el Apéndice.

Cuando estos pasos se han completado, puede realizarse la prueba accediendo medianteHyperterminal u otro terminal serial, al puerto serial virtual correspondiente a la segunda in-terfaz del chip. Luego, puede seleccionarse cualquier velocidad de transmisión, y sin controlde flujo. Finalmente, cualquier caracter que se tipee en la ventana debe aparecer en ella, yaque es enviado a la placa y devuelto inmediatamente. En condiciones normales, el terminalserial no muestra lo que uno escribe, solo lo que se recibe remotamente.

La prueba resultó exitosa transmitiendo a la máxima velocidad permitida por Hyperter-minal, es decir, 921600 bps.

71

Page 76: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

5. Aplicaciones y ejercicios propuestos

Figura 35: Fotografía de la plataforma completamente armada y operando.

Las posibles aplicaciones de esta plataforma de desarrollo están limitadas sólo por lacreatividad. La motivación original fue carácter educacional, para contribuir a la enseñanzade ramos de la carrera universitaria de Ingeniería Eléctrica. De muchos de estos ramos sedesprenden aplicaciones que corresponden a la implementación de lo que se enseña teórica-mente.

Por ejemplo, en ramos del área de Sistemas Digitales, puede utilizarse la plataformapara la práctica de lógica programable; en Procesamiento Digital de Señales, para la im-plementación de filtros digitales y transformadas rápidas de Fourier (FFT); en Comunica-ciones Digitales para la implementación de codificadores y códigos correctores de errores;en Arquitectura de Computadores, para el diseño de CPUs; en Control Automático, para eldesarrollo de los más complejos controladores; en Electrónica de Potencia, para implementarlas unidades de control de convertidores de potencia, etc. En fin, en casi cualquier ramo se lepuede aprovechar eficientemente.

Esta versatilidad se detectó tempranamente y surgieron nuevas motivaciones, como porejemplo el uso de la plataforma para el desarrollo de soluciones industriales y científicas ala medida, el desarrollo de instrumentos de medición u otros productos para su comercial-ización, o, simplemente para distribuir el diseño o venta de la plataforma ya ensamblada, loque a cierto plazo crearía una comunidad de desarrolladores interactuando, potenciando el

72

Page 77: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

conocimiento de esta comunidad y ampliando posibles aplicaciones del producto.

Ejemplos

En el área de los instrumentos de medición, el osciloscopio de muestreo digital es unode los más versátiles. La plataforma, en este caso, además de servir de unidad de controlpara la sección de procesamiento digital y para la interfaz de usuario, puede realizar el al-macenamiento temporal de las muestras digitalizadas, analizar los datos para determinar elmomento del disparo, calcular frecuencia, amplitud, etc., y luego mostrar los resultados oenviarlos a un PC mediante alguna de las interfaces de comunicaciones incorporadas.

En el caso de un analizador de espectro, la señal convertida a banda base puede ser digi-talizada y convertida a su espectro de frecuencia mediante FFT, permitiendo una resoluciónde ancho de banda mucho mayor que la obtenida con instrumentos analógicos. Al igual queen un osciloscopio, lo mismo se aplica en el caso de control de la sección analógica, lascomunicaciones y la interfaz de usuario.

La implementación de analizadores lógicos y contadores de frecuencia es definitivamenteuna tarea fácil. La generación de señales mediante el método DDS también es una aplicaciónfácil de implementar.

Es posible implementar en el FPGA un Procesador Digital de Señales (DSP) completo,o partes de uno. Por este motivo, las tareas que los DSP realizan pueden también llevarse acabo en esta plataforma y hasta con mejor desempeño, ya que el procesador se puede diseñara la medida de la aplicación.

Por ejemplo es posible procesar video (de baja y mediana resolución y unos pocos nivelesde colores) y realizar detección de objetos, rutas, contornos, etc., lo que puede ser de utilidaden robótica, líneas de producción, etc. Lo mismo es aplicable para procesar sonido, ejemplode la cual es la detección de voz.

En esta área se consideran también aplicaciones de compresión, encriptación, y filtrado,entre muchos otros.

También es aplicable esta unidad a sistemas de control, tanto en lazo cerrado, como encontrol de procesos. En el caso de sistemas de control de lazo cerrado, el FPGA puede usarsepara aquellas tareas intensivas en procesamiento aritmético, mientras que en el microcon-trolador, se puede implementar el algoritmo principal, funcionando bajo un sencillo sistemaoperativo de tiempo real. En esta área el FPGA también puede procesar los datos de entradade muchos sensores a la vez, ya sea aquellos con respuesta analógica mediante los ADCsincorporados (o adicionales externos a la placa), o aquellos con respuesta digital, como en-

73

Page 78: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

coders, switches, etc. También puede controlar actuadores, mediante la generación de señalesPWM, o Convertidores Digital-Analógicos (DACs).

Otros recursos

El sitio de Internet OpenCores.org ofrece una inmensidad de aplicaciones de código abier-to para FPGAs, dentro de las cuales las más populares son:

CPUs de distintas arquitecturas, microcontroladores y DSP.

Controladores Ethernet de 10, 100 y 1000 Mbps

Controladores USB, I2C, CAN, etc.

Controladores de Video VGA, TFT LCD, Plasma, etc.

Criptografía y generadores de números aleatorios

La variedad encontrada en este sitio web puede ser de utilidad inmediata, usando directa-mente algunos de los desarrollos disponibles o, quizás, la combinación de ellos, para realizaraplicaciones más complejas y creativas. Por último, puede constituir una fuente de estímulopara estudiar las posibles aplicaciones de los dispositivos de lógica programable modernos.

Los ejemplos mencionados aquí son tan solo un ínfimo subconjunto de las posibles apli-caciones. Se encuentran concentradas en ciertas áreas debido al inevitable sesgo profesionaldel autor respecto a las necesidades humanas y de la industria. Sin embargo, se tiene la certezade que otros podrán hallar soluciones creativas a sus propios problemas, aplicándolos en susparticulares mundos profesionales o personales.

74

Page 79: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

6. Producción

Esta sección se presenta como una ayuda para quienes pretendan llevar a producción suspropias unidades.

6.1. Adquisiciones

6.1.1. Circuitos Impresos

Los Circuitos impresos deben ser solicitados al autor de esta memoria para ser adquiridoscon el fabricante original en USA. Si es factible, puede enviarse una autorización al fabricantepara que la Universidad realice pedidos directamente.

6.1.2. Componentes

Todos los componentes utilizados en este proyecto fueron adquiridos en línea en Digikey(www.digikey.com), por lo tanto, se sugiere utilizar esta vía para minimizar el número decompras.

Es posible no encontrar exactamente los mismos componentes utilizados en los prototiposoriginales, debido a falta de stock o porque han quedado obsoletos. En el primer caso, puedenencontrarse sustitutos con características técnicas similares aunque de otros fabricantes, uotros que utilizan otras tecnologías y/o materiales logrando el mismo resultado. En el segundocaso, generalmente los fabricantes sugieren un dispositivo de reemplazo que es compatiblecon aquel que ha sido retirado del mercado. Siempre es necesario verificar que el dispositivoes mecánicamente compatible con el circuito impreso y que podrá ser soldado. En amboscasos, se sugiere consultar con el autor de esta memoria antes de tomar una decisión.

6.2. Ensamblaje

6.2.1. Indicaciones Generales

6.2.2. Procedimiento

1. Montar todos los condensadores de formato 0402 en de la cara posterior del circuitoimpreso. Todos éstos tienen la misma capacitancia de 0,01µF .

2. Montar todos los condensadores cerámicos de formato 0805 de capacitancia 1µF en lacara posterior del circuito impreso.

75

Page 80: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

3. Montar todos los condensadores cerámicos de formato 0805 de capacitancia 0,1µF enla cara posterior del circuito. No todos los condensadores de este formato en la caraposterior son de esta capacitancia, por lo que hay que guiarse por la lista de compo-nentes de la cara posterior.

4. Montar el resto de los condensadores de la cara posterior guiándose por la lista decomponentes. Debe tenerse precaución con los condensadores de Tantalio, ya que sonpolarizados y no hay forma de determinar su orientación en la placa que no sea identi-ficando los voltajes que hay en ambos terminales.

5. Los transistores Q51 y Q52 deben modificarse para ser montados en forma invertida,es decir, la cara superior debe ir contra la placa. Para esto basta doblar los 3 pines haciala cara contraria. Luego se montan en forma invertida y se sueldan.

6. Montar el resto de los componentes de la cara posterior guiándose por la lista de com-ponentes.

7. Verificar que entre los terminales de alimentación de 5V no exista un cortocircuito, yque la impedancia entre ellos sea de al menos 1,5kΩ.

8. Montar los componentes de la fuente de poder que corresponden a la etapa de entradade 5V y al regulador conmutado de 3.3V, guiándose por el esquemático de la figura 42que se encuentra en el Apéndice.

9. Alimentar la placa con 5V desde una fuente limitada en corriente, al mínimo amperajeposible. Incrementar el límite lentamente hasta que el voltaje y la corriente se esta-bilicen. La corriente entregada por la fuente no debería superar los 100mA. Hay queasegurarse también, durante este proceso, que ningún componente aumente consider-ablemente su temperatura. Verificar que el voltaje de salida del regulador de 3.3V seaefectivamente aquel.

10. Complete el montaje de la fuente de poder según la figura 42 y verifique que todos losvoltajes de salida sean los correctos.

11. Montar el FPGA, la memoria PROM de configuración y todo el circuito de soportesegún la figura 37.

12. Alimentar el circuito y comprobar la cadena JTAG con un programador.

76

Page 81: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

13. Completar el montaje de los componentes de la cara superior en un orden tal que faciliteel acceso a cada nuevo componente soldado con la punta del cautín en caso de que seasoldado manualmente.

6.3. Pruebas

Una vez que haya completado el ensamblaje pueden realizar las pruebas descritas en lasección 4.4. Estas deberían ser suficientes para probar el correcto ensamblaje.

77

Page 82: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Referencias

[Johnson93] Johnson, Howard W. y Graham, Martin (1993) High Speed Digital Design,A Handbook of Black Magic. Prentice Hall PTR.

[Johnson03] Johnson, Howard W. y Graham, Martin (2003) High Speed Signal Propaga-tion: Advanced Black Magic. Prentice Hall PTR.

[Ashenden02] Ashenden, Peter J. (2002) The Designer’s Guide to VHDL. Morgan Kauf-mann, 2nd Edition.

[Xapp623] Alexander, Mark Power Distribution System (PDS) Design: UsingBypass/Decoupling Capacitors. Xilinx, Application Note 623 v2.1.www.xilinx.com.

[CYP1] SRAM System Design Guidelines. Cypress Semiconductor Corporation,October 25, 2002. www.cypress.com.

[DS312] Spartan-3E FPGA Family: Complete Datasheet. Xilinx, May 19, 2006.www.xilinx.com

[Xapp453] GoldBlatt, Kim (2006) The 3.3V Configuration of Spartan-3 FPGAs. Xil-inx Application Note 453 v1.1, 2006. www.xilinx.com

[Xapp052] Alfke, Peter (1996) Efficient Shift Registers, LFSR Counters, and LongPseudo-Random Sequence Generators. Xilinx, Application Note 052 v1.1,1996. www.xilinx.com.

[Horowitz89] Horowitz, Paul y Hill, Winfield (1989) The Art of Electronics, 2nd Edition.Oxford University Press.

[IEEE1] Yong-Ju Kim, Han-Sub Yoon, Seongsoo Lee, Gyu Moon, Joungho Kim, andJae-Kyung Wee (2004) An Efficient Path-Based Equivalent Circuit Mod-el for Design, Synthesis, and Optimization of Power Distribution Net-works in Multilayer Printed Circuit Boards. IEEE Transactions on Ad-vanced Packaging, VOL. 27, No 1, February 2004.

[IEEE2] Sharawi, Mohammad S. (2004) Practical Issues in High Speen PCB design.IEEE Potencials, IEEE, 2004.

78

Page 83: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

[IEEE3] Jae Kwon Han y Dong Chul Park (2006) Crosstalk Analysis BetweenNon-Parallel Coupled Lines Connected With Vias in a 4-layer PCB.CEEM’2006/DALIAN.

[IEEE4] Frank Ye Yuan Analysis of Power/Ground Noises and Decoupling Capac-itors in Printed Circuit Board Systems. Quad Design Group, ViewlogicSystems, Inc.

[IEEE5] LaMeres, Brock J. y Kalkur, T.S. (2001) The Effect of Ground Vias onChanging Signal Layers in a Multilayered PCB. Department of Electri-cal and Computer Engineering, University of Colorado. IEEE Microwave andOptical Technilogy Letters / Vol. 28, No. 4, February 20, 2001.

[AN282] Application Note AN-282: Fundamentals of Sampled Data Systems. Ana-log Devices, Norwood, Massachusetts. www. analog.com.

79

Page 84: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Apéndices

A: Esquemáticos

B: Diagramas del circuito impreso

C: Pines, nombres. números e interconexiones

D: Lista de componentes

E: Código VHDL y C de las aplicaciones de prueba

F: Opciones durante el ensamblaje

G: Estadísticas de trabajo

80

Page 85: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Apéndice A: Esquemáticos

Figura 36: Esquemáticos: Diagrama principal

81

Page 86: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Figura 37: Esquemáticos: Configuración del FPGA

82

Page 87: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Figura 38: Esquemáticos: Memoria

83

Page 88: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Figura 39: Esquemáticos: Comunicaciones

84

Page 89: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Figura 40: Esquemáticos: Microcontrolador

85

Page 90: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Figura 41: Esquemáticos: I/O del FPGA

86

Page 91: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Figura 42: Esquemáticos: Fuente de Poder

87

Page 92: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Figura 43: Esquemáticos: Puertos de Expansión

88

Page 93: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Apéndice B: Diagramas del circuito impreso

Figura 44: Serigrafía cara superior. No a escala.

Figura 45: Cobre cara superior. No a escala.

89

Page 94: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Figura 46: Cobre capa de alimentación (Vcc). No a escala.

Figura 47: Plano de tierra (Negativo). No a escala.

90

Page 95: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Figura 48: Serigrafía cara inferior (Invertida). No a escala.

Figura 49: Cobre cara inferior (Invertida). No a escala.

91

Page 96: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Apéndice C: Pines, números, nombres e interconexiones.

92

Page 97: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

93

Page 98: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

94

Page 99: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

95

Page 100: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

96

Page 101: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Apéndice D: Lista de componentes

97

Page 102: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

98

Page 103: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

99

Page 104: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

100

Page 105: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

101

Page 106: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

102

Page 107: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Todas las resistencias son de 1/4W, 5 %

Todos los componentes estaban disponibles en Digikey (www.digikey.com) al momen-to de desarrollo.

103

Page 108: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Apéndice E: Código VHDL y C de las aplicaciones de prueba

APP1

Listado 6 APP1, Divisor de reloj (VHDL)library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity div16 isPort ( clock : in STD_LOGIC;

reset : in STD_LOGIC;divided : out STD_LOGIC);

end div16;

architecture Behavioral of div16 isbegin

process (clock)variable count: STD_LOGIC_VECTOR (3 downto 0);

beginif (reset = ’1’) thencount := "0000";

elsif (clock’event and clock = ’1’) thencount := count + 1;

end if;divided <= count(3);

end process;

end Behavioral;

Listado 7 APP1, Configuración de E/S del FPGA (UCF)#PACE: Start of Constraints generated by PACE

#PACE: Start of PACE I/O Pin AssignmentsNET "clock" LOC = "P80" | IOSTANDARD = LVTTL ;

NET "divided" LOC = "P33" | IOSTANDARD = LVTTL | DRIVE = 2 ;

#PACE: Start of PACE Area Constraints

#PACE: Start of PACE Prohibit Constraints

#PACE: End of Constraints generated by PACE

104

Page 109: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

APP2

Listado 8 APP2, Generador de onda rectangular en el PIC (C para PIC C)#include "app2.h"

void main()

// Set pin directionsSET_TRIS_C(0b11110111); // 1=Input, 0=Outputwhile(1)

// PF6 <=>Pin C3 <->EXP4-2 Connector <->FPGA Pin 200delay_us(6);OUTPUT_HIGH(PIN_C3);delay_us(4);OUTPUT_LOW(PIN_C3);

APP3

Listado 9 APP3, Modulador FSK (VHDL)library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity dual_freq isPort ( clock : in STD_LOGIC;

choice : in STD_LOGIC;output : out STD_LOGIC);

end dual_freq;

architecture Behavioral of dual_freq isbegin

process (clock,choice)variable count: STD_LOGIC_VECTOR(5 downto 0) := "000000";

beginif (clock’event and clock = ’1’) thencount := count + 1;

end if;if (choice = ’1’) thenoutput <= count(5);

elseoutput <= count(3);

end if;end process;

end Behavioral;

105

Page 110: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Listado 10 APP3, Configuración de E/S del FPGA (UCF)#PACE: Start of Constraints generated by PACE

#PACE: Start of PACE I/O Pin AssignmentsNET "choice" LOC = "P200" | IOSTANDARD = LVTTL ;NET "clock" LOC = "P80" | IOSTANDARD = LVTTL ;

NET "output" LOC = "P33" | IOSTANDARD = LVTTL | DRIVE = 2 ;

#PACE: Start of PACE Area Constraints

#PACE: Start of PACE Prohibit Constraints

#PACE: End of Constraints generated by PACE

APP4

Listado 11 APP4, Programa simple de RS232 bidireccional (C para PIC C)#include "APP4.h"

char received_ch;int1 got_data;

#int_RDARDA_isr()

received_ch = getc();got_data = 1;

void main()

enable_interrupts(INT_RDA);enable_interrupts(GLOBAL);while(1)

if (got_data)

putc(received_ch);got_data = 0;

putc(’-’);delay_ms(100);

106

Page 111: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Listado 12 APP4, paso de señales seriales (VHDL)library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;---- Uncomment the following library declaration if instantiating---- any Xilinx primitives in this code.--library UNISIM;

--use UNISIM.VComponents.all;

entity serial_pass isPort ( tx_in : in STD_LOGIC; -- From PIC(44-TX) to FPGA(190)

tx_out : out STD_LOGIC; -- From FPGA(55) To RS232(4) transceiverrx_in : in STD_LOGIC; -- From RS232(6) transceiver to FPGA(54)rx_out : out STD_LOGIC);-- From FPGA(189) To PIC(1-RX)

end serial_pass;

architecture Behavioral of serial_pass isbegin

process (tx_in,rx_in)begin

tx_out <= tx_in;rx_out <= rx_in;

end process;

end Behavioral;

Listado 13 APP4, Configuración de E/S del FPGA (UCF)#PACE: Start of Constraints generated by PACE

#PACE: Start of PACE I/O Pin AssignmentsNET "rx_in" LOC = "P54" | IOSTANDARD = LVTTL ;NET "rx_out" LOC = "P189" | IOSTANDARD = LVTTL | DRIVE = 2 ;NET "tx_in" LOC = "P190" | IOSTANDARD = LVTTL ;

NET "tx_out" LOC = "P55" | IOSTANDARD = LVTTL | DRIVE = 2 ;

#PACE: Start of PACE Area Constraints

#PACE: Start of PACE Prohibit Constraints

#PACE: End of Constraints generated by PACE

107

Page 112: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

APP5

Listado 14 APP5, Muestreo de los ADCs según señal del PIC (VHDL)library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;---- Uncomment the following library declaration if instantiating---- any Xilinx primitives in this code.--library UNISIM;

--use UNISIM.VComponents.all;

entity adc_to_pc isPort ( clock : in STD_LOGIC; -- 80

adcA : in STD_LOGIC_VECTOR (7 downto 0); -- 12,11,9,8,5,4,3,2adcB : in STD_LOGIC_VECTOR (7 downto 0); -- 28,25,24,23,22,19,18,16get : in STD_LOGIC; -- (PIC RB0) 181adc_out : out STD_LOGIC_VECTOR (7 downto 0); --adcA_pwrdn : out STD_LOGIC; -- FPGA(61)adcB_pwrdn : out STD_LOGIC; -- FPGA(62)adcA_clk : out STD_LOGIC; -- FPGA(15)adcB_clk : out STD_LOGIC; -- FPGA(29)tx_in : in STD_LOGIC; -- From PIC(44-TX) to FPGA(190)tx_out : out STD_LOGIC; -- From FPGA(55) To RS232(4) transceiverrx_in : in STD_LOGIC; -- From RS232(6) transceiver to FPGA(54)rx_out : out STD_LOGIC); -- From FPGA(189) To PIC(1-RX)

end adc_to_pc;

architecture Behavioral of adc_to_pc isbegin

process (clock, adcA, adcB, get)variable last_get : STD_LOGIC := ’0’;

beginif (clock’event and clock = ’1’) thenif (last_get = ’0’ and get = ’1’) thenadc_out <= adcA;

elsif (last_get = ’1’ and get = ’0’) thenadc_out <= adcB;

end if;last_get := get;

end if;

end process;

process (clock)variable clk_count : STD_LOGIC_VECTOR (1 downto 0) := "00";

beginif (clock’event and clock = ’1’) thenclk_count := clk_count + 1;

end if;adcA_clk <= clk_count(1); -- 25 MHzadcB_clk <= clk_count(1); -- 25 MHz

end process;

adcA_pwrdn <= ’0’;adcB_pwrdn <= ’0’;tx_out <= tx_in;rx_out <= rx_in;

end Behavioral;

108

Page 113: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Listado 15 APP5, Configuración de E/S del FPGA (UCF)#PACE: Start of Constraints generated by PACE

#PACE: Start of PACE I/O Pin AssignmentsNET "adc_out<0>" LOC = "P199" ;NET "adc_out<1>" LOC = "P197" ;NET "adc_out<2>" LOC = "P205" ;NET "adc_out<3>" LOC = "P203" ;NET "adc_out<4>" LOC = "P202" ;NET "adc_out<5>" LOC = "P200" ;NET "adc_out<6>" LOC = "P193" ;NET "adc_out<7>" LOC = "P192" ;NET "adcA<0>" LOC = "P2" ;NET "adcA<1>" LOC = "P3" ;NET "adcA<2>" LOC = "P4" ;NET "adcA<3>" LOC = "P5" ;NET "adcA<4>" LOC = "P8" ;NET "adcA<5>" LOC = "P9" ;NET "adcA<6>" LOC = "P11" ;NET "adcA<7>" LOC = "P12" ;NET "adcA_clk" LOC = "P15" ;NET "adcA_pwrdn" LOC = "P61" ;NET "adcB<0>" LOC = "P16" ;NET "adcB<1>" LOC = "P18" ;NET "adcB<2>" LOC = "P19" ;NET "adcB<3>" LOC = "P22" ;NET "adcB<4>" LOC = "P23" ;NET "adcB<5>" LOC = "P24" ;NET "adcB<6>" LOC = "P25" ;NET "adcB<7>" LOC = "P28" ;NET "adcB_clk" LOC = "P29" ;NET "adcB_pwrdn" LOC = "P62" ;NET "clock" LOC = "P80" ;NET "get" LOC = "P181" ;NET "rx_in" LOC = "P54" ;NET "rx_out" LOC = "P189" ;NET "tx_in" LOC = "P190" ;

NET "tx_out" LOC = "P55" ;

#PACE: Start of PACE Area Constraints

#PACE: Start of PACE Prohibit Constraints

#PACE: End of Constraints generated by PACE

109

Page 114: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Listado 16 APP5, Control del muestreo y envío al PC (C para PIC C)#include "C:\Documents and Settings\jcaram\My Documents\fpga\pic\projects\APP5\APP5.h"

#byte PORTD=0xF83#byte PORTC=0xF82

#byte PORTB=0xF81

void read_send(int1 nl)

int8 adc_val;adc_val=((PORTD&0x3)<<6)|(PORTC&0x3F);printf("%u ",adc_val);if(nl) printf("\n\r");

void main()

setup_adc_ports(NO_ANALOGS);setup_adc(ADC_OFF);setup_psp(PSP_DISABLED);setup_spi(FALSE);setup_wdt(WDT_OFF);setup_timer_0(RTCC_INTERNAL);setup_timer_1(T1_DISABLED);setup_timer_2(T2_DISABLED,0,1);setup_timer_3(T3_DISABLED|T3_DIV_BY_1);

setup_comparator(NC_NC_NC_NC);

SET_TRIS_B(0xFE); // 1=Input, 0=Output

while(1)

if (got_data)

putc(received_ch);got_data = 0;

delay_ms(50);output_high(pin_b0);read_send(0);delay_ms(50);output_low(pin_b0);read_send(1);

110

Page 115: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

APP6

Listado 17 APP6, Paso de señales seriales y SPI por el FPGA (VHDL)library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating---- any Xilinx primitives in this code.--library UNISIM;

--use UNISIM.VComponents.all;

entity serial_and_spi_pass isPort ( tx_in : in STD_LOGIC;

tx_out : out STD_LOGIC;rx_in : in STD_LOGIC;rx_out : out STD_LOGIC;sck_in : in STD_LOGIC;sck_out : out STD_LOGIC;sdo_in : in STD_LOGIC;sdo_out : out STD_LOGIC;sdi_in : in STD_LOGIC;sdi_out : out STD_LOGIC;flash_ns_in : in STD_LOGIC; -- PIC(RD0-38)flash_ns_out : out STD_LOGIC;flash_nw : out STD_LOGIC;flash_nhold : out STD_LOGIC);

end serial_and_spi_pass;

architecture Behavioral of serial_and_spi_pass isbegin

tx_out <= tx_in;rx_out <= rx_in;sck_out <= sck_in;sdo_out <= sdo_in;sdi_out <= sdi_in;flash_ns_out <= flash_ns_in;flash_nw <= ’1’;flash_nhold <= ’1’;

end Behavioral;

111

Page 116: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Listado 18 APP6, Configuración de E/S del FPGA (UCF)#PACE: Start of Constraints generated by PACE

#PACE: Start of PACE I/O Pin AssignmentsNET "flash_nhold" LOC = "P102" ;NET "flash_ns_in" LOC = "P199" ;NET "flash_ns_out" LOC = "P100" ;NET "flash_nw" LOC = "P99" ;NET "rx_in" LOC = "P54" ;NET "rx_out" LOC = "P189" ;NET "sck_in" LOC = "P200" ;NET "sck_out" LOC = "P98" ;NET "sdi_in" LOC = "P101" ;NET "sdi_out" LOC = "P193" ;NET "sdo_in" LOC = "P192" ;NET "sdo_out" LOC = "P97" ;NET "tx_in" LOC = "P190" ;

NET "tx_out" LOC = "P55" ;

#PACE: Start of PACE Area Constraints

#PACE: Start of PACE Prohibit Constraints

#PACE: End of Constraints generated by PACE

112

Page 117: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Listado 19 APP6, Aplicación de prueba de memoria FLASH, Parte 1 de 4 (C para PIC C)#include "C:\Documents and Settings\jcaram\My Documents\fpga\pic\projects\APP6_real\APP6_real.h"

char ch_in;int1 ch_received;char data[]="Juan Pablo Caram";

char data_len = 16;

#int_RDARDA_isr()

ch_received = 1;ch_in = getc();

void flash_program(char sector, char page)

char i;

output_low(PIN_D0);spi_write(0x06); // Write Enableoutput_high(PIN_D0);output_low(PIN_D0);spi_write(0x02); // Page Program// 3 Byte Address MSB firstspi_write(sector);spi_write(page);

spi_write(0);

// Datafor(i=0;i<data_len;i++)

spi_write(data[i]);output_high(PIN_D0);

void flash_read(char sector, char page)

char i;

char data_in;

output_low(PIN_D0);spi_write(0x03); // Read// Addressspi_write(sector);spi_write(page);

spi_write(0);

113

Page 118: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Listado 20 APP6, Aplicación de prueba de memoria FLASH, Parte 2 de 4 (C para PIC C)// Datafor(i=0;i<data_len;i++)

spi_write(0);data_in = spi_read();putc(data_in);

printf("\n\r");output_high(PIN_D0);

int1 flash_busy()

char status;

output_low(PIN_D0);spi_write(0x05);spi_write(0);status = spi_read();

output_high(PIN_D0);

if(status&0x01)return 1;

elsereturn 0;

void wait_for_flash()

char status;

output_low(PIN_D0);spi_write(0x05);spi_write(0);

status = spi_read();

while(status&0x01)

spi_write(0);status = spi_read();

output_high(PIN_D0);

void bulk_erase_flash()

// This might take up to 40 seconds.output_low(PIN_D0);spi_write(0x06); // Write Enableoutput_high(PIN_D0);output_low(PIN_D0);spi_write(0xC7); // Bulk Eraseoutput_high(PIN_D0);

114

Page 119: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Listado 21 APP6, Aplicación de prueba de memoria FLASH, Parte 3 de 4 (C para PIC C)void read_flash_id()

char v1, v2, v3;

output_low(PIN_D0);spi_write(0x9F);spi_write(0);v1 = spi_read();spi_write(0);v2 = spi_read();spi_write(0);v3 = spi_read();

output_high(PIN_D0);

printf("%x%x%x\n\r",v1,v2,v3);

void main()

setup_adc_ports(NO_ANALOGS);setup_adc(ADC_OFF);setup_psp(PSP_DISABLED);setup_spi(SPI_MASTER|SPI_H_TO_L|SPI_CLK_DIV_4|SPI_SAMPLE_AT_END);setup_wdt(WDT_OFF);setup_timer_0(RTCC_INTERNAL);setup_timer_1(T1_DISABLED);setup_timer_2(T2_DISABLED,0,1);setup_timer_3(T3_DISABLED|T3_DIV_BY_1);setup_comparator(NC_NC_NC_NC);enable_interrupts(INT_RDA);

enable_interrupts(GLOBAL);

SET_TRIS_D(0xFE); // DO is outputoutput_high(PIN_D0);

SET_TRIS_C(0b11010111);

delay_ms(100);

printf("APP6 Started.\n\r");

while(1)

if (ch_received)

ch_received = 0;switch(ch_in)

case ’e’:printf("Bulk Erase\n\r");bulk_erase_flash();while(flash_busy())putc(’.’);delay_ms(250);

printf("\n\rDone.\n\r");

break;

115

Page 120: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Listado 22 APP6, Aplicación de prueba de memoria FLASH, Parte 4 de 4 (C para PIC C)case ’w’:

printf("Writing\n\r");flash_program(0,0);printf("Done.\n\r");break;

case ’r’:printf("Reading\n\r");flash_read(0,0);printf("Done\n\r");break;

case ’i’:printf("Chip ID\n\r");read_flash_id();break;

default:printf("Unknown command%c\n\r",ch_in);

116

Page 121: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

APP7

Listado 23 APP7, Escritura y lectura de números Pseudo-aleatorios en SRAM. Parte 1 de 3(VHDL)library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating---- any Xilinx primitives in this code.--library UNISIM;

--use UNISIM.VComponents.all;

entity noise_store isPort ( clk_in : in STD_LOGIC;

w : in STD_LOGIC;full : out STD_LOGIC;get_clk : in STD_LOGIC;byte_choose : in STD_LOGIC;addr : inout STD_LOGIC_VECTOR (15 downto 0);data : inout STD_LOGIC_VECTOR (15 downto 0);data_out : out STD_LOGIC_VECTOR (7 downto 0);nOE : out STD_LOGIC;nWE : out STD_LOGIC;nCE : out STD_LOGIC;nBHE : out STD_LOGIC;nBLE : out STD_LOGIC;rx_in : in STD_LOGIC;rx_out : out STD_LOGIC;tx_in : in STD_LOGIC;tx_out : out STD_LOGIC;state : out STD_LOGIC_VECTOR (2 downto 0));

end noise_store;

architecture Behavioral of noise_store istype MachState is (Reading, Reading_B, toWriting, Writing, toReading, RamFull);signal clock : STD_LOGIC;signal clk_div : STD_LOGIC := ’0’;signal CurrentState: MachState := toReading ;signal NextState: MachState;signal lfsr : STD_LOGIC_VECTOR (15 downto 0) := "1010101010101010";

begintx_out <= tx_in;

rx_out <= rx_in;

nCE <= ’0’;nBHE <= ’0’;

nBLE <= ’0’;

process (clk_in, clk_div)begin

if clk_in’event and clk_in = ’1’ thenclk_div <= not clk_div;

end if;

end process;

117

Page 122: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Listado 24 APP7, Escritura y lectura de números Pseudo-aleatorios en SRAM. Parte 2 de 3(VHDL)

clock <= clk_div;

process (CurrentState, w, addr, lfsr, clock, get_clk, data)begin

case CurrentState iswhen Reading =>state <= "000";full <= ’0’;nWE <= ’1’;nOE <= ’0’;data <= "ZZZZZZZZZZZZZZZZ";if byte_choose = ’0’ thendata_out <= data (7 downto 0);

elsedata_out <= data (15 downto 8);

end if;if w = ’1’ thenNextState <= toWriting;

elsif get_clk = ’0’ thenNextState <= Reading_B;

elseNextState <= Reading;

end if;when Reading_B =>

state <= "001";full <= ’0’;nWE <= ’1’;nOE <= ’0’;data <= "ZZZZZZZZZZZZZZZZ";data_out <= "00000000";if get_clk = ’1’ then

NextState <= Reading;else

NextState <= Reading_B;end if;

when toWriting =>state <= "010";full <= ’0’;nWE <= ’1’;nOE <= ’1’;data <= "ZZZZZZZZZZZZZZZZ";data_out <= "00000000";if w = ’1’ then

NextState <= Writing;else

NextState <= toWriting;end if;

when Writing =>state <= "011";full <= ’0’;nWE <= clock;nOE <= ’1’;data <= lfsr;data_out <= "00000000";if w = ’0’ then

NextState <= toReading;elsif addr = "1111111111111111" then

NextState <= RamFull;else

NextState <= Writing;end if;

118

Page 123: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Listado 25 APP7, Escritura y lectura de números Pseudo-aleatorios en SRAM. Parte 3 de 3(VHDL)

when toReading =>state <= "100";full <= ’0’;nWE <= ’1’;nOE <= ’1’;data <= "ZZZZZZZZZZZZZZZZ";data_out <= "00000000";if w = ’0’ then

NextState <= Reading;else

NextState <= toReading;end if;

when RamFull =>state <= "101";full <= ’1’;nWE <= ’1’;nOE <= ’1’;data <= "ZZZZZZZZZZZZZZZZ";data_out <= "00000000";if w = ’0’ then

NextState <= toReading;else

NextState <= RamFull;end if;

when others =>state <= "111";full <= ’0’;nWE <= ’1’;nOE <= ’1’;data <= "ZZZZZZZZZZZZZZZZ";data_out <= "00000000";NextState <= toReading;

end case;

end process;

process (clock)begin

if clock’event and clock = ’1’ thenif CurrentState = toWriting then

lfsr <= "1010101010101010";addr <= "0000000000000000";

end if;if CurrentState = Writing then

lfsr(15 downto 1) <= lfsr(14 downto 0);lfsr(0) <= lfsr(15) xnor lfsr(15) xnor lfsr(13) xnor lfsr(4);addr <= addr + 1;

end if;if CurrentState = Reading_B and get_clk = ’1’ thenaddr <= addr + 1;

end if;if CurrentState = toReading then

addr <= "0000000000000000";end if;CurrentState <= NextState;

end if;end process;

end Behavioral;

119

Page 124: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Listado 26 APP7, Configuración de E/S del FPGA (UCF)#PACE: Start of Constraints generated by PACE

#PACE: Start of PACE I/O Pin AssignmentsNET "addr<0>" LOC = "P150" ;NET "addr<10>" LOC = "P147" ;NET "addr<11>" LOC = "P133" ;NET "addr<12>" LOC = "P145" ;NET "addr<13>" LOC = "P146" ;NET "addr<14>" LOC = "P144" ;NET "addr<15>" LOC = "P132" ;NET "addr<1>" LOC = "P151" ;NET "addr<2>" LOC = "P152" ;NET "addr<3>" LOC = "P153" ;NET "addr<4>" LOC = "P140" ;NET "addr<5>" LOC = "P139" ;NET "addr<6>" LOC = "P138" ;NET "addr<7>" LOC = "P137" ;NET "addr<8>" LOC = "P135" ;NET "addr<9>" LOC = "P134" ;NET "byte_choose" LOC = "P175" ;NET "clk_in" LOC = "P80" ;NET "data<0>" LOC = "P106" ;NET "data<10>" LOC = "P127" ;NET "data<11>" LOC = "P126" ;NET "data<12>" LOC = "P123" ;NET "data<13>" LOC = "P122" ;NET "data<14>" LOC = "P120" ;NET "data<15>" LOC = "P119" ;NET "data<1>" LOC = "P107" ;NET "data<2>" LOC = "P108" ;NET "data<3>" LOC = "P109" ;NET "data<4>" LOC = "P112" ;NET "data<5>" LOC = "P113" ;NET "data<6>" LOC = "P115" ;NET "data<7>" LOC = "P116" ;NET "data<8>" LOC = "P129" ;NET "data<9>" LOC = "P128" ;NET "data_out<0>" LOC = "P199" ;NET "data_out<1>" LOC = "P197" ;NET "data_out<2>" LOC = "P205" ;NET "data_out<3>" LOC = "P203" ;NET "data_out<4>" LOC = "P202" ;NET "data_out<5>" LOC = "P200" ;NET "data_out<6>" LOC = "P193" ;NET "data_out<7>" LOC = "P192" ;NET "full" LOC = "P187" ;NET "get_clk" LOC = "P180" ;NET "nBHE" LOC = "P172" ;NET "nBLE" LOC = "P177" ;NET "nCE" LOC = "P167" ;NET "nOE" LOC = "P168" ;NET "nWE" LOC = "P171" ;NET "rx_in" LOC = "P54" ;NET "rx_out" LOC = "P189" ;NET "state<0>" LOC = "P33" ;NET "state<1>" LOC = "P30" ;NET "state<2>" LOC = "P49" ;NET "tx_in" LOC = "P190" ;NET "tx_out" LOC = "P55" ;

NET "w" LOC = "P181" ;

120

Page 125: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Listado 27 APP7, Control de la máquina de estados y envío de los datos al PC via serial.Parte 1 de 2 (C para PIC C)#include "C:\Documents and Settings\jcaram\My Documents\fpga\pic\projects\APP7\APP7.h"

#byte PORTD=0xF83#byte PORTC=0xF82

#byte PORTB=0xF81

char received_char;

int1 char_received;

#int_RDARDA_isr()

char_received = 1;received_char = getc();

void fill_ram()

// w = 1output_high(PIN_B0);// Wait until Full = 1while( !input(PIN_D4) );return;

#define RAMMAX 65536void read_ram()

int32 i;

char value;

// w = 0output_low(PIN_B0);// Iterate over ramfor(i=0;i<RAMMAX;i++)

// byte_choose = 1, MSBoutput_high(PIN_B2);// Read and print// C5=MSB, C4, C3, C2, C1, C0, D1, D0=LSBvalue=(PORTC&0x3F)<<2|(PORTD&0x3);printf("%2x ",value);// byte_choose = 0output_low(PIN_B2);// Read and printvalue=(PORTC&0x3F)<<2|(PORTD&0x3);

printf("%2x \n\r",value);

// get_clk LOWoutput_low(PIN_B1);delay_us(10);// get_clk HIGHoutput_high(pin_B1);

delay_us(10);

121

Page 126: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Listado 28 APP7, Control de la máquina de estados y envío de los datos al PC via serial.Parte 2 de 2 (C para PIC C)

delay_ms(100);return;

void main()

setup_adc_ports(NO_ANALOGS);setup_adc(ADC_OFF);setup_psp(PSP_DISABLED);setup_spi(FALSE);setup_wdt(WDT_OFF);setup_timer_0(RTCC_INTERNAL);setup_timer_1(T1_DISABLED);setup_timer_2(T2_DISABLED,0,1);setup_timer_3(T3_DISABLED|T3_DIV_BY_1);setup_comparator(NC_NC_NC_NC);enable_interrupts(INT_RDA);

enable_interrupts(GLOBAL);

// B0 ->w, B1 ->get_glk, B2 ->byte_choose, D4 <- FullSET_TRIS_B(0xFD); // 1=Input, 0=Output//SET_TRIS_C(0xFF);

//SET_TRIS_D(0xFF);

// get_clk should start highoutput_high(PIN_B1);// w should start low

output_low(PIN_B0);

delay_ms(100);

printf("APP7 Started.\n\r");

while(1)

if (char_received)

char_received = 0;switch(received_char)

case ’w’:printf("Filling Ram...\n\r");fill_ram();printf("Done.\n\r");break;

case ’r’:printf("Reading RAM...\n\r");read_ram();printf("Done.\n\r");break;

default:printf("Unknown command%c\n\r",received_char);

122

Page 127: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

APP8

Listado 29 APP8, Loopback (VHDL)library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating---- any Xilinx primitives in this code.--library UNISIM;

--use UNISIM.VComponents.all;

entity LoopBack isPort ( tx_in : in STD_LOGIC;

rx_out : out STD_LOGIC);

end LoopBack;

architecture Behavioral of LoopBack isbegin

rx_out <= tx_in;

end Behavioral;

123

Page 128: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Apéndice F: Opciones durante el ensamblaje

Buscar OPT[n] donde n es el número en la primera columna de la tabla, en la serigrafíadel circuito impreso, para reconocer los componentes involucrados en dicha opción.

Cuadro 6: Opciones de ensamblaje.OPT[] Opción Por defecto Notas

1 Modo de configuracióndel FPGA

0,0,0 = Master Serial Crear un puente de soldadu-ra entre el cuadro central yaquel marcado con un ’0’.En este modo el FPGA leerásu configuración automática-mente desde la memoria deconfiguración en la PCB.

2 Voltaje del banco deE/S número 3

3.3V Crear un puente de soldadu-ra entre los recuadros corre-spondiente para 3.3V

3 HSWAP Soldar R205 = 0Ω.(HSWAP = ’0’)

Esto habilita pull-ups en to-dos los pines de E/S du-rante la configuración del FP-GA. HSWAP tiene un pull-up interno durante la config-uración, pero debe ser acti-vamente comandado antes decomenzar la configuración.

4 RS232 directo al PIC NO. No soldar Soldar solo para propósitosde depuración. En este casodebe asegurarse de que lospines del FPGA conectados aestas líneas están en modo dealta impedancia.

5 Regulador lineal de3.3V

NO. No soldar. El regulador conmutado de3.3V se utiliza por defecto.

6 Chip USB en la cadenaJTAG

NO. Corto-circuitar lospines 3 y 5.

Para incluir el chip USB enla cadena cortocircuitar lospines 1 con 2, 3 con 4, 5 con6, 7 con 8, y TDI con TDO enel conector JTAG.

7 Voltaje de la EEPROMpara elchip USB.

VCC_USB = 5V. Sol-dar R11 = 0Ω

Sólo para depuración.

124

Page 129: PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE … · Departamento de (departamento) PLATAFORMA DE DESARROLLO DE LÓGICA PROGRAMABLE DE ALTO DESEMPEÑO JUAN PABLO CARAM WIGDORSKY

Apéndice G: Estadísticas de trabajo

Costos de Desarrollo:

• Advanced Circuits: US $ 215

• Digikey: US $ 625

• TOTAL: US $ 840

Tiempo invertido:

• Desarrollo de la Plataforma: En promedio 4 horas, 4 días por semana durante 14meses: ~1200 horas.

• Composición de la Memoria escrita: En promedio 10 horas semanales durante 12meses: ~120 horas.

125