Forum: FPGA, VHDL & Co. Logik bestimmen und verein


von Sebastian (Gast)


Lesenswert?

Hallo,

Ich habe eine Logik mit 13 Digitalen Inputs und einem Output  die rein 
kombinatorisch ist. Hat jemand eine Idee wie ich das was ich bestimmt 
habe(Tabelle mit 2^13) Eintragen vereinfachen kann?

Danke.

Grüße

Sebastian

von Duke Scarring (Gast)


Lesenswert?


von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Sebastian schrieb:
> Hat jemand eine Idee wie ich das was ich bestimmt
> habe(Tabelle mit 2^13) Eintragen vereinfachen kann?
Was willst du damit machen?
Hast du wirklich eine Tabelle mit 8912 Zeilen?

Wenn ja: ich würde die in ein ROM packen und die Eingangleitungen als 
Adressen verwenden. Einfacher geht nicht...   ;-)

von Sebastian (Gast)


Lesenswert?

Hallo,

ich habe eine Blackbox mit 13 Eingängen und einem Ausgang, also hab ich 
die Stimuliert und eineTabelle generiert. Es ist eher reverse 
Engineering die ehemaligen Entwickler gibts nicht mehr.

Hab mehrere Rund mit untersciedlicher Sortierung gemacht, ist kein 
Speicher drin.

Grüße

Sebastian

von Thomas R. (Firma: abaxor engineering) (abaxor)


Lesenswert?

Warum willst du das vereinfachen? Minimierungsverfahren sind in jedem 
Synthesetool fehlerfrei vorhanden. Bei händischer Minimierung kannst 
du nicht davon ausgehen, dass es fehlerfrei wird. Initialisiere 
einen/mehrere BRAMs mit deiner Tabelle.

Tom

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Sebastian schrieb:
> Hab mehrere Rund mit untersciedlicher Sortierung gemacht, ist kein
> Speicher drin.
Ich meine auch nicht, dass da ein Speicher drin wäre, sondern du 
könntest es am einfachsten mit einem Speicher umsetzen: die 13 
Eingangsleitungen als Adressleitungen wählen ein Byte aus, wovon nur ein 
Bit als Ausgang verwendet wird...

Das Stichwort dazu heißt LUT = Lookup-Tabelle.

von Sebastian (Gast)


Lesenswert?

Hallo,

das sind vieleicht 20 UND und 5 ODER Gatter, mehr ist es nicht. Dafür 8k 
LUT ist massiver Overkill, ich möchte ja auch die Funktion verstehen, 
ein paar Dinge sind überliefert, aber eben nicht allen, und so hänge ich 
da mit einer "Obfuscated" Logik und Halbwissen.

Deshalb auch "Reverse-Engineering", ich würde gern die Logikterme 
rausbekommen um mir mit dem Halbwissen den Rest zu erschießen.

Nur weiß ich nicht wie ich das vereinfachen kann, KV kenne ich,... aber 
bei 13 Inputs ist das nicht mehr möglich.

Grüße

Sebastian

von Klaus (Gast)


Lesenswert?

Das ist ganz einfach. Führe einfach einen Quine-McCluskey Algorithmus 
auf der Logiktabelle aus. Damit bekommst du eine Minimale DNF für deine 
Logikfunktion. Den QMC Algo gibts bestimmt auch als interaktives Applet 
irgendwo im Netz.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Sebastian schrieb:
> aber bei 13 Inputs ist das nicht mehr möglich.
Ohne wenigstend die Hälfte der Pins anhand der Funktion (Handbetrieb, 
Notstop, Dauerbetrieb, Pulsen...) wegreduzieren zu können, hast du keine 
Chance.

> ich möchte ja auch die Funktion verstehen,
Dazu muss man so viel wie möglich vom System wissen:
woher kommen die Eingänge und was wird wie damit geschaltet.

> Dafür 8k LUT ist massiver Overkill
Ein kleines EPROM...

> Ich habe eine Logik mit 13 Digitalen Inputs und einem Output
Wie (welche Bausteine, Technologie) ist die aufgebaut?

von Schlumpf (Gast)


Lesenswert?

Mir normalen Mitteln hast du da meines Erachtens keine Chance.

Die Tatsache, dass die Funktion rein kombinatorisch ist, schränkt 
natürlich die Möglichkeiten ein. Aber selbst wenn du das alles 
zusammenfasst und mit KV vereinfachst, hast du vermutlich immer noch 
nicht den Sinn der Schaltung begriffen.
Es könnten ja auch Verknüfpungen wie
Ausgang = 1 wenn slice(3..0) größer als slice(7..4) darin verborgen 
sein.
Diese kannst du dann zwar über die Vereinfachung zu einer DNF 
darstellen, aber der DNF siehst du dann die eigentliche Funktion 
(nämlichen den Vergleicher) auch nicht direkt an.

von Sebastian (Gast)


Lesenswert?

Hallo Klaus,

Quine McClusky hab ich mir auch an sehen, hast Du das  schon mal in 
Matlab,... programmiert oder kennst Du eine gute Anleitung?

Vielen Dank

Grüße

Sebastian

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Sebastian schrieb:
> Quine McClusky hab ich mir auch an sehen, hast Du das  schon mal in
> Matlab,... programmiert oder kennst Du eine gute Anleitung?
Du greifst offenbar nach jedem so dahingeworfenen Strohhalm. Die anderen 
Posts hast du auch gelesen?

Wenn du unbedingt Kombinatorik sehen willst, dann hacke die Tabelle in 
ein Synthesetool und lass dir den RTL-Schaltplan anzeigen. Das sieht 
dann z.B. so aus wie im 
Beitrag "Re: Alternative Zählerbeschreibung"

von Mac (Gast)


Lesenswert?

Für dein Problem müsste eigentlich "Logic Friday" http://sontrak.com/ 
passen. Das Programm ist frei und kann Ausdrücke und Wahrheitstabellen 
mit 16 Inputs und Output minimieren und auf frei wählbare Logikgatter 
mappen. Die Wahrheitstabelle kannst du per CSV importieren.

von Klaus (Gast)


Lesenswert?

Lothar Miller schrieb:
> Du greifst offenbar nach jedem so dahingeworfenen Strohhalm. Die anderen
> Posts hast du auch gelesen?

Was ist daran ein Stohhalm? Mit der Methode bekommt man ein Ergebnis als 
minimale Schaltung aus UND und ODERs. Evtl. reicht das  Sebastian ja 
schon. Und die funktionalität der Schaltung zu analysieren geht mit 
der minimierten Form ganz sicher auch schneller als mit einer 8192 
Zeilen großen Tabelle!

http://sontrak.com/ sieht doch ziemlich gut aus. Hab ich noch nicht 
ausprobiert. Aber von der Beschreibung her könnte das genau das richtige 
sein.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Klaus schrieb:
> Und die funktionalität der Schaltung zu analysieren geht mit
> der minimierten Form ganz sicher auch schneller als mit einer 8192
> Zeilen großen Tabelle!
Die Funktionalität einer Schaltung ermittelt man am besten, wenn sie 
im Gerät eingebaut ist.
Und wenn es nur darum geht, ein obsoletes Logikgrab abzulösen, dann ist 
die Funktion uninteressant und die EPROM Methode die einfachste. Da kann 
man auch ganz einfach die Funktion ändern, wenn das mal nötig wäre. 
Nicht umsonst sind FPGAs intern auch mit 4:1 oder 6:1 RAMs (aka. LUT) 
ausgestattet.

> http://sontrak.com/ sieht doch ziemlich gut aus. Hab ich noch nicht
> ausprobiert. Aber von der Beschreibung her könnte das genau das richtige
> sein.
Ich musste mir das Ding auch gleich bookmarken... ;-)

von Sebastian (Gast)


Lesenswert?

Hallo,

eigentlich ist es C Code, aber derart geschrieben das ihn keiner 
versteht und Doku gibts nicht. Also war meine Idee den Logik Brute Force 
Weg zu gehen um Erkenntnisse zu gewinnen.

Grüße

Sebastian

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

C-Code? Was ist das denn schon wieder für eine Salamitaktik?

Poste doch mal diesen ominösen Code...

von Schlumpf (Gast)


Lesenswert?

Das klingt jetzt wirklich spannend.
Ein paar so verworrene Zeilen C, die es wert sind, stimuliert zu werden, 
um dann anhand der paartausend Kombinationsmöglichkeiten die Funktion 
dieser Zeilen zu verstehen.. es bleibt spannend ;-)

von Sebastian (Gast)


Lesenswert?

Hallo,

da ich Hw entwickelt hab sind mir Fpga's vertraut. C Code Posten geht 
nicht, würde auch nichts bringen, selbst mit System Verständnis bin ich 
gescheitert. Das haben Generationen an Entwicklern zusammengemurkst. 
Absoluter Pfusch.

Ich werde versuchen am Wie QMC zu drauf anzuwenden bzw. das Tool.

Grüße Sebastian.

von Fetz (Gast)


Lesenswert?

Sebastian schrieb:
> das sind vieleicht 20 UND und 5 ODER Gatter, mehr ist es nicht. Dafür 8k
> LUT ist massiver Overkill, ich möchte ja auch die Funktion verstehen,
> ein paar Dinge sind überliefert, aber eben nicht allen, und so hänge ich
> da mit einer "Obfuscated" Logik und Halbwissen.

Wer redet von LUT?

BRAM!

von Klaus (Gast)


Lesenswert?

Fetz schrieb:
> Wer redet von LUT?
>
> BRAM!

Ein BRAM ist funktionell nichts anderes als eine riesige LUT.  Er 
schrieb nichts davon, die 8k aus den LUTs in den FPGA Logic Array Zellen 
zu bauen.

Und auch ein BRAM wäre massiver overkill, wenn sich die Funktion 
tatsächlich vereinfachen ließe.  Denn BRAM ist auf FPGAs je nach 
Anwendung häufig auch sehr knapp bemessen.

von Fetz (Gast)


Lesenswert?

Klaus schrieb:
> Ein BRAM ist funktionell nichts anderes als eine riesige LUT.

Der Unterschied ist halt, dass ein BRAM (sogut wie keine) Logikresourcen 
braucht ...

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Fetz schrieb:
> Der Unterschied ist halt, dass ein BRAM (sogut wie keine) Logikresourcen
> braucht ...
Die umgangssprachliche "LUT" umfasst alles, was ein Nachschlagewerk in 
Tabellenform ist. Das geht dann in der (elektronischen!) Praxis von den 
kleinen 16x1 RAMs im FPGA (von denen kaum jemand etwas weiß) bis zu 
riesigen Transformationstabellen, die gern auch mal ein paar MB Platz 
einnehmen können. So wird ein uC Programmierer eine LUT immer in 
seinem RAM/ROM suchen. Und es ist die früher immer in Reichweite 
liegende Logarithmentafel genauso eine LUT wie eine Sinustabelle...
http://de.wikipedia.org/wiki/Lookup-Tabelle

Dass z.B. für die Realisierung einer DDFS in einem FPGA neben der 
"großen" Wellenform-LUT noch zig "winzige" LUTs für die Kombinatorik 
braucht, kümmert keinen. Wenn jemand sagt: für einen andere Wellenform 
musst du den Inhalt der LUT ändern, dann ist sofort klar, welche der 
827 LUTs damit gemeint ist...

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.