¿Podemos conectar tanto ASIC como FPGA a los mismos puertos Ethernet de salida física al mismo tiempo? [cerrado]

Estoy haciendo una simulación de mi diseño de investigación en un solo FPGA, en el que simulé dos chips de conmutación ASIC y un FPGA. Quiero decir, simulé un FPGA único que funcionaba como dos chips y los conecté para que pudieran transferir tráfico al otro lado. También conecté sus puertos lógicos a un "Árbitro" que reenviará el tráfico a los puertos Ethernet de salida físicos en base a "Primero en entrar, primero en salir". Como simulo todo esto en un solo FPGA, tengo lógica para implementar el Arbiter, que es la etapa importante de este diseño. Y en la simulación todo va bien. A continuación se muestra el experimento simulado. Quiero hacerlo en ASIC y FPGA reales ahora.

Solo quiero saber si es posible en ASIC y FPGA reales conectarlos a los mismos puertos de salida físicos. En caso afirmativo, ¿dónde podemos implementar la cola de salida que almacenará en búfer los paquetes provenientes de ASIC y FPGA (después del procesamiento) y los liberará en orden FIFO hacia los puertos eth de salida? Porque aquí no tenemos el "Árbitro" para reenviar el tráfico proveniente de ambos chips de conmutación de alguna manera, por ejemplo, FIFO.

Dos formas en las que pensé son: 1) Memoria con búfer de puerto y 2) Memoria compartida (SRAM, DRAM) podría ser la solución. O cualquier otra idea mejor que puedas dar. Gracias

La pregunta tal como está ahora es bastante complicada. Entiendo lo siguiente: tiene 2 bloques en su hardware que funcionan uno al lado del otro pero tienen una interfaz de salida idéntica al mundo real. En la simulación, enruta las dos salidas a través de un árbitro que realiza la comunicación eventual a las salidas a través de Ethernet. Esto funciona en la simulación, pero ahora quiere ir a una implementación real, pero ¿cortar el árbitro? Supongo que la única forma en que veo que el ASIC entra en juego es como la implementación de uno de los dos bloques.
Sí, entendió bien el escenario, señor. En realidad, el tráfico provendrá tanto del ASIC como del FPGA. Entonces, ¿dónde puedo implementar una cola, que almacenará en búfer los paquetes que van a los puertos eth físicos y los dejará en FIFO? De lo contrario, ¿no colisionarían en el puerto de salida?
En el simulador necesitas un árbitro, ¿por qué crees que no necesitarías uno en la vida real?
@immibis, sí, lo necesitaría, pero para Arbiter significa que necesitaría una memoria, donde podría almacenar en búfer los paquetes para liberarlos en FIFO, entonces, ¿dónde podría implementar esa memoria, búfer de puerto o búfer compartido, como mencioné anteriormente?
¿Por qué cerrado? Creo que está bastante bien explicado, pero la gente no puede entender bien el escenario. necesitan un pedazo de pastel en la boca.

Respuestas (1)

Hay formas de hacer esto, pero terminaría jugando rápidamente con los búferes de tres estados y cosas por el estilo. Con solo juntar los cables, se crearán múltiples controladores en las líneas y se explotarán los pines en un abrir y cerrar de ojos.

Una mejor solución sería enrutar la salida ASIC a través de la FPGA e implementar tanto el bloque que tendría en la FPGA como el árbitro allí. Entonces el FPGA tiene la única salida hacia la Ethernet. Suponiendo que su árbitro ya sea sintetizable, este es un pequeño cambio en el código. Sin embargo, esto probablemente requiera un rediseño del resto de su proyecto, así que considere otras soluciones.

Nota: esta respuesta asume que su árbitro utilizado para la simulación ya está escrito en un HDL.