Sunteți pe pagina 1din 10

El codigo fue escrito de forma jerarquica y consta de un bloque principal, seis bloques

secundarios conformados a su vez por partes mas pequeñas.


• Principal
o MaquinaEstados
o Enable
o Reloj
o Ent
o Salida
o Multi

MaquinaEstados

Es el encargado de realizar la cuenta de 0 a 31 que gobierna todos los procesos. Consta


de dos bloques, uno para la parte secuencial del circuito y el otro para la combinacional.
El circuito combinacional se encarga de hacer la cuenta, incrementando la señal de
entrada “entradasuma” en una unidad cada vez que esta ingresa al circuito. Cuando la
cuenta llega a 31, en el pulso siguiente vuelve a empezar en 0.
La parte secuencial es un flip-flop, el cual, cada vez que recibe un flanco ascendente del
clock “clk” , si “reset” es igual a cero y “enable” es igual a uno, pasa la cuenta que tiene
en su entrada a la salida. Esta salida se realimenta en la entrada del combinacional antes
descripto y también es usada en otros bloques del circuito principal.

Enable

Este bloque es el encargado de habilitar los conversores AD, DA y los flip flop de la
etapa de salida.
A la entrada ingresa la cuenta que se genero en el bloque MaquinaEstados.
La salida “ff” se pone en ‘1’ si la cuenta es igual a 20, caso contrario es ‘0’. La salida
“AD” se pone en ‘0’ si la cuenta es mayor o igual que 0 y menor a 17, siendo 0 si no se
cumplen las dos condiciones. Y por ultimo “DA” es ‘0’ cuando la cuenta es igual a 0 ó
cuando la cuenta es menor a 17.

1 Grispino, Alberto Sebastián


Petracca, Gabriel Oscar
Reloj

Este bloque se realizo con un wizard. A su entrada tiene una señal de clock
(MasterClock) a 25 MHz. Las dos salidas son señales a 5 MHz ya que en su interior se
dividió la señal de entrada por 5, y una de ellas esta desfasada 180 grados. Sus nombres
son “clocks” y “notclocks” respectivamente.

Ent

Esta compuesto por 12 comparadores que se activan de acuerdo al valor de la cuenta


generada en MaquinaEstados. Cuando la cuenta es 5, se activa el primer comparador y
con el próximo flanco ascendente del “notclocks” generado en el bloque reloj, a su
salida aparece el bit mas significativo de la señal proveniente del ADC “SDATA”.
A medida que se incrementa la cuenta se van activando de a uno los comparadores,
consiguiendo de esta forma convertir los datos de entrada que estaban en serie, a
paralelo.
A continuación se muestra uno de los comparadores y el bloque ent completo.

2 Grispino, Alberto Sebastián


Petracca, Gabriel Oscar
Salida

Este bloque esta compuesto por 12 flip-flops que se activan simultaneamente cuando
“ff” (salida del bloque enable) se pone en ‘1’. Esto permite que los datos en su entrada
pasen a la salida cuando llega el flanco ascendente de “notclocks”. Las salidas están
conectadas a las entradas del bloque “multi”.
A continuación se muestra uno de los flip-flop y el bloque completo:

3 Grispino, Alberto Sebastián


Petracca, Gabriel Oscar
Multi

Este bloque es un multiplexor. Se encarga de pasar los datos que a su entrada están en
paralelo a serie. La cuenta del bloque “MaquinaEstados” es la que selecciona cual de las
entradas pasa a la salida. El bloque es el siguiente:

4 Grispino, Alberto Sebastián


Petracca, Gabriel Oscar
Principal

En este bloque se unen todos los bloques anteriormente descriptos. Cuenta con 4
entradas del tipo standard logic y 5 salidas del mismo tipo. El diagrama en bloques es el
siguiente:

5 Grispino, Alberto Sebastián


Petracca, Gabriel Oscar
A continuación se muestra una simulación del código completo en funcionamiento. A la
entrada “SDAT” se introdujo una secuencia arbitraria de unos y ceros que luego de un
periodo de cuenta aparecen en la salida “D_IN”.

6 Grispino, Alberto Sebastián


Petracca, Gabriel Oscar
Diseño de un Filtro FIR

Copiar lo d filtro

Este modulo se inserto entre los bloques de entrada y salida.

Implementacion del filtro

Una vez que se termino de programar el código, se realizo la asignación de pines para
cada señal de entrada y salida con lo que se genero un archivo con extensión “ucf”. Para
grabar la placa FPGA se crea un archivo con extensión “bit”.
Luego se prueba la respuesta en frecuencia de la implementación, haciendo un barrido
con el generador de señal.
En la banda de paso la señal de salida debería ser igual a la de entrada y en la banda de
rechazo la señal de entrada debería ser atenuada. A continuación se muestra un grafico:

Esta implementación no funciono de la manera esperada, por lo que se buscaron otras


alternativas.

7 Grispino, Alberto Sebastián


Petracca, Gabriel Oscar
Se diseño el filtro con un toolbox de Matlab que también genera el código en VHDL.
Luego se implemento ese bloque en lugar del que se había programado (filtro_fir) en el
proyecto principal.
El toolbox utilizado es “filterbuilder”. Las características son:

Frecuencia de muestreo 5 MHz. / 32


Frecuencia de corte 10 KHz
Frecuencia de paso 1 KHz
Orden del filtro 10

También se estableció que el formato debe ser punto fijo y con 12 bits de extensión

8 Grispino, Alberto Sebastián


Petracca, Gabriel Oscar
Y la respuesta del filtro se ve a continuación:

Tambien se detallan los coeficientes obtenidos para el filto:

9 Grispino, Alberto Sebastián


Petracca, Gabriel Oscar
Al igual que la anterior, esta implementacion tampoco funciono como se esperaba.
Creemos que es debido a la gran perdida de información que significa recortar tantos
bits a la salida del filtro.

10 Grispino, Alberto Sebastián


Petracca, Gabriel Oscar

S-ar putea să vă placă și