"=" is the equals function. It is in double quotes because it is one of the VHDL default operators, and "=" is implicity defined for all types in the package the type is decalred in. The fact it has a . infront of it means it is being pull directly from the cpu_types package, and it is being called explitly like a normal function.
There is no actual requirement to do this here, your example would have worked fine, but there are circumstances where it may be needed.
Here is an example I have had. When you include packages, the most local takes precidence. So, consider the following library imports (from VHDL 2008):
Code VHDL - [expand] |
1
2
3
| library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std_unsigned.all; |
Std_logic_vector is defined in std_logic_1164 package, and hence an implicit "=" function is defined for std_logic_vector. But numeric_std_unsigned explicitly defines an "=" function to compare two std_logic_vectors numerically. This will override the default implementation because it is implicit. If std_logic_1164 had an explicit "=" function, you would get a clash when you did this:
and you would get and error explaining that because it doesnt know if you want the std_logic_1164 "=" , or the numeric_std_unsigned "=", you get neither and get an error. But this doesnt happen because the numeric_std_unsigned explicity overrides the implicit one by default.
So my issue arrose when I wanted to compare a std_logic_vector to a meta value:
Code VHDL - [expand] |
1
2
3
4
5
6
7
8
9
| library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std_unsigned.all;
....
if some_slv = "UUUUUUUU" then
-- this will never occur |
Here, because its using the numeric_std_unsigned "=" function, the compare always returns false for meta values. You then need to be explicit about what function to call:
Code VHDL - [expand] |
1
2
3
4
5
6
7
8
9
10
| library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std_unsigned.all;
....
if ieee.std_logic_1164."="(some_slv, "UUUUUUUU") then
-- Or you can do this:
if some_slv ieee.std_logic_1164."=" "UUUUUUUU" then |
- - - Updated - - -
There are quite a few things that come for free in the same region when you declare a type:
All types get equality operators "=", "<", ">" etc
All File types get FILE_OPEN, FILE_CLOSE, ENDFILE procedures
Access Types get a DEALLOCATE procedure.