Dividiererschaltungssynthese

Gast #6092629
Hakim schrieb:
> Es findet sich immer einer, der die Hausaufgaben für die faulen Schüler
> macht.

Ach Gott, als ob in der Schule Digitaltechnik gelehrt würde.

Das ist Hochschule und da macht niemand seine Hausaufgaben selbst 
sondern kopiert aus Lehrbüchern oder kauft die Lösung von einem 
Ghost-Kommilitonen. So funktioniert das degenerierte 21 Jhrh. - die Zeit 
der Dichter und Denker war vorher.
#6092706
Leon schrieb:
> für den Dividierer

Ja, aehhh - also fuer den Dividierer. Hm, ja welchen denn?
Nachdem's in der Unterabteilung fuer Analoge Elektronik und Gedoens 
gelandet ist, wuerd' ich mal sagen: Da stell' mer uns mal janz domm und 
nehmen einfach mal einen Spannungsteiler her - Teilen ist ja sowas wie 
dividieren, und schon haben wir den Spannungsdividierer. Oder man 
koennte auch Stroeme aufteilen, dann haette man einen Stromdividierer, 
etc. bla.

Gruss
WK
Moderator #6092884
Ein einfacher Dividierer ist folgendermaßen aufgebaut:

1
Eingänge     Dividierer     Ausgänge
2

3
Dividend → o————————————o → Quotient
4
Divisor  → o————————————o → Gültig

"Dividend" und "Divisor" sind ganzzahlige Binärzahlen im Bereich von
0..1. "Quotient" ist das Ergebnis der Division als Binärzahl, "Gültig"
ist 1, wenn die Division fehlerfrei durchgeführt werden kann, und 0,
wenn versucht wird, durch null zu dividieren.

Vielleicht reicht das ja schon als Lösung der Aufgabe.

Wenn nicht: Ein Dividierer für 4-Bit-Dividenden sieht folgendermaßen
aus:

1
Eingänge           Dividierer     Ausgänge
2

3
Dividend Bit 0 → o————————————o → Quotient Bit 0
4
Dividend Bit 1 → o————————————o → Quotient Bit 1
5
Dividend Bit 2 → o————————————o → Quotient Bit 2
6
Dividend Bit 3 → o————————————o → Quotient Bit 3
7
Divisor        → o————————————o → Gültig

Damit wird der Wertebereich für den Dividenden auf 0..15 erweitert.

Scherz beiseite: Es ist doch sicher vorgegeben, von welchem Typ der
Dividierer (analog oder digital) sein soll und welches die Wertebereiche
für Dividend und Divisor sind. Abhängig davon kann die Aufgabe sehr
leicht (s.o.) oder deutlich schwerer sein.
Persönliche Seite #6094059
Udo K. schrieb:
> Ich habe das noch in der Volksschule gelernt...
Ich glaube, unsere gesamte Generation hat das noch in der Grundschule 
gehabt :-= :D

Nennt sich "Schriftliches Dividieren" und gibt es in diversen 
Modifikationen, von denen sich einige auch für FPGAs eigenen, wenn auch 
nicht die, die in dem Artikel vorgeschlagen wird. Was mich da wieder 
fasziniert, ist die (vollkommen nutzlose, da kontraproduktve) Verwendung 
eines control- und eines datapaths.

So etwas baut man als fixe pipeline in entweder 2er, 4er (oder für die 
hard core fans) 8er look-ahead-Architektur und lässt sie kontinuierlich 
durchlaufen. Je nach FPGA-Type passiert da auch viel innerhalb eines 
Taktes und man kommt mit x<n als Latenz raus.
Gast #6094380
Jürgen S. schrieb:
> Udo K. schrieb:
>> Ich habe das noch in der Volksschule gelernt...
> Ich glaube, unsere gesamte Generation hat das noch in der Grundschule
> gehabt :-= :D

Ja, auswendig gelernt ohne es zu verstehen...


>
> Nennt sich "Schriftliches Dividieren" und gibt es in diversen
> Modifikationen, von denen sich einige auch für FPGAs eigenen, wenn auch
> nicht die, die in dem Artikel vorgeschlagen wird. Was mich da wieder
> fasziniert, ist die (vollkommen nutzlose, da kontraproduktve) Verwendung
> eines control- und eines datapaths.

Die Verwendung von Control- und Datenpfad war halt üblich, als die
VHDL Module noch einfach waren, und praktisch die Schaltungen
am Papier nachgemalt wurden.

Ich habe erst kürzlich ein SPI Interface angeschaut, wo noch jedes
FF oder Register in einem eigenen Prozess beschrieben wird.

Ich nehme mal an, das Vertrauen in die Synthesetools war damals auch
noch geringer.

> So etwas baut man als fixe pipeline in entweder 2er, 4er (oder für die
> hard core fans) 8er look-ahead-Architektur und lässt sie kontinuierlich
> durchlaufen. Je nach FPGA-Type passiert da auch viel innerhalb eines
> Taktes und man kommt mit x<n als Latenz raus.

Das täte mich mal interessieren, wie das geht!
So gut bin ich in VHDL nicht unterwegs.

Ich habe einmal den klassischen sequentiellen Dividieralgorithmus der
Grundschule in VHDL umgesetzt.
Ich bin richtig stolz, das das Modul nur N Takte und
2N+log2(N)+1 FF braucht (N ist die Bitanzahl).

Ich bin aber immer wieder überrascht, wie mühselig VHDL
für Signalverarbeitung und fürs Rechnen ist,
im Vergleich zu einem Cortex M4, wo man sich um den Datenpfad
keine Gedanken machen muss, und wo man fürs
Dividieren einfach a/b schreibt.

Antwort schreiben

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