www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Variable beobachten


Autor: Marek Swierzy (marekswierzy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
ich versuche mich ein wenig an VHDL. Nun meine Probleme.
Ich habe 2 Pinne wenn bei High sind soll ein Counter zurückgesetzt 
werden.
Ist nur X1 high soll ein Counter um eins incrementiert werden.
1.) Ist dieser Quellcode richtig ?
2.) Wie zeige ich mir bei Quartus 2 Variablen an.
------------------------------------------------
LIBRARY ieee ;
USE ieee.std_logic_1164.all ;
use IEEE.std_logic_unsigned.all;

ENTITY versuch_1 IS
PORT ( x1, x2 : IN STD_LOGIC ;
f : OUT STD_LOGIC ) ;

END versuch_1 ;

ARCHITECTURE LogicFunction OF versuch_1 IS
Signal count_max: INTEGER range 0 to 2204;
BEGIN

process (x1, x2)
begin
  if (x1 = '1' and x2 ='1') then
    count_max<=0;

  elsif (x1 = '1' and x2 = '0') then
    count_max<=count_max+1;
  END IF;
end process;

END LogicFunction ;
------------------------------------------------

Danke und Gruß

Marek

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Marek Swierzy

>Ich habe 2 Pinne wenn bei High sind soll ein Counter zurückgesetzt
>werden.
>Ist nur X1 high soll ein Counter um eins incrementiert werden.
>1.) Ist dieser Quellcode richtig ?

Nein, es fehlt der Takt.

2.) Wie zeige ich mir bei Quartus 2 Variablen an.

Keine Ahnung.

process (takt)
begin
  if rising_edge(takt) then
    if (x1 = '1' and x2 ='1') then
      count_max<=0;
    elsif (x1 = '1' and x2 = '0') then
      count_max<=count_max+1;
    END IF;
  end if;
end process;

MFG
Falk

Autor: Marek Swierzy (marekswierzy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Falk,

warum muss da ein Takt rein ?

Danke und Gruß

Marek

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Marek Swierzy

>warum muss da ein Takt rein ?

Ja wie soll der Zähler sonst um eins erhöht werden?
-> Synchrone Schaltungstechnik.

MfG
Falk

Autor: Marek Swierzy (marekswierzy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich dachte dies kommt duch diese Zeile zustande

      count_max<=count_max+1;
Thx

Autor: jm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ohne Takt baust du Kombinatorik, das heißt irgendwelche Drähte mit 
Operationen aber ohne Speicher. Die Zahl im counter muss aber 
gespeichert werden.
Schreibst du nur
count_max <= count_max + 1
ist das gleichbedeutend mit einem kombinatorischen Signal (vorstellbar 
als Draht), der sich selbst um eins erhöht und damit ein feedback 
erzeugen würde. Würdest du etwas schreiben wie
counter <= count_max + 1
ginge das zwar, aber counter wäre konstant.
Also musst du den count_max-Wert speichern und das funktioniert bei 
Hardware taktweise. Ein solcher Speicher, genannt Register, hat einen 
Eingang und einen Ausgang, und du kannst jeden Takt etwas auf den 
Eingang schreiben, was dann im nächsten Takt am Ausgang lesbar ist. Es 
liegt also im ersten Takt 0 am Ausgang und 1 am Eingang, im nächsten 1 
am Ausgang und 2 am Eingang usw. an. Nur so funktioniert sinnvolles 
zählen in Hardware.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.