Proyecto REX-2X - Radio Observatorio de Jicamarca
Proyecto REX-2X - Radio Observatorio de Jicamarca
Proyecto REX-2X - Radio Observatorio de Jicamarca
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