B
Benjamin Couillard
Guest
Hi, I've got a question for you guys.
Let's say I've got 2 blocks that can drive one bus (but there could be
more).
Block1 : Block
generic map (Address => x"000")
port map (CLK => CLK,
ADDR => ADDR,
BUS_STB => BUS_STB,
RD_WR_N => RD_WR_N,
DATA_OUT => BUS_DATA,
....);
Block2 : Block
generic map (Address => x"004")
port map (CLK => CLK,
ADDR => ADDR,
BUS_STB => BUS_STB,
RD_WR_N => RD_WR_N,
DATA_OUT => BUS_DATA,
......);
Let's say that when the address is not 0, DATA_OUT of block1 will be
high-Z and when the addres is not 4 Data_out of block 2 will be high-
Z. Will ISE synthesis engine be smart enough to realize there is no
bus contention? Basically, will ISE infer muxes from that code? I
realize that I could use a switch case, however I want a more scalable
solution where I don't need to have an ugly 200-line switch case.
I looked a Jonathan Bromley's solution too, it's very clever and it
looks like a good solution, however I'd like to know your opinion on
this method first. The reason, why I like the solution above is that
the address is specified when we instantiate the block.
Best regards.
Let's say I've got 2 blocks that can drive one bus (but there could be
more).
Block1 : Block
generic map (Address => x"000")
port map (CLK => CLK,
ADDR => ADDR,
BUS_STB => BUS_STB,
RD_WR_N => RD_WR_N,
DATA_OUT => BUS_DATA,
....);
Block2 : Block
generic map (Address => x"004")
port map (CLK => CLK,
ADDR => ADDR,
BUS_STB => BUS_STB,
RD_WR_N => RD_WR_N,
DATA_OUT => BUS_DATA,
......);
Let's say that when the address is not 0, DATA_OUT of block1 will be
high-Z and when the addres is not 4 Data_out of block 2 will be high-
Z. Will ISE synthesis engine be smart enough to realize there is no
bus contention? Basically, will ISE infer muxes from that code? I
realize that I could use a switch case, however I want a more scalable
solution where I don't need to have an ugly 200-line switch case.
I looked a Jonathan Bromley's solution too, it's very clever and it
looks like a good solution, however I'd like to know your opinion on
this method first. The reason, why I like the solution above is that
the address is specified when we instantiate the block.
Best regards.