Estoy tratando de implementar una red de clasificación paralela. Tengo curiosidad por saber cómo se escribiría una declaración for-generate para generar 128 instancias de este circuito de clasificación.
Se supone que ordena 256 números de 8 bits de menor a mayor sin un reloj usando solo lógica combinacional.
Este es un enlace al documento en la red de clasificación que estoy tratando de usar:
Los enlaces al circuito y al diagrama de la red de clasificación se encuentran a continuación.
Me gustan los desafíos y me tomó algunos intentos, pero lo hice funcionar para datos de W bits de ancho y entradas D. (D es una potencia de dos). Hice un poco de trampa porque soy bastante más competente con Verilog. Esta es la vista RTL que Xilinx me dio:
No voy a regalar el código aunque solo sea para evitar que este sitio web se convierta en un 'Mira: ¡código gratis!' pero puedo dar algunos consejos:
Empecé con la definición de buses de 8 bits D*(D+1). Esto hace que pueda usar el mismo nombre de bus en todas partes en mi generación.
Conecte los primeros buses D a sus entradas, los últimos buses D a sus salidas.
En alguna etapa pasas dos autobuses, lo que hace que los índices de los autobuses sean muy desagradables. Una solución simple es que en la parte superior e inferior de cada estado impar cambie el nombre del bus. Para el bus superior esto es:
assign bus[stage*d+d] = bus[stage*d];
Ahora siempre tiene D buses por etapa y todos los bucles se vuelven regulares para bucles.
usuario_1818839
Andy alias
Paebbels
Viejo pedo
usuario124757