He descargado el minsoc de los opencores y viene con un microprocesador junto con un rs232 núcleos. He configurado todas las cadenas de herramientas y descargo el diseño en mi FPGA.
Ejecuto un programa simple que agrega 1 a lo que recibe el rs232 y lo envío a la computadora. Entonces puedo ver que las letras que escribo se envían de vuelta a la computadora. Pero siempre hay un byte final 0x0b cada vez que envío algo.
por ejemplo Si envío A, obtendré A0x0b. Si envío AAAA, obtendré AAAA0x0b.
Luego escribo un programa en C para ejecutarse en el procesador como se muestra a continuación.
while (1){ //endless looping
//send 16 bytes from computer
for(i = 0; i < 16; i++) {
//save the received byte to an array of 16 bytes
B[i] = uart_getc();
//pass array value to the AES core
//this is an IO module using memory map.
REG8(AES_BASE + AES_DR) = B[i];
}
//send the received 16 bytes back to computer
for(i = 0; i < 16; i++) {
uart_putc(B[i]);
}
Después de programar el FPGA, si envío los primeros 16 bytes, recuperaré todos los bytes. Pero cuando envío los segundos 16 bytes, insertará algunos caracteres adicionales 0x0a 0x0b. p.ej. Si envío 3333333333333333, recibiré 0xa0xb3333333333333333
Cuando envío los terceros 16 bytes (también 3333333333333333), recibiré 30xa0xb333333333333333. Y este patrón continúa mientras envío los siguientes 16 bytes, 330xa0xb333333333333333 ... y así sucesivamente. El 0x0a0x0b sigue desplazándose a los últimos bytes.
¿Cuáles son las posibles razones para esto?