Buenas noches, recurro a ustedes ante ya mi gran, gran, graaaan confusion intentando comprender la SDRAM de este kit de desarrollo. Les propongo mis dudas en distintos items.
- Los maximos bits que puedo asignar al bus de direcciones es de 12, dando asi 2^12 = 4K es decir 4096 palabras, pero segun el manual del micro, un banco de la memoria de la sdram es de 4(bancos)x64Mb, centrandonos en esos 64Mb que estan limitados por 16 bits de datos, un banco de la memoria sdram quedaria en 32Mb muy alejado de lo que vemos en la practica, un banco de (4K x 16b)*(4 bancos)=256K
- Vi que las dispocisiones de filas y columnas en una memoria sdram normal pueden ser por dar un ejemplo 16,384 filas x 1,024 columnas, mientras que observamos que en este kit las filas varian entre 11 y 12 y las columnas entre 8 y 11, como puede ser posible eso, tan pocas??????
- Me impresiona que la sdram externa sea tan grande fisicamente y de tan poca capacidad (128 Mbit, 64 Mbit accesibles) comparada con la suma de los dos bancos de sdram internos en el micro.
- Segun el manual del micro la dispocision de memoria maxima utilizando 16 bits de datos es "4 x 8K x 2K x 2" (128 Mb) , puedo comprender que 4 sea de los bancos, 2 multiplicando al doble de la memoria que se obtendria con 8b de datos, pero el 8K x 2K no lo comprendo dado lo dicho en los anteriores puntos
- el bus de direcciones es de 12 bits , sin embargo las direcciones no son de 12 bits, si no que son de 28 bits (HADDR(AHB Internal Address Lines)) dado que las direcciones van del 0xC000 0000 al 0xCFFF FFFF de la sdram banco1. Donde de todas maneras de esos 28 bits no son usados completamente para alojar filas y columnas si no tambien bits reservados, seleccionar el banco que se esta usando y el byte enable. Aun no comprendo del todo como jugar con esas filas y columnas al momento de guardar algun dato, pero sigo en ello, de momento se que con libertar puedo usar 1 byte y mitad del otro al momento de alojar algun dato.
- En el ejemplo C:\STM32Cube\Repository\STM32Cube_FW_F7_V1.3.0\Projects\STM32746G-Discovery\Examples\FMC\FMC_SDRAM cuando escribe en las distintas pocisiones de memoria un dato guardado anterioremente en un vector se cuida meticulosamente de no escribir los primeros dos bits de menor peso multiplicando una variable que crece de a unidad por cuatro, no comprendo ese accionar ya que el primer bit de menos peso corresponde al bit enable y ese no debe tocarse, pero el segundo bit de menor peso ya corresponde a las columnas sin embargo el programa cuida de escribir ahi, de escribirse ese bit el programa se halla estancando, aun me encuentro intentando comprender porque.
Si se cambia el tamaño de las columnas del valor 8 por defecto a cualquier otro (9,10,11) el programa presenta que los datos escritos no concuerdan con los leidos, eso tampoco lo comprendo.
Disculpen si algunas dudas son infantiles o detectan que carezco de algun concepto basico. Confio en que ustedes puedan ayudarme a desatar los nudos que me atan a cada item que escribi.
Saludos Cordiales.