Hallo Leute, ich habe mal wieder eine Frage, bekomme bei der Implementierung für einen INOUT Signal mit 16 Bits (15 downto 0) immer folgende Warnings: WARNING:Pack:2515 - The LUT-1 inverter "u_CF_CONTROL_TFSM/dat_en_inv1_INV_0" failed to join the OLOGIC comp matched to output buffer "cf_dat_15_IOBUF/OBUFT". This may result in suboptimal timing. The LUT-1 inverter u_CF_CONTROL_TFSM/dat_en_inv1_INV_0 drives multiple loads. Der Fehler tretet genau 16 mal auf, also für jeden Bit des Vektors. Was kann der Fehler denn sein, den ich habe? Das Programm lief vor einer Weile. Nun wollte ich es über den PLB Bus per Software (EDK) bedienen und kann es in XPS nicht implementieren. Würde mich über jede Anregung sehr freuen. MfG Cihan
Hast du die Logik bzw. die Tristate-Steuerung für den bidirektionalen Bus selber beschrieben? Zeig doch mal.
Ich habe folgendes drin: Ausgabe (Output) habe ich so gemacht:
1 | temp_xhdl11 <= datout_buf WHEN dat_en = '1' ELSE "ZZZZZZZZZZZZZZZZ"; |
2 | cf_dat <= temp_xhdl11; |
Eingabe (Input) habe ich so gemacht:
1 | PROCESS (CLK) |
2 | BEGIN
|
3 | IF (CLK'EVENT AND CLK = '1') THEN |
4 | cf_oe_n_del <= cf_oe_n_xhdl4; |
5 | END IF; |
6 | END PROCESS; |
7 | |
8 | PROCESS (CLK, RST) |
9 | BEGIN
|
10 | -- Clock Counter
|
11 | IF (RST = '1') THEN |
12 | datin_latch <= "0000000000000000"; |
13 | ELSIF (CLK'EVENT AND CLK = '1') THEN |
14 | -- IF (dat_en AND config_en) = '0' THEN
|
15 | IF ((NOT cf_oe_n_del AND cf_oe_n_xhdl4) = '1') THEN |
16 | datin_latch(15 downto 8) <= cf_dat( 7 downto 0); |
17 | datin_latch( 7 downto 0) <= cf_dat(15 downto 8); |
18 | END IF; |
19 | -- END IF;
|
20 | END IF; |
21 | END PROCESS; |
der IO ist für die Steuerung einer CF-Speicherkarte. Wie gesagt, dass Design lief ohne den PLB Bus perfekt. Nun spuckt mit der Mapper ebend die 16 Warnings für den cf_dat INOUT raus, sodass ich das Design in XPS nicht implementieren kann, er bricht nämlich den Durchlauf ab, wenn er die Warnings sieht (interpretiert sie vllt. als Error?!) Cihan
Ich habe den Fehler gefunden. Ich wollte es mal direkt mit einem IOBUF oder OBUFT versuchen, wo ich dann sah, dass im Zustand EN = 1 der IO = Z ist. Habe deswegen folgendes gemacht:
1 | temp_xhdl11 <= datout_buf WHEN dat_en = '0' ELSE "ZZZZZZZZZZZZZZZZ"; |
2 | cf_dat <= temp_xhdl11; |
habe ebend die Bedingung geändert, dass wenn nun dat_en = 1 ist der IO auf Z geht. Nun sind die Fehler nicht mehr da. Habe ich im Prinzip nun den IO falsh programmiert und warum kamen die Fehler nicht bei meinem laufenden Programm, der auch eigentlich ohne Fehler lief? Wie gesagt, die Warnings kamen wirklich erst dann, als ich die von mir erstelleten Komponenten mit dem Bus vereinen wollte. Cihan
Ich habe nochmal mein altes Programm angeschaut, und siehe da, das dat_en Signal wird automatisch intern schon invertiert (habe es im FPGA Editor und in der Schematic berachtet). Die Invertierung wird auch im Programm mit dem PLB Bus gemacht, doch hier haute er mir die ganzen Warnings raus, obwohl es von der Schaltung (Schematic) her genau gleich aussah, evtl. ein BUG oder kann sich das jemand erklären? Cihan
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.