Puertos de E/S
Los puertos que se definieron para interactuar desde un programa PicoBlaze son:
Puertos de entrada
0x00: Estado de la UART
Expone el estado de la UART en los siguientes bits:
[0]
: TX data present[1]
: TX half full[2]
: TX full[3]
: RX data present[4]
: RX half full[5]
: Rx full[6:7]
: Sin uso
0x01: Lectura de datos
Mediante este puerto se reciben datos de la UART
[0-7]
: Byte recibido desde uart_rx.
0x02: Cantidad de bytes procesados
[6:0]
: Una vez disparada la excepción de finalización del procesamiento, en este registro se expone la cantidad de bytes que el encoder procesó y que están disponibles para leer en el buffer de resultado. Máximo 89 bytes dado el límite de 64 bytes en la entrada.
0x03: Dato leido del buffer de resultado del encoder
[7:0]
: Dato que se leyó de la posición de memoria de resultado indicada en el puerto de salida 0x06.
Puertos de salida
0x00: Control de la UART
Este puerto está mapeado también al puerto optimizado de constantes (k_write) ya que los valores que se manejan en general son constantes, pero de todas formas también permite escribirlo desde un registro o posición de memoria de PicoBlaze.
[0]
: Cuando se pone a uno resetea el TX.[1]
: Cuando se pone a uno resetea el RX.[2-7]
: Sin uso.
0x01: Escritura de datos
Mediante este puerto se envían datos a la UART
[0-7]
: Byte a escribir en uart_tx.
0x02: Registro de control del encoder
También está mapeado tanto al puerto de escritura normal como al optimizado por constantes (k_write). Para más información ver el manual de KCPSM6 incluido en la distribución.
[0]
: Reset del encoder.[1]
: Habilita escritura en la memoria del encoder para escribir los datos a encodear.[2:7]
: Sin uso.
0x03: Dirección a escribir en el buffer de memoria del encoder
[0:5]
: Dirección dentro del buffer de memoria del encoder donde se va a escribir.[6:7]
: Sin uso. Procesa hasta 64 bytes, con 6 bits se maneja todo el espacio de memoria.
0x04: Byte a escribir en el encoder
[0:7]
: Byte que se va a escribir en la posición de memoria del encoder especificada en el puerto 0x03.
0x05: Cantidad de bytes a procesar
[0:5]
: Se interpreta como un entero sin signo de rango 1 a 64 y representa la cantidad de bytes, leidos de la memoria buffer del encoder, a procesar. El hecho de escribir el valor es condición necesaria y suficiente para que el encoder comience a procesar. Finaliza disparando una excepción.
0x06: Dirección a leer del buffer de resultado del encoder
[0:6]
: Dirección de memoria en el buffer de resultado para leer. Como máximo podrán leerse 89 bytes producto de codificar el máximo de 64 bytes de entrada.