27 votos

¿Std_logic o std_ulogic?

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 normalmente no que describe una autobús , por lo que no desea múltiples controladores y no necesita resolver una señal. La ventaja de std_ulogic sería que el compilador te avisara desde el principio si tienes varios controladores.

Pregunta: ¿se trata sólo de una cuestión cultural o histórica, o sigue habiendo razones técnicas para utilizar std_logic?

18voto

Prateek Puntos 83

Std_logic es un subtipo de std_ulogic y tiene exactamente una propiedad extra: se resuelve si hay múltiples controladores.

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

Básicamente, lo mejor es utilizar el tipo correcto para el trabajo. A menudo, las malas prácticas se propagan porque la gente se limita a repetir como loros el estilo que ven que usan los demás, sin entender por qué.

9voto

Martin Thompson Puntos 6509

Mi historia es esta:

Empecé (en torno a 1999, creo) utilizando std_ulogic* siempre, porque es lo que hay que hacer, precisamente por las razones que describes.

Entonces tuve que interfaz a un montón de asistente generado proveedor IP que todos tenían std_logic s por toda la interfaz. Lo que significaba conversiones en los port-mappings (para el _vector ), me dio pereza y pasé a utilizar elementos std_logic* .

Sin embargo, parece que cometo muy pocos errores de "doble conductor", así que no he echado de menos std_ulogic tanto como hubiera pensado. Y Modelsim's drivers El mando hace que sea muy fácil encontrar "quién conduce qué" cuando de vez en cuando necesito...

4voto

Greg Work Puntos 1786

Recuerdo que el famoso Manual de Metodología de Reutilización recomendaba std_logic(_vector) Así que quizá los grupos de metodología de las empresas, etc., lo difundan más en forma de guías de codificación (obligatorias). Personalmente, +1 por utilizar std_ulogic cuando sea posible.

2voto

Simon Puntos 365

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

http://web.archive.org/web/20151026150828/http://www.cs.auckland.ac.nz/~jmor159/reconfig/ppt/ResolutionFunctions.ppt

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X