Soy un principiante en la programación de FPGA. Acabo de empezar a programar una placa Atlys Spartan 6 y hasta ahora he escrito un programa para hacer parpadear los LED en un patrón de contador.
Ahora estoy tratando de enviar la señal del reloj muestreada a frecuencias de audio al 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 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 sobre el Manual de referencia de Atlys.
¡Por favor ayuda!
Gracias.
La interfaz de un códec AC97 es un poco más complicada que el audio digital directo. Los datos en serie consisten en tramas de datos de 256 bits; cada cuadro contiene varios canales de muestras de 20 bits. La velocidad de datos general es de 12,288 MHz; dividir por 256 da la frecuencia de muestreo de 48 kHz. Parte de la trama de 256 bits está dedicada a mensajes de control, por ejemplo, para establecer registros mezcladores. Es posible que deba hacer esto una vez después de encender/reiniciar para configurar el volumen.
La especificación AC97 está disponible en Intel . Escribir su propio maestro no es irrazonable, pero llevará algún tiempo. También puede encontrar uno que pueda reutilizar. OpenCores tiene uno . Hay un controlador AC97 muy básico y alguna información general sobre el protocolo aquí .
No recuerdo cuántos de los registros AC97 están estandarizados. El manual que encontré en línea para su placa dice que tiene un códec LM4550. Suponiendo que sea correcto, es posible que desee consultar la hoja de datos del LM4550 para obtener una lista completa de los registros de configuración.
Sarre Drímer
Dipan Mehta