Ich mache gerade ein Projekt in VHDL, in dem ich einen Zähler habe, der in 100ms oder in 1000ms aktualisiert werden muss, wenn eine Taste gedrückt wird.Zeitteilung (Periode) Auswahl in vhdl
Beispiel:
If Key3=0 then
c=c+1 (100ms)
elsif key3=1 then
c=c+1 (1000ms)
Ich mag würde wissen, wie es in VHDL zu tun.
Ich glaube, ich sollte einen Prozess (Uhr, Key3) verwenden, aber ich bin mir nicht sicher, wie man den Zähler basierend auf dem Zeitraum erhöhen.
danke im voraus!
Wir haben kürzlich ein Problem mit Vivado in Bezug auf die Erzeugung von Konstanten und Bereichen basierend auf 'Zeit' Typen. Wie Sie oben beschrieben haben, optimiert dies vollständig zu nichts. Und Xilinx bestätigt, dass Objekte vom Typ "time" nicht unterstützt werden. Siehe AR57964 (http://www.xilinx.com/support/answers/57964.html) – PlayDough
@PlayDough der AR, den Sie verknüpft haben, gibt an, dass der Typ in Vivado unterstützt wird, aber schlecht. Als solche wird diese Technik von Xilinx für Vivado-Benutzer "nicht empfohlen" (vielleicht verwenden sie 32-Bit-Arithmetik, wenn andere 64-Bit verwenden) und Synplicity hat andere Probleme. Aber Code auf der höchsten Ebene am klarsten auszudrücken sollte die übliche Praxis sein; davon abweichen, wo die Werkzeugunterstützung nicht ausreicht. –
Fair genug. Die Zeit wird unterstützt - schlecht. Wir beschränken uns jedoch auf die von uns verwendeten Tools, wie Sie betonen. Was wir stattdessen tun, ist etwas wie: 'Konstante Clock_Period: real: = 100.0e-9;' Reale Werte werden gut unterstützt. – PlayDough