¿Cómo escribir en la memoria de bloques?

2

Necesito escribir datos de 16x16 bits para bloquear la memoria. Estoy usando RS232 para enviar datos. Para obtener datos de 16 bits, envío 2x8bit. Ahora, ¿cómo puedo escribir mis datos en la memoria?

Tengo una señal de escritura y una entrada de 16 bits, pero no sé qué debo hacer a continuación.

Gracias de antemano.

    
pregunta g3d

3 respuestas

1

La forma en que lo haría es implementar algo así como una sección de receptor UART que pueda recopilar los datos en serie en un registro de 8 bits, y una pequeña máquina de estado que pueda tomar bytes completos y construir las palabras de 16 bits a partir de ellos, y luego guárdalos en la memoria RAM.

    
respondido por el JustJeff
2

Necesitará un protocolo de nivel superior para el enmarcado / paquetización. Una vez que sepa qué bytes deben ir a dónde, guárdelos en los registros a medida que ingresan. Una vez que los bytes altos y bajos para cada ubicación de memoria estén en los registros, escríbalos en la RAM del bloque. Repita para los bytes posteriores.

    
respondido por el alex.forencich
2

Estoy de acuerdo con alex sobre el encuadre. Esto puede volverse complejo fácilmente, y luego una solución puede ser la sincronización de los datos enviados. Si tiene una pausa larga entre ráfagas, puede usarla para restablecer un puntero de RAM. Use el reloj del FPGA para hacer un registro de cuentas (el ancho depende de la velocidad del reloj y la duración de la pausa). Si el registro llega a cero, reinicie el puntero de RAM. Use un flip-flop para determinar si escribir el LOB o el HOB en un registro temporal en el bit de parada. Alterne el FF en cada byte recibido. Si se recibe el segundo byte de cada palabra de 16 bits, copie a la posición RAM a la que apunta el puntero e incremente el puntero.

    
respondido por el radagast

Lea otras preguntas en las etiquetas