Polynom Division

OP #7303126
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]

Moderator (Firma: Titel) Persönliche Seite #7303169
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...

Gast #7303674
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.

#7303802
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.

Angehängte Dateien:
Gast #7303937
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.

Angehängte Dateien:
#7304198
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.

Persönliche Seite #7305440
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) ...

Gast #7306065
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.

Gast #7309168
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?!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren