20.11.2014 Views

Proyecto REX-2X - Radio Observatorio de Jicamarca

Proyecto REX-2X - Radio Observatorio de Jicamarca

Proyecto REX-2X - Radio Observatorio de Jicamarca

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

INFORME TÉCNICO<br />

SISTEMA DE ADQUISICIÓN UTILIZANDO<br />

RECEPTORES DIGITALES<br />

PROYECTO <strong>REX</strong>-<strong>2X</strong><br />

José Alcántara Zapata<br />

Rita Abad Lima<br />

Electrónica e Instrumentación<br />

RADIO OBSERVATORIO DE JICAMARCA Apartado 130207, Lima 13, Perú<br />

Teléfonos (+51-1) 317-2313 ♦ Fax (+51-1)317-2312


RESUMEN<br />

Este proyecto consiste en el diseño e implementación <strong>de</strong> un sistema <strong>de</strong> recepción para radar, el cual<br />

tiene como característica principal el uso <strong>de</strong> receptores digitales comerciales. Estos receptores digitales, son<br />

circuitos integrados DSP que permiten hacer procesamientos como <strong>de</strong>modulación, filtrado, <strong>de</strong>cimado, etc.<br />

Parte <strong>de</strong>l proyecto se <strong>de</strong>sarrolló utilizando la electrónica digital en alta frecuencia, a<strong>de</strong>más la unidad <strong>de</strong><br />

control se realizó en un FPGA. En su fase inicial se utilizaron tarjetas <strong>de</strong> evaluación <strong>de</strong>l fabricante <strong>de</strong> los<br />

receptores digitales (Analog Devices) y, en la fase <strong>de</strong> <strong>de</strong>sarrollo todas las tarjetas fueron diseñadas y<br />

ensambladas en el <strong>Radio</strong> <strong>Observatorio</strong> <strong>de</strong> <strong>Jicamarca</strong>.<br />

El funcionamiento <strong>de</strong>l equipo comienza en la recepción <strong>de</strong> la señal que proviene <strong>de</strong> la antena, luego se<br />

digitaliza y finalmente se procesa; la sincronización <strong>de</strong>l equipo se realiza con el controlador <strong>de</strong> radar para lograr<br />

transferir sólo los datos <strong>de</strong>seados hacia una computadora, en don<strong>de</strong> son almacenados.<br />

En la fase <strong>de</strong> <strong>de</strong>sarrollo el proyecto ha mostrado un alto performance como sistema <strong>de</strong> adquisición,<br />

tanto en hardware y software, así como también una muy buena estabilidad en la toma <strong>de</strong> datos. En el presente<br />

informe <strong>de</strong>notamos algunas mejoras que se podrían realizar en el futuro.


ÍNDICE<br />

1. INTRODUCCIÓN.................................................................................................................................................................4<br />

2. DESARROLLO.....................................................................................................................................................................4<br />

2.1 Características <strong>de</strong>l Receptor Digital AD6620........................................................................................................................ 4<br />

2.1.1 Descripción general <strong>de</strong>l AD6620...........................................................................................................................4<br />

2.1.2 Conversor analógico digital utilizando sub -muestreo para señales <strong>de</strong> radio frecuencia.....................................5<br />

2.1.3 Desplazador <strong>de</strong> frecuencia. ....................................................................................................................................8<br />

2.1.4 Filtros CIC............................................................................................................................................................11<br />

2.1.5 Filtro RCF. ...........................................................................................................................................................11<br />

2.1.6 Interfaz digital <strong>de</strong> salida.......................................................................................................................................12<br />

2.2 Hardware <strong>de</strong>l equipo <strong>REX</strong>. .................................................................................................................................................. 12<br />

2.2.1 Bloque <strong>de</strong> Adquisición.........................................................................................................................................13<br />

2.2.1.1 Bloque <strong>de</strong> adquisición utilizando tarjetas <strong>de</strong> evaluación AD6620 y AD6640 ...................................................13<br />

2.2.1.2 Bloque <strong>de</strong> adquisición con tarjeta <strong>de</strong>sarrollada en <strong>Jicamarca</strong>.............................................................................14<br />

2.2.2 Bloque multiplexor <strong>de</strong> señal ................................................................................................................................16<br />

2.2.2.1 Multiplexor <strong>de</strong>l equipo <strong>REX</strong>- 2A ........................................................................................................................16<br />

2.2.2.2 Multiplexor <strong>de</strong>l equipo <strong>REX</strong>- <strong>2X</strong> ........................................................................................................................17<br />

2.2.3 Bloque <strong>de</strong> control. ................................................................................................................................................18<br />

2.3 Descripción lógica <strong>de</strong> la unidad <strong>de</strong> control.......................................................................................................................... 19<br />

2.3.1 Transferencia <strong>de</strong> datos a la tarjeta NI-6534.........................................................................................................20<br />

2.3.2 Sincronización entre señales <strong>de</strong>l multiplexor y el Controlador <strong>de</strong> Radar........................................................21<br />

2.3.3 Lógica <strong>de</strong> control <strong>de</strong>l <strong>REX</strong>-2A ............................................................................................................................22<br />

2.3.4 Lógica <strong>de</strong> control <strong>de</strong>l <strong>REX</strong>-<strong>2X</strong> ............................................................................................................................22<br />

2.3.4.1 Bloque ENABLE_RECEIVERS .........................................................................................................................23<br />

2.3.4.2 Bloque INPUT_SYNC.........................................................................................................................................24<br />

2.3.4.3 Bloque ADQ_NIDAQ..........................................................................................................................................25<br />

2.3.4.4 Bloque PREPARE_SIGNAL...............................................................................................................................27<br />

2.3.4.5 Deshabilitación en escritura.................................................................................................................................28<br />

2.3.4.6 Bloque FIFO_CONTROL ...................................................................................................................................29<br />

2.4 Software Del Sistema. .......................................................................................................................................................... 32<br />

2.4.1 Software “ACQUIRE PANEL CONTROL”.......................................................................................................32<br />

2.4.2 Software “ACQUIRE CONSOLE” .....................................................................................................................33<br />

3. RESULTADOS....................................................................................................................................................................34<br />

3.1 Transferencia Máxima.......................................................................................................................................................... 34<br />

3.2 Pruebas <strong>de</strong> rango dinámico .................................................................................................................................................. 34<br />

4. BIBLIOGRAFÍA.................................................................................................................................................................36<br />

5. ANEXOS...............................................................................................................................................................................37<br />

ANEXO A Programación y configuración <strong>de</strong>l sistema <strong>de</strong> adquisición....................................................................................... 37<br />

ANEXO B Código Fuente............................................................................................................................................................. 40<br />

ANEXO C Arquitectura interna <strong>de</strong>l FPGA................................................................................................................................... 51<br />

ANEXO D Diagramas esquemáticos <strong>de</strong> las tarjetas <strong>de</strong>l equipo <strong>REX</strong>-2x .................................................................................... 54<br />

ANEXO E Diagramas <strong>de</strong> circuito impreso ................................................................................................................................... 60<br />

ANEXO F Lista <strong>de</strong> componentes.................................................................................................................................................. 67


SISTEMA DE ADQUISICIÓN UTILIZANDO RECEPTORES DIGITALES<br />

PROYECTO <strong>REX</strong>-<strong>2X</strong><br />

1. INTRODUCCIÓN<br />

El sistema <strong>REX</strong> es un equipo que utiliza como núcleo principal receptores digitales AD6620, los cuales<br />

son circuitos integrados DSP para aplicaciones comerciales. Con estos receptores se pue<strong>de</strong> realizar operaciones<br />

digitales que anteriormente se hacían <strong>de</strong> forma analógica, así como <strong>de</strong>modulación en cuadratura, filtrado y<br />

<strong>de</strong>cimación.<br />

<strong>REX</strong> es el pre<strong>de</strong>cesor <strong>de</strong> un proyecto <strong>de</strong>nominado Sistema NATALIA, en el cual la <strong>de</strong>modulación y<br />

filtrado se realizaba <strong>de</strong> manera analógica y una vez en banda base se digitalizaba. Los datos digitales son enviados<br />

a una unidad <strong>de</strong> control que cuenta con un FPGA como núcleo principal, que sincroniza los datos con el<br />

controlador <strong>de</strong> radar y los envía a la PC por medio <strong>de</strong> una tarjeta <strong>de</strong> adquisición <strong>de</strong> National Instruments NI-6534.<br />

Para el sistema <strong>REX</strong> se tomó <strong>de</strong> base la arquitectura <strong>de</strong> NATALIA y se utiliza el FPGA para recibir los datos <strong>de</strong> los<br />

receptores, por medio <strong>de</strong> una lógica <strong>de</strong> multiplexado, y envía sus datos a la PC usando la NI-6534.<br />

A continuación se muestra el <strong>de</strong>sarrollo realizado para este sistema <strong>de</strong> adquisición <strong>de</strong> un radar,<br />

comenzando por una introducción al funcionamiento <strong>de</strong>l AD6620 y, luego mostrando los circuitos <strong>de</strong> cada bloque<br />

que lo componen. Dado que se trabaja con un FPGA, la <strong>de</strong>scripción lógica se realizó en VHDL, para lo cual se<br />

muestran sus máquinas y tablas <strong>de</strong> estado. En los anexos se pue<strong>de</strong> encontrar diagramas esquemáticos, diagramas<br />

<strong>de</strong> conexiones, código fuente <strong>de</strong>l software y otras informaciones útiles en este <strong>de</strong>sarrollo.<br />

2. DESARROLLO<br />

2.1 Características <strong>de</strong>l Receptor Digital AD6620.<br />

2.1.1 Descripción general <strong>de</strong>l AD6620.<br />

El AD6620 es un circuito integrado receptor digital <strong>de</strong>l fabricante Analog Devices. Este chip recibe<br />

señales <strong>de</strong> un conversor analógico digital y luego realiza un procesamiento digital <strong>de</strong> la señal recibida. En la figura<br />

1, se muestra el diagrama <strong>de</strong> bloques <strong>de</strong> este circuito integrado.<br />

INPUT<br />

DIGITAL<br />

X<br />

X<br />

I<br />

Q<br />

CIC<br />

FILTERS<br />

I<br />

Q<br />

FIR<br />

FILTER<br />

I<br />

Q<br />

COMPLEX<br />

DIGITAL<br />

OUTPUTS<br />

COS<br />

-SIN<br />

COMPLEX<br />

NCO<br />

AD6620<br />

Figura 1 Diagrama <strong>de</strong> bloques simplificado <strong>de</strong>l AD6620<br />

4


El AD6620 cuenta con cuatro unida<strong>de</strong>s <strong>de</strong> procesamiento en cascada:<br />

• Un <strong>de</strong>splazador <strong>de</strong> frecuencia (oscilador numérico y multiplicadores digitales).<br />

• Dos Filtros FIR "Casca<strong>de</strong>d Integrator Comb", con <strong>de</strong>cimadores.<br />

• Un Filtro FIR <strong>de</strong> coeficientes programables con <strong>de</strong>cimador.<br />

Para po<strong>de</strong>r mostrar el funcionamiento <strong>de</strong>l AD6620 es necesario explicar una parte ajena a este chip: El<br />

conversor analógico digital (ADC), que para el caso <strong>de</strong>l <strong>REX</strong> se utiliza el AD6640.<br />

2.1.2 Conversor analógico digital utilizando sub -muestreo para señales <strong>de</strong> radio frecuencia.<br />

El AD6640 es un conversor analógico digital diseñado para trabajar con frecuencias <strong>de</strong> muestreo <strong>de</strong> hasta<br />

65MSPS y un bus <strong>de</strong> salida <strong>de</strong> 12 bits. Este ADC a diferencia <strong>de</strong> otros (como los <strong>de</strong> aproximaciones sucesivas)<br />

permite enviar un dato cada ciclo <strong>de</strong> reloj, <strong>de</strong> esta forma se pue<strong>de</strong> aproximar su comportamiento al muestreo i<strong>de</strong>al<br />

para po<strong>de</strong>r hacerle un análisis <strong>de</strong> Fourier.<br />

El amplio ancho <strong>de</strong> banda <strong>de</strong>l AD6640 permite hacer un muestreo <strong>de</strong> señales <strong>de</strong> RF —sin enviarlas a<br />

banda base— con frecuencia <strong>de</strong> muestreo menores a la frecuencia <strong>de</strong> la portadora central <strong>de</strong> la señal que se esta<br />

muestreando. En el caso <strong>de</strong> <strong>REX</strong> la frecuencia <strong>de</strong> muestreo utilizada es <strong>de</strong> 32MHz y las portadoras utilizadas para<br />

el caso <strong>de</strong>l Radar <strong>de</strong> <strong>Jicamarca</strong> es 49.92MHz y para el Radar SOUSY es 53.5 MHz.<br />

Como se mencionó anteriormente se pue<strong>de</strong> hacer un análisis <strong>de</strong> Fourier con las señales que trabaja el<br />

AD6640, esto es importante para escoger el valor que tendrá el NCO <strong>de</strong>l receptor digital para enviar la señal <strong>de</strong><br />

interés a banda base. En la figura 2 se muestra un diagrama <strong>de</strong> bloques <strong>de</strong> las señales que se tomarán en cuenta para<br />

el análisis.<br />

Don<strong>de</strong>: La señal <strong>de</strong> antena se <strong>de</strong>notará con A, la señal <strong>de</strong>l Reloj <strong>de</strong>l muestreo como Fs y la señal<br />

muestreada a la salida como ADC.<br />

A<br />

ADC6640<br />

12<br />

ADC<br />

Fs<br />

Figura 2 Diagrama <strong>de</strong> bloques <strong>de</strong> señales <strong>de</strong>l ADC<br />

Consi<strong>de</strong>rando la señal <strong>de</strong> entrada "A" (proveniente <strong>de</strong> la antena) con una frecuencia central Fc y con un<br />

ancho <strong>de</strong> banda BW, se pue<strong>de</strong> asumir que tiene espectro en frecuencia (en módulo) como se muestra en la figura 3.<br />

5


|A(dB)|<br />

BW<br />

BW<br />

-Fc<br />

0 Fc<br />

F(MHz)<br />

Figura 3 Espectro <strong>de</strong> frecuencia <strong>de</strong> la señal <strong>de</strong> antena " A"<br />

Si el espectro que se muestra centrado en Fc estuviese en banda base se le llamaría como "ABB", entonces<br />

el espectro A se pue<strong>de</strong> <strong>de</strong>notar con la ecuación 1 como:<br />

A f ) = A ( f − F ) + A ( f + F )<br />

(1)<br />

(<br />

BB C BB C<br />

Para un radar como el <strong>de</strong> <strong>Jicamarca</strong> la información <strong>de</strong> interés se encuentra alre<strong>de</strong>dor <strong>de</strong> Fc, esta<br />

información se pue<strong>de</strong> enviar a banda base lo que facilita la electrónica para el muestreo y diseño <strong>de</strong> filtros digitales.<br />

La señal Fs es la frecuencia <strong>de</strong> muestreo <strong>de</strong>l ADC, el tiempo <strong>de</strong> apertura <strong>de</strong>be ser pequeño para<br />

aproximarlo a un muestreo i<strong>de</strong>al (en el AD6640 es <strong>de</strong>l or<strong>de</strong>n <strong>de</strong> 400ps). Cuando el tiempo <strong>de</strong> apertura <strong>de</strong> un ADC<br />

es muy pequeño, este se pue<strong>de</strong> mo<strong>de</strong>lar como un muestreo <strong>de</strong> señal con un impulso unitario, y si el muestreo es<br />

periódico (frecuencia <strong>de</strong> muestreo constante) el espectro en frecuencia se mo<strong>de</strong>la como en la figura 4.<br />

|Fs(dB)|<br />

...<br />

...<br />

-3Fs<br />

-2Fs<br />

-Fs<br />

0 Fs<br />

2Fs<br />

3Fs<br />

F(MHz)<br />

Figura 4 Espectro <strong>de</strong> frecuencia "Fs" para un muestreo i<strong>de</strong>al<br />

Como se observa en la figura 4, en el espectro <strong>de</strong> Fs se ven sus armónicos que se extien<strong>de</strong>n hacia el<br />

infinito. En un muestreo real, esta señal <strong>de</strong>be multiplicarse por la respuesta en frecuencia <strong>de</strong>l pulso <strong>de</strong>l tiempo <strong>de</strong><br />

apertura.<br />

un Fs.<br />

La ecuación (2), <strong>de</strong> un muestreo i<strong>de</strong>al, representa el mo<strong>de</strong>lo matemático <strong>de</strong> la respuesta en frecuencia para<br />

F<br />

S<br />

⎡<br />

⎤<br />

= ⎢∑ ∞ 2π δ ( f + nFS<br />

) + δ ( f − nFS<br />

) ⎥<br />

(2)<br />

⎣ n=1<br />

⎦<br />

6


La señal resultante a la salida <strong>de</strong>l ADC, será el producto <strong>de</strong> la señal <strong>de</strong> entrada y el tren <strong>de</strong> pulsos <strong>de</strong><br />

muestreo. Un producto en el tiempo es una convolución en la frecuencia; entonces el espectro a la salida <strong>de</strong>l ADC<br />

será la convolución <strong>de</strong> los espectros <strong>de</strong> A(f) y F(s), como se muestra en la ecuación 3.<br />

ADC( f ) = A(<br />

f ) ∗ F ( f )<br />

(3)<br />

S<br />

Resolviendo la ecuación 3, a partir <strong>de</strong> la ecuación 1 y 2, se obtiene:<br />

⎡<br />

⎤<br />

= ⎢∑ ∞ ADC ( f ) cte ABB<br />

( f − FC<br />

+ nFS<br />

) + ABB<br />

( f − FC<br />

− nFS<br />

) + ABB<br />

( f + FC<br />

+ nFS<br />

) + ABB<br />

( f + FC<br />

− nFS<br />

) ⎥ (4)<br />

⎣ n=1<br />

⎦<br />

En la figura 5, se muestra el módulo <strong>de</strong>l espectro <strong>de</strong> frecuencia <strong>de</strong> la señal a la salida <strong>de</strong>l ADC, se observa<br />

que ya no existe un solo espectro, sino que la información ha sido modulada al mezclar la frecuencia central <strong>de</strong> la<br />

señal <strong>de</strong> la antena y los armónicos <strong>de</strong> la frecuencia <strong>de</strong> muestreo.<br />

|ADC(dB)|<br />

...<br />

BW<br />

BW<br />

BW<br />

BW<br />

...<br />

-|Fc-Fs|<br />

-|2Fs-Fc|<br />

0<br />

|2Fs-Fc|<br />

|Fc-Fs|<br />

F(MHz)<br />

Figura 5 Espectro a la salida <strong>de</strong>l ADC<br />

Para po<strong>de</strong>r cumplir con el teorema <strong>de</strong> muestreo <strong>de</strong> Nyquist, se <strong>de</strong>be tener en cuenta que al no estar<br />

muestreando una señal — en banda base — se <strong>de</strong>be cumplir que el ancho <strong>de</strong> banda BW <strong>de</strong>be ser menor a la<br />

frecuencia <strong>de</strong> muestreo Fs para que no ocurra "aliasing". Se analizará las señales cercanas a cero porque estas son<br />

las que pue<strong>de</strong> utilizar el receptor digital.<br />

Dentro <strong>de</strong> la sumatoria <strong>de</strong> la ecuación 4 se observan cuatro términos, cada una genera un conjunto infinito<br />

<strong>de</strong> armónicos, que para po<strong>de</strong>r analizarlos tomaremos a cada termino in<strong>de</strong>pendientemente como se muestra en la<br />

tabla 1.<br />

W A BB (f - Fc + nFs)<br />

X A BB (f - Fc - nFs)<br />

Y A BB (f + Fc + nFs)<br />

Z A BB (f + Fc - nFs)<br />

Tabla 1 Términos <strong>de</strong> la ecuación 4<br />

7


En la tabla 2 y 3 se muestran valores <strong>de</strong> la frecuencia central que toman los términos <strong>de</strong> la ecuación 4 para<br />

el Radar Principal y SOUSY respectivamente. Para el Radar Principal se consi<strong>de</strong>ra una Fc <strong>de</strong> 50MHz, y para el<br />

Radar <strong>de</strong> SOUSY una Fc <strong>de</strong> 53.5MHz. La frecuencia <strong>de</strong> muestreo Fs <strong>de</strong>l sistema <strong>REX</strong> es <strong>de</strong> 32MHz y se muestra<br />

hasta el tercer armónico.<br />

n=1 N=2 n=3<br />

W 18 -14 -46<br />

X 82 114 146<br />

Y -82 -114 -146<br />

Z -18 14 46<br />

Tabla 2 Frecuencias centrales a la salida <strong>de</strong>l ADC para el Radar <strong>de</strong> <strong>Jicamarca</strong> (MHz)<br />

n=1 N=2 n=3<br />

W 21.5 -10.5 -42.5<br />

X 85.5 119.5 149.5<br />

Y -85.5 -119.5 -149.5<br />

Z -21.5 10.5 42.5<br />

Tabla 3 Frecuencias centrales a la salida <strong>de</strong>l ADC para el Radar SOUSY (MHz)<br />

Se pue<strong>de</strong> observar que a<strong>de</strong>más <strong>de</strong>l criterio <strong>de</strong> Nyquist pue<strong>de</strong> ocurrir aliasing en otros casos. Según<br />

Nyquist el BW máximo es <strong>de</strong> Fs (para <strong>REX</strong> 32MHz), pero utilizando submuestreo la modulación entre la señal y<br />

los armónicos hace que se puedan interferir. Para el caso <strong>de</strong>l Radar <strong>de</strong> <strong>Jicamarca</strong> hay dos espectros en 14MHz y<br />

18MHz (tabla 2), esto quiere <strong>de</strong>cir que para experimentos realizados con <strong>REX</strong> en este radar el BW máximo para<br />

que no ocurra aliasing es <strong>de</strong> 4MHz. Para el caso <strong>de</strong>l radar <strong>de</strong> SOUSY, la distancia entre los dos espectros más bajos<br />

(tabla 3) es <strong>de</strong> 11MHz, el cual es el máximo valor que pue<strong>de</strong> tomar BW para este caso.<br />

2.1.3 Desplazador <strong>de</strong> frecuencia.<br />

El <strong>de</strong>splazador <strong>de</strong> frecuencia es el encargado <strong>de</strong> trasladar cualquier espectro modulado a banda base.<br />

Como se vio en el capítulo 2.1.2, el efecto <strong>de</strong>l submuestreo en una señal <strong>de</strong> RF genera distintos espectros don<strong>de</strong> el<br />

más cercano es el que se envía a banda base.<br />

Para enviar una señal a banda base, esta <strong>de</strong>be ser modulada con otra <strong>de</strong> la frecuencia central con la que se<br />

quiere trabajar. Para el caso <strong>de</strong>l Radar Principal <strong>de</strong> la tabla 2, se observa que el espectro más cercano está a 14 MHz<br />

y para SOUSY a 10.5MHz, ambos son resultado <strong>de</strong> la mezcla <strong>de</strong>l segundo armónico con la frecuencia <strong>de</strong> muestreo.<br />

Cuando una señal se encuentra centrada en banda base se necesita menor frecuencia para su<br />

procesamiento y es más sencillo el diseño <strong>de</strong> sus filtros. Cuando se envía esta señal a banda base es necesario<br />

utilizar <strong>de</strong>modulación en cuadratura, como se muestra en la figura 6, don<strong>de</strong> la señal digital proveniente <strong>de</strong>l ADC es<br />

multiplicada por dos señales en cuadratura generadas por un oscilador controlado numéricamente (NCO). Los<br />

8


valores que pue<strong>de</strong> tomar el NCO van <strong>de</strong>s<strong>de</strong> –Fs/2 hasta Fs/2, para una frecuencia <strong>de</strong> 32MHz la máxima frecuencia<br />

<strong>de</strong> NCO es <strong>de</strong> 16MHz, por esta razón se trabaja con el segundo armónico como se muestra en el capítulo 2.1.2.<br />

INPUT<br />

DIGITAL<br />

X<br />

X<br />

I<br />

Q<br />

COS<br />

-SIN<br />

COMPLEX<br />

NCO<br />

Figura 6 Bloque <strong>de</strong>splazador <strong>de</strong> frecuencia<br />

Esta <strong>de</strong>modulación en cuadratura es necesaria cuando la señal ha sufrido efecto Dopler. Este efecto se<br />

muestra con un ejemplo: Se tienen dos señales centradas en una frecuencia Fc, una tiene un Dopler positivo (Figura<br />

7), y la otra un Dopler negativo (Figura 8). Para este ejemplo se <strong>de</strong>be escoger un NCO centrado en Fc.<br />

A(dB)<br />

-Fc<br />

0 Fc<br />

F(MHz)<br />

Figura 7 Señal modulada y con Dopler positivo<br />

A(dB)<br />

-Fc<br />

0 Fc<br />

F(MHz)<br />

Figura 8 Señal modulada y con Dopler negativo<br />

9


Para las dos señales se asume que se encuentran en fase con la señal coseno, que sale <strong>de</strong>l NCO, por ello la<br />

respuesta en frecuencia se consi<strong>de</strong>ra real. Si cualquiera <strong>de</strong> las dos entradas (con Dopler positivo o negativo) son<br />

<strong>de</strong>moduladas con el coseno <strong>de</strong>l NCO su salida filtrada en banda base, tendrá la forma que se muestra en la figura 9,<br />

esta salida es la que saldría por I en la figura 9. Se pue<strong>de</strong> observar que utilizando una sola <strong>de</strong>modulación no se<br />

podría i<strong>de</strong>ntificar entre un Dopler positivo y uno negativo.<br />

A(dB)<br />

0<br />

F(MHz)<br />

Figura 9 Señal <strong>de</strong>modulada con el coseno en banda base<br />

Si las señales <strong>de</strong>l ejemplo se <strong>de</strong>modulan con una señal seno y se filtran en banda base, entonces todo el<br />

espectro generado será imaginario, así como se muestra en la figura 10 y figura 11 para el efecto Dopler positivo y<br />

negativo respectivamente.<br />

jA(dB)<br />

0<br />

F(MHz)<br />

Figura 10 Señal <strong>de</strong>modulada con el seno para un Dopler positivo<br />

jA(dB)<br />

0<br />

F(MHz)<br />

Figura 11 Señal <strong>de</strong>modulada con el seno para un Dopler negativo<br />

De esta forma se pue<strong>de</strong> discriminar entre un Dopler positivo y negativo si se suman los módulos <strong>de</strong> las<br />

10


espuestas <strong>de</strong> I y Q, así como vemos las respuestas para el Dopler positivo en la figura 12 y el Dopler negativo en<br />

la figura 13.<br />

A(dB)<br />

0<br />

F(MHz)<br />

Figura 12 Señal procesada para un Dopler positivo<br />

A(dB)<br />

0<br />

F(MHz)<br />

Figura 13 Señal procesada para un Dopler negativo<br />

2.1.4 Filtros CIC.<br />

El AD6620 cuenta con dos filtros CIC (Casca<strong>de</strong>d Integrator-Comb Filter). El primer filtro es <strong>de</strong> segundo<br />

or<strong>de</strong>n <strong>de</strong>nominado CIC2 y el segundo filtro es <strong>de</strong> quinto or<strong>de</strong>n <strong>de</strong>nominado CIC5; estos son dos filtros pasabajos<br />

que permiten filtrar los armónicos <strong>de</strong> las señales altas —mostradas en el capítulo 2.1.2— y una vez enviadas a<br />

banda base se <strong>de</strong>jan pasar <strong>de</strong>ntro <strong>de</strong> la banda <strong>de</strong> interés. A<strong>de</strong>más, estos filtros cuentan con unida<strong>de</strong>s <strong>de</strong> <strong>de</strong>cimado<br />

que permiten reducir la tasa <strong>de</strong> muestreo a sus salidas, en el caso que el ADC utilice el mismo reloj que el receptor<br />

digital, el <strong>de</strong>cimado mínimo es <strong>de</strong> cuatro, esto significa que para la frecuencia <strong>de</strong> trabajo <strong>de</strong> 32MHz la tasa máxima<br />

a la salida será <strong>de</strong> 8MHz. Para controlar la respuesta <strong>de</strong> un filtro CIC se cuenta con los parámetros <strong>de</strong> <strong>de</strong>cimado y<br />

escalado.<br />

El <strong>de</strong>cimado permite controlar la respuesta en frecuencia, si se aumenta el <strong>de</strong>cimado, se reduce el ancho<br />

<strong>de</strong> banda y viceversa. Para el caso <strong>de</strong>l CIC2 el máximo <strong>de</strong>cimado es <strong>de</strong> 16 y para el CIC5 es <strong>de</strong> 32.<br />

Al utilizar un mayor <strong>de</strong>cimado, las operaciones internas generan mayores acumulaciones, lo que pue<strong>de</strong><br />

saturar el número <strong>de</strong> bits con que se trabaja, para ello se divi<strong>de</strong> la señal con un número fijo que es programable y se<br />

le <strong>de</strong>nomina el escalado. Para el CIC2 el escalado va <strong>de</strong>s<strong>de</strong> 0 hasta 6 y para el CIC5 va <strong>de</strong>s<strong>de</strong> 0 hasta 20.<br />

2.1.5 Filtro RCF.<br />

El filtro RCF (RAM Coefficient Filter), es un filtro FIR configurable que se pue<strong>de</strong> programar su respuesta<br />

temporal y esta convoluciona con la señal que proviene <strong>de</strong> los filtros CIC. Sus parámetros <strong>de</strong> configuración son:<br />

• La respuesta <strong>de</strong>l filtro, que se almacena en una memoria RAM <strong>de</strong>ntro <strong>de</strong>l AD6620. Esta memoria tiene un<br />

11


ancho <strong>de</strong> bus <strong>de</strong> 20 bits y permite almacenar hasta 256 coeficientes (Taps). Un parámetro directamente<br />

relacionado con la respuesta <strong>de</strong>l filtro, es el número <strong>de</strong> Taps que este utilizará, este valor es almacenado en<br />

un registro especial <strong>de</strong>l AD6620.<br />

• El escalado, permite reducir la amplitud máxima generada por el filtro RCF. A<strong>de</strong>más reduce <strong>de</strong> 23 a 16<br />

los bits en la salida <strong>de</strong>l RCF, el fabricante recomienda para la mayoría <strong>de</strong> las aplicaciones utilizar un<br />

escalado inicial <strong>de</strong> 4.<br />

• Y un <strong>de</strong>cimador, para reducir la tasa <strong>de</strong> muestreo en la salida <strong>de</strong>l RCF. El máximo valor <strong>de</strong> <strong>de</strong>cimado a la<br />

salida <strong>de</strong>l RCF es <strong>de</strong> 32.<br />

2.1.6 Interfaz digital <strong>de</strong> salida.<br />

El AD6620 tiene dos formas <strong>de</strong> entregar sus datos en la salida, una es <strong>de</strong> forma serial similar al protocolo<br />

ISP, la otra es <strong>de</strong> forma paralela (que es la utilizada por <strong>REX</strong>-<strong>2X</strong>), la cual se <strong>de</strong>talla a continuación.<br />

Para transferir datos <strong>de</strong> forma paralela en el sistema <strong>REX</strong>, <strong>de</strong>s<strong>de</strong> los receptores hacia la tarjeta<br />

multiplexora <strong>de</strong> canales, se utilizan las salidas DV, I/Q y Out. En la figura 14 se muestra un diagrama <strong>de</strong> tiempos<br />

para la transferencia <strong>de</strong> un dato en forma paralela; la tasa <strong>de</strong> transferencia <strong>de</strong> datos a la salida es más baja que la <strong>de</strong><br />

entrada (ya que se utiliza <strong>de</strong>cimado), pero se sincroniza con el reloj. Como se observa en la figura 14, cuando se<br />

tiene un dato listo el AD6620 pone la señal DV a ‘1’ , que significa que hay un dato valido en el bus <strong>de</strong> datos (Out);<br />

I/Q indica (cuando hay un dato válido) si este ha sido <strong>de</strong>modulado con la fase 0° o con fase 90° en el bus <strong>de</strong> datos,<br />

esto se <strong>de</strong>be a que se utiliza el mismo bus <strong>de</strong> salida para enviar estos dos datos.<br />

CLK<br />

DV<br />

I/Q<br />

OUT[15..0]<br />

I<br />

Q<br />

Figura 14 Interfaz <strong>de</strong> salida en modo paralelo<br />

Una vez configurado y habilitado el AD6620, el proceso mostrado en la figura 14 se vuelve periódico<br />

con una frecuencia igual a la <strong>de</strong>l reloj dividida entre el <strong>de</strong>cimado total.<br />

2.2 Hardware <strong>de</strong>l equipo <strong>REX</strong>.<br />

El equipo <strong>REX</strong> cuenta principalmente con cuatro bloques que son: bloque <strong>de</strong> adquisición, bloque<br />

multiplexor y bloque <strong>de</strong> control. En la figura 15 se muestra el diagrama <strong>de</strong> bloques <strong>de</strong>l equipo, con las señales <strong>de</strong><br />

control principales y se observa el flujo <strong>de</strong> datos en líneas en negrita. A<strong>de</strong>más, todo el sistema se encuentra<br />

sincronizado por un reloj maestro que proviene <strong>de</strong>l controlador <strong>de</strong> radar y es <strong>de</strong> 32MHz.<br />

12


ADC 6640 ADC 6640<br />

DV<br />

AD6640<br />

AD6620<br />

BLOQUE DE ADQUISICIÓN<br />

32 MHZ<br />

Enable1<br />

BLOQUE DE ADQUISICIÓN<br />

MUX<br />

MUX<br />

DV<br />

JTAG<br />

FPGA<br />

FLEX 10K10<br />

FPGA<br />

FLEX 10K10<br />

BLOQUE DE CONTROL<br />

FIFO<br />

FIFO<br />

FIFO FIFO<br />

FIFO<br />

FIFO<br />

To PC<br />

ADC 6640 ADC 6640<br />

AD6640<br />

AD6620<br />

Channel<br />

BLOQUE DE CONTROL<br />

Channel<br />

Enable1<br />

Enable2<br />

32 MHZ<br />

FIFO<br />

BLOQUE DE ADQUISICIÓN<br />

Enable2<br />

Figura 15 Diagrama <strong>de</strong> bloques <strong>de</strong>l equipo.<br />

Una vez que se encuentran habilitados los Receptores Digitales (al inicio <strong>de</strong> la adquisición) enviarán datos<br />

en forma continua y para po<strong>de</strong>r sincronizarlos, las señales <strong>de</strong>l Controlador <strong>de</strong> Radar ingresan en la Lógica <strong>de</strong><br />

Control y habilitan el paso <strong>de</strong> los datos hacia la FIFO y <strong>de</strong>spués a la PC.<br />

2.2.1 Bloque <strong>de</strong> Adquisición.<br />

Este bloque consta <strong>de</strong> dos partes principales, el ADC AD6640 y el Receptor Digital AD6620, cada cual<br />

con sus buffers e interfaces <strong>de</strong> entrada y salida para la adaptación <strong>de</strong> las señales tanto analógicas como digitales.<br />

2.2.1.1 Bloque <strong>de</strong> adquisición utilizando tarjetas <strong>de</strong> evaluación AD6620 y AD6640<br />

Estas tarjetas <strong>de</strong> evaluación son diseñadas por Analog Devices. La tarjeta <strong>de</strong> evaluación <strong>de</strong>l AD6620<br />

permite múltiples configuraciones las cuales se pue<strong>de</strong>n realizar por hardware (por medio <strong>de</strong> jumpers) o por<br />

software.<br />

En la figura 16 se observa el diagrama <strong>de</strong> bloques <strong>de</strong> estas tarjetas <strong>de</strong> evaluación. La tarjeta <strong>de</strong> evaluación<br />

<strong>de</strong>l AD6620, cuenta a<strong>de</strong>más con una memoria FIFO, que se utiliza para hacer lecturas <strong>de</strong> datos <strong>de</strong>l AD6620 o <strong>de</strong>l<br />

AD6640 y enviarlas por el puerto paralelo a una PC; por este mismo puerto se realiza la configuración <strong>de</strong>l AD6620.<br />

13


LATCH<br />

AD6640 EB<br />

LATCH<br />

AD6620<br />

H<br />

E<br />

A<br />

D<br />

E<br />

R<br />

LATCH<br />

FIFO<br />

LATCH<br />

TRANSCEIVER<br />

PC PRINTER<br />

PORT<br />

AD6620 EVALUATION<br />

BOARD<br />

Figura 16 Diagramas <strong>de</strong> bloques <strong>de</strong> tarjetas <strong>de</strong> evaluación.<br />

En la foto <strong>de</strong> la figura 17, se muestra las tarjetas <strong>de</strong> evaluación <strong>de</strong>l AD6640 y el AD6620. Se <strong>de</strong>scriben<br />

sus entradas y salidas, fuentes <strong>de</strong> alimentación y puerto <strong>de</strong> programación. OUTPUT es la salida <strong>de</strong> datos que serán<br />

enviadas a la tarjeta multiplexora y luego hacia la PC por medio <strong>de</strong> la tarjeta <strong>de</strong> control.<br />

CLK 3.3V<br />

PROGRAMMING PORT<br />

3.3V<br />

5V ANTENNA ENABLE<br />

OUTPUT<br />

Figura 17 Fotografía <strong>de</strong> tarjetas <strong>de</strong> evaluación.<br />

2.2.1.2 Bloque <strong>de</strong> adquisición con tarjeta <strong>de</strong>sarrollada en <strong>Jicamarca</strong><br />

Tomando como base los circuitos <strong>de</strong> las dos tarjetas <strong>de</strong> evaluación, se <strong>de</strong>sarrolló una nueva tarjeta <strong>de</strong><br />

adquisición que incluía al AD6640 y al AD6620. Esta tarjeta se <strong>de</strong>sarrolló como parte <strong>de</strong>l proyecto <strong>REX</strong>-<strong>2X</strong>, cuyo<br />

fin —a partir <strong>de</strong>l conocimiento adquirido en <strong>REX</strong>-2A— fue <strong>de</strong>sarrollar un sistema don<strong>de</strong> todo sea diseñado en<br />

<strong>Jicamarca</strong>. Su diagrama <strong>de</strong> bloques se muestra en la figura 18.<br />

En la tarjeta <strong>de</strong>sarrollada en <strong>Jicamarca</strong> se utilizó el mismo diseño <strong>de</strong> la tarjeta <strong>de</strong> evaluación <strong>de</strong>l AD6640.<br />

Para el caso <strong>de</strong>l AD6620, se eliminan algunas etapas como: el buffer <strong>de</strong> entrada, ya que este está incluido en el<br />

AD6640EB; la FIFO, ya que este no es utilizado durante la adquisición; los jumpers, ya que estos permiten<br />

distintos modos <strong>de</strong> trabajo, pero en nuestra aplicación sólo se utiliza un modo.<br />

14


AD6640 EB<br />

AD6620<br />

LATCH &<br />

BUFFER<br />

H<br />

E<br />

A<br />

D<br />

E<br />

R<br />

LATCH<br />

SENDING<br />

DATA FLAG<br />

TRANSCEIVER<br />

PC PRINTER<br />

PORT<br />

DIGITAL RECEIVE<br />

JICAMARCA BOARD<br />

Figura 18 Diagrama <strong>de</strong> bloque <strong>de</strong> tarjeta receptor digital <strong>de</strong>sarrollada en <strong>Jicamarca</strong>.<br />

Se le agregó al diseño dos bloques nuevos: el primero es un conjunto <strong>de</strong> registros previos al hea<strong>de</strong>r para<br />

proteger las salidas <strong>de</strong>l AD6620, se utilizó integrados 74AC574 los cuales operan a 5V, para trabajar las señales<br />

recibidas <strong>de</strong>l receptor a nivel TTL (el receptor trabaja a 3.3V), ya que la electrónica que sigue a esta tarjeta trabaja<br />

con esos niveles. El segundo es un LED, que sirve como aviso (Bloque Sending Flag) visible <strong>de</strong> que la tarjeta está<br />

enviando datos; para ello sigue la lógica <strong>de</strong> encen<strong>de</strong>r cuando exista un dato listo (señal DV='1' ó IQ='1'). Esta señal<br />

es muy útil cuando se realizan pruebas en el montaje <strong>de</strong> la tarjeta.<br />

En la foto <strong>de</strong> la figura 19, se muestra la tarjeta <strong>de</strong>sarrollada en <strong>Jicamarca</strong>. Se <strong>de</strong>scriben a<strong>de</strong>más sus<br />

entradas y salidas y fuentes <strong>de</strong> alimentación. OUTPUT es la salida <strong>de</strong> datos que serán enviadas a la tarjeta<br />

multiplexora y luego hacia la PC por medio <strong>de</strong> la tarjeta <strong>de</strong> control.<br />

CLK<br />

PROGRAMMING PORT<br />

ANTENNA<br />

5V<br />

3.3V<br />

ENABLE<br />

OUTPUT<br />

Figura 19 Fotografía <strong>de</strong> la tarjeta <strong>de</strong>sarrollada en <strong>Jicamarca</strong><br />

Los circuitos esquemáticos <strong>de</strong> esta tarjeta se encuentran en el Anexo D, y fueron diseñados utilizando el<br />

software Eagle 4.16r2 <strong>de</strong> CADSOFT.<br />

15


2.2.2 Bloque multiplexor <strong>de</strong> señal<br />

Este multiplexor recibe las señales <strong>de</strong> dos tarjetas y permite que compartan un solo bus <strong>de</strong> datos <strong>de</strong> salida,<br />

el uso <strong>de</strong>l bus se da en el momento que se tenga un dato listo (DV='1'), sin prioridad entre tarjetas, asumiendo que<br />

los datos estarán listos en tiempos distintos para cada tarjeta (Se vera con más <strong>de</strong>talle en la lógica <strong>de</strong> control).<br />

2.2.2.1 Multiplexor <strong>de</strong>l equipo <strong>REX</strong>- 2A<br />

En la figura 20 se muestra el diagrama <strong>de</strong> bloques <strong>de</strong> esta tarjeta. Esta tarjeta recibe los datos directamente<br />

<strong>de</strong> la tarjeta <strong>de</strong> evaluación <strong>de</strong>l AD6620, por medio <strong>de</strong> un cable flat <strong>de</strong> 40 pines; los datos entran directamente a<br />

buffers tri-state, para unir los dos canales en un solo bus <strong>de</strong> salida. Las señales DV e IQ <strong>de</strong> cada tarjeta son las que<br />

realizaran la lógica <strong>de</strong> control, habilitando el buffer respectivo para permitir la transferencia <strong>de</strong> los datos, DV e IQ<br />

luego son sincronizadas para ser enviadas a la tarjeta <strong>de</strong> control. Para po<strong>de</strong>r discriminar entre que canal está<br />

enviando datos, ya que para la tarjeta <strong>de</strong> control se utiliza un mismo canal <strong>de</strong> datos para DV e IQ, se envía a<strong>de</strong>más<br />

la señal DV <strong>de</strong>l canal uno por otro pin al control, al no estar sincronizada con el reloj esta señal se encuentra<br />

atrasada un ciclo <strong>de</strong>l DV e IQ <strong>de</strong> salida. A<strong>de</strong>más por la tarjeta multiplexora pasan las señales <strong>de</strong> habilitación para<br />

las tarjetas <strong>de</strong> adquisición provenientes <strong>de</strong> la tarjeta <strong>de</strong> control (en el punto 2.3.2 se especifica con mayor <strong>de</strong>talle).<br />

H<br />

E<br />

A<br />

D<br />

E<br />

R<br />

CH1<br />

H<br />

E<br />

A<br />

D<br />

E<br />

R<br />

CH2<br />

DATA1<br />

D<br />

DV1<br />

L<br />

DVRX1<br />

IQRX1<br />

DVRX2<br />

IQRX2<br />

DATA2<br />

D<br />

DV2<br />

L<br />

SET<br />

CLR<br />

SET<br />

CLR<br />

Q<br />

Q<br />

DV1<br />

DV2<br />

Q<br />

Q<br />

D<br />

D<br />

SET<br />

CL R<br />

SET<br />

CL R<br />

Q DV<br />

Q<br />

IQ<br />

Q<br />

Q<br />

DATA<br />

DV<br />

IQ<br />

DV1<br />

GCLK<br />

EN_RX1<br />

EN_RX2<br />

T<br />

O<br />

C<br />

O<br />

N<br />

T<br />

R<br />

O<br />

L<br />

C<br />

A<br />

R<br />

D<br />

Figura 20 Diagrama <strong>de</strong> bloques <strong>de</strong> MUX <strong>REX</strong> -2A.<br />

Cuando se probó la tarjeta <strong>de</strong> recepción <strong>de</strong>sarrollada en <strong>Jicamarca</strong>, con la tarjeta multiplexora <strong>de</strong>l <strong>REX</strong>-<br />

2A, se notaron una serie <strong>de</strong> problemas en la adquisición <strong>de</strong> datos y en la forma <strong>de</strong> las señales a la entrada <strong>de</strong> la<br />

tarjeta. Al revisar la señal DV, a la salida <strong>de</strong> la tarjeta MUX tenía el ancho <strong>de</strong> tres ciclos <strong>de</strong> reloj y no <strong>de</strong> dos,<br />

a<strong>de</strong>más los niveles <strong>de</strong> la señal DV e IQ a la entrada llegaban hasta 8V pico. Finalmente se encontró el problema<br />

<strong>de</strong>l ancho <strong>de</strong> DV a la salida, radica en que la nueva tarjeta <strong>de</strong> adquisición utiliza el flanco <strong>de</strong> bajada <strong>de</strong>l reloj (véase<br />

el circuito esquemático Anexo A) al llegar a la tarjeta multiplexora <strong>de</strong>l <strong>REX</strong>-2A, pasa por una lógica combinacional<br />

antes <strong>de</strong> ser sincronizada; esta lógica combinacional genera retrasos que en el caso <strong>de</strong> la tarjeta <strong>de</strong> adquisición <strong>de</strong>l<br />

<strong>REX</strong>-<strong>2X</strong> origina que se tome la señal DV en tres flancos y no en dos. Para solucionar este y los <strong>de</strong>más problemas,<br />

se hizo un rediseño en la tarjeta <strong>de</strong> multiplexor que se muestra a continuación.<br />

16


2.2.2.2 Multiplexor <strong>de</strong>l equipo <strong>REX</strong>- <strong>2X</strong><br />

Para hacer el diseño <strong>de</strong> la nueva tarjeta multiplexora, primero se analizó los requerimientos que esta tenía<br />

y los problemas que hasta el momento presentaba: al trabajar las señales a 5V se observa una mayor distorsión <strong>de</strong><br />

la señales a la entrada <strong>de</strong> la tarjeta multiplexora y en las que tiene un bajo duty cycle (como DV e IQ), se observan<br />

sobre impulsos <strong>de</strong> hasta 8V. Todo circuito secuencial <strong>de</strong>be inicialmente sincronizar todas sus señales <strong>de</strong> entrada,<br />

antes <strong>de</strong> realizar cualquier lógica combinacional para evitar problemas con los retrasos que estos generan; todas las<br />

señales que se conectan a la tarjeta <strong>de</strong> control <strong>de</strong>ben pasar por el mismo bus (Hea<strong>de</strong>r <strong>de</strong> 50 pines), para lo cual se<br />

<strong>de</strong>be evitar la distorsión que se puedan generar entre señales como llevar la señal <strong>de</strong> reloj por el bus <strong>de</strong> datos.<br />

En la figura 21 se muestra el diagrama <strong>de</strong> bloques <strong>de</strong> la tarjeta multiplexora <strong>de</strong>l <strong>REX</strong>-<strong>2X</strong>, don<strong>de</strong> las<br />

señales inicialmente son registradas, menos las que habilitan a los buffers, porque esto hubiese implicado el uso <strong>de</strong><br />

un arreglo más, ya que las señales <strong>de</strong> datos pasan por resistencias <strong>de</strong> bajo valor (entre 50 a 300 ohmios) antes <strong>de</strong><br />

ingresar a los buffers.<br />

H<br />

E<br />

A<br />

D<br />

E<br />

R<br />

CH1<br />

H<br />

E<br />

A<br />

D<br />

E<br />

R<br />

CH2<br />

DVRX1<br />

IQRX1<br />

DVRX2<br />

IQRX2<br />

R ES I STOR<br />

ARRAY<br />

R ES I STOR<br />

ARRAY<br />

DATA1<br />

DV1<br />

DV1<br />

DV2<br />

DATA2<br />

D<br />

L<br />

REGISTER<br />

DV2<br />

D<br />

L<br />

SET<br />

CLR<br />

SET<br />

CLR<br />

Q<br />

Q<br />

DVR1<br />

DVR2<br />

IQR1<br />

IQR2<br />

Q<br />

Q<br />

DV<br />

IQ<br />

DATA<br />

DV<br />

IQ<br />

DVR1<br />

GCLK<br />

EN_RX1<br />

EN_RX2<br />

T<br />

O<br />

C<br />

O<br />

N<br />

T<br />

R<br />

O<br />

L<br />

C<br />

A<br />

R<br />

D<br />

Figura 21 Diagrama <strong>de</strong> bloques <strong>de</strong> MUX <strong>REX</strong> -<strong>2X</strong>.<br />

Para el caso <strong>de</strong> las entradas <strong>de</strong> DV, IQ y reloj, se diseñó el circuito que se muestra en la figura 22. Este<br />

circuito se le <strong>de</strong>nomina circuito <strong>de</strong> amortigüamiento, ya que recibe una señal con un sobre impulso hasta <strong>de</strong> 3V, y<br />

se encarga <strong>de</strong> recortarlo y reducir el ruido <strong>de</strong> alta frecuencia.<br />

17


VCC<br />

Figura 22 Circuito <strong>de</strong> amortiguamiento <strong>de</strong> señales DV, IQ y CLK.<br />

La resistencia en serie a la entrada se <strong>de</strong>be a que las compuertas o registros, por los cuales pasará la señal,<br />

tienen una capacitancia <strong>de</strong> entrada muy pequeña (en el or<strong>de</strong>n <strong>de</strong> pico faradios), que junto a la resistencia forman un<br />

filtro pasabajos, el cual se escoge para <strong>de</strong>jar pasar las señales <strong>de</strong> interés. Bajo este mismo criterio es que se colocan<br />

el arreglo <strong>de</strong> resistencias en el bus <strong>de</strong> datos.<br />

Los diodos que se observan en la figura 22, son diodos rápidos encargados <strong>de</strong> eliminar los picos <strong>de</strong> voltaje<br />

que estén fuera <strong>de</strong>l rango <strong>de</strong>l trabajo TTL, estos no fueron colocados en el bus <strong>de</strong> datos ya que no se observaban<br />

sobre impulsos <strong>de</strong> consi<strong>de</strong>ración para agregarlos en el diseño, lo cual complicaría el ruteado <strong>de</strong>l PCB.<br />

2.2.3 Bloque <strong>de</strong> control.<br />

Esta etapa recibe señales <strong>de</strong> dos lados; el primero las señales <strong>de</strong>l multiplexor <strong>de</strong> canales que provienen <strong>de</strong><br />

los receptores digitales, y señales <strong>de</strong>l controlador <strong>de</strong> radar (SYNCHRO, WINDOW y GCLK). La función principal<br />

<strong>de</strong> esta tarjeta es permitir el paso <strong>de</strong> los datos, cuando ocurre la ventana <strong>de</strong>l controlador <strong>de</strong> radar, estos datos son<br />

enviados por un interfaz paralelo a una tarjeta <strong>de</strong> National Instruments (NI-6534), la cual se encuentra en una<br />

computadora y es la encargada <strong>de</strong> almacenar los datos por medio <strong>de</strong> un software <strong>de</strong> control.<br />

En la figura 23, se muestra el diagrama <strong>de</strong> bloques <strong>de</strong> esta tarjeta. Todo el control lo realiza un FPGA<br />

FLEX10K10LC84 <strong>de</strong>l fabricante ALTERA. El esquemático <strong>de</strong> esta tarjeta se encuentra en el Anexo D. El diagrama<br />

<strong>de</strong> bloques muestra <strong>de</strong> manera resumida el circuito, ya que no se han colocado algunas señales que se utilizan y<br />

algunas que pasan por inversores antes <strong>de</strong> entrar o salir <strong>de</strong>l FPGA.<br />

Las señales que recibe <strong>de</strong>l Controlador <strong>de</strong> Radar son: La ventana <strong>de</strong> muestreo "window", el sincronismo<br />

"synchro" y el reloj general <strong>de</strong> 32MHz.<br />

18


DV<br />

IQ<br />

DATA IN<br />

16<br />

DV1<br />

EN-BRD<br />

4<br />

FIFO<br />

8 8<br />

WINDOW<br />

SYNCHRO<br />

GCLK<br />

FLEX 10K10LC84<br />

DATA<br />

OUT<br />

16<br />

8<br />

8<br />

FIFO<br />

FIFO<br />

8<br />

8<br />

32<br />

REQ<br />

N<br />

I<br />

D<br />

A<br />

Q<br />

EF<br />

N<br />

I<br />

2<br />

8<br />

WR<br />

RESET<br />

RD<br />

FIFO<br />

8<br />

6<br />

5<br />

3<br />

4<br />

PCLK1<br />

PCLK2<br />

ACK2<br />

Figura 23 Diagrama <strong>de</strong> bloques <strong>de</strong> la tarjeta <strong>de</strong> control.<br />

Las señales que recibe <strong>de</strong> la tarjeta multiplexora son: los datos <strong>de</strong> los receptores digitales "Data_In", la<br />

señal DV e IQ, la señal DV <strong>de</strong>l primer canal "DV1" y envía la señal <strong>de</strong> habilitación "EN-BRD" para los receptores<br />

digitales. De las cuatro FIFOS dos se utilizan para almacenar los datos "I" y dos para "Q", para eso la señal QUE<br />

habilita escritura <strong>de</strong> la FIFO ocupa 2 bits; cuando se reinicia el sistema el FPGA reinicia a las FIFOS con la señal<br />

<strong>de</strong> "RESET"; la señal <strong>de</strong> lectura "RD", activa la lectura <strong>de</strong> todas las FIFOS al mismo tiempo para enviar los datos<br />

"I" Y "Q" en paralelo. Otra función <strong>de</strong> la FIFO, es la <strong>de</strong> almacenar datos cuando se tiene que esperar que termine la<br />

ventana para po<strong>de</strong>r leerlos (normalmente <strong>de</strong>ntro <strong>de</strong> la ventana se pue<strong>de</strong> realizar la escritura y lectura en las FIFOS)<br />

como es el caso <strong>de</strong> experimentos <strong>de</strong> 8MHz a la salida <strong>de</strong> los receptores.<br />

Para la comunicación con la NIDAQ, se utilizan las siguientes señales: El bus <strong>de</strong> datos <strong>de</strong> 32 bits; "REQ"<br />

es la señal <strong>de</strong> confirmación si hay dato en el bus para que la NIDAQ lo capture; "PCLK1" es un reloj programable<br />

y enviado por la NIDAQ que se utiliza para sincronizar la lectura <strong>de</strong> la FIFO, para el sistema <strong>REX</strong> se programa a<br />

20MHz; "PCLK2" se utiliza como señal para habilitar a los receptores digitales; "ACK2" se utiliza como señal <strong>de</strong><br />

inicio para que el sistema comience a adquirir, al inicio envía un pulso <strong>de</strong> reset a todo el equipo.<br />

2.3 Descripción lógica <strong>de</strong> la unidad <strong>de</strong> control.<br />

Como se mostró en el punto 2.2.3, la lógica <strong>de</strong> control radica en un FPGA, para po<strong>de</strong>r trabajar en este<br />

FPGA existen dos caminos: utilizar el modo gráfico para hacer el diseño en base a compuertas y registros, o utilizar<br />

un lenguaje <strong>de</strong> <strong>de</strong>scripción <strong>de</strong> circuito como el VHDL (Very Hight Description Language). Para el caso <strong>de</strong>l <strong>REX</strong>-<br />

2A la lógica <strong>de</strong> control se diseño en el entorno gráfico <strong>de</strong>l MAX-PLUS II, mientras que para el <strong>REX</strong>-<strong>2X</strong> la lógica<br />

se <strong>de</strong>sarrollo en VHDL utilizando el entorno QUARTUS II, ambos softwares <strong>de</strong> ALTERA.<br />

La función <strong>de</strong> la unidad <strong>de</strong> control es <strong>de</strong> recibir los datos y sincronizarlos con el Controlador <strong>de</strong> Radar. La<br />

tarjeta NI-6534 cuenta con un bus paralelo <strong>de</strong> 32 bits, y el bus <strong>de</strong> datos <strong>de</strong>l AD6620 es <strong>de</strong> 16 bits y es compartido<br />

por los canales real e imaginario; para aprovechar los 32 bits <strong>de</strong> la tarjeta y como unidad <strong>de</strong> almacenamiento<br />

19


temporal se utiliza un arreglo <strong>de</strong> FIFOS, uno para el canal real y otro para el imaginario.<br />

El sistema <strong>de</strong>be agregar una marca en los datos cada vez que llega la señal <strong>de</strong> SYNCHRO <strong>de</strong>l controlador<br />

<strong>de</strong> radar; la marca sirve para que una vez adquiridos los datos en software se verifique que el número <strong>de</strong> muestras<br />

coincida con lo programado, para ello se escoge un buffer <strong>de</strong> lectura tal que la marca siempre se encuentre al inicio,<br />

el número que se utiliza para la marca en ambos sistemas es "19200" para el canal real e imaginario.<br />

A<strong>de</strong>más, la unidad <strong>de</strong> control habilita a los receptores digitales, los cuales se <strong>de</strong>ben hacer en tiempos<br />

distintos con el fin <strong>de</strong> que no envíen datos al multiplexor al mismo tiempo. Para el <strong>REX</strong>-2A este retraso es <strong>de</strong> 6<br />

ciclos <strong>de</strong> reloj y para el <strong>REX</strong>-<strong>2X</strong> es <strong>de</strong> 4 ciclos.<br />

2.3.1 Transferencia <strong>de</strong> datos a la tarjeta NI-6534<br />

La tarjeta NI-6534 cuenta con un bus <strong>de</strong> datos bidireccional <strong>de</strong> 32bits y 8 bits para control. Existen<br />

muchas formas <strong>de</strong> transferir datos entre un periférico y la tarjeta NIDAQ, pero para la aplicación <strong>de</strong> <strong>REX</strong> se utiliza<br />

transferencias con el bus <strong>de</strong> datos como entrada y con confirmación <strong>de</strong> escritura (usando las señales <strong>de</strong> control). A<br />

continuación se muestran dos <strong>de</strong> los modos <strong>de</strong> transferencia <strong>de</strong> datos.<br />

La transferencia tipo "Pattern I/O" con señal <strong>de</strong> confirmación externa, trabaja con el bus <strong>de</strong> datos (en<br />

nuestro caso como entrada) y la señal <strong>de</strong> REQ como confirmación <strong>de</strong> un dato válido. En la figura 24 se muestra un<br />

diagrama <strong>de</strong> tiempos para este tipo <strong>de</strong> transferencia, la señal <strong>de</strong> REQ se mantiene en baja y una vez colocado un<br />

dato válido se pone a alta para que la NIDAQ capture este dato y un tiempo <strong>de</strong>spués (20ns como mínimo) se vuelve<br />

a mandar a baja.<br />

Figura 24 Transferencia "Patter I/O " con REQ externo.<br />

El tipo <strong>de</strong> transferencia "BURST", es la que se utiliza para el sistema <strong>REX</strong>, para ello la tarjeta NIDAQ<br />

genera un reloj interno programable que para nuestro caso es <strong>de</strong> 20MHz, el cual saldrá por el pin PCLK1. A<strong>de</strong>más<br />

se utilizan como señales <strong>de</strong> control ACK1 (NIDAQ a <strong>REX</strong>) y REQ1 (<strong>REX</strong> a NIDAQ).<br />

En la figura 25, se muestra un diagrama <strong>de</strong> tiempos para una transferencia <strong>de</strong>l tipo "BURST". Para que la<br />

NIDAQ adquiera un dato se <strong>de</strong>be cumplir: cuando se requiera adquirir datos se <strong>de</strong>be mandar a alta ACK1 (por<br />

software), lo cual habilitará a la NIDAQ; cuando se tenga un dato listo este se <strong>de</strong>be ingresar por el puerto <strong>de</strong> datos<br />

y asegurarse que en el flanco <strong>de</strong> subida <strong>de</strong> PCLK1 se encuentre el dato y el REQ en alta para asegurar la captura.<br />

Viendo el gráfico, los datos que se estarían ingresando para el ejemplo son: 19200, 5, -3, 0, 6, -4, 1, 5 y -1.<br />

20


Figura 25 Diagrama <strong>de</strong> tiempos <strong>de</strong> transferencia tipo "BURST".<br />

En el caso <strong>de</strong> <strong>REX</strong>, el reloj <strong>de</strong> 20MHz <strong>de</strong> la NIDAQ se utiliza para sincronizar la lectura <strong>de</strong> la FIFO, la<br />

cual por ser asíncrona requiere que se genere el pulso <strong>de</strong> lectura que se realiza en baja, por esta razón no se pue<strong>de</strong><br />

transferir un dato por cada ciclo <strong>de</strong> PCLK1, sino cada dos. En la figura 26 se muestra una lectura <strong>de</strong> datos <strong>de</strong>l<br />

sistema <strong>REX</strong> utilizando la transferencia <strong>de</strong>l tipo "BURST", está se haría <strong>de</strong> la siguiente forma: Una vez que ACK1<br />

está en alta ya que las FIFOS tienen datos para transferir primero se habilita la lectura <strong>de</strong> la FIFO (en baja), luego<br />

al siguiente ciclo se genera el flanco para REQ1 que permite la captura y a<strong>de</strong>más se <strong>de</strong>shabilita RD_FIFO para<br />

actualizar su contador, así se realiza sucesivamente hasta obtener todos los datos que se <strong>de</strong>sean leer a lo que<br />

RD_FIFO regresa a alta y REQ genera un pulso más para recoger el último dato. Para este ejemplo los datos<br />

capturados serían: 19200, 5, -3, 1, -6. En el caso <strong>de</strong> que la FIFO esté vacía REQ1 y RD_FIFO se <strong>de</strong>shabilitan.<br />

Figura 26 Diagrama <strong>de</strong> tiempos para una transferencia <strong>REX</strong> - NIDAQ.<br />

2.3.2 Sincronización entre señales <strong>de</strong>l multiplexor y el Controlador <strong>de</strong> Radar<br />

Las señales <strong>de</strong>l Receptor Digital y el Controlador <strong>de</strong> Radar, sólo se encuentran sincronizadas por el reloj<br />

<strong>de</strong> 32MHz, para lograr una sincronización entre el WINDOW y las señales <strong>de</strong>l receptor es necesario <strong>de</strong>sarrollar un<br />

bloque en la unidad <strong>de</strong> control que se encargue <strong>de</strong> que el número <strong>de</strong> muestras que se calcula esté <strong>de</strong>ntro <strong>de</strong> la<br />

ventana para que sean adquiridas y agregando la marca se tengan paquetes en los cuales al inicio <strong>de</strong> estos se tenga<br />

la marca y si no, se asume un error en sincronismo y el sistema se inicializará (todo este proceso se realiza por<br />

software).<br />

Para po<strong>de</strong>r explicar este funcionamiento lo haremos con un ejemplo: consi<strong>de</strong>rando que se están usando los<br />

dos canales <strong>de</strong> adquisición, cuya tasa <strong>de</strong> salida es <strong>de</strong> 4MHz y el reloj es <strong>de</strong> 32MHz. Por el lado <strong>de</strong>l controlador <strong>de</strong><br />

21


adar se escoge que capture dos muestras con 4MHz <strong>de</strong> resolución.<br />

En la figura 27 se muestra el diagrama <strong>de</strong> tiempos, para este ejemplo <strong>de</strong> un canal (DV=DV1) se están<br />

consi<strong>de</strong>rando dos casos: uno con la señal DV1 <strong>de</strong>ntro <strong>de</strong> la ventana (DV1_a) y otra el caso critico don<strong>de</strong> DV1 está<br />

un ciclo fuera y otro <strong>de</strong>ntro <strong>de</strong> la ventana (DV1_b).<br />

Figura 27 Diagrama <strong>de</strong> tiempos para el ejemplo.<br />

Para lograr el sincronismo, se tomará a la señal DV <strong>de</strong>l canal uno como referencia, ya que esta señal es la<br />

primera en habilitarse y por en<strong>de</strong> la primera en llegar (la otra llega cuatro ciclos <strong>de</strong>spués para <strong>REX</strong>-<strong>2X</strong> y seis para<br />

<strong>REX</strong>-2A).El procedimiento consiste en verificar en que momento ocurre un DV1, teniendo también en cuenta el<br />

caso crítico, y generar un nuevo DV, IQ y Data que vayan junto con un nuevo WINDOW el cual coincidirá con el<br />

inicio <strong>de</strong>l primer DV1 <strong>de</strong> la ventana, y se cortará con el último DV. La señal <strong>de</strong> SYNCHRO dura cuatro ciclos <strong>de</strong><br />

reloj ya que el Controlador <strong>de</strong> Radar <strong>de</strong>l sistema <strong>REX</strong> trabaja con pasos <strong>de</strong> 125ns (8MHz) y en este don<strong>de</strong> se<br />

genera esta señal.<br />

A todas las señales que entran al bloque <strong>de</strong> sincronización se les retrasan dos ciclos <strong>de</strong> reloj, para po<strong>de</strong>r<br />

trabaja r con el caso crítico mostrado en DV1_b <strong>de</strong> la figura 27.<br />

2.3.3 Lógica <strong>de</strong> control <strong>de</strong>l <strong>REX</strong>-2A<br />

En el Anexo A se muestra la <strong>de</strong>scripción gráfica <strong>de</strong> la unidad <strong>de</strong> control <strong>de</strong>l <strong>REX</strong>-2A. Para <strong>REX</strong>-<strong>2X</strong> se<br />

separó en bloques la lógica <strong>de</strong> control para un diseño modular (ofrece ventajas en el diseño y las pruebas<br />

in<strong>de</strong>pendientes), muchos <strong>de</strong> estos bloques se basan en la lógica <strong>de</strong>l <strong>REX</strong>-2A.<br />

2.3.4 Lógica <strong>de</strong> control <strong>de</strong>l <strong>REX</strong>-<strong>2X</strong><br />

Para la <strong>de</strong>scripción lógica <strong>de</strong> la unidad <strong>de</strong> control <strong>de</strong>l <strong>REX</strong>-<strong>2X</strong>, se dividió el diseño en cinco bloques bien<br />

<strong>de</strong>finidos (partiendo <strong>de</strong>l principio <strong>de</strong> modulación) los cuales permiten ser diseñados probados in<strong>de</strong>pendientemente,<br />

estos bloques son:<br />

• Bloque ENABLE_RECEIVERS: Este bloque recibe la señal <strong>de</strong> habilitación <strong>de</strong>s<strong>de</strong> la NIDAQ y habilita<br />

los receptores uno cada cuatro ciclos <strong>de</strong>spués <strong>de</strong>l otro.<br />

• Bloque INPUT_SYNC: Es el encargado <strong>de</strong> sincronizar las señales que vienen <strong>de</strong>s<strong>de</strong> la tarjeta multiplexora<br />

22


(<strong>de</strong> los receptores digitales) y <strong>de</strong>l Controlador <strong>de</strong> Radar, basándose en la sincronización mostrada en el punto 2.3.2.<br />

• Bloque ADQ_NIDAQ: Encargada <strong>de</strong> controlar a los <strong>de</strong>más bloques <strong>de</strong>s<strong>de</strong> su habilitación, reseteo,<br />

escritura, lectura, escritura <strong>de</strong> marcas, etc.<br />

• Bloque PREPARE_SIGNAL: Se encarga <strong>de</strong> preparar las señales <strong>de</strong> escritura <strong>de</strong> datos para cada grupo <strong>de</strong><br />

FIFOS (I y Q) teniendo en cuenta que la escritura en la FIFO es asíncrona. A<strong>de</strong>más escribe las marcas.<br />

• Bloque FIFO_CONTROL: Es el encargado <strong>de</strong> la lectura y escritura <strong>de</strong> las FIFOS, para lo cual trabaja con<br />

dos relojes: El reloj general <strong>de</strong> 32MHz y el reloj <strong>de</strong> la NIDAQ <strong>de</strong> 20MHz.<br />

estado.<br />

A continuación se muestra <strong>de</strong>talladamente cada uno <strong>de</strong> estos bloques junto con sus tablas y máquinas <strong>de</strong><br />

2.3.4.1 Bloque ENABLE_RECEIVERS<br />

Para habilitar a los receptores, este bloque utiliza dos señales <strong>de</strong> control: NPCLK2 (<strong>de</strong>s<strong>de</strong> la NIDAQ) y<br />

WINDOW (<strong>de</strong>s<strong>de</strong> el Controlador <strong>de</strong> Radar), para habilitar el sistema NPCLK2 <strong>de</strong>be estar en baja (señal invertida<br />

<strong>de</strong> PCLK2) y <strong>de</strong>be llegar una ventana <strong>de</strong> muestreo. En la figura 28 se muestra sus entradas y salidas y en la Tabla 4<br />

se muestra la <strong>de</strong>scripción <strong>de</strong> cada entrada y salida.<br />

NPCLK2<br />

EN_D<br />

WINSYNC<br />

ENABLE_RECEIVERS<br />

EN_C<br />

EN_B<br />

GCLK<br />

EN_A<br />

Figura 28 Bloque ENABLE_RECEIVERS.<br />

SEÑAL<br />

GCLK<br />

WINDOW<br />

NPCLK2<br />

EN_D, EN_C,<br />

EN_B, EN_A<br />

DESCRIPCIÓN<br />

Reloj general <strong>de</strong> 32MHz.<br />

Señal <strong>de</strong> Windows <strong>de</strong>l Controlador <strong>de</strong> Radar.<br />

Señal negada <strong>de</strong> PCLK2 <strong>de</strong> la NIDAQ usada para habilitar <strong>de</strong>s<strong>de</strong> el software.<br />

Señales que van a los habilitadores <strong>de</strong> los receptores digitales (D es para el canal 1<br />

y C para el 2).<br />

Tabla 4 Frecuencias centrales a la salida <strong>de</strong>l ADC para el Radar SOUSY (MHz)<br />

En la figura 29 se muestra su máquina <strong>de</strong> estados <strong>de</strong> este bloque. La señal "Contador" se activa cuando<br />

sale <strong>de</strong>l estado RX_DISABLE y se incrementa cada ciclo <strong>de</strong> reloj hasta que regresa a RX_DISABLE don<strong>de</strong> se<br />

limpia y <strong>de</strong>shabilita. En la tabla 5 se muestra la tabla <strong>de</strong> salidas y estados para esta máquina <strong>de</strong> Moore.<br />

23


NPCLK2 = ’0’<br />

NPCLK2 = ’1’<br />

RX<br />

Disable<br />

NPCLK2 = ’1’ |<br />

WINSYNC =’0’<br />

NPCLK2 = ’0’ &<br />

WINSYNC =’1’<br />

Contador


SEÑAL<br />

DESCRIPCIÓN<br />

GCLK<br />

Reloj general <strong>de</strong> 32MHz proveniente <strong>de</strong>l Controlador <strong>de</strong> Radar.<br />

DV, IQ<br />

Señal DV e IQ, provenientes <strong>de</strong> la tarjeta multiplexora.<br />

DV1<br />

Señal DV <strong>de</strong>l primer canal <strong>de</strong> Receptor Digital conectado al multiplexor.<br />

WINDOW, RCSYNC Señales WIN y SYNC <strong>de</strong>l Controlador <strong>de</strong> Radar.<br />

DATA_IN<br />

Bus <strong>de</strong> datos <strong>de</strong>l Receptor Digital que pasan por la tarjeta Multiplexora.<br />

DATA_OUT Bus <strong>de</strong> datos sincronizados.<br />

DV_SYNC,IQ_SYNC Señal DV e IQ sincronizadas.<br />

RCSYNCOUT Señal <strong>de</strong> SYNC sincronizada con las <strong>de</strong>más señales <strong>de</strong> salida.<br />

WINSYNC<br />

Señal que permite el paso <strong>de</strong> los datos sincronizados.<br />

Tabla 6 Descripción <strong>de</strong> señales <strong>de</strong>l bloque INPUT_SYNC.<br />

En la figura 31, se muestra la máquina <strong>de</strong> estados <strong>de</strong> INPUT_SYNC. Cuando se encuentra en el estado<br />

"SYNC_ENABLE = '1' ", la señal WinSync se encuentra en alta como se muestra en la figura 27 en el punto 2.3.2.<br />

Cuando Winsync se encuentra en alta las señales <strong>de</strong> DVsync e IQsync pue<strong>de</strong>n pasar, caso contrario no <strong>de</strong>ja pasar<br />

estas señales para no activar los siguientes bloques.<br />

DV1 = ’0’ |<br />

WINDOW =’0’<br />

SYNC__<br />

ENABLE<br />

= ’0’<br />

DV1 = ’1’ &<br />

WINDOW =’1’<br />

SYNC__<br />

ENABLE<br />

= ’1’<br />

DV1 = ’1’ &<br />

WINDOW =’0’<br />

DV1 = ’0’ |<br />

WINDOW =’1’<br />

Figura 31 Máquina <strong>de</strong> estados <strong>de</strong> INPUT_SYNC.<br />

2.3.4.3 Bloque ADQ_NIDAQ<br />

Este bloque es el encargado <strong>de</strong> inicializar y habilitar la adquisición <strong>de</strong> datos que van a la FIFO, a<strong>de</strong>más <strong>de</strong><br />

habilitar el almacenamiento <strong>de</strong> la marca cuando llega la señal <strong>de</strong> SYNCHRO. En la figura 32 se muestra el bloque<br />

ADQ_NIDAQ con sus entradas y salidas, las cuales se <strong>de</strong>scriben en la tabla 7.<br />

25


CTRLC<br />

CLR_FIFO<br />

RCSYNC<br />

ADQ_NIDAQ<br />

EN_RX<br />

GCLK<br />

WR_MARK<br />

Figura 32 Bloque ADQ_NIDAQ.<br />

SEÑAL<br />

GCLK<br />

CTRLC<br />

RCSYNC<br />

CLR_FIFO<br />

EN_RX<br />

WR_MARK<br />

DESCRIPCIÓN<br />

Reloj general <strong>de</strong> 32MHz proveniente <strong>de</strong>l Controlador <strong>de</strong> Radar.<br />

Señal <strong>de</strong> Habilitación negada <strong>de</strong> ACK2 proveniente <strong>de</strong> la NIDAQ.<br />

Señal proveniente <strong>de</strong> INPUT_SYNC, utilizada para habilitar la escritura <strong>de</strong> marca.<br />

Envía una señal para limpiar las FIFOS y ponerlas en un estado inicial.<br />

Habilita el paso <strong>de</strong> datos al bloque PREPARE_SIGNAL.<br />

Le dice al bloque PREPARE_SIGNAL que escriba la marca en las FIFOS.<br />

Tabla 7 Descripción <strong>de</strong> señales <strong>de</strong>l bloque ADQ_NIDAQ.<br />

En la figura 33, se muestra la máquina <strong>de</strong> estados <strong>de</strong> este bloque, mientras no se habilite CTRLC (en<br />

baja), este se queda en un estado <strong>de</strong> stand by, pero una vez habilitándose espera al primer SYNCRHO y se escribe<br />

la marca (para esto se utiliza tres estados ya que se quiere guardar dos marcas).<br />

CTRLC = ’1’ |<br />

RCSYNCOUT =’1’<br />

ADQ<br />

STB<br />

CTRLC = ’0’ &<br />

RCSYNCOUT =’0’<br />

RCSYNCOUT =’1’<br />

ADQ<br />

CLRF<br />

RCSYNCOUT =’0’<br />

ADQ<br />

MARK2<br />

ADQ<br />

MARK1<br />

RCSYNCOUT =’1’<br />

RCSYNCOUT =’0’<br />

ADQ<br />

SYNC<br />

END<br />

RCSYNCOUT =’0’<br />

ADQ<br />

MARK3<br />

ADQ<br />

NO<br />

MARK<br />

RCSYNCOUT =’1’<br />

Figura 33 Máquina <strong>de</strong> estados <strong>de</strong> ADQ_NIDAQ.<br />

Se permite el paso <strong>de</strong> datos, mientras está habilitado el sistema no reciba la señal <strong>de</strong> SYNCHRO, si la<br />

recibe espera a que se termine la marca para entrar al estado <strong>de</strong> escritura <strong>de</strong> marca. En la tabla 8 se muestra la tabla<br />

<strong>de</strong> estados salidas para esta máquina <strong>de</strong> Moore.<br />

26


ESTADO CLR_FIFO EN_RX WR_MARK<br />

ADQ_STB '0' '0' '0'<br />

ADQ_CLRF '1' '0' '0'<br />

ADQ_MARK1,2,3 '0' '1' '1'<br />

ADQ_NO_MARK '0' '1' '0'<br />

ADQ_SYNC_END '0' '1' '0'<br />

Tabla 8 Tabla Estado vs. Salida <strong>de</strong> ADQ_NIDAQ.<br />

2.3.4.4 Bloque PREPARE_SIGNAL<br />

Este bloque es el encargado <strong>de</strong> separar en un ciclo <strong>de</strong> reloj entre los datos para I y Q, a<strong>de</strong>más <strong>de</strong> indicar al<br />

bloque <strong>de</strong> control <strong>de</strong> FIFO si <strong>de</strong>be guardar los datos en las memorias para el canal real o imaginario, a<strong>de</strong>más<br />

reenvía la or<strong>de</strong>n <strong>de</strong> marca que recibe <strong>de</strong> ADQ_NIDAQ. En la figura 34 se muestra el diagrama <strong>de</strong> este bloque con<br />

sus entradas y salidas <strong>de</strong>scritas en la tabla 9.<br />

DATA_IN<br />

16<br />

DV_IN<br />

IQ_IN<br />

EN_RX<br />

MARK_IN<br />

GCLK<br />

PREPARE_SIGNAL<br />

DATA_OUT<br />

16<br />

DV_OUT<br />

IQ_OUT<br />

FIFO_MARK<br />

LOCK<br />

Figura 34 Bloque PREPARE_SIGNAL.<br />

SEÑAL<br />

DESCRIPCIÓN<br />

GCLK<br />

Reloj general <strong>de</strong> 32MHz proveniente <strong>de</strong>l Controlador <strong>de</strong> Radar.<br />

DV_IN, IQ_IN Señal DV e IQ sincronizadas por medio <strong>de</strong> INPUT_SYNC.<br />

EN_RX<br />

Señal <strong>de</strong> habilitación para el paso por este bloque.<br />

MARK_IN Señal que indica que se <strong>de</strong>be escribir una marca en las FIFOS.<br />

DATA_IN Datos sincronizados por medio <strong>de</strong> INPUT_SYNC.<br />

DATA_OUT Datos <strong>de</strong> Salida<br />

DV_OUT, IQ_OUT Salida <strong>de</strong> DV e IQ que serán utilizadas para seleccionar el bloque <strong>de</strong> FIFO.<br />

FIFO_MARK Habilita la escritura <strong>de</strong> la Marca.<br />

LOCK<br />

Bloquea la lectura <strong>de</strong> la FIFO.<br />

Tabla 9 Descripción <strong>de</strong> señales <strong>de</strong>l bloque PREPARE_SIGNAL.<br />

En la figura 35 se muestra la máquina <strong>de</strong> estados <strong>de</strong> este bloque. Cuando se recibe la señal <strong>de</strong> habilitación<br />

<strong>de</strong> marca esta se reenvía al control <strong>de</strong> FIFO y tiene prioridad sobre los datos I y Q. Los Datos <strong>de</strong> I son enviados<br />

directamente y los datos Q son almacenados para ser enviados en el siguiente ciclo <strong>de</strong> reloj.<br />

27


MARK_IN = ‘1’<br />

SEND<br />

MARK<br />

MARK_IN = ‘1’<br />

MARK_IN = ‘0’<br />

WAIT<br />

DV<br />

DV = ‘0’ |<br />

IQ = ‘1’<br />

EN_RX = ‘0’<br />

DV = ‘1’ &<br />

IQ = ‘1’<br />

SEND I<br />

SEND<br />

Q<br />

SLEEP<br />

DV = ‘1’ &<br />

IQ = ‘0’<br />

Figura 35 Máquina <strong>de</strong> estados <strong>de</strong> PREPARE_SIGNAL.<br />

En la tabla 10, se muestra la tabla estado salida para este bloque, estas señales son enviadas al bloque <strong>de</strong><br />

control <strong>de</strong> FIFO para la escritura <strong>de</strong> los datos.<br />

ESTADO DV_OUT IQ_OUT LOCK FIFO_MARK<br />

WAIT_DV '0' '0' '0' '0'<br />

SEND_MARK '1' '0' '1' '1'<br />

SEND_I '1' '1' '1' '0'<br />

SLEEP '0' '0' '1' '0'<br />

SEND_Q '1' '0' '1' '0'<br />

Tabla 10 Tabla Estado vs. Salida <strong>de</strong> PREPARE_SIGNAL.<br />

2.3.4.5 Deshabilitación en escritura<br />

En el momento en el cual se están escribiendo datos a la FIFO, es necesario <strong>de</strong>shabilitar la lectura ya que<br />

al usarse FIFOs asíncronas, pue<strong>de</strong>n ocurrir errores al escribir y leer al mismo tiempo. A<strong>de</strong>más, esta <strong>de</strong>shabilitación<br />

es <strong>de</strong> dos ciclos <strong>de</strong> reloj <strong>de</strong> PCLK1 como se muestra en la figura 36, con el fin <strong>de</strong> asegurar el tiempo necesario para<br />

completar los estados <strong>de</strong> escritura en las FIFOs.<br />

28


LOCK<br />

PCLK1<br />

D<br />

SET<br />

Q<br />

D<br />

SET<br />

Q<br />

LOCK_RD<br />

CL R<br />

Q<br />

CL R<br />

Q<br />

Figura 36 Esquemático para <strong>de</strong>shabilitar durante la escritura<br />

2.3.4.6 Bloque FIFO_CONTROL<br />

Esta unidad es la encargada <strong>de</strong> controlar la lectura y escritura en las FIFOS, a<strong>de</strong>más controla las señales<br />

<strong>de</strong> confirmación <strong>de</strong> lectura para la NIDAQ. En la figura 37 se muestra el diagrama <strong>de</strong> bloques <strong>de</strong> esta unidad, los<br />

datos I, Q y escritura <strong>de</strong> la marca lo recibe <strong>de</strong>l bloque PREPARE_SIGNAL. En la tabla 11 se muestra la<br />

<strong>de</strong>scripción <strong>de</strong> las entradas y las salidas <strong>de</strong> este bloque.<br />

DATA_IN<br />

16<br />

MARK<br />

WR_IN<br />

EN_WR<br />

CLR<br />

PCLK1<br />

LOCK_RD<br />

EF<br />

GCLK 2<br />

FIFO_CONTROL<br />

DATA_OUT<br />

16<br />

RESET_FIFO<br />

WR_OUT<br />

2<br />

REQ<br />

EN_RD<br />

Figura 37 Bloque FIFO_CONTROL.<br />

29


SEÑAL<br />

DESCRIPCIÓN<br />

GCLK Reloj general <strong>de</strong> 32MHz proveniente <strong>de</strong>l Controlador <strong>de</strong> Radar.<br />

PCLK1 Reloj <strong>de</strong> la NIDAQ <strong>de</strong> 20MHz.<br />

CLR Señal para indicar el estado <strong>de</strong> reseteo <strong>de</strong> este bloque incluyendo las FIFOS.<br />

LOCK_RD Bloquea la lectura <strong>de</strong> las FIFOS.<br />

EF<br />

Avisa al bloque que las FIFOS se encuentran vacías.<br />

EN_WR Habilita la escritura en las FIFOS<br />

WR_IN Habilita la escritura en la FIFO para el Canal I ó para el canal Q.<br />

MARK Habilita la escritura <strong>de</strong> marca en las FIFOS.<br />

DATA_IN Bus <strong>de</strong> datos provenientes <strong>de</strong> prepare signal.<br />

DATA_OUT Bus <strong>de</strong> datos que va a las FIFOS.<br />

WR_OUT Habilitador <strong>de</strong> escritura que se conecta a las FIFOS.<br />

RESET_FIFO Señal conectada a los RESET <strong>de</strong> las FIFOS.<br />

REQ Señal que se envía para hacer un REQUEST <strong>de</strong> escritura a la NIDAQ.<br />

EN_RD Habilitador <strong>de</strong> lectura conectada a las FIFOS.<br />

Tabla 11 Descripción <strong>de</strong> señales <strong>de</strong>l bloque FIFO_CONTROL.<br />

En la figura 38 se muestra la máquina <strong>de</strong> estados para la escritura <strong>de</strong> las FIFOs, existen dos bloques<br />

adheridos a esta parte: uno para originar un retraso en el reset <strong>de</strong> las FIFOs y otro para el control <strong>de</strong> lectura. La<br />

tabla 12 muestra las condiciones que <strong>de</strong>ben <strong>de</strong> cumplirse para los estados <strong>de</strong> escritura. En la tabla 13 se muestra los<br />

estados salidas para el bloque <strong>de</strong> escritura, en la marca se habilita la escritura <strong>de</strong> los dos bloques <strong>de</strong> FIFO (I y Q),<br />

con el fin <strong>de</strong> hacerlo en menor tiempo.<br />

CLR = ‘0’ &<br />

EnWR = ‘0’<br />

CONDICION Q<br />

WAIT<br />

DATA<br />

CLR = ‘1’<br />

CLRFEND = ‘1’<br />

CONDICION M<br />

CLEAR<br />

FIFO<br />

PUT Q<br />

DATA<br />

CONDICION I<br />

PUT<br />

MARK<br />

PUT I<br />

DATA<br />

Figura 38 Máquina <strong>de</strong> estados <strong>de</strong> FIFO_CONTROL.<br />

30


CONDICIÓN I<br />

CONDICIÓN Q<br />

CONDICIÓN M<br />

EN_WR='1', MARK='0', WR_IN='0'.<br />

EN_WR='1', MARK='0', WR_IN='1'.<br />

EN_WR='1', MARK='1'.<br />

Tabla 12 Condiciones para escritura en FIFO_CONTROL.<br />

ESTADO WR_OUT DATA_OUT<br />

CLEAR_FIFO "00" 0<br />

WAIT_DATA "00" 0<br />

PUT_MARK "11" 19200<br />

PUT_IDATA "10" DataIn<br />

PUT_QDATA "01" DataIn<br />

Tabla 13 Tabla Estado vs. Salida <strong>de</strong> FIFO_CONTROL.<br />

El otro bloque <strong>de</strong>ntro <strong>de</strong> FIFO_CONTROL es FIFO_READ, encargado <strong>de</strong> enviar la señal <strong>de</strong> lectura a la<br />

FIFO y <strong>de</strong> confirmación <strong>de</strong> dato en el bus a la NIDAQ. El clock con el que trabaja este bloque es enviado por la<br />

NIDAQ por PCLK1 y es <strong>de</strong> 20MHz. Ya que se necesitan por lo menos dos ciclos para realizar una lectura (un ciclo<br />

para colocar la data y otro para confirmar a la NIDAQ) la tasa <strong>de</strong> transferencia máxima hacia la PC será <strong>de</strong><br />

10MSPS (consi<strong>de</strong>rando un sample como 32 bits por el canal I y Q).<br />

DR = ‘1’<br />

DR = ‘1’<br />

STAND<br />

BY<br />

DR = ‘0’<br />

READ<br />

ACK<br />

DR = ‘0’<br />

PUT<br />

DATA<br />

Figura 39 Máquina <strong>de</strong> estados <strong>de</strong> FIFO_READ.<br />

En la tabla 14, muestra los estados salidas para este bloque. Las condiciones para que se pueda salir <strong>de</strong>l<br />

estado <strong>de</strong> STAND_BY es que no se escriben datos, ni se resetean las FIFOS y que la ban<strong>de</strong>ra <strong>de</strong> FIFO vacía no este<br />

activada (que tenga datos almacenados).<br />

ESTADO REQ EN_RD<br />

STAND_BY '1' '0'<br />

PUT_DATA '1' '1'<br />

READ_ACK '0' '0'<br />

Tabla 14 Tabla Estado vs. Salida <strong>de</strong> FIFO_READ.<br />

31


2.4 Software Del Sistema.<br />

El equipo <strong>REX</strong> transfiere sus datos a una computadora, para ello National Instruments ofrece un conjunto<br />

<strong>de</strong> drivers y librerías para el <strong>de</strong>sarrollo <strong>de</strong> aplicaciones que puedan controlar la NIDAQ-6534. Para la adquisición<br />

<strong>de</strong>l sistema <strong>REX</strong>, se utilizan las librerías para Visual C++ ya que todo el <strong>de</strong>sarrollo se encuentra hecho en este<br />

entorno <strong>de</strong> <strong>de</strong>sarrollo.<br />

2.4.1 Software “ACQUIRE PANEL CONTROL”<br />

Este software permite adquirir datos <strong>de</strong>s<strong>de</strong> la tarjeta NIDAQ y almacenarlos en forma <strong>de</strong> dato crudo, con<br />

un formato <strong>de</strong> cabecera propio. En la figura 40 se muestra la interfaz que se visualiza en el software, la ventana<br />

gráfica muestra el primer profile <strong>de</strong> todo el paquete <strong>de</strong> datos que recibe en cada interrupción <strong>de</strong> la NIDAQ.<br />

Figura 40 Panel principal <strong>de</strong> ACQ PANEL CONTROL.<br />

Los parámetros para el experimento, se pue<strong>de</strong>n ingresar <strong>de</strong> forma directa en el cuadro <strong>de</strong> diálogo <strong>de</strong> la<br />

figura 41, o también <strong>de</strong>splegando el combo box y seleccionando alguno <strong>de</strong> los experimentos preestablecidos.<br />

Figura 41 Cuadro <strong>de</strong> diálogo para ingreso <strong>de</strong> parámetros.<br />

32


2.4.2 Software “ACQUIRE CONSOLE”<br />

Este software <strong>de</strong> adquisición permite almacenar los datos en el formato dado en <strong>Jicamarca</strong>, crear<br />

subcarpetas para luego almacenar en cada una 1000 archivos y a<strong>de</strong>más tiene una mayor portabilidad, ya que tiene<br />

sus librerías encapsuladas en espacios <strong>de</strong> nombre. Actualmente este software corre bajo modo consola <strong>de</strong> DOS y el<br />

programa principal cuenta con solo 6 funciones para el manejo <strong>de</strong> la adquisición y almacenamiento. Estas<br />

funciones se <strong>de</strong>tallan en la tabla 15.<br />

FUNCIÓN<br />

PrintMainMenu<br />

DESCRIPCIÓN<br />

Esta función permite imprimir el menú que aparece en la consola que permite<br />

iniciar la adquisición, almacenarla y salir <strong>de</strong>l software.<br />

AllocateMemory<br />

Esta función permite separar el espacio <strong>de</strong> memoria que utilizará la NIDAQ para<br />

transferir sus datos <strong>de</strong>s<strong>de</strong> la tarjeta hacia la memoria.<br />

NIDAQEvent<br />

GetFileName<br />

Cuando la memoria asignada se llena ocurre una interrupción y esta función es<br />

llamada, aquí se verifica si se encuentran las respectivas marcas y se almacena si<br />

se encuentra activada esa opción.<br />

Esta función <strong>de</strong>vuelve el nombre <strong>de</strong>l archivo correspondiente (según el formato<br />

<strong>Jicamarca</strong>), y crea la carpeta respectiva si es el primero <strong>de</strong> 1000 archivos.<br />

SaveRawData<br />

Almacena el Buffer recibido <strong>de</strong> la NIDAQ en un archivo con cabecera<br />

<strong>Jicamarca</strong>, <strong>de</strong>spués <strong>de</strong> haber removido las marcas.<br />

FreeMemory<br />

Libera el espacio <strong>de</strong> memoria asignado por la función AllocateMemory.<br />

Tabla 15 Descripción <strong>de</strong> funciones en software ACQUIRE CONSOLE.<br />

33


3. RESULTADOS<br />

Las pruebas realizadas en el equipo <strong>REX</strong>-<strong>2X</strong>, evalúan tasas máximas <strong>de</strong> transferencia, rango dinámico y<br />

nivel <strong>de</strong> ruido para diferentes experimentos.<br />

3.1 Transferencia Máxima<br />

Al trabajar con un reloj <strong>de</strong> 32MHz, en los receptores digitales se logra una máxima tasa <strong>de</strong> muestreo <strong>de</strong><br />

salida <strong>de</strong> 8MHz (<strong>de</strong>bido a que el mínimo <strong>de</strong>cimado en el AD6620 es <strong>de</strong> 4). A<strong>de</strong>más para un experimento <strong>de</strong> 8MHz<br />

sólo se pue<strong>de</strong> utilizar un canal y esto se <strong>de</strong>be a que la transferencia entre las FIFOS y la NIDAQ se realiza a<br />

10MHz (toma dos ciclos <strong>de</strong> reloj leer un dato).<br />

Para un experimento <strong>de</strong> 8MHz, no se pue<strong>de</strong>n vaciar datos <strong>de</strong> las FIFOS mientras se encuentra la ventana<br />

(en experimentos <strong>de</strong> menor tasa, se pue<strong>de</strong> leer y escribir <strong>de</strong>ntro <strong>de</strong> la ventana). Por lo tanto, para estos<br />

experimentos la ventana <strong>de</strong>be ser menor al 50% <strong>de</strong>l IPP, para permitir que lo que se almacena en las FIFOS sea<br />

vaciado cuando la ventana este inactiva.<br />

También se <strong>de</strong>be tener en cuenta que para este experimento la cantidad <strong>de</strong> datos que se pue<strong>de</strong> almacenar<br />

por ventana <strong>de</strong>be ser menor a la capacidad <strong>de</strong> las FIFOS que es <strong>de</strong> 64Kdatos.<br />

3.2 Pruebas <strong>de</strong> rango dinámico<br />

Para hacer estas pruebas se utilizó un generador <strong>de</strong> señales a dos frecuencias: una para la frecuencia <strong>de</strong>l<br />

Radar <strong>de</strong> <strong>Jicamarca</strong> y otra para el Radar <strong>de</strong> SOUSY <strong>de</strong>sintonizados en 1KHz para observar una onda senoidal en el<br />

software ACQUIRE PANEL CONTROL. Para la tabla 16, el experimento utilizado es “Ionosfera 450Km” cuya<br />

tasa <strong>de</strong> muestreo a la salida es <strong>de</strong> 20KHz, el nivel <strong>de</strong> señal inyectado en la entrada se controla <strong>de</strong>s<strong>de</strong> el generador<br />

<strong>de</strong> señales.<br />

MEDIDA TARJETA 1 TARJETA 2<br />

Ruido <strong>de</strong> 50Ω a 49.92MHz 6 bits excitados 6 bits excitados<br />

Señal Mínima a 49.92MHz -100dBm -103dBm<br />

Señal Máxima a 49.92MHz -30.92dBm -30.8dBm<br />

Rango Dinámico a 49.92MHz 69.08dB 72.2dB<br />

Ruido <strong>de</strong> 50Ω a 53.5MHz 6 bits excitados 6 bits excitados<br />

Señal Mínima a 53.5MHz -95dBm -100dBm<br />

Señal Máxima a 53.5MHz -30.9dBm -30.78dBm<br />

Rango Dinámico a 53.5MHz 64.1dB 69.22dBm<br />

Tabla 16 Pruebas para experimento Ionosfera 450Km.<br />

La tabla 17, muestra los resultados para el experimento “Júpiter 2006” cuya tasa <strong>de</strong> muestreo a la salida es<br />

34


<strong>de</strong> 2MHz. Se pue<strong>de</strong> observar que el nivel <strong>de</strong> ruido para este experimento es mayor, <strong>de</strong>bido al mayor ancho <strong>de</strong><br />

banda que cuenta el filtro <strong>de</strong>l AD6620.<br />

MEDIDA TARJETA <strong>REX</strong><strong>2X</strong>-001 TARJETA <strong>REX</strong><strong>2X</strong>-002<br />

Ruido <strong>de</strong> 50Ω a 49.92MHz 9 bits excitados 9 bits excitados<br />

Señal Mínima a 49.92MHz -70dBm -70dBm<br />

Señal Máxima a 49.92MHz -19.96dBm -19.96dBm<br />

Rango Dinámico a 49.92MHz 50.04dB 50.04dB<br />

Ruido <strong>de</strong> 50Ω a 53.5MHz 8 bits excitados 8 bits excitados<br />

Señal Mínima a 53.5MHz -95dBm -100dBm<br />

Señal Máxima a 53.5MHz -30.9dBm -30.78dBm<br />

Rango Dinámico a 53.5MHz 64.1dB 69.22dBm<br />

Tabla 17 Pruebas para experimento Júpiter 2006.<br />

35


4. BIBLIOGRAFÍA<br />

[1] NATIONAL INSTRUMENTS CORPORATE, NI 653X User Manual for Traditional NI-DAQ,<br />

U.S.A. 1997.<br />

[2] VOLNEI A. PEDRONI, Circuit Design with VHDL, 4ta. Edición. Cambridge, Massachusetts.<br />

London, England. MIT Press, 2004.<br />

[3] ANALOG DEVICES, 67 MSPS Digital Receive Signal Processor AD6620, U.S.A. 2001.<br />

www.analog.com<br />

[4] ANALOG DEVICES, 12-Bit 65 MSPS IF Sampling A/D Converter AD6640, U.S.A. 2003.<br />

www.analog.com<br />

[5] ANALOG DEVICES, AD6620 Evaluation Board Manual, www.analog.com<br />

[6] MICROSOFT VISUAL STUDIO, MSDN documentation for visual studio 2005.<br />

http://msdn.microsoft.com/es-es/library/60k1461a (VS.80).aspx<br />

[7] ALTERA, FLEX 10K Embed<strong>de</strong>d Programmable Logic Device Family, January 2003 version 4.2.<br />

http://www.altera.com/literature/ds/dsf10k.pdf<br />

[8] FAIRCHILD SEMICONDUCTOR, http://www.fairchildsemi.com<br />

[9] CYPRESS SEMICONDUCTOR, http://www.cypress.com<br />

[10] MINICIRCUITS, http://www.minicircuits.com<br />

[11] TEXAS INSTRUMENTS, http://www.ti.com<br />

[12] Informe Tecnico <strong>de</strong>l Módulo DDS Multifrecuencia.<br />

[13] Informe Tecnico <strong>de</strong>l Controlador <strong>de</strong> Radar.<br />

36


5. ANEXOS<br />

ANEXO A Programación y configuración <strong>de</strong>l sistema <strong>de</strong> adquisición<br />

Paso 1: Se realizan las conexiones <strong>de</strong>l Equipo <strong>REX</strong>-<strong>2X</strong> con el Controlador <strong>de</strong> Radar y la PC, así como se muestra<br />

en la figura 42.<br />

<strong>REX</strong>-<strong>2X</strong><br />

CLK WIN SYNC<br />

CLK<br />

ANT<br />

CLK<br />

ANT<br />

OFF<br />

CHANNEL 1<br />

CHANNEL 2<br />

CLK<br />

(CR)<br />

WIN<br />

(CR)<br />

SYNC<br />

(CR)<br />

CLK 1<br />

(CR)<br />

CLK 2<br />

(CR)<br />

± 1 Vpp; 50 Ω ± 1 Vpp; 50 Ω<br />

(From Antena) (From Antena)<br />

PROGRAMMING PORT CH1 (PC)<br />

<strong>REX</strong>-<strong>2X</strong><br />

RXD-01<br />

RXD-02<br />

NYDAQ CONNECTOR<br />

AC<br />

PROGRAMMING PORT CH2 (PC)<br />

PARALLEL PORT (PC)<br />

RADAR CONTROLLER<br />

CLK WIN SYNC<br />

CLK<br />

CLK<br />

OFF<br />

CLK<br />

(<strong>REX</strong><strong>2X</strong>)<br />

WIN<br />

(<strong>REX</strong><strong>2X</strong>)<br />

SYNC<br />

(<strong>REX</strong><strong>2X</strong>)<br />

CLK 1<br />

(<strong>REX</strong><strong>2X</strong>)<br />

CLK 2<br />

(<strong>REX</strong><strong>2X</strong>)<br />

Figura 42 Diagrama <strong>de</strong> interconexiones para la programacicion <strong>de</strong>l <strong>REX</strong>-<strong>2X</strong><br />

37


Paso 2: Pren<strong>de</strong>mos el Equipo <strong>REX</strong>-<strong>2X</strong><br />

Paso 3: Configuración <strong>de</strong>l Sistema <strong>de</strong> Adquisición y para ello realizamos los siguientes pasos:<br />

1. Configuración a<strong>de</strong>cuada <strong>de</strong>l DDS.<br />

Consultar [12].<br />

2. Configuración a<strong>de</strong>cuada <strong>de</strong>l Controlador <strong>de</strong> Radar.<br />

Consultar [13].<br />

3. Configuración a<strong>de</strong>cuada <strong>de</strong>l Receptor Digital.<br />

Paso 1 Configuración la tarjeta <strong>de</strong> control.<br />

La configuración <strong>de</strong> la tarjeta <strong>de</strong> control es automática <strong>de</strong>bido a que cuenta con una memoria EPROM<br />

AT17LV010A, la cual guarda el archivo <strong>REX</strong>30.sof. El archivo se encuentra adjunto en el CD.<br />

Paso 2 Configuración la tarjeta <strong>de</strong>l <strong>REX</strong>-<strong>2X</strong>.<br />

La programación <strong>de</strong> la tarjeta <strong>REX</strong>-<strong>2X</strong> se hizo sobre dos programs software. EL primer programa es el<br />

Control Software, AD6620.exe, y el segundo programa es el Analog Devices AD6620 Filter Design Software,<br />

Fltdsgn.exe.<br />

1<br />

INPUT DATA MODE<br />

3<br />

2<br />

NUMERICALLY<br />

CONTROLLED<br />

OSCILLATOR<br />

CLOCK<br />

4<br />

COEFFICIENT<br />

FILTER<br />

Figura 43 Ventana <strong>de</strong> configuración <strong>de</strong> la tarjeta <strong>REX</strong>-<strong>2X</strong><br />

38


En la figura 43 se muestra el Chip Mo<strong>de</strong> (1) que se tiene que elegir, nosotros siempre seleccionaremos<br />

“Single Channel Real”.<br />

El segundo paso es revisar el Sample Rate/Ch. (2), utilizamos un clock <strong>de</strong> 32MHz. Lo siguiente es<br />

revisar el NCO Frequency (3), para el sistema <strong>de</strong>l Radar Sousy, con frecuencia <strong>de</strong> operación igual a 53.5 MHz, y<br />

un clock <strong>de</strong> 32MHz el NCO Frequency resulta 10.5 MHz. Y finalmente el Coefficient Filter (4) don<strong>de</strong> los filtros<br />

generados con el AD6620 Filter Design Software son <strong>de</strong>scargados a la AD6620 Evaluation Board con el Control<br />

Software.<br />

39


ANEXO B Código Fuente<br />

JICAHEADER.H<br />

#inclu<strong>de</strong> <br />

#inclu<strong>de</strong> <br />

#inclu<strong>de</strong> <br />

//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$<br />

//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$<br />

//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$<br />

#<strong>de</strong>fine EXP_RAWDATA 0<br />

#<strong>de</strong>fine EXP_SPECTRA 1<br />

#<strong>de</strong>fine EXP_WAVELET 2<br />

#<strong>de</strong>fine EXP_CROSSCORRELATION 3<br />

//#<strong>de</strong>fine RAWDATA 0<br />

//#<strong>de</strong>fine SPECTRA 1<br />

#<strong>de</strong>fine MAX_WINDOWS 20<br />

#<strong>de</strong>fine MAX_CODE_BITS 1024<br />

#<strong>de</strong>fine MAX_CODES 1024<br />

#<strong>de</strong>fine MAX_TAUS 1024<br />

#<strong>de</strong>fine MAX_EXPERIMENTOS 100<br />

#<strong>de</strong>fine MAX_CHANNELS 16<br />

/********Constantes para las lineas 5 y 6************/<br />

#<strong>de</strong>fine NONE 0<br />

#<strong>de</strong>fine FLIP 1<br />

#<strong>de</strong>fine CODE 2<br />

#<strong>de</strong>fine SAMPLING 3<br />

#<strong>de</strong>fine LIN6DIV256 4<br />

#<strong>de</strong>fine SYNCHRO 5<br />

/*****************************/<br />

/********Constantes para Tipo <strong>de</strong> Código ************/<br />

#<strong>de</strong>fine CODE_NONE 0<br />

#<strong>de</strong>fine CODE_USERDEFINE 1<br />

#<strong>de</strong>fine CODE_BARKER2 2<br />

#<strong>de</strong>fine CODE_BARKER3 3<br />

#<strong>de</strong>fine CODE_BARKER4 4<br />

#<strong>de</strong>fine CODE_BARKER5 5<br />

#<strong>de</strong>fine CODE_BARKER7 6<br />

#<strong>de</strong>fine CODE_BARKER11 7<br />

#<strong>de</strong>fine CODE_BARKER13 8<br />

#<strong>de</strong>fine CODE_AC128 9<br />

#<strong>de</strong>fine CODE_COMPLEMENTARYCODE2 10<br />

#<strong>de</strong>fine CODE_COMPLEMENTARYCODE4 11<br />

#<strong>de</strong>fine CODE_COMPLEMENTARYCODE8 12<br />

#<strong>de</strong>fine CODE_COMPLEMENTARYCODE16 13<br />

#<strong>de</strong>fine CODE_COMPLEMENTARYCODE32 14<br />

#<strong>de</strong>fine CODE_COMPLEMENTARYCODE64 15<br />

#<strong>de</strong>fine CODE_COMPLEMENTARYCODE128 16<br />

#<strong>de</strong>fine CODE_BINARY28 17<br />

/*****************************/<br />

//<strong>de</strong>coding<br />

#<strong>de</strong>fine DECODING_TIME_DOMAIN<br />

#<strong>de</strong>fine DECODING_FREQ_DOMAIN<br />

#<strong>de</strong>fine DECODING_INV_FREQ_DOMAIN<br />

/*****************************/<br />

//Acquisicion nAcqFlags<br />

#<strong>de</strong>fine FLAG_ACQ_ALL_CHANNELS<br />

#<strong>de</strong>fine FLAG_ACQ_ALL_FIFOS<br />

#<strong>de</strong>fine FLAG_ACQ_2CH_PER_INPUT<br />

0x00000001<br />

0x00000002<br />

0x00000004<br />

0x00000001<br />

0x00000002<br />

0x00000004<br />

/*****************************/<br />

#<strong>de</strong>fine FLAG_COHERENT_INTEGRATION<br />

#<strong>de</strong>fine FLAG_DECODE_DATA<br />

#<strong>de</strong>fine FLAG_SPECTRA_CALC<br />

#<strong>de</strong>fine FLAG_INCOHERENT_INTEGRATION<br />

0x00000001<br />

0x00000002<br />

0x00000004<br />

0x00000008<br />

40


#<strong>de</strong>fine FLAG_POST_COHERENT_INTEGRATION<br />

#<strong>de</strong>fine FLAG_SHIFT_FFT_DATA<br />

#<strong>de</strong>fine FLAG_DATATYPE_CHAR<br />

#<strong>de</strong>fine FLAG_DATATYPE_SHORT<br />

#<strong>de</strong>fine FLAG_DATATYPE_LONG<br />

#<strong>de</strong>fine FLAG_DATATYPE_INT64<br />

#<strong>de</strong>fine FLAG_DATATYPE_FLOAT<br />

#<strong>de</strong>fine FLAG_DATATYPE_DOUBLE<br />

#<strong>de</strong>fine FLAG_DATAARRANGE_CONTIGUOUS_CH<br />

#<strong>de</strong>fine FLAG_DATAARRANGE_CONTIGUOUS_H<br />

#<strong>de</strong>fine FLAG_DATAARRANGE_CONTIGUOUS_P<br />

#<strong>de</strong>fine FLAG_SAVE_CHANNELS_DC<br />

#<strong>de</strong>fine FLAG_DEFLIP_DATA<br />

#<strong>de</strong>fine FLAG_DEFINE_PROCESS_CODE<br />

#<strong>de</strong>fine FLAG_INVFFTDECODING<br />

#<strong>de</strong>fine FLAG_RESERVED02<br />

#<strong>de</strong>fine FLAG_RESERVED03<br />

#<strong>de</strong>fine FLAG_RESERVED04<br />

#<strong>de</strong>fine FLAG_RESERVED05<br />

#<strong>de</strong>fine FLAG_RESERVED06<br />

#<strong>de</strong>fine FLAG_RESERVED07<br />

#<strong>de</strong>fine FLAG_RESERVED08<br />

#<strong>de</strong>fine FLAG_RESERVED09<br />

#<strong>de</strong>fine FLAG_RESERVED10<br />

#<strong>de</strong>fine FLAG_RESERVED11<br />

#<strong>de</strong>fine FLAG_RESERVED12<br />

#<strong>de</strong>fine FLAG_RESERVED13<br />

#<strong>de</strong>fine FLAG_RESERVED14<br />

0x00000010<br />

0x00000020<br />

0x00000040<br />

0x00000080<br />

0x00000100<br />

0x00000200<br />

0x00000400<br />

0x00000800<br />

0x00001000<br />

0x00002000<br />

0x00004000<br />

0x00008000<br />

0x00010000<br />

0x00020000<br />

0x00040000<br />

0x00080000<br />

0x00100000<br />

0x00200000<br />

0x00400000<br />

0x00800000<br />

0x01000000<br />

0x02000000<br />

0x04000000<br />

0x08000000<br />

0x10000000<br />

0x20000000<br />

0x40000000<br />

0x80000000<br />

/*-: Data Mo<strong>de</strong> :-*/<br />

#<strong>de</strong>fine DEMO_16BIT_CMPLX_MODE 0<br />

#<strong>de</strong>fine DEMO_20BIT_CMPLX_MODE 1<br />

#<strong>de</strong>fine DEMO_16BIT_REAL_MODE 2<br />

#<strong>de</strong>fine DEMO_16BIT_DLY_CMPLX_MODE 4<br />

//RESYNCHRO METHODS<br />

#<strong>de</strong>fine RESYNCHRO_RESET_RC 1<br />

#<strong>de</strong>fine RESYNCHRO_WAIT_LASTSAMPLE 2<br />

//EXTERNAL GATE STATE<br />

#<strong>de</strong>fine EXTGATE_DISABLED 0<br />

#<strong>de</strong>fine EXTGATE_ENABLED 1<br />

//EXTERNAL GATE POLARIZATION<br />

#<strong>de</strong>fine ACTIVE_HIGH 0<br />

#<strong>de</strong>fine ACTIVE_LOW 1<br />

//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$<br />

//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$<br />

//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$<br />

namespace JicaHea<strong>de</strong>r<br />

{ type<strong>de</strong>f struct _BasicHea<strong>de</strong>r<br />

{ unsigned long nHea<strong>de</strong>rlength;<br />

unsigned short nHea<strong>de</strong>rVer;<br />

unsigned long nBlockCounter;<br />

struct __timeb32 FullTime;<br />

unsigned long nError;<br />

}BasicHea<strong>de</strong>r;<br />

type<strong>de</strong>f struct _SystemParam<br />

{ unsigned long m_nHea<strong>de</strong>r_Sys_Length;<br />

unsigned long m_nSamples;<br />

unsigned long m_nProfiles;<br />

unsigned long m_nChannels;<br />

unsigned long m_nADCResolution;<br />

unsigned long m_nPCIDIOBusWidth;<br />

} SystemParam;<br />

type<strong>de</strong>f struct _RadarControllerParam<br />

{ unsigned long m_nHea<strong>de</strong>r_RC_length;<br />

unsigned long m_nEspType;//0:normal,1:Join<br />

unsigned long m_nNTX;<br />

float<br />

m_fIPP;<br />

float<br />

m_fTXA;<br />

float<br />

m_fTXB;<br />

41


unsigned long m_nNum_Windows;<br />

unsigned long m_nNum_Taus;<br />

unsigned long m_nCo<strong>de</strong>Type;<br />

unsigned long m_nLine6_Function;<br />

unsigned long m_nLine5_Function;<br />

float<br />

m_fCLOCK;<br />

unsigned long m_nPrePulseBefore;<br />

unsigned long m_nPrePulseAfter;<br />

char<br />

m_sRango_IPP[20];<br />

char<br />

m_sRango_TXA[20];<br />

char<br />

m_sRango_TXB[20];<br />

} RadarControllerParam;<br />

type<strong>de</strong>f struct _ProcessParam<br />

{ unsigned long m_nHea<strong>de</strong>r_PP_Length;<br />

unsigned long m_nExperimentType;<br />

unsigned long m_nSizeOfDataBlock;<br />

unsigned long m_nFFTorProfilesperBlock;//en Spectra = FFT,m_nFFTPoints<br />

unsigned long m_nDataBlocksperFile;<br />

unsigned long m_nData_Windows;<br />

unsigned long m_nProcessFlags;<br />

unsigned long m_nCoherentIntegrations;<br />

unsigned long m_nIncoherentIntegrations;<br />

unsigned long m_nTotalSpectra;//si 0.....no hay m_nSpectraCombinations<br />

} ProcessParam;<br />

type<strong>de</strong>f struct _GlobPParam<br />

{ ProcessParam FixPP;<br />

bool m_bSaveData;<br />

bool bCreateDayDir;<br />

bool bNameInDirectory;<br />

bool m_bBeginOnStart;<br />

bool m_bFifoReadMo<strong>de</strong>;<br />

unsigned char *Dyn_nSpectraComb;<br />

unsigned char *Dyn_nCardSequence;<br />

char m_sExpName[_MAX_PATH];<br />

char m_sBaseDirectory[_MAX_PATH];<br />

char m_sCurrentDirectory[_MAX_PATH];<br />

char m_sProfilesRange[_MAX_PATH];<br />

char sHWConfFile[260];<br />

char** m_sIniFiles;<br />

float* Dyn_sfDataH0;<br />

float* Dyn_sfDataDH;<br />

float* Dyn_sfProcessWH0;<br />

float* Dyn_sfProcessWDH;<br />

unsigned long m_nDigiDivi<strong>de</strong>dBy;<br />

unsigned long m_nMWidth;<br />

unsigned long m_nExtGatePolarization;<br />

unsigned long m_nResynchoMethod;<br />

unsigned long m_nExtGateState;<br />

unsigned long m_nNumConfFiles;<br />

unsigned long m_nFFTPoints;//aumentado 7/1/04<br />

unsigned long m_nProfilesperBlock;//aumentado 7/1/04<br />

unsigned long m_nCards;//aumentado 12/1/04<br />

unsigned long m_nECDR_DataMo<strong>de</strong>;<br />

unsigned long m_nHea<strong>de</strong>rVER;<br />

unsigned long m_nCohIntStri<strong>de</strong>;<br />

unsigned long m_nCollectionMo<strong>de</strong>;<br />

unsigned long m_nProcessCo<strong>de</strong>s;<br />

unsigned long m_nProcessBauds;<br />

unsigned long m_nProcessWindows;<br />

unsigned long m_nDecodingFlags;<br />

unsigned long m_nProcessSamples;<br />

unsigned long m_nProf2Join;<br />

unsigned long m_nProf2Split;<br />

unsigned long m_nFileSetDigits;<br />

unsigned long *Dyn_nProfileIn<strong>de</strong>x;<br />

unsigned long *Dyn_snDataNSA;<br />

unsigned long *Dyn_snProcessWNSA;<br />

}GlobPParam;<br />

type<strong>de</strong>f struct _GlobRCParam<br />

{ RadarControllerParam FixRCP;<br />

char m_sRCConfigFile[_MAX_PATH];<br />

42


char **Dyn_snCo<strong>de</strong>;<br />

char **Dyn_snL5_Co<strong>de</strong>;<br />

char **Dyn_snL6_Co<strong>de</strong>;<br />

float* Dyn_sfAcqH0;<br />

float* Dyn_sfAcqDH;<br />

float *Dyn_sfTau;<br />

float* Dyn_sfL5_AcqH0;<br />

float* Dyn_sfL5_AcqDH;<br />

float* Dyn_sfL6_AcqH0;<br />

float* Dyn_sfL6_AcqDH;<br />

unsigned long m_nNum_Co<strong>de</strong>s;<br />

unsigned long m_nBauds;<br />

unsigned long *Dyn_snAcqNSA;<br />

unsigned long m_nL5_Co<strong>de</strong>Type;<br />

unsigned long m_nL5_Num_Co<strong>de</strong>s;<br />

unsigned long m_nL5_Bauds;<br />

unsigned long m_nL5_NumWindows;<br />

unsigned long *Dyn_snL5_AcqNSA;<br />

unsigned long m_nL6_Co<strong>de</strong>Type;<br />

unsigned long m_nL6_Num_Co<strong>de</strong>s;<br />

unsigned long m_nL6_Bauds;<br />

unsigned long m_nL6_NumWindows;<br />

unsigned long *Dyn_snL6_AcqNSA;<br />

unsigned long m_nFLIP1;<br />

unsigned long m_nFLIP2;<br />

}GlobRCParam;<br />

}<br />

class MyHea<strong>de</strong>r<br />

{private:<br />

BasicHea<strong>de</strong>r MyBasicHea<strong>de</strong>r;<br />

SystemParam MySystemParam;<br />

GlobPParam MyGPParam;<br />

GlobRCParam MyGRCParam;<br />

public:<br />

MyHea<strong>de</strong>r();<br />

void Initialize(void);<br />

void FillBasicParameters(float IPP,float H0,float DH,unsigned long NChannels,<br />

unsigned long Profiles,unsigned long Samples,<br />

unsigned long NTX);<br />

int SaveHea<strong>de</strong>r(FILE *MyFile);<br />

};<br />

JICAHEADER.CPP<br />

#inclu<strong>de</strong> "JicaHea<strong>de</strong>r.h"<br />

namespace JicaHea<strong>de</strong>r<br />

{ MyHea<strong>de</strong>r::MyHea<strong>de</strong>r()<br />

{ Initialize();<br />

}<br />

void MyHea<strong>de</strong>r::Initialize()<br />

{//Initialize the Basic Hea<strong>de</strong>r<br />

MyBasicHea<strong>de</strong>r.nHea<strong>de</strong>rlength=24+24+116+12+40+12;<br />

MyBasicHea<strong>de</strong>r.nHea<strong>de</strong>rVer=1103;<br />

MyBasicHea<strong>de</strong>r.nBlockCounter=0;<br />

MyBasicHea<strong>de</strong>r.nError=0;<br />

//Initialize the System Params<br />

MySystemParam.m_nHea<strong>de</strong>r_Sys_Length=24;<br />

MySystemParam.m_nSamples=0;<br />

MySystemParam.m_nProfiles=0;<br />

MySystemParam.m_nChannels=1;<br />

MySystemParam.m_nADCResolution=12;<br />

MySystemParam.m_nPCIDIOBusWidth=32;<br />

//Initialize the RCParam into GlobalRCParam<br />

MyGRCParam.FixRCP.m_nHea<strong>de</strong>r_RC_length=116+12;<br />

MyGRCParam.FixRCP.m_nEspType=0;<br />

MyGRCParam.FixRCP.m_nNTX=1;<br />

MyGRCParam.FixRCP.m_fIPP=0.0f;<br />

43


MyGRCParam.FixRCP.m_fTXA=0.0f;<br />

MyGRCParam.FixRCP.m_fTXB=0.0f;<br />

MyGRCParam.FixRCP.m_nNum_Windows=1;<br />

MyGRCParam.FixRCP.m_nNum_Taus=0;<br />

MyGRCParam.FixRCP.m_nCo<strong>de</strong>Type=CODE_NONE;<br />

MyGRCParam.FixRCP.m_nLine6_Function=NONE;<br />

MyGRCParam.FixRCP.m_nLine5_Function=NONE;<br />

MyGRCParam.FixRCP.m_fCLOCK=8.00f;<br />

MyGRCParam.FixRCP.m_nPrePulseBefore=0;<br />

MyGRCParam.FixRCP.m_nPrePulseAfter=0;<br />

MyGRCParam.FixRCP.m_sRango_IPP[0]='\0';<br />

MyGRCParam.FixRCP.m_sRango_TXA[0]='\0';<br />

MyGRCParam.FixRCP.m_sRango_TXB[0]='\0';<br />

//Initialize the rest of GlobalRCParam<br />

MyGRCParam.Dyn_sfAcqH0=new float[MyGRCParam.FixRCP.m_nNum_Windows];<br />

MyGRCParam.Dyn_sfAcqDH=new float[MyGRCParam.FixRCP.m_nNum_Windows];<br />

MyGRCParam.Dyn_snAcqNSA=new unsigned long[MyGRCParam.FixRCP.m_nNum_Windows];<br />

MyGRCParam.Dyn_sfAcqH0[0]=0;<br />

MyGRCParam.Dyn_sfAcqDH[0]=0;<br />

MyGRCParam.Dyn_snAcqNSA[0]=0;<br />

//Initilize the ProcessParam into GlobalPParam<br />

MyGPParam.FixPP.m_nHea<strong>de</strong>r_PP_Length=40+12;<br />

MyGPParam.FixPP.m_nExperimentType=EXP_RAWDATA;<br />

MyGPParam.FixPP.m_nSizeOfDataBlock=0;<br />

MyGPParam.FixPP.m_nFFTorProfilesperBlock=0;<br />

MyGPParam.FixPP.m_nDataBlocksperFile=1;<br />

MyGPParam.FixPP.m_nData_Windows=1;<br />

MyGPParam.FixPP.m_nProcessFlags=FLAG_DATATYPE_SHORT;<br />

MyGPParam.FixPP.m_nCoherentIntegrations=0;<br />

MyGPParam.FixPP.m_nIncoherentIntegrations=0;<br />

MyGPParam.FixPP.m_nTotalSpectra=0;<br />

//Initilize the rest of GlobalPParam<br />

MyGPParam.Dyn_sfDataH0=new float[MyGPParam.FixPP.m_nData_Windows];<br />

MyGPParam.Dyn_sfDataDH=new float[MyGPParam.FixPP.m_nData_Windows];<br />

MyGPParam.Dyn_snDataNSA=new unsigned long[MyGPParam.FixPP.m_nData_Windows];<br />

MyGPParam.Dyn_sfDataH0[0]=0;<br />

MyGPParam.Dyn_sfDataDH[0]=0;<br />

MyGPParam.Dyn_snDataNSA[0]=0;<br />

}<br />

void MyHea<strong>de</strong>r::FillBasicParameters(float IPP,float H0,float DH,unsigned long NChannels,<br />

unsigned long Profiles,unsigned long<br />

Samples,<br />

unsigned long NTX)<br />

{ MySystemParam.m_nSamples=Samples;<br />

MySystemParam.m_nProfiles=MyGPParam.FixPP.m_nFFTorProfilesperBlock=Profiles;//Estoes para<br />

un bloque por archivo<br />

MySystemParam.m_nChannels=NChannels;<br />

MyGRCParam.FixRCP.m_fIPP=IPP;<br />

MyGRCParam.FixRCP.m_nNTX=NTX;<br />

MyGRCParam.Dyn_sfAcqH0[0]=MyGPParam.Dyn_sfDataH0[0]=H0;<br />

MyGRCParam.Dyn_sfAcqDH[0]=MyGPParam.Dyn_sfDataDH[0]=DH;<br />

MyGRCParam.Dyn_snAcqNSA[0]=MyGPParam.Dyn_snDataNSA[0]=Samples;<br />

MyGPParam.FixPP.m_nSizeOfDataBlock=2*NChannels*Profiles*Samples*NTX*sizeof(short);<br />

}<br />

int MyHea<strong>de</strong>r::SaveHea<strong>de</strong>r(FILE *MyFile)<br />

{ size_t BytesWritten=0;<br />

size_t m_WByte;<br />

_ftime32_s(&MyBasicHea<strong>de</strong>r.FullTime);//Get the hour<br />

//***************************************************<br />

//Save 24Bytes of Basic Hea<strong>de</strong>r each variable<br />

m_WByte=4;<br />

BytesWritten+=fwrite(&MyBasicHea<strong>de</strong>r.nHea<strong>de</strong>rlength,1,m_WByte,MyFile);<br />

m_WByte=2;<br />

BytesWritten+=fwrite(&MyBasicHea<strong>de</strong>r.nHea<strong>de</strong>rVer,1,m_WByte,MyFile);<br />

m_WByte=4;<br />

BytesWritten+=fwrite(&MyBasicHea<strong>de</strong>r.nBlockCounter,1,m_WByte,MyFile);<br />

//Saving Timeb Struct<br />

m_WByte=4;<br />

BytesWritten+=fwrite(&MyBasicHea<strong>de</strong>r.FullTime.time,1,m_WByte,MyFile);<br />

44


m_WByte=2;<br />

BytesWritten+=fwrite(&MyBasicHea<strong>de</strong>r.FullTime.millitm,1,m_WByte,MyFile);<br />

m_WByte=2;<br />

BytesWritten+=fwrite(&MyBasicHea<strong>de</strong>r.FullTime.timezone,1,m_WByte,MyFile);<br />

m_WByte=2;<br />

BytesWritten+=fwrite(&MyBasicHea<strong>de</strong>r.FullTime.dstflag,1,m_WByte,MyFile);<br />

m_WByte=4;<br />

BytesWritten+=fwrite(&MyBasicHea<strong>de</strong>r.nError,1,m_WByte,MyFile);<br />

//*****************************************************<br />

m_WByte=24;<br />

BytesWritten+=fwrite(&MySystemParam,1,m_WByte,MyFile);//Save 24Bytes of System Param<br />

//Save Radar Controller Parameters<br />

m_WByte=MyGRCParam.FixRCP.m_nHea<strong>de</strong>r_RC_length<br />

-<br />

(3*MyGRCParam.FixRCP.m_nNum_Windows*sizeof(float));<br />

BytesWritten+=fwrite(&MyGRCParam,1,m_WByte,MyFile);<br />

m_WByte=MyGRCParam.FixRCP.m_nNum_Windows*sizeof(float);<br />

BytesWritten+=fwrite(&MyGRCParam.Dyn_sfAcqH0[0],1,m_WByte,MyFile);<br />

BytesWritten+=fwrite(&MyGRCParam.Dyn_sfAcqDH[0],1,m_WByte,MyFile);<br />

BytesWritten+=fwrite(&MyGRCParam.Dyn_snAcqNSA[0],1,m_WByte,MyFile);<br />

//Save Process Parameters<br />

m_WByte=MyGPParam.FixPP.m_nHea<strong>de</strong>r_PP_Length<br />

-<br />

(3*MyGPParam.FixPP.m_nData_Windows*sizeof(float));<br />

BytesWritten+=fwrite(&MyGPParam,1,m_WByte,MyFile);<br />

m_WByte=MyGPParam.FixPP.m_nData_Windows*sizeof(float);<br />

BytesWritten+=fwrite(&MyGPParam.Dyn_sfDataH0[0],1,m_WByte,MyFile);<br />

BytesWritten+=fwrite(&MyGPParam.Dyn_sfDataDH[0],1,m_WByte,MyFile);<br />

BytesWritten+=fwrite(&MyGPParam.Dyn_snDataNSA[0],1,m_WByte,MyFile);<br />

return int(BytesWritten);<br />

}<br />

}<br />

ADQUIRE CONSOLE SOURCE CODE<br />

// SecondAdqConsole.cpp : Defines the entry point for the console application.<br />

//<br />

#inclu<strong>de</strong> "stdafx.h"<br />

using namespace std;<br />

using namespace JicaHea<strong>de</strong>r;<br />

using namespace Func<strong>Jicamarca</strong>;<br />

//*************************<br />

#<strong>de</strong>fine IPP 1999.8f<br />

#<strong>de</strong>fine H0 90.0f<br />

#<strong>de</strong>fine DH 0.6f<br />

#<strong>de</strong>fine NCh 1<br />

#<strong>de</strong>fine Profiles 100<br />

#<strong>de</strong>fine Samples 1300<br />

#<strong>de</strong>fine NTX 1<br />

#<strong>de</strong>fine RawDatSize 2*NCh*Profiles*Samples*NTX<br />

//*************************<br />

#<strong>de</strong>fine SizeOfData Profiles*(Samples+2)<br />

void PrintMainMenu(void);<br />

void StartAdq(bool);<br />

bool AllocateMemory();<br />

void FreeMemory();<br />

void NIDAQEvent(WPARAM,LPARAM);<br />

void GetFileName();<br />

void SaveRawData();<br />

Complex *gm_sBuffer =NULL;<br />

Complex *gm_sHalfBuffer =NULL;<br />

CNIDAQConfig *m_CNIConfig=new CNIDAQConfig();<br />

MyHea<strong>de</strong>r *m_JicaHea<strong>de</strong>r=new MyHea<strong>de</strong>r();<br />

bool BigError=false;<br />

bool Save=false;<br />

45


int FileCount=0;<br />

int DirCount=0;<br />

int InterruptCount=0;<br />

char SaveInFile[MAX_PATH];<br />

char FileName[15];<br />

int _tmain(int argc, _TCHAR* argv[])<br />

{ char Tecla;<br />

bool Salir=false;<br />

bool Adq =false;<br />

SaveInFile[MAX_PATH]=NULL;<br />

PrintMainMenu();<br />

m_JicaHea<strong>de</strong>r->FillBasicParameters(IPP,H0,DH,NCh,Profiles,Samples,NTX);<br />

do<br />

{ Tecla=_getch();<br />

switch (Tecla)<br />

{case 'A': Adq^=true; StartAdq(Adq) ;break;<br />

case 'a': Adq^=true; StartAdq(Adq) ;break;<br />

case 'E': Salir=true; break;<br />

case 'e': Salir=true; break;<br />

case 'S': Save^=true; PrintMainMenu(); break;<br />

case 's': Save^=true; PrintMainMenu(); break;<br />

<strong>de</strong>fault : break;<br />

}<br />

if(BigError)<br />

return 0;<br />

}<br />

}while(!Salir);<br />

//PrintMainMenu();<br />

//_getch();<br />

<strong>de</strong>lete m_CNIConfig;<br />

<strong>de</strong>lete m_JicaHea<strong>de</strong>r;<br />

void PrintMainMenu(void)<br />

{ system("cls");<br />

system("color 02");<br />

cout


}<br />

bool AllocateMemory()<br />

{ gm_sBuffer=new Complex[2*SizeOfData];<br />

gm_sHalfBuffer=new Complex[SizeOfData];<br />

if((!gm_sBuffer)||(!gm_sHalfBuffer))<br />

return false;<br />

return true;<br />

}<br />

void FreeMemory()<br />

{ <strong>de</strong>lete gm_sBuffer;<br />

<strong>de</strong>lete gm_sHalfBuffer;<br />

gm_sBuffer=NULL;<br />

gm_sHalfBuffer=NULL;<br />

}<br />

void NIDAQEvent(WPARAM wParam,LPARAM lParam)<br />

{ i16 iStatus;<br />

if ((( wParam & 0xFF00 ) >> 8 ) != 1)<br />

iStatus = DIG_DB_Transfer(1, 1,(short *)gm_sHalfBuffer<br />

,SizeOfData);<br />

if ((gm_sHalfBuffer[0].Re!=19200)&&(gm_sHalfBuffer[0].Im!=19200))<br />

{ cout


JICA<strong>REX</strong>LIB.H<br />

#inclu<strong>de</strong> <br />

#inclu<strong>de</strong> <br />

#inclu<strong>de</strong> <br />

#inclu<strong>de</strong> <br />

#inclu<strong>de</strong> <br />

#<strong>de</strong>fine DAQERROR(status, location) if(status) {NIDAQErrorHandler(status, location, 1); return;}<br />

namespace Func<strong>Jicamarca</strong><br />

{ type<strong>de</strong>f struct Complex<br />

{ short Re;<br />

short Im;<br />

}Complex;<br />

class CNIDAQConfig<br />

{private:<br />

i16 m_giDevice;<br />

i16 m_giGroup;<br />

i16 m_iPortData;<br />

i16 m_iPortControl;<br />

i16 m_iStatus;<br />

i16 m_iRetVal;<br />

i16 m_iGroupSize;<br />

i16 m_iPort;<br />

i16 m_iDir;<br />

i16 m_iProtocol;<br />

i16 m_iEdge;<br />

i16 m_iReqPol;<br />

i16 m_iAckPol;<br />

i16 m_iAckDelayTime;<br />

i16 m_iIgnoreWarning;<br />

i32 m_ulRemaining;<br />

public:<br />

CNIDAQConfig();<br />

~CNIDAQConfig();<br />

void NextState();<br />

void ChangeStatus();<br />

void SendStopCommand();<br />

void SendStartCommand();<br />

void FirstState();<br />

void PortDOut();<br />

void StartAcquisition();<br />

void Configure_Burst_Mo<strong>de</strong>();<br />

void CleanupNIDAQEvents();<br />

void ConfigureExternalBoards();<br />

void Load_Function_Callback(int nsamples,Complex *buffer, void(*pt2Func)(WPARAM wParam ,<br />

LPARAM lParam) );<br />

void Enable_Boards(void);<br />

void Disable_Boards(void);<br />

};<br />

}<br />

48


JICA<strong>REX</strong>LIB.CPP<br />

#inclu<strong>de</strong> "JicaRexLIB.h"<br />

namespace Func<strong>Jicamarca</strong><br />

{<br />

CNIDAQConfig::CNIDAQConfig()<br />

{ m_iPortData =3;<br />

m_iPortControl =4;<br />

m_giDevice = 1;<br />

m_giGroup = 1;<br />

}<br />

void CNIDAQConfig::ConfigureExternalBoards()<br />

{ m_iStatus = DIG_Out_Line( m_giDevice,m_iPortControl,1,1);<br />

DAQERROR(m_iStatus, "DIG_Out_Line");<br />

}<br />

void CNIDAQConfig::CleanupNIDAQEvents()<br />

{ Config_DAQ_Event_Message(m_giDevice, 0,"",1, 0, 0, 0, 0, 0, 0, 0, 0);<br />

m_iStatus = DIG_Block_Clear(m_giDevice,m_giGroup);<br />

DAQERROR(m_iStatus, "DIG_Block_Clear");<br />

m_iStatus = DIG_Grp_Config(m_giDevice, m_giGroup, 0, 0, 0);<br />

DAQERROR(m_iStatus, "DIG_Grp_Config");<br />

}<br />

void CNIDAQConfig::Configure_Burst_Mo<strong>de</strong>()<br />

{ m_iIgnoreWarning = 0;<br />

m_iStatus = 0;<br />

m_iRetVal = 0;<br />

m_giDevice = 1;<br />

m_giGroup = 1;<br />

m_iGroupSize = 4; // group size 32bits<br />

m_iPort = 0;<br />

m_iDir = 0;<br />

m_ulRemaining = 1;<br />

m_iStatus=DIG_Grp_Config(m_giDevice, m_giGroup,m_iGroupSize,m_iPort,m_iDir);<br />

DAQERROR(m_iStatus, "DIG_Grp_Config");<br />

m_iRetVal = NIDAQErrorHandler(m_iStatus, "DIG_Grp_Config",m_iIgnoreWarning);<br />

/* Configure handshaking parameters for burst mo<strong>de</strong> handshaking */<br />

m_iProtocol = 3; //Group is configured for burst handshaking, using the REQ, ACK, and<br />

PCLK signals<br />

m_iEdge<br />

= 1; //1 Group is configured for leading-edge pulsed handshake signals.<br />

m_iReqPol = 0; //Group is configured for active high (non-inverted) request handshake<br />

signal polarity.<br />

m_iAckPol = 0; //Group is configured for active high (non-inverted) acknowledge<br />

handshake signal polarity.<br />

m_iAckDelayTime = 0; //0 =50ns,1=100ns<br />

m_iStatus = DIG_Grp_Mo<strong>de</strong>( m_giDevice,<br />

m_giGroup,m_iProtocol,m_iEdge,m_iReqPol,m_iAckPol,m_iAckDelayTime);<br />

m_iRetVal = NIDAQErrorHandler(m_iStatus, "DIG_Grp_Mo<strong>de</strong>", m_iIgnoreWarning);<br />

/*cambio doublebuffer*/<br />

u16 iDBMo<strong>de</strong>ON = 1;<br />

// u16 iDBMo<strong>de</strong>OFF = 0;<br />

u16 iOldDataStop = 1;<br />

u16 iPartialTransfer = 0;<br />

m_iStatus = DIG_DB_Config(m_giDevice, m_giGroup, iDBMo<strong>de</strong>ON, iOldDataStop,iPartialTransfer);<br />

m_iRetVal = NIDAQErrorHandler(m_iStatus, "DB_COnfig",m_iIgnoreWarning);<br />

/*cambio doublebuffer*/<br />

}<br />

void CNIDAQConfig::StartAcquisition()<br />

{<br />

m_iStatus = DIG_Out_Line(m_giDevice,m_iPortControl,1,0);<br />

m_iStatus = DIG_Out_Line(m_giDevice,m_iPortControl,3,1);<br />

Sleep(40);<br />

}<br />

void CNIDAQConfig::PortDOut()<br />

{ m_iStatus = 0; //<br />

i16 iMo<strong>de</strong> = 0; //no handshaking<br />

m_iDir = 1; //output<br />

m_giDevice = 1; //<br />

/* Configure port as output, no handshaking. */<br />

49


}<br />

m_iStatus<br />

= DIG_Prt_Config( m_giDevice, m_iPortData, iMo<strong>de</strong>, m_iDir);<br />

void CNIDAQConfig::FirstState()<br />

{ ChangeStatus();<br />

}<br />

void CNIDAQConfig::SendStartCommand()<br />

{<br />

}<br />

void CNIDAQConfig::SendStopCommand()<br />

{<br />

short read_C;<br />

m_iStatus = DIG_In_Line( m_giDevice, m_iPortControl, 3,&read_C);//OUT_C<br />

if(read_C==0){ //según la versión <strong>de</strong> hardware configurado<br />

m_iStatus = DIG_Out_Line( m_giDevice,m_iPortControl,3/*CTRL C*/,1/*estado*/);//<br />

}else{<br />

// regresa al estado inicial don<strong>de</strong> se habilitan la adquisición en el ALTERA<br />

ChangeStatus();<br />

}<br />

}<br />

void CNIDAQConfig::ChangeStatus()<br />

{<br />

}<br />

void CNIDAQConfig::NextState()<br />

{ Sleep(2);<br />

ChangeStatus();<br />

Sleep(2);<br />

}<br />

void CNIDAQConfig::Load_Function_Callback(int nsamples,Complex *buffer,void(*pt2Func)(WPARAM<br />

wParam , LPARAM lParam))<br />

{ m_iStatus = Config_DAQ_Event_Message(m_giDevice,(i16)1,//add message<br />

"DIGRP1" , // string <strong>de</strong>scription<br />

(i16)1, // DAQEvent 0-> Adquire N scans<br />

(i32)nsamples, //DAQTrigVal0<br />

0 , //DAQTrigVal1<br />

0 , //trigSkipCount<br />

0 , //preTrigScans<br />

0 , //postTrigScans<br />

0 , //handle of window , probando my_hwnd<br />

0 , //message to post WM_NIDAQ_MSG<br />

(unsigned long)pt2Func ) ; //callback function address<br />

m_iStatus = DIG_Block_In(m_giDevice, m_giGroup,<br />

(short*)buffer,2*nsamples );//number of items, in our case is 32,x2 for DB<br />

DAQERROR(m_iStatus, "DIG_Block_In");<br />

}<br />

void CNIDAQConfig::Enable_Boards(void)<br />

{ m_iStatus = DIG_Out_Line( m_giDevice,m_iPortControl,1/*NPCLK2*/,1/*estado*/);//<br />

m_iStatus = DIG_Out_Line( m_giDevice,m_iPortControl,3/*ACK2*/,0/*estado*/);//<br />

Sleep(2);<br />

m_iStatus = DIG_Out_Line( m_giDevice,m_iPortControl,3/*ACK2*/,1/*estado*/);//<br />

DAQERROR(m_iStatus, "DIG_Out_Line");<br />

}<br />

}<br />

void CNIDAQConfig::Disable_Boards(void)<br />

{ m_iStatus = DIG_Out_Line( m_giDevice,m_iPortControl,3/*ACK2*/,0/*estado*/);//<br />

DAQERROR(m_iStatus, "DIG_Out_Line");<br />

m_iStatus = DIG_Out_Line( m_giDevice,m_iPortControl,1/*NPCLK2*/,0/*estado*/);//<br />

DAQERROR(m_iStatus, "DIG_Out_Line");<br />

}<br />

CNIDAQConfig::~CNIDAQConfig()<br />

{<br />

}<br />

50


ANEXO C Arquitectura interna <strong>de</strong>l FPGA<br />

DELAYLINES<br />

16FIFO<br />

ADAPTER<br />

MUX2<br />

RXDATA[15..0]<br />

INPUT<br />

I[15..0]<br />

O[15..0]<br />

DATA[15..0]<br />

O[15..0]<br />

I[15..0]<br />

O[15..0]<br />

DATA1[15..0]<br />

GCLK<br />

DV<br />

INPUT<br />

W2<br />

INPUT<br />

CLK<br />

LINE<br />

OUT<br />

WRREQ<br />

RDREQ<br />

FULL<br />

FULLINTINFIFO<br />

CTE<br />

19200<br />

GCLK<br />

16<br />

DATA0[15..0]<br />

CLOCK<br />

RESULT[15..0]<br />

OUTPUT<br />

DATAFIFO[15..0]<br />

WINDOW<br />

INPUT<br />

CLK<br />

SEL<br />

IQ<br />

SCLR<br />

16 BITS X 2 WORDS<br />

MUXSEL<br />

IQ<br />

INPUT<br />

DELAY 3<br />

IN OUT<br />

OR2<br />

CLK<br />

IN<br />

DELAY 3<br />

OUT<br />

CLK<br />

W2<br />

IQ<br />

DVF<br />

AND2<br />

OR2<br />

DFF<br />

PRN<br />

D Q<br />

CONTROLC1<br />

DELAY 3<br />

IN OUT<br />

NOT<br />

AND 2<br />

OUTPUT<br />

WRITEA<br />

TEST2<br />

WIRE<br />

OUTPUT<br />

ENA_EXT<br />

GCLK<br />

CLRN<br />

CLK<br />

DELAY 3<br />

IN OUT<br />

AND 2<br />

OUTPUT<br />

WRITEB<br />

OUTPUT<br />

MRESET<br />

CLK<br />

GND<br />

FULLINTINFIFO<br />

DELAY 4<br />

IN<br />

OUT<br />

CLEARFIFO<br />

CLK<br />

Figura 44 Arquitectura interna <strong>de</strong>l FPGA (1/3)<br />

51


NOT<br />

NOT<br />

NOT<br />

SE INICIA LA LECTURA DE LA FIFO AL SIGUIENTE FLANCO<br />

LUEGO DE HABERSE ACTIVADO LA VENTANA DE LECTURA<br />

DFF<br />

PRN<br />

D Q<br />

READFIFO<br />

DFF<br />

PRN<br />

D Q<br />

NOT<br />

REQFLEX<br />

EL REQUEST SE REINICIA AL PRIMER PULSO DE RELOJ LUEGO DEL<br />

PRIMER FLANCO DE BAJADA DE READFIFO.<br />

PCLK1<br />

PCLK1<br />

WINDOW2<br />

DFFE<br />

PRN<br />

WINDOW<br />

D Q<br />

NOT<br />

GCLK<br />

ENA<br />

CLRN<br />

W2<br />

WINREAD<br />

CLRN<br />

WINREQ<br />

CLRN<br />

CONTROLC1<br />

NOT<br />

PCLK1<br />

DFF<br />

PRN<br />

D Q<br />

NCTRLC<br />

NOT<br />

OUTPUT<br />

FIFORESET<br />

CLRN<br />

OUTPUT<br />

READFIFO<br />

EF0<br />

DFF<br />

PRN<br />

D Q<br />

DFF<br />

PRN<br />

D Q<br />

WINREAD<br />

WIRE<br />

TEST2<br />

OUTPUT<br />

REQFLEX<br />

CLKWIN2<br />

PCLK1<br />

CLRN<br />

CLRN<br />

GND<br />

VCC<br />

EF0<br />

NOT<br />

DFF<br />

PRN<br />

D Q<br />

NOT<br />

PCLK1<br />

DELAY 1<br />

IN OUT<br />

CLK<br />

VCC<br />

CLRN<br />

DFF<br />

PRN<br />

D Q<br />

DELAY 20<br />

IN<br />

OUT<br />

WINDOW<br />

CLRN<br />

GCLK<br />

CLK<br />

DELAY + OR GENERAN EL ULTIMO PULSO DE REQUEST (EL LEE EL<br />

ULTIMO DATO DE LA FIFO)<br />

VCC<br />

NPCLK2<br />

NOT<br />

DFF<br />

PRN<br />

D Q<br />

DELAY 6<br />

IN OUT<br />

WIRE<br />

OUTPUT<br />

ENA_RX_D<br />

READFIFO<br />

DFF<br />

PRN<br />

D Q<br />

WINREQ<br />

GCLK<br />

CLRN<br />

GCLK<br />

CLK<br />

GCLK<br />

DELAY 6<br />

IN OUT<br />

CLK<br />

WIRE<br />

OUTPUT<br />

ENA_RX_C<br />

WINREAD<br />

DELAY 2<br />

IN OUT<br />

PCLK1<br />

CLK<br />

OR2<br />

CLRN<br />

GENERA UNA VENTANA PARA EL REQUEST<br />

GCLK<br />

DELAY 6<br />

IN OUT<br />

CLK<br />

WIRE<br />

DELAY 6<br />

IN OUT<br />

GCLK<br />

CLK<br />

WIRE<br />

OUTPUT<br />

OUTPUT<br />

ENA_RX_B<br />

ENA_RX_A<br />

Figura 45 Arquitectura interna <strong>de</strong>l FPGA (2/3)<br />

52


OR2<br />

VCC<br />

DFF<br />

PRN<br />

D Q<br />

DELAY 8<br />

IN OUT<br />

DVF<br />

CLKSYNC<br />

CLRN<br />

GCLK<br />

CLK<br />

DELAY 1<br />

IN OUT<br />

DVF ES LA SEÑAL QUE INDICA DONDE SE DEBEN COLOCAR LAS MARCAS.<br />

EN EL FLANCO DE BAJADA DE SYNCRO APARECE UN PULSO QUE DURA 5 CICLOS DE<br />

RELOJ, 10 CICLOS DE RELOJ DESPUES DE SYNCRO APARECE EL SEGUNDO PULSO<br />

QUE TIENE IGUAL DURACION.<br />

GCLK<br />

CLK<br />

NOT<br />

W2<br />

NOT<br />

CONTROLC<br />

DFF<br />

PRN<br />

D Q<br />

NOT<br />

DFF<br />

PRN<br />

D Q<br />

GCLK<br />

DELAY 5<br />

IN OUT<br />

CLK<br />

CONTROLC1<br />

EFA<br />

EFB<br />

OR2<br />

NAND2<br />

EF0<br />

EF1<br />

GCLK<br />

CLRN<br />

CLRN<br />

CLKSYNC<br />

GCLK<br />

DELAY 3<br />

IN OUT<br />

CLK<br />

VCC<br />

DFF<br />

PRN<br />

D Q<br />

CLRN<br />

GCLK<br />

NOT<br />

MUXSEL<br />

DELAY 14<br />

IN OUT<br />

CLK<br />

NOT<br />

NOT<br />

SYNCTR<br />

GCLK<br />

DFF<br />

PRN<br />

D Q<br />

CLRN<br />

CLKSYNC<br />

WINDOW2<br />

SYNCTR<br />

PCLK1<br />

NPCLK2<br />

EFA<br />

EFB<br />

HFA<br />

HFB<br />

FFA<br />

FFB<br />

INPUT<br />

INPUT<br />

INPUT<br />

INPUT<br />

INPUT<br />

INPUT<br />

INPUT<br />

INPUT<br />

INPUT<br />

INPUT<br />

ACK1<br />

CONTROLC<br />

ACK2<br />

INPUT<br />

INPUT<br />

NOT<br />

W2<br />

PCLK1<br />

DFF<br />

PRN<br />

D Q<br />

CLKWIN2<br />

CLRN<br />

Figura 46 Arquitectura interna <strong>de</strong>l FPGA (3/3)<br />

53


ANEXO D Diagramas esquemáticos <strong>de</strong> las tarjetas <strong>de</strong>l equipo <strong>REX</strong>-2x<br />

Tarjeta <strong>de</strong>l receptor digital<br />

Figura 47 Diagrama esquemático <strong>de</strong> la tarjeta <strong>de</strong>l receptor digital (1/3)<br />

54


Figura 48 Diagrama esquemático <strong>de</strong> la tarjeta <strong>de</strong>l receptor digital (2/3)<br />

55


Figura 49 Diagrama esquemático <strong>de</strong> la tarjeta <strong>de</strong>l receptor digital (3/3)<br />

56


Tarjeta Multiplexor <strong>de</strong>l equipo <strong>REX</strong>- <strong>2X</strong><br />

Figura 50 Diagrama esquemático <strong>de</strong>l multiplexor <strong>de</strong>l equipo <strong>REX</strong>-<strong>2X</strong> (1/2)<br />

57


Figura 51 Diagrama esquemático <strong>de</strong>l multiplexor <strong>de</strong>l equipo <strong>REX</strong>-<strong>2X</strong> (2/2)<br />

58


Tarjeta <strong>de</strong> control <strong>de</strong>l <strong>REX</strong>- <strong>2X</strong><br />

Figura 52 Diagrama esquemático <strong>de</strong> la tarjeta <strong>de</strong> control <strong>de</strong>l <strong>REX</strong>-<strong>2X</strong><br />

59


ANEXO E Diagramas <strong>de</strong> circuito impreso<br />

Tarjeta <strong>de</strong>l <strong>REX</strong>- <strong>2X</strong><br />

Figura 53 Cooper 1 <strong>de</strong> la tarjeta <strong>de</strong>l <strong>REX</strong>-<strong>2X</strong><br />

Figura 54 Cooper 2 <strong>de</strong> la tarjeta <strong>de</strong>l <strong>REX</strong>-<strong>2X</strong><br />

60


Figura 55 Cooper 3 <strong>de</strong> la tarjeta <strong>de</strong>l <strong>REX</strong>-<strong>2X</strong><br />

Figura 56 Cooper 4 <strong>de</strong> la tarjeta <strong>de</strong>l <strong>REX</strong>-<strong>2X</strong><br />

61


Figura 57 Top Silk Screen <strong>de</strong> la tarjeta <strong>de</strong>l <strong>REX</strong>-<strong>2X</strong><br />

62


Tarjeta <strong>de</strong>l MUX<br />

Figura 58 Bottom Cooper <strong>de</strong> la tarjeta MUX<br />

Figura 59 Bottom Silk Screen <strong>de</strong> la tarjeta MUX<br />

63


Figura 60 Top Cooper <strong>de</strong> la tarjeta MUX<br />

Figura 61 Top Silk Screen <strong>de</strong> la tarjeta MUX<br />

64


Tarjeta <strong>de</strong> control <strong>de</strong>l <strong>REX</strong>-<strong>2X</strong><br />

Figura 62 Bottom Cooper <strong>de</strong> la tarjeta <strong>de</strong> control<br />

Figura 63 Top Cooper <strong>de</strong> la tarjeta <strong>de</strong> control<br />

65


Figura 64 Top Silk Screen <strong>de</strong> la tarjeta <strong>de</strong> control<br />

Figura 65 Up View - Tarjeta <strong>de</strong> control<br />

66


ANEXO F Lista <strong>de</strong> componentes<br />

Tarjeta <strong>REX</strong>-<strong>2X</strong><br />

Cantidad Descripción FABR. COD. FABR. WEB PAGE COD. DISTRIB.<br />

2 CAP .01UF 16V PPS FILM 0805 5% Panasonic – ECG ECH-U1C103JX5 www.digikey.com PCF1196CT-ND<br />

23 CAP TANT .1UF 35V 10% SMD Vishay/Sprague 293D104X9035A2TE3 www.digikey.com 718-1109-1-ND<br />

2 CAP CERAMIC 330PF 50V NP0 0805 ±5% Yageo CC0805JRNP09BN331 www.digikey.com 311-1117-1-ND<br />

3 CAP TANT 10UF 16V 10% SMD Vishay/Sprague 293D106X9016C2TE3 www.digikey.com 718-1048-1-ND<br />

2 DIODE SCHOTTKY 30V 200MA SOD323 Micro Commercial Co BAT42WS-TP www.digikey.com BAT42WSTPMSCT-ND<br />

1 LED 3MM Local --- --- ---<br />

1 AD6640 IC ADC 12BIT 65MSPS 44-LQFP Analog Devices Inc AD6640AST www.digikey.com AD6640AST-ND<br />

1 AD6620 IC DGTL RCVR DUAL 67MSPS 80-PQFP Analog Devices Inc AD6620ASZ www.digikey.com AD6620ASZ-ND<br />

1 RES 270 OHM 1/10W 1% 0603 SMD Panasonic – ECG ERJ-3EKF2700V www.digikey.com P270HCT-ND<br />

2 RES 100 OHM 1/10W 1% 0603 SMD Panasonic – ECG ERJ-3EKF1000V www.digikey.com P100HCT-ND<br />

28 RES 348 OHM 1/10W 1% 0603 SMD Panasonic – ECG ERJ-3EKF3480V www.digikey.com P348HCT-ND<br />

4 RES 10.0K OHM 1/10W 1% 0603 SMD Panasonic – ECG ERJ-3EKF1002V www.digikey.com P10.0KHCT-ND<br />

5 RES 1.50K OHM 1/10W 1% 0603 SMD Panasonic – ECG ERJ-3EKF1501V www.digikey.com P1.50KHCT-ND<br />

1 SN74AC00 - IC QUAD 2IN POS NAND GATE 14SOI Texas Instruments SN74AC00D www.digikey.com 296-1052-5-ND<br />

8 SN74AC574 - IC OCT EDG-TRG D-TYPE F-F 20SOIC Texas Instruments SN74AC574DW www.digikey.com 296-1062-5-ND<br />

1 SN74LS32 - IC QUAD 2-IN POS-OR GATE 14-SOIC Texas Instruments SN74LS32DR www.digikey.com 296-14891-1-ND<br />

2 TRANSFORMADORES RF, T4-1 Minicircuits T4-1 www.minicircuits.com T4-1<br />

2 CONECTOR SMA HEMBRA; PCB, 90º Pasternack PE4118 www.pasternack.com PE4118<br />

3 BORNERAS DOBLES Local --- --- ---<br />

1 HEADER ISP MACHO <strong>2X</strong>5 Local --- --- ---<br />

1 HEADER ISP MACHO <strong>2X</strong>10 Local --- --- ---<br />

1 HEADER ISP MACHO <strong>2X</strong>20 Local --- --- ---<br />

67


Tarjeta MUX<br />

Cantidad Descripción FABR. COD. FABR. WEB PAGE COD. DISTRIB.<br />

8 CAP TANT .1UF 35V 10% SMD Vishay/Sprague 93D104X9035A2TE3 www.digikey.com 718-1109-1-ND<br />

2 CAP TANT 10UF 16V 10% SMD Vishay/Sprague<br />

293D106X9016C2TE<br />

3<br />

www.digikey.com<br />

718-1048-1-ND<br />

10 DIODE SCHOTTKY 30V 200MA SOD323 Micro Commercial Co BAT42WS-TP www.digikey.com BAT42WSTPMSCT-ND<br />

4 74ACT574 - IC LATCH OCT D-TYPE 3ST 20-SOIC Fairchild Semiconductor 74ACT574SC www.digikey.com 74ACT574SC-ND<br />

1 74ACT00 - IC GATE NAND QUAD 2INPUT 14-SOIC Fairchild Semiconductor 74ACT00SCX www.digikey.com 74ACT00SCXCT-ND<br />

2 74ACT74 - IC FLIP FLOP DUAL D POS 14-TSSOP Fairchild Semiconductor 74ACT74MTCX www.digikey.com 74ACT74MTCXCT-ND<br />

1 74ACT32 - IC GATE OR QUAD 2-INPUT 14-SOIC Fairchild Semiconductor 74ACT32SC www.digikey.com 74ACT32SC-ND<br />

36 RES 300 OHM 1/10W 1% 0603 SMD Panasonic - ECG ERJ-3EKF3000V www.digikey.com P300HTR-ND<br />

1 RES 47.0 OHM 1/10W 1% 0603 SMD Panasonic - ECG ERJ-3EKF47R0V www.digikey.com P47.0HTR-ND<br />

5 RES 10.0K OHM 1/10W 1% 0603 SMD Rohm MCR03EZPFX1002 www.digikey.com RHM10.0KHTR-ND<br />

2 HEADER ISP MACHO CON CAPUCHA 40POS. Local --- --- ---<br />

1 HEADER ISP MACHO CON CAPUCHA 50POS. Local --- --- ---<br />

3 BORNERAS DOBLES Local --- --- ---<br />

68


Tarjeta <strong>de</strong> Control<br />

Cantidad Descripción FABR. COD. FABR. WEB PAGE COD. DISTRIB.<br />

4<br />

2<br />

CONECTO<br />

RES SMA 90º PARA PCB<br />

RADIAL ALUMINUM ELECTROLYTIC CAPACITORS - 105<br />

DEGREE 22UF 16V 10%<br />

Pasternack PE4028 www.pasternack.com PE4028<br />

Nichicon<br />

UKL1C220KDD<br />

ANA www.mouser.com 647-UKL1C220KDDANA<br />

17 CAP TANT .1UF 35V 10% SMD<br />

Vishay/Sprague<br />

293D104X9035A<br />

2TE3 www.digikey.com 718-1109-1-ND<br />

4 CAP CERM 22PF 10% 100V NP0 1206 Kemet C1206C220J5GA<br />

CTU<br />

www.digikey.com<br />

399-1197-1-ND<br />

1 DIODOS 1N4004,1N4007 Local --- --- ---<br />

14 DIODE SCHOTTKY 30V 200MA SOD323<br />

Micro Commercial Co<br />

BAT42WS-TP www.digikey.com BAT42WSTPMSCT-ND<br />

1 MOLEX 2 PINES BIG Local --- --- ---<br />

1 HEADER ISP MACHO <strong>2X</strong>5 Local --- --- ---<br />

1 HEADER ISP MACHO <strong>2X</strong>25 Local --- --- ---<br />

1 HEADER ISP MACHO <strong>2X</strong>20 Local --- --- ---<br />

1 ESPADINES (3) Local --- --- ---<br />

3 LED 3MM Local --- --- ---<br />

1<br />

CONECTOR SCSI 68 PINES MONTAJE MACHO 90º- RIGHT<br />

ANGLE PWB MOUNTING WITH 68-PIN MALE<br />

CONNECTOR<br />

National Instruments<br />

777600-01 www.ni.com 777600-01<br />

2 RES FILM 100 OHM 1/4W 1% Local --- --- ---<br />

4 RES FILM 510 OHM 1/4W 1% Local --- --- ---<br />

1 RES FILM 47.0 OHM 1/4W 1% Local --- --- ---<br />

13 RES 1.00K OHM 1/4W 1% 1206 SMD Rohm<br />

MCR18EZPF1001 www.digikey.com<br />

RHM1.00KFRCT-ND<br />

9 RES 4.99K OHM 1/4W 1% 1206 SMD Rohm MCR18EZPF4991 www.digikey.com RHM4.99KFRCT-ND<br />

69


3 RES 47.0 OHM 1/4W 1% 1206 SMD Rohm<br />

MCR18EZPF47R<br />

0 www.digikey.com RHM47.0FRCT-ND<br />

1 RES 3.83K OHM 1/4W 1% 1206 SMD Rohm<br />

MCR18EZHF383<br />

1 www.digikey.com RHM3.83KFCT-ND<br />

2 RES 300 OHM 1/4W 1% 1206 SMD Rohm<br />

MCR18EZPF3000 www.digikey.com<br />

RHM300FRCT-ND<br />

4 RES 2.00M OHM 1/4W 1% 1206 SMD Rohm<br />

MCR18EZPF2004 www.digikey.com<br />

RHM2.00MFRCT-ND<br />

1 FLEX10K10 IC FLEX 10K FPGA 84-PLCC Altera<br />

EPF10K10LC84-<br />

4N<br />

www.digikey.com<br />

544-1938-5-ND<br />

1 EPC1441PC8 IC CONFIG DEVICE 400KBIT 20-PLCC Altera<br />

EPC1441PC8<br />

www.digikey.com<br />

544-1224-5-ND<br />

4 FIFOS IDT7208L25J<br />

Integrated Device Technology<br />

7208L25J www.nuhorizons.com 7208L25J<br />

3 74F14 - IC INVERTER HEX SCHM TRIG 14SOIC Fairchild Semiconductor<br />

74F14SC<br />

www.digikey.com<br />

74F14SC-ND<br />

70

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!