Hi everyone,
I am trying to implement a bi-directional data bus inside a Spartan 3 Device using IOBUF.
The code below is a simplified version of what I want to do. This code gives me the same error as my original code which is:
ERROR:Xst:528 - Multi-source in Unit <main> on signal <_n0033>
Sources are:
Output port IOBUF:IO of instance <IOBUF_inst21>
Output port IOBUF:IO of instance <IOBUF_inst31>[/I]
I know that this is because of the IO ports of IOBUF in buf_loop2 and buf_loop3 that are trying to drive the internal bus simultaneously.
-- Code Start ----------------------------------------------------
T <= '0';
T_inv <= not T;
buf_loop1: for i in 0 to 7 generate
begin
IOBUF_inst1 : IOBUF
generic map (
DRIVE => 12,
IOSTANDARD => "DEFAULT",
SLEW => "SLOW")
port map (
O => A(i), -- Buffer output
IO => DIn(i), -- Buffer inout port (connect directly to top-level port)
I => B(i), -- Buffer input
T => T_inv
);
end generate buf_loop1;
buf_loop2: for i in 0 to 7 generate
begin
IOBUF_inst2 : IOBUF
generic map (
DRIVE => 12,
IOSTANDARD => "DEFAULT",
SLEW => "SLOW")
port map (
O => B(i), -- Buffer output
IO => Int(i), -- Buffer inout port (connect directly to top-level port)
I => A(i), -- Buffer input
T => T -- 3-state enable input
);
end generate buf_loop2;
buf_loop3: for i in 0 to 7 generate
begin
IOBUF_inst3 : IOBUF
generic map (
DRIVE => 12,
IOSTANDARD => "DEFAULT",
SLEW => "SLOW")
port map (
O => C(i), -- Buffer output
IO => Int(i), -- Buffer inout port (connect directly to top-level port)
I => D(i), -- Buffer input
T => T_inv -- 3-state enable input
);
end generate buf_loop3;
buf_loop4: for i in 0 to 7 generate
begin
IOBUF_inst4 : IOBUF
generic map (
DRIVE => 12,
IOSTANDARD => "DEFAULT",
SLEW => "SLOW")
port map (
O => D(i), -- Buffer output
IO => Dout(i), -- Buffer inout port (connect directly to top-level port)
I => C(i), -- Buffer input
T => T
);
end generate buf_loop4;
-- Code End ----------------------------------------------------
How do I solve this problem. Maybe resolved types?..
Thanks
Ben
I am trying to implement a bi-directional data bus inside a Spartan 3 Device using IOBUF.
The code below is a simplified version of what I want to do. This code gives me the same error as my original code which is:
ERROR:Xst:528 - Multi-source in Unit <main> on signal <_n0033>
Sources are:
Output port IOBUF:IO of instance <IOBUF_inst21>
Output port IOBUF:IO of instance <IOBUF_inst31>[/I]
I know that this is because of the IO ports of IOBUF in buf_loop2 and buf_loop3 that are trying to drive the internal bus simultaneously.
-- Code Start ----------------------------------------------------
T <= '0';
T_inv <= not T;
buf_loop1: for i in 0 to 7 generate
begin
IOBUF_inst1 : IOBUF
generic map (
DRIVE => 12,
IOSTANDARD => "DEFAULT",
SLEW => "SLOW")
port map (
O => A(i), -- Buffer output
IO => DIn(i), -- Buffer inout port (connect directly to top-level port)
I => B(i), -- Buffer input
T => T_inv
);
end generate buf_loop1;
buf_loop2: for i in 0 to 7 generate
begin
IOBUF_inst2 : IOBUF
generic map (
DRIVE => 12,
IOSTANDARD => "DEFAULT",
SLEW => "SLOW")
port map (
O => B(i), -- Buffer output
IO => Int(i), -- Buffer inout port (connect directly to top-level port)
I => A(i), -- Buffer input
T => T -- 3-state enable input
);
end generate buf_loop2;
buf_loop3: for i in 0 to 7 generate
begin
IOBUF_inst3 : IOBUF
generic map (
DRIVE => 12,
IOSTANDARD => "DEFAULT",
SLEW => "SLOW")
port map (
O => C(i), -- Buffer output
IO => Int(i), -- Buffer inout port (connect directly to top-level port)
I => D(i), -- Buffer input
T => T_inv -- 3-state enable input
);
end generate buf_loop3;
buf_loop4: for i in 0 to 7 generate
begin
IOBUF_inst4 : IOBUF
generic map (
DRIVE => 12,
IOSTANDARD => "DEFAULT",
SLEW => "SLOW")
port map (
O => D(i), -- Buffer output
IO => Dout(i), -- Buffer inout port (connect directly to top-level port)
I => C(i), -- Buffer input
T => T
);
end generate buf_loop4;
-- Code End ----------------------------------------------------
How do I solve this problem. Maybe resolved types?..
Thanks
Ben