Forum: FPGA, VHDL & Co. Multiplizieren mit einem einzelnen UND Gatter !


von Dieter M. (marqu)


Lesenswert?

Multiplizieren mit einem einfachen einzelnen UND Gatter !
Simulation „Tausend“ mal schneller als mit jedem Computer !

Zwei Digitale Eingangswerte mit nBit Breite werden mit einem
Zufallsgenerator pro takt verglichen. Ist der Eingangswert größer oder
gleich dem Zufallswert wird das Ausgangssignal 1 im anderem Fall 0.
Dies entspricht dem digitalen „Poti“.
Man kann sich das vorstellen wie bei der Pulsweitenmodulation (PWM)
nur
das die Einschaltzeiten zufällig verstreut liegen. (Ich sag mal dazu
„Bitstrom“)
Wenn man jetzt beide Ausgangs Bitströme mit UND verknüpft liegt am
Ausgang vom UND Gatter der Bitstromwert der Multiplikation von den
Digitalen Eingangsgrößen.
Wird der Bitstrom wieder Integriert erhält man mit einer zeitkonstante
den Wert.
Das ganze habe ich für eine Simulation "gedämpfter Schwingung" in
VHDL mit einem FPGA implementiert und es funktioniert!
Viele Tausende solcher Multiplikationen und Integratoren würden für
die
Simulation oder Regelung auf einen FPGA oder ASICS passen wie bei den
alte elektronische Analogrechnern. Pro Takt würde die gesamte
Simulation neu berechnet werden und damit viel schneller als jeder
Computer da ja alles zur gleichen Zeit berechnet wird!
Mich würde interessieren ob es das schon gibt. Die Idee finde ich
super, habe dies bezüglich noch nicht’s im Internet gefunden.
Euro Meinung würde mich interessieren!

von Detlev (Gast)


Lesenswert?

Schon die Integration macht jeden Zeitvorteil wieder kaputt.

von Dieter M. (marqu)


Lesenswert?

Bin zwar kein Mathematiker! Aber  Integration  ist Basis der Simulation
und wird mit  Differential bzw. Integralgleichungen gelöst!

von Xenu (Gast)


Lesenswert?

Hört sich für mich wie eine Art Zweikanal-Sigma-Delta-Wandler an.

von Dieter M. (marqu)


Angehängte Dateien:

Lesenswert?

Das Ganze als PDF etwas anschaulicher und ich hoffe auch etwas
verständlicher.
Ich hoffe das mit den Dateianhang klappt!

von Detlev (Gast)


Lesenswert?

Ich habe immer noch nicht verstanden, was du sagen willst. Du erzeugst
zwei Bitströme bei denen die Wahrscheinlichkeit für eine 1 gleich dem
Wert eines Potis ist. Durch die AND-Verknüpfung erzeugst du einen
Bitstrom bei dem nur eine 1 erscheint, wenn bei beiden
Eingangsbitströmen auch eine 1 ist. Nach den Regeln der Stochastik ist
da also die Wahrscheinlichkeit für eine 1 das Produkt aus den
Wahrscheinlichkeiten für eine 1 aus den Bitströmen. Wenn du das über
eine laaaaaaaaaaange Zeit mittelst,kommt das Produkt der beiden
Eingangswerte heraus. O.K.

Aber was soll das? Ist doch hochkompliziert. Wie erzeugst du so schnell
zuverlässige Zufallszahlen? Und die Genauigkeit aufgrund  statistischer
Schwankungen steigt nur mit der Quadratwurzel der Ereignisse bzw.
Integrationszeit. Für 10bit Genauigkeit müsstest du das Ganze also etwa
1 Million mal durchlaufen, fur 16bit 65 Millionen mal.

Das Verfahren ist absolut unpraktisch und deshalb auch nie irgendwo
eingesetzt.

von HomerS (Gast)


Lesenswert?

Ja hallo erstmal,

als ich erstmals gelesen habe, hatte ich gehofft, daß es eine neue,
schöne Variante wäre einen Potiwert zu digitalisieren.
Da es aber nur darum geht den "DIGITALEN" Wert von zwei Quellen zu
erkennen, dafür nur ein UND-Gatter zu verwenden, was ich mir aber
erkaufe mit viel drumrum Logik, erkenne ich den Sinn nicht.

Daß das gehen wird sehe ich schon, aber wo ist der entscheidende
Vorteil?

Hättest Du das nicht mit einem Eval-Board mit FPGA, sondern von Hand
aufgebaut, sähe die Sache anders aus.

Falls ich was nicht erkannt/begriffen habe, kläre mich bitte auf.

Gruß


ts

von Jürgen Schuhmacher (Gast)


Lesenswert?

Diese Vorgehensweise entspricht einer Reise von Frankfurt nach München
mit Zwischenstopp in Las Vegas. Man kann, wenn man Gatter sparen will
und viieeeeell Zeit hat, den Multipliaktionsalgorithmus als Rekursion
formulieren und mit einem schnöden Addierer realsieren. Diesen wiederum
kann man als Schieberegister bauen und ein-zwei wenigen Gattern am
Ausgang. Man braucht halt viele kleine Speicher und Multiplexer. Diese
Technik empfiehlt sich dann ,wenn unsere Bundesregierung irgendwann mal
eine Steuer auf embedded multiplier erheben sollte, oder die GEZ Gebüren
auf FPGAs erhebt.

Was mich mal interessieren würde: Welches Board ist das bitte ?

von Dieter M. (marqu)


Angehängte Dateien:

Lesenswert?

Hallo,
der Gedanken Ansatz ist vielleicht sehr abstrakt.
Die Zwei Bitströme sind natürlich nur stellvertreten für eine viel
komplexere Simulation. Stell dir vor die einzelnen Bits sind Elektronen
und fließen durch diese Simulation. Alles müsste natürlich zwischen –1,0
und 1,0 normalisiert sein. Da ich in Wirklichkeit natürlich zwei
Signalleitungen verwende, eine für den Bitstrom (Wert) und eine fürs
Vorzeichen.
Z.Z erzeuge ich die Zufallszahlen von einem ROM und schiebe sie seriell
durch alle Poti und Integrierer. Vorstellbar wäre auch  (Linear Feedback
Shift Register, LFSR).  Damit aber nicht der gleiche Wert nach 16 Takten
am nächsten Poti oder Integrierer ist, das ganze auch noch von rückwärts
in die Simulation und mit XOR  verknüpft.
Schau Dir doch mal die gedämpfte Schwingung an hier werden die oberen
8bit von 16Bit  Integer verwendet für die Y-Achse 480Pixel  (640x480
Pixel). Sicherlich die Genauigkeit ist Abhängig von dem Zeitfenster
aber die Bits werden  ja kontinuierlich durch die gesamte Simulation
geschoben! Wie bei den alten Analogrechner.
Java Source Code für Eclipse zum rumspielen („Bin kein Java
Programmierer“)

von Dieter M. (marqu)


Lesenswert?

Hallo Jürgen,
das Board ist von TERASIC  T-Rex mit einen Altera Cyclone 1 EP1C6Q240CB
  hab ich mir im Frühjahr aus Taiwan schicken lassen.

von Jürgen Schuhmacher (Gast)


Lesenswert?

Danke.

von Christoph db1uq K. (christoph_kessler)


Angehängte Dateien:

Lesenswert?

Das Verfahren wurde so ähnlich für DA-Wandler vorgeschlagen. Ein
Binärzähler, ein Prioritätsencoder und ein 1-aus-8 Multiplexer erzeugen
ein pulsbreitenmoduliertes Signal, das das Produkt des Zählers mit dem
DA-Wandler-Eingang bildet, sehr unübersichtlich. Auch hier muß am
Ausgang gefiltert werden. Aus "Fairchild, The TTL Applications
Handbook Aug. 1973"

von Jürgen Schuhmacher (Gast)


Lesenswert?

ja, seufz, damals - so kurz nach dem Krieg - gab es halt keine seriellen
high-speed DACs. Da musste gespart werden :-)

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Um mehrere PWM-Ausgänge in ein FPGA zu bekommen, wäre das doch eine
Alternative. Pro Ausgang wird nur ein n-zu-1 Multiplexer gebraucht.

Die Schaltung eignet sich auch zur feinstufigen Frequenzteilung ähnlich
einem DDS. Einfach das Ausgangssignal des Multiplexers mit dem
Taktsignal verUNDen. Die Ausgangsfrequenz ist hier Taktfrequenz *
(n/256), allerdings mit großem Jitter. Es gab die beiden
Standard-TTL-Bausteine 7497 "*(n/64)" und 74167 "*(n/10)" und ein
CD4xxx die so gearbeitet haben.

von Christoph Kessler (db1uq) (Gast)


Lesenswert?


von Hagen (Gast)


Lesenswert?

Warum aber einen Zufallsstrom von Bits ?

Wenn du 16 Bit abtatstenn möchtest dann sollte mit deiner Methode mit
einer Zahlenfolge wie 2^15,2^14,2^13...2^1,2^0 verglichen werden.

Gruß Hagen

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.