Syncron oder nicht syncron

Gast #1234853
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
Moderator (Firma: Titel) Persönliche Seite
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
Gast
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
Moderator (Firma: Titel) Persönliche Seite
> 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 :-/
Gast
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
Moderator (Firma: Titel) Persönliche Seite
> 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...
Gast
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
Moderator (Firma: Titel) Persönliche Seite
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 
:-/

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.