Saltar al contenido

¿std_logic o std_ulogic?

Este artículo fue aprobado por expertos así garantizamos la exactitud de esta sección.

Solución:

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 señales no resueltas que necesitan una lógica de 9 valores. (A menudo, usar “bit” es aún más correcto, por ejemplo, en algunas arquitecturas FPGA que no tienen nada como 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 otros usan, sin entender por qué.

Mi historia es esta:

Empecé (alrededor de 1999 IIRC) usando std_ulogic* todo el tiempo, ya que es lo correcto, solo por las razones que usted describe.

Luego tuve que interactuar con un grupo de IP de proveedores generadas por un asistente que tenían std_logics en toda la interfaz. Lo que significó conversiones en las asignaciones de puertos (para el _vector elementos), y me volví perezoso y pasé a usar std_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 los de Modelsim drivers comando hace que sea muy fácil encontrar “quién conduce qué” cuando ocasionalmente necesito…

IIRC recomienda el famoso Manual de Metodología de Reutilización std_logic(_vector), así 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 por usar std_ulogic cuando sea posible.

Sección de Reseñas y Valoraciones

Si haces scroll puedes encontrar las aclaraciones de otros usuarios, tú asimismo tienes el poder insertar el tuyo si te gusta.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *