Para probar el codec puedes utilizar perfectamente los archivos que te he puesto arriba y que ya estan corregidos. Tenian algunos fallos pero ya los he probado y funcionan a la perfeccción.
Con esos archivos puedes leer y escribir del códec simulatáneamente. De hecho, lo que hacen es leer datos del ADC y enviarlos al DAC en modo I2S, 24bits de resolución y 48.82KHz de frecuencia de muestreo. Una vez que compruebes el codec, pasa a lo de la RAM.
La RAM en la spartan3 la puedes hacer distribuida o con los block RAM. Yo te recomiendo que utilices los segundos, porque la memoria distribuida se hace a partir de registros y te vas a quedar sin ellos en cuanto superes los 2KBytes. El número de block RAM dependen de la spartan que tengas, pero como mínimo tienes para 9KBytes de memoria en una XC3S50. EN la mía que es una XC3S200 hay para 27KBytes de memoria. La ventaja de esta memoria es que es de DOBLE PUERTO, es decir, que la puedes leer y escribir simultáneamente en dos direcciones distintas.
La mejor forma de crear estas memorias es con el Core Generator que viene en el ISE. De todas formas aqui te paso un link que te explica como hacer memoria de doble puerto en la spartan 3:
http://www.xilinx.com/xlnx/xweb/xil_publications_display.jsp?sGlobalNavPick=&sSecondaryNavPick=&category=-1209884&iLanguageID=1Es la XAPP463. Viene con un archivo zip con los ejemplos.