Mostanság egyre többet szembesülök azzal, hogy a fenti cuccok tartalmát modern CPLD-be vagy FPGA-ba kellene implementálni. Ugye a fenti cuccok nem arról híresek, hogy tömören oldják meg a problémát. A PROM egy binaris tömb, a többi meg kötött módon ÉS/VAGY/NOT kapcsolatok.
Létezik valami amivel automatikusan lehet egyszerűsíteni a fentiek tartalmát? Ilyesmire gondolok:
https://www.dcode.fr/boolean-expressions-calculator
Ez nagyon prímán működik, csak nem egy felhasználó barát inputja van.
Update:
https://github.com/soumilkanwal80/Boolean-Expression-Simplifier
Update2 - minta, csak hogy érthető legyen a kérdés is:
A cucc egyik kimenetéhez rendelt eredeti logika:
q = (bcdef'ghi'jl)+(bcdef'gi'j'l)+(acdef'ghi'jl)+(acdef'gi'j'l)+(bcdef'ghi'jk'l')+(bcdef'gi'kl')+(acdef'ghi'jk'l')+(acdef'gi'j'k'l')+(def'ghi'jkl')+(def'gi'j'kl')
Quine–McCluskey algoritmussal egyszerűsítve:
q = l'j'h+l'ba+l'c+j'hb+j'hc+kba+kj'h+i'+lkja+f'+kc+d+e+g
Ha jól számoltam 88 logikai AND/OR kapcsolatot redukált le 30-ra. Ami majd újra jól szét lesz szintetizálva a CPLD-be.
- 352 megtekintés
Hozzászólások
PLA, PAL, GAL logikáját elviszi egy CPLD. Ha PROM alatt kicsit értesz, azt is.
CPLD-t tipikusan 32-512 makrocelláig kapsz. Sok termékben a makrocella 1 bites tároló + néhány vezetéknyi bemenő logikával rendelkezik. De van PROM alapú termék is.
Megírod a kapcsolati feltételeidet VHDL-ben vagy Verilogban és egy próbafordítás már kiadja, hogy melyikbe fog beleférni a kódod.
- A hozzászóláshoz be kell jelentkezni
Mi lenne a cel?
Nem vagyok tul jaratos ezekben, de a PROM tartalmat szerintem nem lehet egyszerusiteni, az egyszeruen adat, max tomoriteni lehetne.
GAL/PAL/PLA eseten meg nem egy fuggvenyed van amit szeretnel megvalositani? Az miert nem jo, hogy megirod azt amit akarsz VHDL-ben, Verilogban, SystemC-ben, akarmiben aztan az megy az FPGA-ba (a CPLD-ket egyaltalan nem ismerem)?
/sza2
Digital? Every idiot can count to one - Bob Widlar
- A hozzászóláshoz be kell jelentkezni
PROM akkor játszik amikor címdekódolásra használták. Ez a legritkább inkább hagyjuk is.
Az GAL/PLA/PAL esetén soha nem tudom mire gondolt a szerző, csak az van meg ami belekerült ezekbe a cuccokba. Ez ugye méretileg soha nem ideális, hanem az adott eszköz struktúrájához igazodik (AND/OR gate array). Addig nincs gond ez belefér a kiszemelt CPLD-be, ha nem fér bele akkor kellene az optimalizálás. Az a baj ilyenkor nem tudom mit akarok, csak egy régi dolgot akarok helyettesíteni.
„Az összeomlás elkerülhetetlen, a katasztrófa valószínű, a kihalás lehetséges.” (Jem Bendell)
- A hozzászóláshoz be kell jelentkezni
Ha jól számoltam 88 logikai AND/OR kapcsolatot redukált le 30-ra. Ami majd újra jól szét lesz szintetizálva a CPLD-be.
Ha nem optimalizálsz külön, pusztán a kapcsolataidat egy normálisan megírt Verilog vagy VHDL kódban odaadod a fordítónak, az nem optimalizálta ezt hasonlóképpen ki?
- A hozzászóláshoz be kell jelentkezni
Ha egy az egyben beírtam az eredeti kódot akkor nem. Ha kihagytam egy kimenetet, akkor megcsinálta és lófasznyi makrocellát használt el. Valószínűleg a makrocellák közötti interconnect volt a szűk keresztmetszet. Az eredetiben az AND tömb 16 bemenettel és 24 kimenettel rendelkezett, az OR tömb értelemszerűen 24 bemenettel és 8 kimenettel. Az újban az AND 12/8, az OR 8/4, de van belőle 128.
„Az összeomlás elkerülhetetlen, a katasztrófa valószínű, a kihalás lehetséges.” (Jem Bendell)
- A hozzászóláshoz be kell jelentkezni