Gast
#1839082
Hallo! Gleich vorweg: Ich bin leider erst seit Kurzem in Kontakt mit FPGAs, deshalb kenne ich mich noch nicht gut mit der Bedienung und Anforderungen der Tools aus. Dennoch habe ich von Anfang an eine relativ komplizierte Aufgabe ausgefasst, über die ich schon seit Wochen brüte: Prizipiell muss ich für eine Frequenz von ca 330MHz einen PRNG programmieren, der 32Bit parallel aus dem FPGA ausgibt. Laut Simulation (im Quartus) und Timequest sollte der Chip die Frequenz definitiv schaffen und die Daten schaufeln können. Nach dem 32Bit-PRNG sitzt ein MUX, durch den die Daten weiter zu den Output Pins verfrachtet werden. Als ich das erste Mal die Simulation gestartet habe, ist mir aufgefallen, dass die Datenflanken vollkommen unsyncron sind. Nach längerem Suchen hab ich die Option gefunden, um die "Fast Output Registers" zu aktivieren. Dies hat etwa 28Bit meines Datenwortes syncronisiert, bis auf 4, die nicht bei der steigenden sondern bei der fallenden Flanke des CLK ausgegeben werden (also um 180° verschoben sind, also schätze ich, dass die Output Registers DDR-Typen sind). Kann ich die Delays vielleicht über das SDC-File ausbügeln? Oder kann ich irgendwie den CLK-Eingang des Fast Output Registers ändern (ich versteh noch immer nicht genau, wie man diesen einstellt)? Prinzipiell ist die Frequenz, mit der das Signal generiert wird, nicht konstant (0-300MHz). Deshalb habe ich bedenken, Delays per SDC zu ändern. Was meit ihr? Ich habe ebenfalls versucht, die Daten per SDC-File ohne Output Registers zu syncronisieren: set_output_delay -add_delay -max -clock [get_clocks {parallel_clk}] 2.750 [get_ports {Parallel_data_out*}] set_output_delay -add_delay -min -clock [get_clocks {parallel_clk}] 0.250 [get_ports {Parallel_data_out*}] Dies schafft etwa denselben Effekt wie mit den Fast output Registern, wobei ich jedoch bei allen 32 Leitungen Setup Slack Violations habe (obwohl laut Chip-Planner genau die LUTs neben den Pins verwendet werden -> wieso gibt es da fast 3ns Delay?). Diese Slack Violatons belaufen sich bei fast allen auf -6.8ns (Required Time = .25ns; Clk Delay = 2.5ns, Data Delay = 4.535ns; Wie kommt Quartus auf so wahnsinnig große Delay-werte, wenn Pin und LUT direkt nebeneinander liegen?!). Ich bin echt mit meinem Latein am Ende. Könnt ihr mir vielleicht weiterhelfen? LG Johannes


