Anfänger: VHDL Synthese: Counter

Gast #1309702
Lesenswert?
• ▲
▼
Hallo zusammen,

ich experimentiere erst seit kurzem mit VHDL und habe eine Frage.
Wie wird das Coding unten auf Gatterebene realisiert?
Was mir unklar ist:
Wie wird in der Schaltung sichergestellt, dass Q erst beschrieben wird 
wenn der Adder (oder eine andere Operation) ein gültiges Ergebnis 
ausgibt?
1
process(clock)
2
begin
3
  if (clock'event and clock='1') then
4
    Q <= Q + X;
5
  end if;
6
end process;


Ciao,
Chris
#1309709
Lesenswert?
• ▲
▼
In der Schaltung selbst gar nicht.
Was passiert, ist dass das Synthese-Tool (bzw. genauer die 
Timing-Analyse nach dem Place and Route process) bestimmt, wie lange der 
Addierer braucht und dir genau diese Zeit dann als maximal mögliche 
Frequenz ausgibt mit der das Design laufen darf. Wird die Freqeuenz 
überschritten, passiert genau das, was du beschrieben hast: Q übernimmt 
das Ergebnis, bevor der Addierer fertig ist.
Gast #1309788
Lesenswert?
• ▲
▼
jepp,

die rechte Seite der Gleichung beschreibt eine Logik, die den Ausgang 
der FFs mit deinem (hoffentlich aus FFs kommenden) Term addiert. Das 
wird dann mit der Clock wieder in die FFs geladen.

Und wenn du der Synthese noch sagst, welche Frequenz du mit dem Teil 
erreichen willst (Spezifikation der Clock), dann kriegst du in der 
Summary auch quasi ein PASS/FAIL
Gast #1309974
Lesenswert?
• ▲
▼
Noch ein Beispiel damit ich es noch besser verstehe :-)
1
signal Q: std_logic_vector(7 downto 0);
2

3
process(clock)
4
begin
5
  if (clock'event and clock='1') then
6
    if (write_enabled = '1')
7
      Q <= Input
8
    end if;
9
  end if;
10
end process;

Würde in dieser Schaltung dann einfach die clock Leitung unterbrochen 
wenn write_enabled = '0' ist, sodass beim nächsten Takt nicht 
geschrieben wird?

Ciao
Chris
Gast #1310042
Lesenswert?
• ▲
▼
> Würde in dieser Schaltung dann einfach die clock Leitung unterbrochen
> wenn write_enabled = '0' ist, sodass beim nächsten Takt nicht
> geschrieben wird?

Nicht ganz.

Das Flip-Flop bekommt bzw. hat ein Clock-Enable-Eingang. Ist der 
Enable-Eingang aktive, speichert das Flip-Flop an der nächsten Flanke 
den Wert an seinem Eingang. Wenn nicht, dann nicht.

Hat das Flip-Flop kein Clock-Enable-Eingang, wird einer per Multiplexer 
realisiert. Der Multiplexer hat als Eingang den neuen Wert und den 
momentanen (alten) Flip-Flop-Wert. Der Enable-Eingang steuert den 
Multiplexer, dessen Ausgang auf den Flip-Flop-Eingang geht.
Moderator (Firma: Titel) Persönliche Seite #1310152
Lesenswert?
• ▲
▼
Chris schrieb:
> Noch ein Beispiel damit ich es noch besser verstehe :-)
> :
> Würde in dieser Schaltung dann einfach die clock Leitung unterbrochen
> wenn write_enabled = '0' ist, sodass beim nächsten Takt nicht
> geschrieben wird?
Ausprobieren macht schlau ;-)

Der RTL-Schaltplan sieht aus wie der Screenshot im Anhang.
Verwendet wird bei Xilinx ein D-FlipFlop mit Enable-Eingang.
Angehängte Dateien:

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.