Estoy empezando con los FPGA y he decidido ir con verilog como HDL. Vi una línea como esta: siempre @ ( posicionamiento clk) Quiero saber cuándo se usa la posición y cuándo se usa la cobertura. Además, ¿cuál es la diferencia entre ellos?
Estoy empezando con los FPGA y he decidido ir con verilog como HDL. Vi una línea como esta: siempre @ ( posicionamiento clk) Quiero saber cuándo se usa la posición y cuándo se usa la cobertura. Además, ¿cuál es la diferencia entre ellos?
posedge
activa el bloque en el borde positivo (ascendente) de una señal de reloj. negedge
se dispara en el borde negativo (caída).
A menos que esté interactuando con una lógica externa que específicamente requiere bordes negativos, siempre debe usar posedge
. Los diseños que usan ambos generalmente tendrán resultados de sincronización pobres, y en algunas situaciones puede ser imposible sintetizarlos.
En general, se utiliza el símbolo de posición, para activar un flop en el borde positivo del reloj. La mayoría de las lecturas y escrituras o cambios de estado tienen lugar en posed.
se usa negedge clk para disparar de manera similar en el borde negativo. Esto se usa con menos frecuencia a menos que se use para DDR2 / 3, etc. Si está escribiendo en una posición, leer sería útil en una posición negativa. Eso ahorraría un ciclo de reloj completo en una operación de lectura.
La operación de reloj Negedge también se usa en bancos de prueba, para evitar la condición de carrera entre DUT y Testbench, ya que ambos se conducen en diferentes bordes de reloj.
Una pregunta similar que puede ver en ¿Cuál es el mérito de usar el reloj negativo en verilog?