Problem bei VHDL-Klausur

Gast #388285
Lesenswert?
• ▲
▼
Hallo,

habe seit diesem Semester VHDL, jetzt hab ich mir mal ne alte Klausur
(http://www.8ung.at/gerschi/studikram/Prog_Bausteine/ws2002_2003.pdf)
von unserem Prof angeschaut und da kam mir dass kalte Grausen weil ich
nicht weiß wie ich seine Aufgaben lösen soll.

Es fängt schon bei der 1. Aufg an:

entity Quersumme is
generic (n: integer := 16);
port (y: in Bit_vector(n-1 downto 0);
z: out integer range 0 to n
);
end Quersumme;

architecture Behavior1 of Quersumme is
subtype BitCount is integer range 0 to n;
begin
QS:process(y)
variable Tmp : BitCount := 0;
begin
for i in 0 to n-1 loop
if y(i) = '1' then
Tmp := Tmp + 1;
next;
end if;
end loop;
z <= Tmp;
end process;
end behavior1;

Dass Problem liegt glaub ich bei der If-Schleife, dir wird zu oft
durchlaufen.

Falls jemand ne Lösung und ein Programm für VHDL-Dummies weiß wäre ich
dankbar wenn er was posted.


Danke
Gast #388290
Lesenswert?
• ▲
▼
Dein Tmp wird nie auf 0 zurückgesetzt.
D.h. bei jeder Änderung von y wird dem alten Tmp-Wert die Anzahl Einsen
nochmals dazuaddiert. (Innerhalb vom definierten range)

Schreibe mal nach der Zeile "Z <= Tmp;"
noch ein " Tmp := 0; ".
Gast #388295
Lesenswert?
• ▲
▼
HM, ich bin mir nicht sicher, ob bei jedem aufruf des Processes tmp auch
den Initwert 0 bekommt. Besser du verzchtest auf den initwert bei der
deklaration und setzt tmp vor der schleife immer auf '0'. Next
innerhalb eines If ... end if hab ich auch noch nie ausprobiert,
scheint mir irgenwie "unkosher".


Also folgend siehts IMHO besser aus:
1
entity Quersumme is
2
generic (n: integer := 16);
3
port (
4
 y: in Bit_vector(n-1 downto 0);
5
 z: out integer range 0 to n);
6
end entity Quersumme;
7

8
architecture Behavior1 of Quersumme is
9
  subtype BitCount is integer range 0 to n;
10

11
begin
12
 QS:process(y)
13
   variable Tmp : BitCount;
14
   begin
15
   tmp := 0;
16
   for i in 0 to n-1 loop
17
    if y(i) = '1' then
18
     Tmp := Tmp + 1;
19
    end if;
20
   end loop;
21
  z <= Tmp;
22
 end process QS;
23
end architecture behavior1;
Gast #388296
Lesenswert?
• ▲
▼
also mit Code von FPGAKüchle unter XILINX:


======================================================================== 
=
WARNING:Xst:1989 - Unit <Quersumme>: instances
<Madd__n0017_Mxor_Result<2>>, <Madd__n0017_Mxor_Result<3>> of unit
<LPM_XOR2_1> are equivalent, second instance is removed
WARNING:Xst:1989 - Unit <Quersumme>: instances
<Madd__n0017_Mxor_Result<2>>, <Madd__n0017_Mxor_Result<4>> of unit
<LPM_XOR2_1> are equivalent, second instance is removed

Optimizing unit <Quersumme> ...

Process "Synthesize" completed successfully

Started : "Translate".
WARNING:ProjectMgmt -
"D:/Programme/VHDL-Test/Quersumme/Quersumme.ngr" line 0 duplicate
design unit: 'Module|Quersumme'

Command Line: ngdbuild -intstyle ise -dd _ngo -i -p xc9500
Quersumme.ngc
Quersumme.ngd
Angehängte Dateien:
Gast #388297
Lesenswert?
• ▲
▼
Hm, seh ich erst mal kein problem, oder drückt mir den sandmann schon
auf die Augen?.

Scheint aber achlecht zu optimieren, sollte man wohl per hand die
halbadder setzten und Kaskadieren. Aber das vielleicht aufgabe 10.
Gast #388298
Lesenswert?
• ▲
▼
@FPGAküchle

ja die blöden Fehlermeldungen wenns dann trotzdem läuft verwirren einen
Anfänger total.

Ich hab hauptsächlich bei for-Schleifen, wie wandle ich z. B. eine
integer Zahl in nen Vektor um etc.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 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.