Jump to content
IGNORED

Question about programming GAL/PLDs


jdgabbard

Recommended Posts

I have been using discrete logic for most of my projects, or a micro when I needed something more akin to LSI. However, in an effort to cut down on consumed real estate I have recently decided to make a move into some of the smaller PLDs. I'm specifically looking at the 16V8 and 22V10 series of PLDs.

 

I have written an equation file that would do my logic functions for a GAL22v10, only to discover that my programmer that supports PLDs (TL866) has a software bug where that specific PLD is concerned. However, I'm under the impression that 16v8 and Atmel variants program and verify without problems. This is kind of a pain considering that I had purchased 20 of the 22v10...

 

My question had to do with software. I have been writing my equations in a standard text file and compiling it in OpalJr. This isn't a big deal, as my Win98 machine has USB. However, my programmer doesn't work on this machine, and I'm forced to transfer the file to my modern machine to burn.

 

So I have been looking at other software packages that I can run on a Win7 machine without the need for DOS Box. Apparently WinCUPL is about the only one that is simplified enough for my needs. I'm not really interested in learning Verilog or VHDL at the moment, as I'm already busy learning two variants of Assembly.

 

However, what I'm not clear about is whether WinCUPL's JEDEC files are compatible with both Lattice and Atmel chips (I'm aware of the differences in programming algorithms). Essentially, what I'm getting from this, is the code should be compatible, but there are different algorithms for burning to the PLD. And I correct? Will the same JEDEC file work equally well for a GAL16v8 as it would for a ATF16v8?

Link to comment
Share on other sites

Yeah, they're somewhat finicky from what I gather. But my biggest concern is if the compiled JEDEC is cross compatible.

 

As for the 20v8, I may have to look at it. I don't necessarily need something with 20-22 inputs, and certainly 8 outputs is enough, but it may be useful for larger projects that require a significant about of decoding.

 

I wish the TL866 actually burned the 22V10 since I bought them under the impression that it worked (I only found out there was a bug after it failing to verify my compiled code). I also have a GQ-4X, but it doesn't work with PLDs. Since I have decided that 16v8s would probably be an alternative that would suit most of my needs. And I could always use two if I had to.

 

You imply that you've had a few issues with the 20v8, what were they?

Link to comment
Share on other sites

You imply that you've had a few issues with the 20v8, what were they?

 

I think most of my Lattice GAL20V8B issues have been product related. The specific product isn't being made by Lattice anymore, so any parts bought are either old stock or counterfeit or perhaps even were binned by Lattice. I also suspect the TL866CS doesn't work as well as the old PLD programmer I'm currently using.

Link to comment
Share on other sites

  • 2 weeks later...

Tried some GAL16V8s today. They took a little while to come in the mail. I wrote an equation file in Opal Jr (it's too bad the Windows version doesn't seem to work on my PC). I was unable to compile with the in program module. However, I had no problem compiling with the EQN2JED executable. Afterwards I transfer the compiled JEDEC file over to my Win7 machine and uploaded the code without error. After a short time building a circuit on a breadboard o confirmed that the circuit worked well. These were gray-market Lattice chips. So I can speak for the Atmel variants, or WinCUPL. But at least I have a working method for burning PLDs.

Link to comment
Share on other sites

  • 2 months later...

I have written an equation file that would do my logic functions for a GAL22v10, only to discover that my programmer that supports PLDs (TL866) has a software bug where that specific PLD is concerned. However, I'm under the impression that 16v8 and Atmel variants program and verify without problems. This is kind of a pain considering that I had purchased 20 of the 22v10...

 

 

 

This is past from the latest firmware upgrade v6.50. I confirm cause now I can program any Lattice 22V10 A/B/C/D without any problem. I have try also the same (no original support by programmer) on PLCC form, with fully success! :)

In previous versions I could program to 20V8 in Lattice, and 22V10 in National.

 

MiniProV650_setup.rar

Edited by santosp
  • Like 1
Link to comment
Share on other sites

 

This is past from the latest firmware upgrade v6.50. I confirm cause now I can program any Lattice 22V10 A/B/C/D without any problem. I have try also the same (no original support by programmer) on PLCC form, with fully success! :)

In previous versions I could program to 20V8 in Lattice, and 22V10 in National.

 

attachicon.gifMiniProV650_setup.rar

 

Thank YOU!!!

Link to comment
Share on other sites

  • 2 weeks later...

 

This is past from the latest firmware upgrade v6.50. I confirm cause now I can program any Lattice 22V10 A/B/C/D without any problem. I have try also the same (no original support by programmer) on PLCC form, with fully success! :)

In previous versions I could program to 20V8 in Lattice, and 22V10 in National.

 

attachicon.gifMiniProV650_setup.rar

 

I might have to get more chips as I only had one 22v10b on hand but I'm still getting programming failures even with this new 6.5 version of the software. I did the firmware update as well. :(

Link to comment
Share on other sites

  • 2 weeks later...

I've been meaning to test this and verify one way or the other for some time. I had a chance today, so I broke out my MiniPro and some GAL22v10, Lattice brand.

 

I wrote a short equation file that used 4 inputs and two outputs. After test burning a ported version on a 16v8 I verified that my equation work. So I proceeded to test a 22v10. No luck. Error at memory location 32 during verify.

 

I tried a second chip, and it was the same.

 

I tried a third chip....it programmed and verified successfully. In disbelief, I broke out my breadboard and checked the circuit. It works. I tried the remainder of the 20 chips that I had, only 5 would verify.

 

These chips were new, however, were purchased from the asian market. Not to mention that this type of PLD is quite old. This leads me to suspect that these are refurbished, or counterfeit. I suppose a small chance there may be of the algorithm not being solid enough to program EVERY IC. But I find that extremely hard to believe.

 

If someone want to attempt to program these 22V10Ds with a 'known good' programmer, I'd be happy to mail some to you.

 

EDIT: If you are interested in trying to program these, send me a PM. I'll cover the shipping to you. But you have to post the results.

Edited by jdgabbard
  • Like 1
Link to comment
Share on other sites

  • 2 months later...

I am trying to get into gal programming. I have a Amiga accelerator card with a bad pal. I downloaded wincupl and compiled the code. I uploaded to a gal20v8 but it doesn't work. Can anyone help? Does the code need to be changed to support gal? Or is wincupl not compatible with my gals? NSC brand.

 

http://www.thule.no/haynie/cpumods/a2620/pals/u504.pld

 

Thanks

Link to comment
Share on other sites

  • 1 month later...

I am trying to get into gal programming. I have a Amiga accelerator card with a bad pal. I downloaded wincupl and compiled the code. I uploaded to a gal20v8 but it doesn't work. Can anyone help? Does the code need to be changed to support gal? Or is wincupl not compatible with my gals? NSC brand.

 

http://www.thule.no/haynie/cpumods/a2620/pals/u504.pld

 

Thanks

Ziggy, I apologize that I'm just seeing this. It's hard to say... I could probably try compiling and test that it works on a similar chip (22v8). But whether that is the code that is supposed to go onto your particular board or not is a whole other story, and I don't have that machine to work with. So it's probably of no use to you.. I've still been messing with GALs. I just posted a link to an instructable I wrote on one last night. But I know nothing of Amigas. One thing to note is that the chip it calls for is different from what your link calls for. However, I'm sure its only a different variation that is pin compatible. So as long as your used the proper chip selection for compiling and burning the JEDEC I would assume it would work. At a glance it looks like the code would work, and that it is simply combinational logic.

Link to comment
Share on other sites

I eventually installed wincupl and the code compiled correctly. It also is the right code for the Amiga and I found atmel brand gals. I burned successfully but it doesn't work in the board. I have lattice gals also, but the wincupl code doesn't seem to work on the lattice gals at all. I have had no success compiling the code in anything but wincupl and that is where I might need help.

 

 

Sent from my iPad using Tapatalk

Link to comment
Share on other sites

My recent experience proves that Lattice gals work fine with WinCUPL. My guess, you have something wrong somewhere else on the board. If the code compiles correctly it should burn to a Atmel or Lattice fine. My recent research shows that the JEDEC files produced are pretty much universal within the variants of a particular chip.

 

Here is an example of a Lattice chip that is running a JEDEC that was written and compiled using WinCUPL: http://atariage.com/forums/topic/254989-dual-bcd-to-hex-7-segment-driver/

 

Now, they do have different programming protocols, so you'd have to program them with the specific chip setting. However, barring that, the only other issue I could say would prevent it from working is it not being correct for your version of the board. If it is for your version, you have a different hardware issue. Faulty capacitors are notorious for causing problems...

Link to comment
Share on other sites

  • 2 weeks later...
  • 2 weeks later...

That must be my problem then. I have a working pal so I know it's my chip that's not working. What would I do to the above code I posted for a pal to make it work for a gal?

 

 

Sent from my iPhone using Tapatalk

The JEDEC created SHOULD be compatible. There may be an issue with the routine used by the programmer to write the fuse map. An example is that the TL-866 supports GAL16V8 and 22V10, but doesn't mention any PAL versions that I'm aware of.

 

The PAL family is reprogrammable, however, the chip may have been written to many times. Hard to say.

Link to comment
Share on other sites

Well, if the code is for a 20v8 it likely would compile and work on a 22v8 with minor changes to the code. However, you would likely soon fine it didn't work (depending on pins used...I haven't looked at the code in a while and I'm on my phone). It depends on the features used.

 

Alternatively, you could buy this and have a few to experiment with...

 

https://www.ebay.com/ulk/itm/230505069621

Link to comment
Share on other sites

  • 2 weeks later...

I ended up with some lattice brand 20v8s like those in the listing. The code I linked earlier compiled and I was able to burn the compiled code with no issue but the chip still won't work in the slot to replace a known working chip. Odd.

 

 

Sent from my iPhone using Tapatalk

Link to comment
Share on other sites

  • 2 years later...

Anyone have any experience programming AVR chips with the tl866? Mainly looking for info on how to program a ATTINY85. I have no clue how to program the program hex and the fuse hex. I've only ever used PIC's so this whole AVR chip thing is new and totally foreign to me. I found this quick start guide and it's got me a whole load of nowhere.

 

https://www.elektor.com/downloads/dl/file/id/1489/getting_started_with_the_minipro.pdf

 

Does the program hex go to the code or the data?

 

Does the fuse hex go to the config?

 

Hoping someone can point me in the right direction. One thing is for sure, PIC's are much easier to work with than AVR's :(

Link to comment
Share on other sites

Program hex goes to the code.

 

I've only programmed existing files, so haven't seen a use for data. Probably good for customisations where you want the code to stay exactly the same each time, but want some other numbers changed.

 

Fuse data goes to the config. I think fuse information called out in the code will update the config (can't remember). Otherwise, update it manually. Take a screen shot when you've got it the way you need it.

  • Like 1
Link to comment
Share on other sites

Program hex goes to the code.

 

I've only programmed existing files, so haven't seen a use for data. Probably good for customisations where you want the code to stay exactly the same each time, but want some other numbers changed.

 

Fuse data goes to the config. I think fuse information called out in the code will update the config (can't remember). Otherwise, update it manually. Take a screen shot when you've got it the way you need it.

 

Yep, that exactly it. program hex goes to the code, fuse hex goes to the config. :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...