Cómo diseñar un circuito que funcione tanto en posición como en posición

0

Tengo un bit de fase de reloj que decide en qué borde del reloj debe funcionar el diseño. No puedo usar un bloque siempre dentro de una sentencia if. Es posible utilizar

'ifdef

declaración? ¿Se podrá sintetizar 'ifdef ?

Gracias

    
pregunta daut

2 respuestas

1

Hay un par de maneras de abordar esto.

Una forma es invertir selectivamente el reloj antes de usarlo en su lógica:

simular este circuito : esquema creado usando CircuitLab

Con este enfoque, si Clock edge select es 0, entonces la polaridad del reloj externo e interno es la misma, y la lógica opera en el flanco ascendente del reloj externo. Por otro lado, si clock edge select es 1, el reloj interno se invierte con respecto al reloj externo, y la lógica opera en el flanco descendente del reloj externo, que corresponde al flanco ascendente del reloj interno.

La otra forma es simplemente implementar ambos bloques y luego seleccionar la (s) salida (s) correcta (s):

simular este circuito

Esto utiliza más recursos, pero tiene la ventaja de que U1 y U2 pueden implementar una lógica ligeramente diferente, si es necesario. Ambos bloques están activos todo el tiempo, pero simplemente descartas las salidas de la "incorrecta".

    
respondido por el Dave Tweed
0

'ifdef es parte del preprocesador, por lo que se evalúa antes de la síntesis. Siempre que el código resultante sea sintetizable, debería estar bien.

    
respondido por el alex.forencich

Lea otras preguntas en las etiquetas