atferrari said:
decided to learnt about CPLD and FPGA and commenced to read "The design warrior's guide to FPGAs" by C. Maxwell. Clear and to the point.
Budget is a concern. Still considering costs for a starter kit, probably Coolrunner II from Xilinx. Yes it's a CPLD.
As a self taught hobbyist I don't like to waste my time and money as I did many times in the past.
My quyestions, which if possible, please reply in same order:
0 - Should I read something else before, on CPLDs?
1 - All what I will know about CPLD will be useful later with FPGAs? Am I not going to a dead end instead?
2 - Do you know of a cheaper (costwise) way to start with CPLD? If so, how advisable compared to Coolrunner II?
3 - Once I finished the manual what should be my next reasonable step?
4 - With the abstraction level that those languages seem to allow, how much detail do I need to go into for every "component" I need to implement? Honestly I forgot many details on flip flops, counters or shift registers but I think I still know well what they do and when I need them? (Well I hope it will be so...)
5 - Advices / comments on the above, appreciated.
Agustín Tomás
0- understand their architecture, which to a large degree, will be vendor specific.
1- Not all you learn about CPLDs will be re-usable in FPGA world. The two have very different architectures. Whether or not you are headed down a dead end is up for you to decide.
2- Coolrunner II is good if you _REQUIRE_ the capabilities of it. Since you like xilinx, consider XC72xx family of CPLDs, less capability & smaller macro-cell counts than coolrunner but lots cheaper. Also consider using webpack dev tools. They are free.
3- After your understand the architecture of your logic parts, and you have a design, try and implement one! Do some experiments..
4- In most cases, you do not need to understand your design at the _GATE_ level but you will need to understand it at the component level. You need to understand this so you will be successful at interfacing the various parts of the design together. Also, kinda hard to describe hardware that needs to use flip-flops if you dont understand them.
5- My advise is first understand your intended design so you can choose the right part to do the job. If you over specify, you'll pay alot more for features you dont need/use and if you under specify, you'll struggle to make it work.
6- A good thing to keep in mind, FPGA's are register rich (gobs and gobs of flip-flops) whereas CPLD's dont have many relatively speaking. But CPLD's provide much more deterministic timing. You application should illustrate which one it needs. And generally, if choosing between the two, more complicated designs will be easier in FPGA's.
7- Consider micro controllers. These can be low cost and easy to program. This discussion centers around FPGA / CPLDs but I remind you consider other options that are altogether different.