Hallo, ich schreibe derzeit an einen PCIe Hostcontroller auf einer PCIe Karte mit einen Virtex4FX100 Nun habe ich das Problem, das ich ja die zwei eingaenge von der Lane 0 (ich moechte erstmal nur 1x das ganze haben) in eine LVDS Primitive reinstopfen muss und dann den ausgang abgreifen muss. verstanden hab ich das ja, aber irgendwie bekomm ich bei mir noch fehler. Den Code hab ich leider jetzt nicht hier, wird aber noch nachgereicht. Wäre schön, wenn man das mal erklären koennte wie das funktioniert.
so also hier der Code im anhang dazu grob gesagt will ich zur zeit erstmal folgendes hinbekommen: ich will mit jeden mhertz ein bit vom PCIe Bus abgreifen und das an den 10 bit vector ranhaengen. wenn ich 10 bits bekommen habe dann leg 8 bits davon auf die LEDS und gut. Das Problem ist: Ich bekomme folgenden Fehler beim mappen mit ISE 9.2i INTERNAL_ERROR:Pack:pkibamendmaker.c:272:1.37 - Expected a valid output signal for block IBUFDS_inst_ML_IDELAY. INTERNAL_ERROR:Pack:pkibamendmaker.c:1421:1.37 - Expected a valid output signal for bel block IBUFDS_inst_ML_IDELAY. ERROR:PhysDesignRules:1083 - Dangling pins on block:<incomingbits<0>/IBUFDS_inst_ML_IDELAY>:<ILOGIC_DELAYCHAIN>. The input D and output OUT pins are always required. ERROR:Pack:1642 - Errors in physical DRC. den fehler bekomme ich nicht, wenn ich die Zeile leds <= incomingbits (7 downto 0) when countincoming = "1010" else "00000000"; in leds <= incomingbits (7 downto 0) when countincoming = "1010" else "ZZZZZZZZ"; abändere das versteh ich irgendwie nicht.
Bevor ichs vergesse: das UCF File sieht so aus: NET "CLK100" LOC = "AD21" ; NET "leds[3]" LOC = "AB8"; # Bank 12 NET "leds[2]" LOC = "AC7"; # Bank 12 NET "leds[1]" LOC = "AL5"; # Bank 12 NET "leds[0]" LOC = "AM5"; # Bank 12 NET "leds[5]" LOC = "AE3"; # Bank 12 NET "leds[4]" LOC = "AE4"; # Bank 12 NET "leds[6]" LOC = "AK3"; # Bank 12 NET "leds[7]" LOC = "AJ4"; # Bank 12 NET "pcie_rx0_n" IOSTANDARD = "LVDS_25"; NET "pcie_rx0_p" IOSTANDARD = "LVDS_25"; NET "pcie_rx0_p" IOBDelay = IBUF; NET "pcie_rx0_n" IOBDelay = IBUF; NET "pcie_rx0_p" LOC = BANK6; NET "pcie_rx0_n" LOC = BANK6;
Du hast die LVDS IBUFDS Komponente nicht eingebunden. component ibufds_lvds_25 port(i, iB: in std_logic; o: out std_logic); end component; lvds_data : ibufds_lvds_25 port map (i => pcie_rx0_p,iB => pcie_rx0_n, o => tp); Danach solltest du im UCF File die IO Beschreibung rausnehmen. NET "CLK100" LOC = "AD21"; NET "leds[3]" LOC = "AB8"; # Bank 12 NET "leds[2]" LOC = "AC7"; # Bank 12 NET "leds[1]" LOC = "AL5"; # Bank 12 NET "leds[0]" LOC = "AM5"; # Bank 12 NET "leds[5]" LOC = "AE3"; # Bank 12 NET "leds[4]" LOC = "AE4"; # Bank 12 NET "leds[6]" LOC = "AK3"; # Bank 12 NET "leds[7]" LOC = "AJ4"; # Bank 12 NET "pcie_rx0_p" LOC = "PIN_NUMMER?"; NET "pcie_rx0_n" LOC = "PIN_NUMMER?"; Gruß Artur
Hm OK :-) das funktioniert erstmal so grob. Danke dafür :-) Wenn ich allerdings die direkten PINs für die eingänge angebe: NET "pcie_rx0_p" LOC = "AP18"; NET "pcie_rx0_n" LOC = "AP17"; bekomme ich fehlermeldungen der Art: ERROR:Pack:1107 - Unable to combine the following symbols into a single IOB component: PAD symbol "pcie_rx0_n" (Pad Signal = pcie_rx0_n) SlaveBuffer symbol "lvds_data/SLAVEBUF.DIFFIN" (Output Signal = lvds_data/SLAVEBUF.DIFFIN) Each of the following constraints specifies an illegal physical site for a component of type IOB: Symbol "pcie_rx0_n" (LOC=AP17 [Physical Site Type = IPAD]) Wenn ich allerdings schreibe (wie es auch der Constrainteditor von ISE macht): NET "pcie_rx0_p" LOC = BANK6; NET "pcie_rx0_n" LOC = BANK6; mapt ers. Nu versteh ich nich wieso er nicht die richtigen PINS nimmt, sondern die gesamte Bank angegeben werden muss. (oder eben auch nicht wenn ich da was falsch gemacht habe)
Hast du auf der gleichen Bank irgendwelche Signale, die mit einer anderen Spannung getrieben werden?
Nein, meines wissens nicht, ich werd aber morgen mal schauen ob da nochwas liegt, was ne andere spannung haben moechte (hab heute leider keine zeit mehr dazu).
Hm also ich hab nochmal nachgeschaut, und bemerkt das die Bank6 nichts mit meinen PCIe zu tun hat. Wie ich darauf kam, hab ich auch keine Ahnung. Auf alle Fälle: die PINS AP18 und AP17 stimmen. Und nun frag ich mich wo bei mir der Fehler liegt. weil ich kann ja die 2 leitungen nur an eine IBUFDS_LVDS_25 Primitive anbinden. Oder geht das auch anders?
Hmm komisch, aber die Fehlermeldung sagt es doch schon: ERROR:Pack:1107 - Unable to combine the following symbols into a single IOB Sieht so aus, als wenn die Primitive ignoriert wird.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.