Plantilla de idioma ISE de Xilinx para máquinas estatales

-1

En Xilinx ISE, si verifica los ejemplos de máquina de estado que se encuentran en "Plantilla de idioma" (VHDL- > Synthesis Constructs- > Coding Example- > State Machines y Verilog- > Synthesis Constructs- > Coding Ejemplos - > Máquinas de estado) observaría que los ejemplos para VHDL se proporcionan en el estilo de "dos procesos" que separa la siguiente lógica de decodificación (o dirección) del estado del proceso de almacenamiento (este es el estilo que practico y sé muchos Los profesionales alientan fuertemente este estilo). Sin embargo, los ejemplos de Verilog son solo un gran bloque "siempre".

Solo tengo curiosidad por saber por qué las plantillas de la máquina de estado Verilog se proporcionan de manera diferente. ¿Alguien tiene alguna idea sobre esta diferencia?

¡Gracias!

    
pregunta Ali

1 respuesta

1

Creo que tiene que ver con quien haya escrito el ejemplo y cuándo se escribió originalmente el ejemplo. Tanto el single como el dos siempre bloquean el trabajo. Para conocer las diferencias en los estilos de codificación de Verilog, sugiero leer este documento de Cliff Cummings. El papel ahora está un poco anticuado, pero los puntos siguen siendo válidos. Experimenta con tu propio sintetizador. Siempre uso los dos bloques always (un decodificador combinacional, una asignación secuencial) como se recomienda en el documento. Me da la mejor área, tiempo y es amigable con ECO con mi conjunto de herramientas.

El estándar IEEE 1364-1995 original, requería bloques combinacionales siempre para indicar explícitamente cada señal en la lista de sensibilidad. Si pierde una señal, el sintetizador seguirá dando el resultado correcto, pero es posible que no coincida con el comportamiento de RTL en la simulación. Para una máquina de máquinas de estado con muchas entradas, administrar la lista de sensibilidad era tedioso. Muchos diseñadores optaron por el enfoque de enunciado de bloque único y asignación única para evitar el riesgo de cometer un error al administrar la lista de sensibilidad. Unos pocos usaron (o escribieron allí) scripts para administrarlos; por ejemplo, el script de Emacs Verilog-Mode .

En IEEE Std 1364-2001, el estándar introdujo @* como una lista de sensibilidad automática. Pero tomó algunos años para que sea compatible con diferentes simuladores, sintetizadores y otras herramientas de verilog. Los ejemplos en su Xilinx ISE probablemente se escribieron antes de que @* fuera compatible con Xilinx y desde entonces nadie ha realizado una actualización de los ejemplos.

    
respondido por el Greg

Lea otras preguntas en las etiquetas