Forum: FPGA, VHDL & Co. Polynom Division


von Sa S. (sa_s)


Lesenswert?

Entwerfen Sie das VHDL-Programm für die Rechenoperation mit den 
Polynomen g2(x) = x^9 + x^6 + x^1 + 1 and g1(x) = x^7+x^6+x^5+x^3)

Gehen Sie bei dem Entwurf davon aus, dass der Nutzer vor Beginn der 
Berechnung über einen Taster ein RESET – Signal eingibt. Danach werden 
vom Nutzer exakt die Anzahl der benötigten Takte über einen weiteren 
Taster eingegeben.
Der Vektor ERGEBNIS kann während der Berechnung mit dem Ergebnis gefüllt 
werden. Wichtig ist, dass am Ende der Rechenoperation, also nach dem 
letzten Takt, das Ergebnis vollständig und stellenrichtig (MSB links, 
LSB rechts) im Vektor ERGEBNIS vorliegt.
Damit die Schreibarbeit in Grenzen gehalten wird, sind nachfolgende 
VHDL-Programmzeilen bereits gegeben

kann jemand bitte helfen

meine Lösung :
1
Library ieee ;
2
use ieee.std_logic_1164.all;
3
entity RECH_POLY is 
4
port 
5
( INP,RESET, CLOCK : in std_logic ; 
6
  ERGEBNIS : out std_logic_vector( 9 downto 0 ) 
7
); 
8
end entity RECH_POLY ; 
9
10
architecture BERECHNUNG of RECH_POLY is 
11
begin 
12
13
         process (CLOCK,RESET) is 
14
variable R :std_logic_vector(6 downto 0) ;
15
variable ZS :std_logic ;
16
variable count : natural:= 9 ;
17
18
begin 
19
20
21
if RESET = 1  then R :=(others => 0) ;
22
count:=9 ;
23
else if rising_edge(CLOCK) then 
24
25
ERGEBNIS(count) <= R(0) ;
26
27
ZS:= INP xor R(7) XOR R(6) xor R(5) xor R(3) ;
28
 R:=  ZS & R(7 downto 1) ; 
29
count := count -1 ; 
30
end if ; 
31
end process ;
32
33
end architecture BERECHNUNG of RECH_POLY ;

[Mod: VHDL-Tags bitte künftig selber einsetzen]

: Bearbeitet durch Moderator
von Jele D. (jele_d)


Lesenswert?

brauchst du nicht count zu deklarieren ,
sonst scheint es richtig zu sein

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Sa S. schrieb:
> Damit die Schreibarbeit in Grenzen gehalten wird, sind nachfolgende
> VHDL-Programmzeilen bereits gegeben
Welche waren das denn?

> meine Lösung ...
> kann jemand bitte helfen
Wobei helfen? Was funktioniert denn nicht und wie stellst du das fest? 
Was erwartest du und was passiert stattdessen?

Jele D. schrieb:
> sonst scheint es richtig zu sein
Naja, die "Hochkommas" sehen eigenartig aus. Man sollte den Sourcecode 
nicht über Word editieren, denn da wird aus '0' auf einmal ‚0‘.

Und die Zuweisung an das ERGEBNIS ist auch irgendwie seltsam.

R(7 downto 1) ist auch nicht sinnvoll, wenn R mit (6 downto 0) 
deklariert ist...

von VHDL-Polizei (Gast)


Lesenswert?

Fällt niemand das ungetaktete Signal im Prozess auf?

Sowas macht man seit 20 Jahren nicht mehr!

In FPGAs mit ihrer CLK-Struktur sollten Signale und auch Reset IMMMMER 
getaket sein.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

VHDL-Polizei schrieb im Beitrag #7303506:
> Fällt niemand das ungetaktete Signal im Prozess auf?
Da ist doch ein Takt. Nur wird der Takt halt kindergartenmäßig von einem 
Taster generiert. Und der Reset als taktsynchron angenommen. Im 
Simulator "funktioniert" das schon ausreichend gut.

von -gb- (Gast)


Lesenswert?

Das ist doch die übliche Beschreibung für einen asynchronen Reset. Ist 
auch Teil der Aufgabe, denn das ist kein kontinuierlicher Takt sondern 
zuerst ist der Reset einmal aktiv und danach kommen nur eine feste 
Anzahl an Taktflanken.

von Xaver Xanthus (Gast)


Angehängte Dateien:

Lesenswert?

Mal das Ganze durch den EMACS geschubst und unlogisches Rausgeschmissen.
Wenn ich mich recht erinnere ist der Zustand "Alles 0" für ein LFSR der 
Tod.

von -gb- (Gast)


Lesenswert?

Das hast du nicht simuliert, denn es enthält Fehler.

von Xaver Xanthus (Gast)


Angehängte Dateien:

Lesenswert?

Neue Variante, stil weiter weg vom Kotzreiz.

von Gustl B. (-gb-)


Lesenswert?

Fehler ist weiterhin drinnen.

von Xaver Xanthus (Gast)


Lesenswert?

Gustl B. schrieb:
> Fehler ist weiterhin drinnen.

Ja, ich will dir ja nicht Deine Existenzberichtigung nehmen.

Und Tschüß,

von Gustl B. (-gb-)


Angehängte Dateien:

Lesenswert?

Ja nun, im Grunde läuft das wie bei 
Beitrag "VHDL polynom-Multiplikation"
Im Anhang mal das Bildchen und auch ein Screenshot der Simulation. Meine 
Beispiellösung aus dem anderen Thread kann man sehr einfach so anpassen, 
dass die zu den Polynomen hier passt. Ob man g1 oder g2 in Hardware 
schreibt und dann g2 oder g1 daran vorbeischiebt ist egal.

von Xaver Xanthus (Gast)


Angehängte Dateien:

Lesenswert?

Gustl B. schrieb:
> Meine
> Beispiellösung aus dem anderen Thread kann man sehr einfach so anpassen,

Anbei eine Adaption der Testbench auf die Aufgabenstellung und 
Industriestandards bzgl Zählrichtung und identifier Benamung.

Wegen der schlechten Dokumentation der Testbench haben sich sicher ein 
paar funktionale Fehler eingeschlichen.

von Gustl B. (-gb-)


Lesenswert?

Xaver Xanthus schrieb:
> eine Adaption der Testbench auf die Aufgabenstellung

Leider eben nicht. Die Aufgabenstellung gibt da Polynome vor, die sehe 
ich nicht im Code. Der/Die Aufgabensteller geben die Namen der Ports 
vor, da sind Standards egal, Richtungen kann auch der Aufgabensteller 
vorgeben.

Versuche das doch zu simulieren, das geht einfach und man sieht schnell 
die Fehler. Welches Ergebnis am Ende im Vektor stehen sollte ist doch 
jetzt auch klar. Was für mich noch unklar ist die Anzahl der Takte. 
Eigentlich würde ich da Summe der Polygonlängen erwarten, also 10 + 8 = 
18. Da aber bei dem einen Polygon die letzten 4 Stellen konstant 0 sind 
könnten es auch nur 10 + 4 = 14 Takte sein. So habe ich das im Bildchen 
behandelt.

von J. S. (engineer) Benutzerseite


Lesenswert?

Sa S. schrieb:
> Entwerfen Sie das VHDL-Programm für die Rechenoperation mit den
> Polynomen

Bei der Aufgabenstellung fehlt die Nebenbedingung, dass es sich um ein 
binäres Polynom handelt. Sollte das so sein, also X immer 0 oder 1, kann 
man das so linear durcharbeiten, wobei ich nicht sehe, wieso da 2 
Gleichungen auftauchen, wie die zu behandeln wären und wie sie hier 
behandelt wurden.

Sollte das nicht so sein, braucht es Multiplizierer.

Und man müsste fragen, wo hier die "Division" auftauchen soll.

Ich nehme an g2(1) / g1(x) ...

von Lars Lapsus (Gast)


Lesenswert?

Jürgen S. schrieb:
> Sa S. schrieb:
>> Entwerfen Sie das VHDL-Programm für die Rechenoperation mit den
>> Polynomen
>
> Bei der Aufgabenstellung fehlt die Nebenbedingung, dass es sich um ein
> binäres Polynom handelt.

Da fehlt noch einiges mehr. Beispielsweise wird da von VHDL-Templates 
gesprochen, die sich dann doch nicht finden lassen. Aber bis jetzt hat 
der TO wie ein uninspirierter Troll keinerlei Details nachgereicht. 
Mglw. ist er ja mit der Beseitigung des groben Unfugs aus seinem Code 
zufrieden und hat sich bzgl. des allgemeinen Aufgabenverständnisses an 
den Übungsleiter o.ä. gewandt.

> wobei ich nicht sehe, wieso da 2
> Gleichungen auftauchen, wie die zu behandeln wären und wie sie hier
> behandelt wurden.

Ja, da kann man nur raten. Wenn das Ganze einen Praxisbezug haben 
sollte, tippe ich auf CRC-Berechnung für die Nachrichtenübermittlung 
oder ähnliches.

> Sollte das nicht so sein, braucht es Multiplizierer.
Da gibt es tausende Varianten. Ich nehme an, da es sich um serielle 
Daten Handelt so dass es auf ein Schieberegister mit taps hinausläuft.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Nur 1 Username pro Thread!

Siehe die simplen und leicht zu verstehenden Nutzungsbedingungen

von Lars Lapsus (Gast)


Lesenswert?

Lothar M. schrieb:
> Nur 1 Username pro Thread!
>
> Siehe die simplen und leicht zu verstehenden Nutzungsbedingungen

Die sind aber lückenhaft, bedienen sich einer anderen Begrifflichkeit 
und tragen nachweislich nicht zur Erhöhung der inhaltlichen Qualität 
bei.

Dort steht nix von 1 Usernamen pro Thread sondern
"Teilnahme an einer Diskussion unter verschiedenen Namen/Accounts"

"Diskussion ungleich Thread" und "Username ungleich Account".

Und bei technischen Diskussionen zählt die Argumentation auf Basis 
technischer Begrifflichkeit. Was da im jeweiligen Namensfeld steht ist 
scheissegal. Klar kann der Mod kraft seine Wassersuppe aus formalen 
Gründen Inhalt/Ratschläge weglöschen, so machen es auch den 
Grundschullehrer die den Klassenbesten wegen schlechter Handschrift den 
Aufsatz mehrmals schreiben lassen nur um sich vorzugaukeln sie würden 
immer noch intellektuell donieren.
Kommt aber bei der Klasse als reiner Affenzirkus an, und vertreibt die 
des Inhalts wegen hier mitschreiben.
Schon mal selbstkritisch hinterfragt, warum hier immer wieder accounts 
mit hunderten wertvollen Beiträgen von den Account-inhabern gelöscht 
werden?!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Lars Lapsus schrieb:
> Dort steht nix von 1 Usernamen pro Thread sondern
> "Teilnahme an einer Diskussion unter verschiedenen Namen/Accounts"
> "Diskussion ungleich Thread" und "Username ungleich Account".
Hauptsache, du hast es prinzipiell verstanden.

: Bearbeitet durch Moderator
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.