WinCUPL question ( defining /OE atf vs gal )

Bytestorm

Active member
Feedback
3 (100%)
Credits
60CR
Hello!

I recently realised that I needed to replace a 6331 PROM on the top board of my Hyper Sports since some of the colors was off.. (changed the C03027 prom with a good one from another Hyper Sports pcb)

Anyhow, I ordered some AM27S19PC proms just to realise the my programmer could only READ them.. not program them DOH!

Then I though, what if I just converted the raw data and put it into a GAL instead? The file is really small so should work?

Obviously I will need to make a small adapter pcb, but I dont mind, would be cool to learn some WinCUPL in the process!

Installed WinCUPL and after some trial and error I got a code going that I think will work..

But I have some small questions..

1. Do I need to define the unused pins as anything?

2. The original PROM has the /OE tied to ground, do I even need to have a /OE in my design then?

3. SYN, AC0, AC1(n): this sets the mode of the GAL (1,2,3), where do I put this? (need to?)

This is how the code looks right now.. please let me know what you think? Have I missed anything (apart from that the data in the table might be wrong)

Also, any reason to choose a AFT16V8 or GAL16V8?

Code:
[color="#0000ff"]/** Inputs **/
	
	Pin [2..6] = [A0..4];
	
	/** Outputs **/
	
	Pin [12..19] = [Q0..7];
	
	/** Declarations and Intermediate Variable Definitions **/
	
	field byte = [Q7..0];
	field address = [A4..0];
	
	TABLE address => byte {
	    'b'00000 => 'b'00000000;
	    'b'00001 => 'b'11111111;
	    'b'00010 => 'b'10100100;
	    'b'00011 => 'b'10101101;
	    'b'00100 => 'b'11111000;
	    'b'00101 => 'b'11000000;
	    'b'00110 => 'b'00111111;
	    'b'00111 => 'b'00111000;
	    'b'01000 => 'b'00000111;
	    'b'01001 => 'b'00000000;
	    'b'01010 => 'b'00010100;
	    'b'01011 => 'b'00010011;
	    'b'01100 => 'b'10011110;
	    'b'01101 => 'b'10110111;
	    'b'01110 => 'b'10101110;
	    'b'01111 => 'b'01100110;
	    'b'10000 => 'b'00000000;
	    'b'10001 => 'b'11111111;
	    'b'10010 => 'b'10100100;
	    'b'10011 => 'b'10101101;
	    'b'10100 => 'b'11111000;
	    'b'10101 => 'b'11001001;
	    'b'10110 => 'b'00110000;
	    'b'10111 => 'b'01101001;
	    'b'11000 => 'b'00000111;
	    'b'11001 => 'b'10100011;
	    'b'11010 => 'b'01010101;
	    'b'11011 => 'b'01011110;
	    'b'11100 => 'b'11110000;
	    'b'11101 => 'b'00111110;
	    'b'11110 => 'b'10101110;
	    'b'11111 => 'b'10101000;}
	[/color]

test.png


Bytestorm2021-10-01 08:26:28
 

iz8dw

Newbie
Credits
23CR
Bytestorm said:
Then I though, what if I just converted the raw data and put it into a GAL instead? The file is really small so should work?

Obviously I will need to make a small adapter pcb, but I dont mind, would be cool to learn some WinCUPL in the process!

Installed WinCUPL and after some trial and error I got a code going that I think will work..

But I have some small questions..

1. Do I need to define the unused pins as anything?

nope

Bytestorm said:
2. The original PROM has the /OE tied to ground, do I even need to have a /OE in my design then?

nope

Bytestorm said:
3. SYN, AC0, AC1(n): this sets the mode of the GAL (1,2,3), where do I put this? (need to?)

Cupl will figure out the mode automatically, depending on what you define in the source.

Bytestorm said:
This is how the code looks right now.. please let me know what you think? Have I missed anything (apart from that the data in the table might be wrong)

Also, any reason to choose a AFT16V8 or GAL16V8?

no, anything that fits your design is ok. For the small PAL/GALs I use DOS version of CUPL anyway, as it can usually compile for more "old" target devices.

Bytestorm said:
Code:
[color="#0000ff"]/** Inputs **/
	
	Pin [2..6] = [A0..4];
	
	/** Outputs **/
	
	Pin [12..19] = [Q0..7];
	
	/** Declarations and Intermediate Variable Definitions **/
	
	field byte = [Q7..0];
	field address = [A4..0];
	
	TABLE address => byte {
	    'b'00000 => 'b'00000000;
	    'b'00001 => 'b'11111111;
	    'b'00010 => 'b'10100100;
	    'b'00011 => 'b'10101101;
	    'b'00100 => 'b'11111000;
	    'b'00101 => 'b'11000000;
	    'b'00110 => 'b'00111111;
	    'b'00111 => 'b'00111000;
	    'b'01000 => 'b'00000111;
	    'b'01001 => 'b'00000000;
	    'b'01010 => 'b'00010100;
	    'b'01011 => 'b'00010011;
	    'b'01100 => 'b'10011110;
	    'b'01101 => 'b'10110111;
	    'b'01110 => 'b'10101110;
	    'b'01111 => 'b'01100110;
	    'b'10000 => 'b'00000000;
	    'b'10001 => 'b'11111111;
	    'b'10010 => 'b'10100100;
	    'b'10011 => 'b'10101101;
	    'b'10100 => 'b'11111000;
	    'b'10101 => 'b'11001001;
	    'b'10110 => 'b'00110000;
	    'b'10111 => 'b'01101001;
	    'b'11000 => 'b'00000111;
	    'b'11001 => 'b'10100011;
	    'b'11010 => 'b'01010101;
	    'b'11011 => 'b'01011110;
	    'b'11100 => 'b'11110000;
	    'b'11101 => 'b'00111110;
	    'b'11110 => 'b'10101110;
	    'b'11111 => 'b'10101000;}
	[/color]

looks fine to me, syntax-wise.

HTH

Frank IZ8DWF
 
Top