Hallo, Ich bin absoluter Neuling im VHDL und würde gern was wissen: process (Enable, Data) BEGIN if rising_edge(Enable) then if Data = '0' then Aktiv1 <= '0'; elsif (Data = '1') then Aktiv1 <= '1'; end if; end if; end process; Bei diesem FlipFlop wird die auf die steigende Flanke vom Enable geschalten. Zählt das nur wenn ich "Data" auf '0' geschalten wird oder auch wenn dieser auf '1' geschalten wird. Ich möchte gern das immer bei steigender Flanke die '0' oder '1' geschalten wird. Vielen Dank Detlef
Vorab: das heißt synchron (von Chronos, der Gott der Zeit) Ok, zur Sache. Schöner formatiert sieht man das besser:
1 | process (Enable, Data) BEGIN -- Data unnötig |
2 | if rising_edge(Enable) then |
3 | if (Data = '0') then |
4 | Aktiv1 <= '0'; |
5 | elsif (Data = '1') then |
6 | Aktiv1 <= '1'; |
7 | end if; |
8 | end if; |
9 | end process; |
Das könntest du auch so schreiben:
1 | process (Enable) begin |
2 | if rising_edge(Enable) then |
3 | Aktiv1 <= Data; |
4 | end if; |
5 | end process; |
Erkennst du jetzt, was du machst? ;-) Ich habe ein wenig Bauchweh, wenn der Takt nicht CLK heißt. Denn dann könnte es gut sein, dass dieser Teil der Schaltung synchron zu Enable ist. Aber zum Rest der Schaltung ist das garantiert asynchron :-o
Hi, Also ich möchte zu einem Output Enable Takt bei steigender Flanke eine hohe Adressleitung auf 0 oder 1 schalten. Das muss aber immer erst bei steigender Flanke passieren damit der Prozessor nicht die falschen Daten bekommt wenn er sie übernimmt. Viele Grüße Detlef
> zu einem Output Enable Takt bei steigender Flanke eine > hohe Adressleitung auf 0 oder 1 schalten. Dann schalte die hohe Adressleitung besser dort, wo das Enable-Signal erzeugt wird. > Das muss aber immer erst bei steigender Flanke passieren damit der > Prozessor nicht die falschen Daten bekommt wenn er sie übernimmt. Ich verstehe das nicht ganz, hört sich aber ein wenig nach Murks und Gebastel an :-/
Moin, Ob Murks hin oder her, ich mochte einfach nur 2 Datenstände in einem Steuergerät schalten. Ich möchte halt das bei Umschalten der Datensätze nicht wärend der OE Low Phase die umschalten. Gruß Detlef
> Ich möchte halt das bei Umschalten der Datensätze nicht wärend der OE > Low Phase die umschalten. ... die Adressen umschalten? Worauf wird das Ganze implementiert (CPLD, FPGA)? Was machst du sonst noch, wo werden die Adressen generieirt? Warum hast du Bedenken, dass sich die Adressen umschalten könnten? Wie gesagt: Im Normalfall ist es so, dass du das System unter Kontrolle hast. Du wirst sehr seltsame Fehlerbilder beobachten können, wenn du aus einem Steuersignal einen Takt generierst. Z.B. änderst du irgendwo anders was, der Placer schiebt auf dem FPGA ein paar Slices hin&her, und du hast ein anderes Timing auf den Adressleitungen...
Hallo, Stell Dir einfach vor, ein Steuergerät läuft und läuft und läuft und macht ganz normal seine Arbeit. Nun möchte ich mit einen doppelt so großen Flash den originalen Datenstand überarbeiten und gegebenenfalls aktivieren. Verbaut ist ein 29F200 und mit einen 29F400 kann ich also 2 Datenstände speichern und durch anlegen einer '1' an der höchten Adressleitung den Datenstand abrufen. Nun möchte ich aber nicht einfach einen Schalter für die 5 Volt zum Anlegen an der höchsten Adressleitung nehmen sondern einen kleinen CPLD mit einen FlipFlop der bei Steigender Flanke von OE die '1' oder die '0' an die höchste Adressleitung ausgibt, damit es nicht passiert das in der Low Phase umgeschalten wird. Gruß Detlef
Dazu brauchst du kein CPLD ... Da reicht ein Latch aus, das nur bei inaktiven CS und OE und WR die obere Adressleitung übernehmen kann. Was dir allerdings bleibt, ist dass du mitten im Lesen eines Daten-Blocks umschalten kannst. Und so einen Teil der Daten aus dem "unteren" und einen Teil aus dem "oberen" Adressbereich zusammenmischst :-/
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.