Paralelo a menos paralelo sin limitación

1

Estoy modelando una interfaz serie-cámara en Verilog. Mi diseño incorpora fotogramas de video, los empaqueta en un formato determinado y luego los distribuye entre 1 a 4 carriles paralelos. Cada carril tiene 8 bits de ancho. Es configurable la cantidad de carriles que desea utilizar. El empaquetador pasa 32 bits al distribuidor de carril cada ciclo de reloj.

Mi pregunta es ¿cuál es la mejor manera de transmitir datos sin limitación si se utilizan menos de 4 carriles?

Entonces, si se pasan 32 bits y solo hay dos carriles abiertos, el distribuidor solo puede pasar 16 bits por reloj. ¿Existe una forma rápida de hacerlo sin las señales de control que impiden que el empaquetador envíe datos cada dos relojes? Parece que no lo hay porque los datos se acumularían.

Cualquier ayuda sería apreciada!

Otra pregunta: al final del envío de datos, debe haber un byte de "Fin de transmisión" enviado en cada carril. ¿Cómo manejaría esto si el número de bytes enviados no es un múltiplo del número de carriles? El byte EoT se enviaría en diferentes carriles en diferentes relojes. ¿Hay una buena manera de modificar una máquina de estado para manejar estos casos de borde?

    
pregunta ballaw

1 respuesta

2

Si no puede evitar que la cámara / el empaquetador envíen 32 bits por reloj, debe hacer una de las siguientes acciones:

  1. Implemente una gran FIFO en su lógica que pueda almacenar el desbordamiento. Si tiene una salida de 16 bits y una entrada de 32 bits, entonces el fifo debe ser lo suficientemente grande como para almacenar el 50% del tamaño total de la imagen de la cámara (ya que puede enviar la mitad de los bytes que ingresan). Si solo tiene una salida de 8 bits, entonces el fifo debe ser lo suficientemente grande como para almacenar el 75% del tamaño total de un cuadro. Tenga en cuenta que si hace esto, debe dar tiempo a que se borre el fifo antes de comenzar el siguiente fotograma.
  2. Haga que el reloj de salida sea más rápido que el reloj de entrada. Debe ser 2 veces más rápido en el caso de una salida de 16 bits, o 4 veces más rápido en el caso de una salida de 8 bits.
  

¿Hay una buena manera de modificar una máquina de estado para manejar estos casos de borde?

En realidad no, solo tiene que especificar el comportamiento que desea. No hay una declaración mágica que lo maneje automáticamente. Mi sugerencia es que solo piense bien en cómo quiere que funcione su protocolo, y luego codifique el transmisor y el receptor para que coincidan con las especificaciones. Si está diseñando tanto el transmisor como el receptor, simplemente elija el modo en que desee que funcionen sus bytes de EoT que tengan más sentido para usted.

    
respondido por el Tim

Lea otras preguntas en las etiquetas