Hi guys,
It's been ages since I haven't posted anything here...
Well, I have a problem trying to build a design:
- 311 MHz LVDS clock to IBUFGDS
- to DCM
- generates CLK0 to BUFG (rxclk0_311a_ig)
- generates CLK180 to BUFG (rxclk180_311a_ig)
easy so far...
Data comes in as an LVDS differential nibble (or nybble :O) apologies from my Spanish-English), I am supposed to Double Data Rate the data...
I have tried instantiating the whole thing:
i_rxdata_a0: IBUFDS_LVDS_25 port map ( I => rxdata_a(0), IB => rxdata_a(1), O => rxdata_a_diff(0) );
i_rxdata_a1: IBUFDS_LVDS_25 port map ( I => rxdata_a(2), IB => rxdata_a(3), O => rxdata_a_diff(1) );
i_rxdata_a2: IBUFDS_LVDS_25 port map ( I => rxdata_a(4), IB => rxdata_a(5), O => rxdata_a_diff(2) );
i_rxdata_a3: IBUFDS_LVDS_25 port map ( I => rxdata_a(6), IB => rxdata_a(7), O => rxdata_a_diff(3) );
G_1: for i in rxdata_a_diff'range generate i_rxdata_a: IFDDRRSE port map ( Q0 => rxdata_a0(i), Q1 => rxdata_a1(i), C0 => rxclk0_311a_ig, C1 => rxclk180_311a_ig, CE => '1', D => rxdata_a_diff(i), R => areset, S => '0' ); end generate G_1;
Fair enough! I synthesize it with Precision and looks all right...
Then I use ISE to build it and during the translate process I get:
ERROR:NgdBuild:455 - logical net 'rxdata_a_diff(0)' has multiple drivers. The possible drivers causing this are pin O on block i_rxdata_a0 with type IBUFDS, pin PAD on block rxdata_a_diff(0) with type PAD
and the same for the 3 remaining bits...
It seems to thing that the 'rx_data_a_diff' is a block with PADs (?), I have try to remove PAD insertion in the whole design and still fails...
Any ideas in how to use DDR with differntial inputs?
Regards,