Vuelve para dibujar la imagen de lo que propusiste y luego piensa en las implicaciones.
Rising_edge tiene un significado especial. Designa la señal que se conecta al pin del reloj de un flip-flop.
Primero considere las señales que provienen de la salida de la lógica regular. Estos no son adecuados como relojes porque pueden fallar. En los diseños de tableros anteriores, pudimos eliminar los errores técnicos al crear una lógica con términos redundantes; sin embargo, en los FPGA y los ASIC, generalmente no sabemos si la implementación de destino se producirá o no. Además, las herramientas de síntesis trabajan arduamente para eliminar la lógica redundante: sí, podemos evitar que lo hagan, pero no es divertido. Además, los relojes generados fuera de la lógica tienen características de temporización deficientes (retrasos, sesgo, ...). Los viejos diseños de tableros eran lentos, por lo que no estaba tan mal.
Ahora considere las señales que provienen de la salida de otro flip-flop. Históricamente, los diseños de tableros utilizaban estos como relojes. No hacemos esto tanto en el diseño ASIC y FPGA. Una razón es que el diseño es considerablemente más grande y el análisis de tiempo se vuelve más desafiante. Otra razón es que queremos minimizar el número de dominios de reloj, ya que cualquier cruce de dominio de reloj debe realizarse correctamente o es problemático.
En general, en los diseños ASIC y FPGA, intentamos minimizar el número de dominios de reloj. Tratamos de mantener un buen control de los relojes que tenemos, por lo tanto, no conectamos (agregamos lógica, incluidos los inversores) a los relojes, a menos que estemos utilizando una metodología que lo admita.
En un FPGA, generalmente esto significa que estamos usando un asistente de reloj o creando una instancia del bloqueo de reloj de un vendedor. Aquellos que me conocen pueden estar riéndose de eso, ya que mi respuesta habitual es escribir el código, los magos son malvados (porque te encierran en un proveedor en particular).