Uso del códec AC97 en un tablero Atlys Spartan 6

1

Soy un principiante en la programación de FPGA. Acabo de comenzar a programar una placa Atlys Spartan 6 y hasta ahora he escrito un programa para parpadear los LED en un patrón de contador.

Ahora estoy tratando de enviar la señal de reloj a las frecuencias de audio del códec AC97. Aquí está el programa Verilog que he escrito:

module music(
    input clk,
    output ac97_sdo
    );
reg [25:0] count_aud;
reg clk_aud;

assign ac97_sdo = clk_aud;

/* down-sample the 100MHz system clock to 1kHz */
always @(posedge clk)
begin
    count_aud <= count_aud + 1;
    if (50000 == count_aud)
    begin
        clk_aud <= !clk_aud;
        count_aud <= 0;
    end
end

endmodule

La generación de archivos de bits está bien, pero el código no parece funcionar. No escucho nada ni en Line Out ni en HP Out (tampoco sé cómo controlar la salida), y no tengo suficiente experiencia con la especificación AC97 para resolver esto. La parte de audio de la UCF es:

NET ac97_bitclk LOC = L13;
NET ac97_sdi LOC = T18;
NET ac97_sdo LOC = N16;
NET ac97_sync LOC = U17;
NET ac97_reset LOC = T17;

¿Necesito usar el reloj de bits, sincronización, reinicio, etc. para que esto funcione? Si es así, ¿cómo puedo hacerlo?

No pude encontrar ninguna información detallada en el Manual de referencia de Atlys.

¡Por favor ayuda!

Gracias.

    
pregunta Icarus

1 respuesta

2

La interfaz a un códec AC97 es un poco más complicada que el audio digital directo. Los datos en serie consisten en marcos de datos de 256 bits; Cada cuadro contiene varios canales de muestras de 20 bits. La tasa de datos global es 12.288 MHz; La división por 256 da la frecuencia de muestreo de 48 kHz. Parte de la trama de 256 bits está dedicada a controlar los mensajes, por ejemplo, para configurar los registros del mezclador. Es posible que deba hacer esto una vez después de encender / restablecer para configurar el volumen.

La especificación AC97 está disponible de Intel . Escribir tu propio maestro no es irrazonable pero tomará algún tiempo. También puede encontrar uno que pueda reutilizar. OpenCores tiene uno . Hay un controlador AC97 muy básico y cierta información general sobre el protocolo aquí .

No puedo recordar cuántos de los registros de AC97 están estandarizados. El manual que encontré en línea para su tablero dice que tiene un códec LM4550. Suponiendo que sea correcto, puede consultar la hoja de datos LM4550 para obtener una lista completa de los registros de configuración.

    
respondido por el Andy

Lea otras preguntas en las etiquetas