Hallo,
ich will testen wie zwei Clocks zueinander aussehen und ob die
ordentlich funktionieren. Zum FPGA geht eine 100 MHz Clock und aus einem
ADC kommen zwei 25 MHz Takte. Und genau die letzteren will ich testen.
Also betreibe ich zwei Schieberegister im FPGA die 64 Bit lang sind und
schiebe dort mit 100 MHz die 1 oder 0 der beiden 25 MHz Clocks hinein.
Wenn das dann gemacht wurde soll das über einen UART zum PC geschickt
werden.
So, das ist alles echt wenig Code, der UART ist getestet und
funktioniert in vielen weiteren Projekten. In diesem Projekt läuft die
Simulation problemlos durch. Aber die Synthese läuft ewig und frisst
konstant neuen RAM bis der dann voll ist. Dann stürtzt Vivado und leider
auch Windows 10 ab.
Code:
Ich verwende Vivado 2018.2 und hatte bisher noch nie so ein Verhalten.
Vielleicht habe ich auch einen krassen Fehler. Zuerst hatte ich ein
deutlich längeres Schieberegister, aber jetzt mit 64 Bit sollte das
locker in den Spartan passen und auch zu routen sein.
Gustl B. schrieb:> signal CLK_A_SR: std_logic_vector(63 downto 0):=(others => '0');> signal CLK_B_SR: std_logic_vector(63 downto 0):=(others => '0');
Nur ne Kleinigkeit, aber nimm mal den defaultwert für die Shiftregs
raus. Und lass mal das ganze ohne timingconstraints laufen resp. nicht
"timing driven" -einfach um mal zu testen ob es am speed klemmt.
Nun, die Defaults sollten nichts machen, das sind nur ein paar Bits die
im Bitstream gesetzt werden. Und Constraints habe ich keine. Ich habe
nur mitgeteilt, dass die Clock einen Takt von 100 MHz hat. Oh und bei
den ADC Clocks habe ich mitgeteilt, dass das 25 MHz sind. Das nehme ich
jetzt mal raus und mache das zu normalen IOs.
Edit:
Hat nichts gebracht.
Vielleicht sollte ich mal ein älteres Vivado testen ... aber die
unterstützen den Spartan7 nicht.
Gustl B. schrieb:> UART_byte_snd <= CLK_B_SR((7-send_counter_B)*8+7 downto> (7-send_counter_B)*8);
Hm, hat ein so beschriebene Byte multiplexer schon mal funktioniert?
Ich wurde das auskodieren, statt mit "dynamischen" Index beschreiben.
Also im prozess in etwa
Ja, sowas habe ich schon öfter verwendet, aber noch nicht bei einem
Schieberegister. Aber stimmt, ich könnte das mal hinschreiben.
Edit:
Tatsache, das hat geholfen. Warum auch immer. Vielen Dank!
Gustl B. schrieb:> Ja, sowas habe ich schon öfter verwendet, aber noch nicht bei einem> Schieberegister. Aber stimmt, ich könnte das mal hinschreiben.>> Edit:> Tatsache, das hat geholfen. Warum auch immer.
Das freut, vielleicht liegt es ja daran das das Shiftregister hier nicht
(nur) als Shift register benutzt wird.
Bei einem klassischen Shift-register und bei den Shiftregister-Makros
die Xilinx benutzt um FF zu sparen ist nur der Datenausgang des letzten
FF erreichbar, für den Muxer braucht es aber auch die Datenleitungen
zwischen den einzelnen Registern.
https://www.xilinx.com/support/documentation/user_guides/ug474_7Series_CLB.pdf
S.35
Ist halt so etwa wie der Unterschied zwischen FIFO und RAM. Es ist
natürlich trotzdem unschön das sich Xilinx verschluckt und keine Warning
ausspuckt. Vielleicht läuft der Code ohne automatische Extraktion der
Shiftregister durch Vivado:
https://www.xilinx.com/support/answers/53956.html
läuft es jetzt ganz normal durch. Ich hatte so eine Beschreibung bisher
tatsächlich nicht mit Vivado benutzt, aber mehrmals in ISE Projekten und
da ging das auch ohne Basteleien.
Das Absturzverhalten bei Vivado 2018.2 habe ich auch. Mitten in der
Synthese ist manchmal Ende, teilweise auch schon beim Anlegen des
Projektes oder gar beim Laden des Programmes.
Beitrag "Vivado 2018.2 Projekte anlegen mislingt"
Da würde ich mir wünschen, dass Xilinx mehr Details zu neuen Versionen
rausgibt. Bei 2018.3 steht nur da, dass es neueere FPGAs unterstützt,
aber nicht, ob Bugs behoben wurden.
Xilinx macht mit Vivado new-Feature releases (.1 und .3 Version) und
bugfix releases (.2 und .4 Versionen), also macht es Sinn nur .2/.4
Versionen zu verwenden, wenn man nicht die neuen Features benötigt
Oh man ... das ist ja noch schlimmer als Patchdays. Wenn ein Bug da ist,
dann will ich den schnell gefixt haben. Und dann ist mir egal ob die
nächste Nummer gerade oder ungerade ist, da hat der Patch drinnen zu
sein.
Gustl B. schrieb:> Und dann ist mir egal ob die nächste Nummer gerade oder> ungerade ist, da hat der Patch drinnen zu sein.
Isser ja auch. Nur gibt's eben zusätzlichen Bugs dazu. :-)
Gustl B. schrieb:> Aber die Synthese läuft ewig und frisst konstant neuen RAM bis der dann> voll ist.
Hört sich an als wäre die Synthese nun politisch geworden.
Gustl B. schrieb:> Signalnamen korrekt gendern
Pass mal auf, wenn erst die Gleichstellungsbeauftragte kommt und dich
rund macht, weil die wichtigen Funktionen im Code ausschließlich mit
männlichen Namen belegt sind, während weibliche Funktionen nur
vorkommen, wenn sie negativ besetzt sind, wie bei der Subtraktion.
Dann wird sicher auch sofort wieder bemängelt, dass Zählerinnen bei
gleicher Frequenz doppelt so viele Bits schalten müssen, wie ihre
männlichen Kollegen, um überhaupt wahrgenommen zu werden und nach wie
vor trotz gleichem Ergebnis immer noch durchschnittlich 18% weniger
Strom bekommen.
>Dann stürzt Vivado und leider auch Windows 10 ab.
Kannst du einen Tracker installieren, der den Absturz protokolliert? Nur
so kann man dem beikommen.
Ist ja schon gelöst. Hab den Code umgeschrieben.
Tja das mit dem Gendern ... heutzutage glauben wirklich Einige dadurch
würde etwas besser. Ja, es gibt Ungerechtigkeiten, aber die sollte man
anders lösen. Und wieso überhaupt statt männlich weiblich? Wieso nicht
neutral? Das Baum, das Blume, fertig.
In Niederbayern sagt man statt Mädchen übrigens Mescha. Und zwar der
Mescha.
Bevor uns die Römer die beiden bestimten Artikel gebracht haben, hatten
wir ja auch nur einen. Da de heutigen deutschsprachigen Regionen aber
nur teilweise romanisiert wurden, überlebte der unbestimmte Artikel. Am
Ende waren es dann drei. Die Engländer, die sich die Sprache von den
primitiven Germanen abgekupfert haben, haben nur einen.
Germane schrieb:> Bevor uns die Römer die beiden bestimten Artikel gebracht haben,> hatten wir ja auch nur einen.
Latein hat drei grammatische Geschlechter und die Existenz für
grammatische Geschlechter überhaupt lässt sich bis ins indogermanische
zurückführen. Vermutlich als Trennung zwischen "belebt/unbelebt".
Rückblickend der größte Fehler war, die Dinger "Geschlechter" zu nennen.
Also als Beschreibung für etwas, was hauptsächlich in einer von zwei
Varianten vorkommt und dummerweise auch noch ein Biologismus ist.
Die skandinavischen Sprachen haben zwei Artikel, und zwar
"nicht-neutral" und "neutral". Wäre doch auch mal was...?
Der Windows-Absturz ist aber nur scheinbar, oder? Eine Applikation kann
eigentlich nur das System durch Speicherbedarf verlangsamen, es müsste
dann viel mehr auf der "Platte" ein- und ausgelagert werden. Kommt man
noch in den Task-Manager? Oder gibt es einen Blue-Screen? Treibermäßig
etc. sollte doch beim Synthetisieren nichts weiter passieren (können).