jueves, 3 de abril de 2008

Diagramas de bloques

Posto que o que se pedía era unha lista de bloques necesarios, así como as súas entradas, saidas e interconexións, o máis sinxelo para nós resulta ir creando as entidades en VHDL e xuntalas nun schematic, que da unha visión global moi clara do que se pretende.
Nunha primeira aproximación ao problema dividímolo en 3 bloques, un encargado do teclado, outro de xerar a suma dos tonos e outro encargado de enviar vía serie os datos ao DAC. A interface co exterior está ben definida, máis sen embargo, pode chegar a ser necesario incluir algunha outra saida a nivel constante.


Tanto o bloque de control do teclado como o de control do DAC están desenvolvidos na web do DTE, pero non se adaptan ao que consideramos máis optimizado para esta aplicación en concreto, así que adaptarémolos modificando lixeiramente a súa arquitectura externa: so empregaremos unha saida analóxica do convertidor, así como non se precisa realizar a conversión de filas e columnas a hexadecimal dentro do controlador do teclado.
O bloque importante é o central, que nun seguinte nivel de abstracción podemos dividir nos seguintes subsistemas:
Aquí unha máquina de estados (da que posteriormente engadiremos o diagrama de estados) encárgase dar a orde de inicialización dos osciladores cando a tecla é pulsada. A partir de entón indícalles mediante o sinal xera_mostra cando deben calcular a seguinte mostra, que ven sendo no seguinte instante de mostreo. Para temporizar o período de mostreo emprega un contador auxiliar provisto dun combinacional. O sumador final encárgase de que o que vaia para o DAC sexa a suma de ambos tonos, un correspondente ás filas e outro ás columnas.
Os osciladores están constituidos internamente por unha memoria ROM de coeficientes, que en principio implementaremos coma memoria distribuida debido ás súas pequenas dimensións(96x12bits), dous rexistros e un filtro IIR inestable. O funcionamento do mesmo xa foi verificado en Matlab con anterioridade, e cremos que constitúe a solción óptima, inda que seguramente precise ser modificado para funcionar correctamente en punto fixo.

No hay comentarios: