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 está resuelta.
Esto me sorprende porque por lo general, estás no describir un bus , por lo que usted no quiere que los conductores múltiples y no es necesario para resolver una señal. La ventaja de std_ulogic
esto sería que el compilador le advierte desde el principio si tiene varios controladores.
Pregunta: ¿es solo una cuestión cultural / histórica, o todavía hay razones técnicas para usar std_logic?
Respuestas:
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 para usar para señales no resueltas que necesitan lógica de 9 valores. (A menudo, usar "bit" es aún 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 se propagan por personas que simplemente repiten el estilo que ven que otros usan, sin entender por qué.
fuente
Mi historia es esta:
Comencé (aproximadamente en 1999 IIRC) usando
std_ulogic*
todo el tiempo, ya que es lo correcto, solo por las razones que usted describe.Luego tuve que conectarme a un grupo de IP de proveedor generadas por asistente que todas tenían en
std_logic
toda la interfaz. Lo que significaba conversiones en las asignaciones de puertos (para los_vector
elementos), y me volví perezoso y pasé a usarstd_logic*
.Sin embargo, parece que cometo muy pocos errores de "doble conductor", así que no me he perdido
std_ulogic
tanto como hubiera pensado. Y eldrivers
comando de Modelsim hace que sea muy fácil encontrar "quién conduce qué" cuando ocasionalmente necesito ...fuente
*vector
partes del puerto todavía necesitan conversionesIIRC recomendó el famoso Manual de Metodología de Reutilización
std_logic(_vector)
, por lo que tal vez los grupos de metodología en empresas, etc., lo difundieron aún más en forma de guías de codificación (obligatorias). Personalmente, +1 por usarstd_ulogic
cuando sea posible.fuente
Sé que es una presentación de diapositivas 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
fuente