¿Mi tabla de búsqueda con 50,000 entradas es demasiado grande para la memoria de MCU (dsPIC33EP256MC506)?

2

Quiero implementar un controlador lógico difuso de 2 entradas y 1 salida utilizando la tabla de búsqueda en el microcontrolador dsPIC33EP256MC506 . Estoy comparando la tabla de búsqueda y el actual controlador de lógica difusa lado a lado en Simulink. Para minimizar el error entre la tabla de búsqueda y el controlador real, tengo que generar una tabla enorme, con alrededor de 50,000 entradas. El rango de entrada 1 es -5000 to 5000 , el rango de entrada 2 es -1000 to 1000 y el rango de salida es -9999 to 9999 . Estoy usando la generación de código Simulink.

Revisé la sección de memoria de la hoja de datos, pero aún necesito una guía experta para relacionar el tamaño de la tabla de búsqueda con el tamaño de la memoria del programa. Mis preguntas son: ¿cómo puedo saber si esta tabla de búsqueda encajará en la memoria del programa? ¿Cómo puedo estimar el tamaño aproximado de la tabla de búsqueda? ¿Cuáles son los aspectos clave que debe buscar en la hoja de datos o en la tabla de búsqueda desde el punto de vista práctico de la implementación?

    
pregunta Adeel

1 respuesta

4

Dice que su tabla de búsqueda contendrá los elementos 50000 y cada elemento tendrá el rango de -9999 to 9999 . Eso significa que cada elemento necesitará 16 bits (= 2 bytes) de memoria. Así que toda la LUT necesitará 50000 x 2 bytes = 100000 bytes = aprox. 97.6 Kbytes .

Su microcontrolador tiene 256 Kbytes de memoria Flash y 32 Kbytes de RAM. Por lo tanto, su programa / memoria flash sería suficiente para la LUT. Para colocar la tabla en la memoria del programa, debe declararla como const: const int16_t LUT[] = { ... };

    
respondido por el m.Alin

Lea otras preguntas en las etiquetas