Pregunta sobre la lista de sensibilidad en VHDL

0

Tengo una pregunta simple sobre la lista de sensibilidad. Lo leí en algunos libros. Dijo que la lista de sensibilidad solo es importante para la simulación. No entiendo muy bien Eso significa que, si elimino la lista de sensibilidad, no importará para la emulación en un FPGA real. Si elimino la lista de sensibilidad, ¿cómo sabe el FPGA cuando se activa un proceso?

    
pregunta S. Li

3 respuestas

1

Por lo general, el simulador se preocupa por la lista de sensibilidad. Pero el sintetizador no lo hace. El propósito de la lista de sensibilidad es que el simulador sepa que un proceso solo cambiará sus salidas si cambia una de las señales (A, B, C). Eso permite que el simulador funcione más eficientemente. Sin embargo, el sintetizador generalmente no mira la lista de sensibilidad; solo mira el cuerpo del proceso.

Si simula un circuito, pero deja señales importantes fuera de la lista de sensibilidad, a veces el simulador le dará las respuestas incorrectas. Eso significa que su FPGA o ASIC final se comportará de manera diferente al simulador.

Si coloca señales adicionales en la lista de sensibilidad, el simulador le dará las respuestas correctas, pero se ejecutará más lentamente.

Por lo tanto, lo único de lo que es la lista de sensibilidad es permitir que el simulador funcione más rápido. Es una sugerencia para el simulador, por lo que puede funcionar de manera más eficiente. Pero el simulador y el sintetizador pueden ignorar la lista de sensibilidad, ya que es solo una sugerencia.

    
respondido por el Piquan
0

Tenga en cuenta que el "proceso" no existe realmente en el FPGA. El process es simplemente una descripción abstracta del comportamiento de una parte del hardware. Las herramientas de síntesis crean ese hardware en función del comportamiento especificado en el código fuente, incluidos los bloques process . El hardware real hará lo que hace continuamente .

En VHDL, todo lo que debe ser controlado por un borde en una señal (por ejemplo, un reloj) debe especificarse explícitamente usando los calificadores 'event en señales como condiciones dentro de un process (posiblemente escondido dentro de una función como% código%). Esto es completamente independiente de la lista de sensibilidad del proceso en sí, que de hecho solo se utiliza para activar la evaluación del proceso en un simulador.

Tenga en cuenta que esto es muy diferente de la lista de sensibilidad asociada con un bloque Verilog rising_edge() , que es una combinación de los dos conceptos que VHDL mantiene separados.

    
respondido por el Dave Tweed
0

A veces, la lista de sensibilidad solo es importante para la simulación, si pierde una señal en la lista de sensibilidad puede obtener la respuesta de simulación incorrecta. Pero la función FPGA real funcionará correctamente si su lógica es correcta.

Puedes llamarlo 'pre-sim y post-sim inconsistent'.

Lo realmente asustado es que tu pre-sim está en lo correcto, pero tu post-sim está mal. Eso hará que tu función FPGA sea incorrecta.

    
respondido por el Liang He

Lea otras preguntas en las etiquetas