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
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... ;-)
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
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
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.
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
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.
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?
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.
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
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"
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.
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.
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... ;-)
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
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 ;-)
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.
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!
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.
Klaus schrieb:> Ein BRAM ist funktionell nichts anderes als eine riesige LUT.
Der Unterschied ist halt, dass ein BRAM (sogut wie keine) Logikresourcen
braucht ...
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...