I have never seen such a thing. What's its purpose, how does it work, how is this called? If this was to convert from one signal type to another I'd rather do it this way:
It was done like this because I assume the local version of q was a slv, while the q in the port map is signed/unsigned. You have to do the conversion on the LHS otherwise it is an illegal assignment.
guess I'd need the help of you guys once more on this topic:
Code VHDL - [expand]
1
2
3
4
5
6
7
8
9
10
11
signal DQ :std_ulogic_vector(7downto0);-- memory simulation model
inst_name : entity_name
Portmap(
E_b => CSN(0),
W_b => WEN,
G_b => OEN,
A =>std_logic_vector(Addr(16downto0)),
std_ulogic_vector(DQ)=>std_logic_vector(DQ (7downto0)));
The component ports are of type std_logic, the signals connected to the instance are of type ulogic.
That works fine for all ports of type IN or OUT, but port DQ is of type INOUT.
So I converted the signal on both sides, once for input once for output.
This compiles fine as long as the signal is 'floating' (not connected anywhere).
As soon as I connect it with a port of another instance I get the error:
I get the following error: "DQ(7)" has multiple drivers but is not a resolved signal.
Because it is an inout, it implies DQ will be driving from multiple places. So here, DQ will need to be connected to a std_logic_vector, not a ulogic, as ulogic is not a resolved type (std_logic is)