mikrocontroller.net

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


Autor: Dieter Mq (marqu)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Detlev (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schon die Integration macht jeden Zeitvorteil wieder kaputt.

Autor: Dieter Mq (marqu)
Datum:

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

Autor: Xenu (Gast)
Datum:

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

Autor: Dieter Mq (marqu)
Datum:
Angehängte Dateien:

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

Autor: Detlev (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: HomerS (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jürgen Schuhmacher (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Dieter Mq (marqu)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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“)

Autor: Dieter Mq (marqu)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jürgen Schuhmacher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke.

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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"

Autor: Jürgen Schuhmacher (Gast)
Datum:

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

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christoph Kessler (db1uq) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.