Multiplizieren mit einem einzelnen UND Gatter !

#418269
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!
Gast #418274
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.
Gast #418275
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
Gast #418276
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 ?
#418277
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“)
Angehängte Dateien:
#418280
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"
Angehängte Dateien:
#418282
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.

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