Tengo un algoritmo:
y[n] = x[n] * sum(x[0:31])
x está en el flujo de entrada, y es el flujo de salida, ambos una muestra por ciclo de reloj. Una condición es que la entrada no sea contigua, hay un indicador válido que indica que cuando la entrada es válida. El paquete completo está contenido en x [0: 255], y generalmente solo obtenemos un paquete único y poco frecuente. Estoy tratando de averiguar cuáles son las estructuras lógicas correctas para implementar esto sin problemas.
Primero, pensé que solo usaría un registro de desplazamiento en la entrada, cambiando en la entrada válida. De esa manera puedo "detener" el flujo de entrada hasta que tenga 32 sumas de muestra. El problema que encontré con esto fue que después de recibir las 256 banderas de entrada válidas, todavía tenía 32 muestras atascadas en mi registro de turnos y no había banderas extra válidas para cambiarlas.
La siguiente idea que tuve fue usar un FIFO. La línea de habilitación de lectura FIFO se controlaría mediante un indicador que indica que la respuesta de la suma está "lista" y que la entrada FIFO no está vacía.
Estoy pensando demasiado en esto? ¿Hay una solución simple para esto?