Your experience with CPLDs
Paul Baker
Posts: 6,351
The discussion about the dicontinuance of the SX52 degenerated into a discussion of CPLDs. So I thought Id startup a new thread dedicated to its discussion. I'll start it by asking for stories from Parallax forum members about thier experience with CPLDs and what benifits/troubles you had with the particular company and the particular chip. I'll start with mine:
For last years SX design contest, my intended entry was a 50MHz digital storage scope (logic analyser), and it had a wealth of features, a 128KB buffer 15ns SRAM, 8 I/O channels with internal and external triggering, USB connection for uploading datasets, SD/MMC card interface for storing datasets, TV output to display datasets on television, 2 rotary encoders (spin and scroll) to navigate the dataset, SEEPROM to store user preferences, alphanumeric display to provide feedback (menus etc) when the unit was used out in the field, and numeric keypad entry.
Obviously, this requires way more I/O than a SX52 can provide, the obvious choice a CPLD or FPGA. I didnt like the external boot PROM of FPGAs so I decided to go with a CPLD. After comparing several different companies CPLD offerings, I decided on Atmel, they had alot of documentation and that made me think it was a safe choice. They also had a free program WinCUPL and directions on how to create an ISP JTAG programming cable.
Months later after I spent ~$150 on PCBs and components (not enough time left to do proper prototyping since I got into the contest late) I was at the step of writing the program for the CPLD. The documents for WinCUPL were volumous but vague, requiring me to constantly flip back and forth, reading and rereading passages. Wrote the state machine, didn't compile and spat out some gobbly-gook I couldn't find an explanation for in the·documents. Reduced the scope of the state machine, didn't compile, made the simplest circuit I could think of (rows of latches) it compiled. Ran the fitter software and it threw a fit (funny now, but not then), never could get the fitter software to work properly.
Missed the SX contest deadline, haven't worked on the board since, now Ive got a pretty and expensive paper weight.
In my height of frustration I wrote atmel seeking guidance. They responded that they didn't write the program, the company that did is out of business and they provide it as-is (ie no tech support), but if I wanted to purchase thier professional program ($199) they'd be happy to help (if I wasn't a polite person I would have told them where they could stick thier professional development package). Moral of the story is: good docs doesn't mean good customer service, and don't use atmel CPLDs.
What's your story?
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
·1+1=10
For last years SX design contest, my intended entry was a 50MHz digital storage scope (logic analyser), and it had a wealth of features, a 128KB buffer 15ns SRAM, 8 I/O channels with internal and external triggering, USB connection for uploading datasets, SD/MMC card interface for storing datasets, TV output to display datasets on television, 2 rotary encoders (spin and scroll) to navigate the dataset, SEEPROM to store user preferences, alphanumeric display to provide feedback (menus etc) when the unit was used out in the field, and numeric keypad entry.
Obviously, this requires way more I/O than a SX52 can provide, the obvious choice a CPLD or FPGA. I didnt like the external boot PROM of FPGAs so I decided to go with a CPLD. After comparing several different companies CPLD offerings, I decided on Atmel, they had alot of documentation and that made me think it was a safe choice. They also had a free program WinCUPL and directions on how to create an ISP JTAG programming cable.
Months later after I spent ~$150 on PCBs and components (not enough time left to do proper prototyping since I got into the contest late) I was at the step of writing the program for the CPLD. The documents for WinCUPL were volumous but vague, requiring me to constantly flip back and forth, reading and rereading passages. Wrote the state machine, didn't compile and spat out some gobbly-gook I couldn't find an explanation for in the·documents. Reduced the scope of the state machine, didn't compile, made the simplest circuit I could think of (rows of latches) it compiled. Ran the fitter software and it threw a fit (funny now, but not then), never could get the fitter software to work properly.
Missed the SX contest deadline, haven't worked on the board since, now Ive got a pretty and expensive paper weight.
In my height of frustration I wrote atmel seeking guidance. They responded that they didn't write the program, the company that did is out of business and they provide it as-is (ie no tech support), but if I wanted to purchase thier professional program ($199) they'd be happy to help (if I wasn't a polite person I would have told them where they could stick thier professional development package). Moral of the story is: good docs doesn't mean good customer service, and don't use atmel CPLDs.
What's your story?
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
·1+1=10
Comments
What Atmel part were you using?It's possible that the tortuous route of the Altera freebie tools targetting a 7000 device, run the output through Atmel's pof2jed tool, would let you escape from the hell that is wincupl, and finish development on your board.
Then again, the 30-day free trial of ProChip Designer V4.0 might also do the job. At first glance, it looks capable enough, and it should be orders of magnitude less annoying than wincupl, which, unless it's abandoned its roots, is a 15-year-old bit of software.
Of course, if a Xilinx CPLD happens to be pin compatible with your chosen CPLD, then the answer's pretty simple.
Steve
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
·1+1=10
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
·1+1=10
CPLDs and microcontrollers are different beasts, they each have thier strengths and weaknesses. The strength of microcontrollers is thier ability to perform complex operations where one operation (instruction) is unique and indifferent to the other operations performed (in most circumstances you can program any instruction at any point), their weakness (for the vast majority, though there are exceptions) is they are serial in nature, they cannot perform multiple operations at the same time.
The strength of CPLDs is that they are parrallel in nature, CPLDs are comprised of macro-cells, and each operates independantly and simultaneously, so you can perform multiple operations at the same time, you can also define interrelationships between macro-cells so that you can increase the complexity of the operation performed. The weakness of CPLDs is that the operational ability of any single macro-cell is rather limited. Each macrocell at its heart is just a single bit register, feeding the input of the register is combinatorial logic which you define and which gets its input from external signals and other macrocells. CPLDs are a natural fit for state machines, and you can define many state machines within the CPLD at the same time, and they all work simultaneously, and can be independent of each other or interrelated, depending on how you program them.
So both CPLDs and microcontrollers have thier own place, and there are several new chips availible that actually combine both CPLD and a microcontroller onto the same chip so you can exploit the best of both worlds. Ive seen a chip that contains an programmable analog sub-block, a DSP and CPLD, and they can do amazing stuff such as real time MPEG encoding of a analog video signal.
I hope this clears up the difference between the two for you.
If you want more detail of how CPLDs are constructed look at the construction of a PAL (also called PLDs and GALs)·such as the 22V10, CPLDs are the same way but more complex (thats where the C in CPLD comes from).
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
·1+1=10
Post Edited (Paul Baker) : 11/2/2005 4:11:13 PM GMT
I haven't had a problem with that- Is it simply a matter of # of components?
Ryan
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Ryan Clarke
Parallax Tech Support
RClarke@Parallax.com
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
·1+1=10