std_logic o std_ulogic?

23

Parece que el mundo ha decidido que std_logic (y std_logic_vector ) son la forma predeterminada de representar bits en VHDL. La alternativa sería std_ulogic , que no se resuelve.

Esto me sorprende porque, por lo general, no está describiendo un bus , por lo que no quiere tener múltiples controladores y no necesita resolver una señal. La ventaja de std_ulogic sería que el compilador le avisa desde el principio si tiene varios controladores.

Pregunta: ¿esto es solo una cuestión cultural / histórica, o aún existen razones técnicas para usar std_logic?

    
pregunta Philippe

4 respuestas

15

Std_logic es un subtipo de std_ulogic y tiene exactamente una propiedad adicional: se resuelve si hay varios controladores.

Independientemente de la práctica común, std_ulogic es el tipo correcto a usar para señales no resueltas que necesitan una lógica de 9 valores. (A menudo, el uso de "bit" es incluso más correcto, por ejemplo, en algunas arquitecturas FPGA que no tienen una 'X' o una 'U').

Básicamente, lo mejor que puede hacer es usar el tipo correcto para el trabajo. A menudo, las malas prácticas son propagadas por personas que simplemente repiten el estilo que ven que usan otros, sin entender por qué.

    
respondido por el wjl
8

Mi historia es la siguiente:

Comencé (aproximadamente en 1999 IIRC) usando std_ulogic* todo el tiempo, ya que es lo correcto, solo por las razones que describe.

Luego tuve que interactuar con un montón de IP del proveedor generado por el asistente que todos tenían std_logic s en toda la interfaz. Lo que significaba conversiones en las asignaciones de puertos (para los elementos _vector ), y me volví perezoso y pasé a usar std_logic* .

Sin embargo, parece que cometo muy pocos errores de "doble controlador", por lo que no me he perdido std_ulogic tanto como hubiera pensado. Y el comando drivers de Modelsim hace que sea muy fácil encontrar "quién conduce qué" cuando ocasionalmente necesito ...

    
respondido por el Martin Thompson
4

IIRC el famoso Manual de Metodología de Reutilización recomendó std_logic(_vector) , por lo que tal vez los grupos de metodología en las empresas, etc., lo difundan aún más en forma de guías de codificación (obligatorias). Personalmente, +1 para usar std_ulogic cuando sea posible.

    
respondido por el cmarqu
2

Sé que es una presentación de diapositivas ppt horriblemente coloreada, pero explica la diferencia bastante bien:

enlace

    
respondido por el Simon

Lea otras preguntas en las etiquetas