Constantes independientes: puede crearlas de cualquier tipo con cualquier valor válido para ese tipo. Un uso típico es el Principio DRY : nombra una cantidad una vez (declarando una constante) y reutiliza la constante nombrada donde sea que necesites la cantidad. Facilita la comprensión y sobre todo el mantenimiento.
Los atributos VHDL siempre son atributos de algo. Si bien puede declarar sus propios atributos y adjuntarlos a objetos, la mayoría del uso es de atributos predefinidos, cuyos valores se toman directamente del objeto adjunto.
Entonces, si se le entrega una matriz, puede determinar su primer y último índice, su longitud o su rango (el tipo de datos usado para indexarlo), y así sucesivamente sin tener que pasar un montón de otros números. O, peor aún, ¡lee todo para encontrar el primer carácter NUL en él!
Entonces, por ejemplo, el atributo range
da el tipo de la variable de índice, y puedes escribir funciones como
procedure foo (a : array (integer range <>) of integer) is
begin
for i in a'range loop
a(i) := ...
end loop;
end foo;
y se itera correctamente sobre cualquier matriz, se puede pasar como parámetro.
Para más que este boceto, obtenga un buen libro sobre VHDL como la "Guía del diseñador para VHDL" de Ashenden
EDITAR: un uso común de los atributos creados por el usuario es adjuntar nuevos atributos a un objeto. En el ejemplo, el nuevo atributo es un valor booleano, y solo los dos objetos nombrados (señales en este caso) lo llevan.
En este caso, los atributos probablemente están documentados en el manual de la herramienta de síntesis (son específicos de esa herramienta), y la herramienta tratará cualquier señal que tenga ese atributo de una manera especial; en una conjetura, preservar esas señales y mantener su nombre original adjunto, para que sean más fáciles de encontrar en el diseño compilado. Vea también "Chipscope", una herramienta de análisis de lógica incorporada, mencionada en la respuesta de Martin a tu otra pregunta . Espero que Chipscope encuentre estas señales fácilmente.
Esto es importante porque las herramientas de síntesis suelen ser optimizadores agresivos; Si la señal probablemente no se usó o era un duplicado de otra señal, se eliminaría por completo sin el atributo.