mikrocontroller.net

Forum: FPGA, VHDL & Co. Verständnissproblem VHDL


Autor: Michael S. (fendt939)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ich bin gerade dabei VHDL zu lernen.

dabei habe ich noch einbischen probleme!

wollte mal fragen, ob ihr mir hier helfen könnt und zwar:
Frage 1:

Ich blicke das mit der Typkonvertierung nicht:
z.b. ich habe ein Bitvektor 100001011 und d=3 (integer) gegeben

was kommt hier bei dem code raus?
entity S is
generic(n:integer; d:integer);
port (x:in Bitvecotr(n-1 downto 0);
      y: out integer);
end S;

architecture behavior of S is
function f(x:Bit_vector; d:integer) return integer is
variable z: integer range 0 to 2**d-1;
variable y: integer;
constant n: integer :=x'length;
begin
y:=0;
for i in o to n/d-1 loop
    z:=CONV_interger (x((i+1)*d-1 downto i*d));
    y:=y+Z;
end loop
return y;
end f;
begin y<=f(x,d);
end behavior;

und wieso deklariert der verfasser y zweimal in der function und itomatn 
der entity??

Frage 2:

Automaten bei Automaten verstehe ich nur Bahnhof!
Für was sind die übehaupt wie mache ich so ein Automat,???

Frage 3:

Gibt es prinzipiell ein Tipp oder Gutes vorgehen, wenn mann ein VHDL 
code in ein Schaltbild mit Logik bausteinen umzeichnen will wie z.b.

das aus frage 1))


bitte helft mir ich habe in 2 wochen klausur und habe noch nicht so den 
durchblick wie ich haben sollte danke!!

gruss michael

Autor: andz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael S. schrieb:

> Frage 1:
> und wieso deklariert der verfasser y zweimal in der function und itomatn
> der entity??

Weil die Variable y nur in der Funktion gilt, das y der entity wird hier 
zugewiesen: (könnten prinzipiell auch komplett unterschiedlich heißen, 
haben nichts miteinander zu tun)
begin y<=f(x,d);

> Frage 2:
>
> Automaten bei Automaten verstehe ich nur Bahnhof!
> Für was sind die übehaupt wie mache ich so ein Automat,???

Viel spaß in der Prüfung wenn des noch ned weist ;)

http://de.wikipedia.org/wiki/Automat_%28Informatik%29

Tipp: überleg dir mal wie der endliche Automat eines CD-Rom Laufwerks (4 
Zustände) aussieht, so hab ichs verstanden damals.

> Frage 3:
>
> Gibt es prinzipiell ein Tipp oder Gutes vorgehen, wenn mann ein VHDL
> code in ein Schaltbild mit Logik bausteinen umzeichnen will wie z.b.
>
> das aus frage 1))

Prinzipell top-down, also erst logische blöcke bilden, danach in die 
Tiefe gehn. üb das erstmal an einfacheren Logikschaltungen und arbeite 
dich langsam hoch, bis aus Beispiel 1 n Blockschaltbild zeichnen 
kannst...

Viel erfolg bei der Prüfung

Gruß

Andz

Autor: D. I. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael S. schrieb:

> bitte helft mir ich habe in 2 wochen klausur und habe noch nicht so den
> durchblick wie ich haben sollte danke!!
>

Feuer Frei! sage ich da nur. Popcorn hol

Falk bitte übernehmen sie.

Autor: andz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also beim CD-Rom laufwerk mein ich natürlich die Schublade :) ...also 
die 4 Zustände "Geschlossen", "Öffnend", "Offen", 
"Schließend"....Eingänge sind Taster, Endschalter offen, Endschalter 
geschlossen...

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Deine Komillitonen sollten das eigentlich wissen. Warum fragst du bei 
solchen Problemen nicht auch mal deinen Professor, der wird schließlich 
dafür bezahlt dir diese Fragen zu beantworten.

Ich versuch's mal, aber ich habe Digitaltechnik noch nicht gelernt und 
gebe keine Garantie.

1) Die beiden y haben nichts miteinander zu tun.

2) Ein Automat besteht aus sequentiellen (Flipflop) und logischen 
(Gatter --> Zustandsübergangslogik und Ausgangslogik) Teilen. Dabei 
wechselt der Automat bei jedem Taktsignal seinen Zustand (der 
Folgezustand kann gleich dem aktuellen Zustand sein). Auch in VHDL 
werden eigenständige Teile für Logik und Sequenz verwendet. Wenn du 
keinen Plan hast, was Automaten sind, dann hast du ziemlich viel Zeit 
der Vorlesung verpennt.

3) Das würde mich als Erstsemestler auch interessieren, aber ich denke, 
da ist, sofern es wirklich notwendig ist das umzuwandeln, schlichtes 
logisches Denken angesagt. VHDL wurde doch auch erfunden, um nicht 
rießige Schaltpläne aus Gattern und Flipflops zeichnen zu müssen? Warum 
also wieder in einen Schaltplan konvertieren?

Autor: Michael S. (fendt939)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Daniel schrieb:
> Warum
>
> also wieder in einen Schaltplan konvertieren?


weil das mein prof halt leider will:-(

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael S. schrieb:
> Daniel schrieb:
>> Warum
>>
>> also wieder in einen Schaltplan konvertieren?
>
>
> weil das mein prof halt leider will:-(

Naja, dann müsstet ihr ja entweder einen kleinen Leitfaden dazu 
aufgeschrieben haben, oder es müsste mit einer normalen Portion 
Hirnschmalz bewältigbar sein.

Bist du da nicht etwas spät dran mit solchen Problemen? Bei mir fangen 
am Freitag die Prüfungen an... Wenn ich jetzt noch keinen blassen Dunst 
hätte, was Automaten sind (und darum und dessen Grundlagen gings 
eigentlich von Anfang an bis es mit VHDL angefangen hat), dann würde ich 
mir echt ernsthaft sorgen.

Ich meine, du solltest ja auch Zustandsdiagramme erstellen können und 
Boolsche Algebra zur Vereinfachung der Zustandsübergangslogik 
beherrschen. Lauter so nette Sachen, die eigentlich recht einfach sind. 
Aber man muss sie verstanden haben...

Ich weiß gar nicht, warum alle immer Probleme mit DT haben. Zumal 
Digitaltechnik ohnehin das spaßigste Fach im ersten Semester ist. Ich 
habe schon vorher µCs programmiert und habe schon meine ersten Schritte 
mit DT gemacht. Trotzdem und vielleicht auch gerade deswegen waren die 
Vorlesungen echt interessant und lehrreich.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael S. schrieb:
> was kommt hier bei dem code raus?
> for i in o to n/d-1 loop                         -- ein kleines Ooooh?
>     z:=CONV_interger (x((i+1)*d-1 downto i*d));  -- interger?
Ein (paar) Syntax-Fehler.

> und wieso deklariert der verfasser y zweimal in der function und itomatn
> der entity??
Um dich zu verwirren?

> Frage 2:
> Automaten bei Automaten verstehe ich nur Bahnhof!
> Für was sind die übehaupt
> wie mache ich so ein Automat,???
Du brauchst Speichergleider, die den aktuellen Zustand festhalten
und eine Logik, die bei Bedarf in einen anderen Zustand weiterschaltet.

Aber wenn du das bisher einfach verdrängt hast...  :-o

> Frage 3:
> Gibt es prinzipiell ein Tipp oder Gutes vorgehen, wenn mann ein VHDL
> code in ein Schaltbild mit Logik bausteinen umzeichnen will wie z.b.
> das aus frage 1))
Du nmußt es machen, wie der Synthesizer: ein Muster erkennen...
Und dafür passende Schaltungsabschnitte bereithalten.
Das im Beispiel 1 sind einfach n/d Stück d Bit breite Addierer, die 
hintereinander geschaltet sind. Vermutlich wird der Synthesizer hier 
sogar einen Addierer weniger einsetzen, denn so wie es hier beschrieben 
ist, muß der erste Addierer den Wert 0 aufaddieren, und das ist unnötig.
Man könnte diese Funktion auch so schreiben:
function f(x:Bit_vector; d:integer) return integer is
variable z: integer range 0 to 2**d-1;
variable y: integer;
constant n: integer :=x'length;
begin
  y:=CONV_integer (x(d-1 downto 0));
  for i in 1 to n/d-1 loop
    z:=CONV_integer (x((i+1)*d-1 downto i*d));
    y:=y+Z;
  end loop
  return y;
end f;
Dann sieht man klar, dass eigentlich nur n/d-1 Addierer nötig sind.

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.