Skip to content

JEDEC decompiler for selected SPLD devices

License

Notifications You must be signed in to change notification settings

mistificator/jedisasm

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 

Repository files navigation

JEDisasm

This tool is a JEDEC decompiler for selected SPLD devices (PAL16/GAL16).

Usage examples:

set JEDISASM_REGROUP=1 && python .\jedisasm.py GAL16V8 .\nucleon_video_forming_16v8.jed > .\nucleon_video_forming_16v8.pld
python .\jedisasm.py PAL16L8 .\examples\J102-U14-PAL16L8.JED > .\examples\J102-U14-PAL16L8.PLD

To compile PLD back to JED one could use free old Atmel WinCUPL.

What's this for?

The tool allows turning a compiled or dumped SPLD fuse map, in the form of a JEDEC JESD3 file, back into a human-readable set of equations.

From this:

DD PAL16L8/A/A-2/A-4*
QP20*
QF2048*
G0*
F0*
L0     00000000000000000000000000000000*
L32    00000000000000000000000000000000*
L64    00000000000000000000000000000000*
L96    00000000000000000000000000000000*
L128   00000000000000000000000000000000*
L160   00000000000000000000000000000000*
L192   00000000000000000000000000000000*
L224   00000000000000000000000000000000*
L256   00000000000000000000000000000000*
L288   00000000000000000000000000000000*
L320   00000000000000000000000000000000*
L352   00000000000000000000000000000000*
L384   00000000000000000000000000000000*
L416   00000000000000000000000000000000*
L448   00000000000000000000000000000000*
L480   00000000000000000000000000000000*
L512   00000000000000000000000000000000*
L544   00000000000000000000000000000000*
L576   00000000000000000000000000000000*
L608   00000000000000000000000000000000*
L640   00000000000000000000000000000000*
L672   00000000000000000000000000000000*
L704   00000000000000000000000000000000*
L736   00000000000000000000000000000000*
L768   11111111111111111111111111111111*
L800   11111110111111111111111101110101*
L832   00000000000000000000000000000000*
L864   00000000000000000000000000000000*
L896   00000000000000000000000000000000*
L928   00000000000000000000000000000000*
L960   00000000000000000000000000000000*
L992   00000000000000000000000000000000*
L1024  11111111111111111111111111111111*
L1056  11111111111011111111111111111111*
L1088  10111111111111111111111111111111*
L1120  11111011111111111111111111111111*
L1152  11111111101111111111111111111111*
L1184  00000000000000000000000000000000*
L1216  00000000000000000000000000000000*
L1248  00000000000000000000000000000000*
L1280  11111111111111111111111111111111*
L1312  11111111111011111111111111111111*
L1344  10111111111111111111111111111111*
L1376  11110111011110111111111111111111*
L1408  11110111011111111011111111111111*
L1440  00000000000000000000000000000000*
L1472  00000000000000000000000000000000*
L1504  00000000000000000000000000000000*
L1536  11111111111111111111111111111111*
L1568  11111111111011111111111111111111*
L1600  01111011111111111111111111111111*
L1632  01111111011110111111111111111111*
L1664  01111111011111110111101111111111*
L1696  00000000000000000000000000000000*
L1728  00000000000000000000000000000000*
L1760  00000000000000000000000000000000*
L1792  00000000000000000000000000000000*
L1824  00000000000000000000000000000000*
L1856  00000000000000000000000000000000*
L1888  00000000000000000000000000000000*
L1920  00000000000000000000000000000000*
L1952  00000000000000000000000000000000*
L1984  00000000000000000000000000000000*
L2016  00000000000000000000000000000000*
C4203*

Into this -- with added pin names from schematics:

Pin  1 = PIN01;
Pin  2 = !AT1;
Pin  3 = !AT2;
Pin  4 = !AT3;
Pin  5 = !AT4;
Pin  6 = !AT5;
Pin  7 = !AT6;
Pin  8 = FC2;
Pin  9 = FC1;
Pin 10 = gnd;
Pin 11 = FC0;
Pin 12 = PIN12;
Pin 13 = !IPL0;
Pin 14 = !IPL1;
Pin 15 = !IPL2;
Pin 16 = !INTA;
Pin 17 = !AT0;
Pin 18 = !AS;
Pin 19 = PIN19;
Pin 20 = vcc;

INTA =
    AS & FC2 & FC1 & FC0;

IPL2 =
    AT0
  # AT1
  # AT2
  # AT3;

IPL1 =
    AT0
  # AT1
  # !AT2 & !AT3 & AT4
  # !AT2 & !AT3 & AT5;

IPL0 =
    AT0
  # !AT1 & AT2
  # !AT1 & !AT3 & AT4
  # !AT1 & !AT3 & !AT5 & AT6;

Very useful for debugging or exploring old things. :-)

Supported devices

Currently, the following devices should be supported in full:

  • GAL16V8
  • PALCE16V8
  • PAL16L8

The output is produced in CUPL compatible format.

Running the tool

Is super easy: just provide the device name (e.g. GAL16V8) and the JEDEC file name. The tool will then print out the pin assignments and equations.

You can also provide a pin name declaration file -- it should be named exactly like the JEDEC file but with the .pin extension. The file will be a text file and contain one pin name per line, gnd and vcc inclusive. Some pins can be omitted; they will be assigned an autogenerated name. Pin names, specifically inputs, can be prepended with the ! sign to let the tool know they are active low. Outputs polarity will be deduced automatically.

About

JEDEC decompiler for selected SPLD devices

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%