Beginnen met CPLD/FPGA

Ik ben normaal meer van de software maar CPLD en FPGA zien er altijd erg interesant uit in mogelijkheden. Nu wil ik hier graag een start mee maken maar zie door de bomen het bos niet meer. Het grootste probleem is waar kan ik als hobbist, liefst binnen nederland,een leuke goedkope development kit kopen?

Uiteindelijk wil ik een memory controller maken voor een project met een 68k proccessor. En mogelijk nog wat I/O taken of bank switching. Het zou dus mooi zijn als het ontwikkelbordje op 5v werkt of tolerant is. Ik sta nu nog open voor zowel Xilinx als Altera, al heb ik een lichte voorkeur voor Xilinx omdat ik daar goedkope bordjes van uit China zie op Aliexpress en dergelijke. Maar ben niet zo geduldig en heb het graag sneller in huis dan 8-12 weken.

Ik werk het liefst onder Linux (ubuntu) maar heb vanwege games ook Windows 10 als het moet. Nou heb ik wel gezien dat beide fabrikanten een linux versie hebben van de software.

Ik heb ook al een Guzunty voor de raspberry pi (XC9572XC van xilinx) waar ik nooit iets mee heb gedaan. Dus eigenlijk zou ik daar al mee kunnen experimenteren. Heb alleen nog geen idee waar ik moet beginnen.

Ik hoop dat ik dit in de juiste sectie heb geplaatst en dat iemand mij een advies kan geven voor een shop in nederland.

Alvast bedankt

5V tolerant wordt tegenwoordig volgens mij lastig, zeker bij FPGA's. Misschien zijn er wel 5V tolerante CPLD's.
Verder heb ik zelf in het verleden zowel met Xilinx als met Altera gewerkt, en vond de IDE van Altera stukken fijner werken.
Terasic maakt heel mooie ontwikkelbordjes met ingebouwde JTAG programmers, maar deze zijn niet heel goedkoop. Wellicht kan je hier een advertentie bij V&A inschieten voor een betaalbaar tweedehandsje?

Zo goed als het vroeger was, is het nooit geweest.

5V gaat er overal langzaam uit. 3V3 is bij Altera en Xilinx ook al aan het verdwijnen, 1.8V is de nieuwe standaard voor LVCMOS IO...
Volgens mij is het laatste 5V tolerant device van Xilinx een coolrunner CPLD uit 1998....

Aan de andere kant, volgens mij bestaan er FPGA implementaties van de 68K CPU, dus dan heb je helemaal geen fysieke CPU, en dus ook geen 5V meer nodig.

Altera is ook mijn voorkeur qua IDE. Hoewel Xilinx' zijn nieuwe IDE (vivado) inmiddels wel ergens op begint te lijken. Maar vivado ondersteund alleen de nieuwste devices (die al moeite hebben met 3.3V, laat staan 5V!)

Lattice en Microsemi hebben ook aardige chipjes, maar zijn slechter verkrijgbaar. En hun respectievelijke IDE is zeker brakker dan die van Xilinx/Altera. Hoewel er voor sommige Lattice chips inmiddels een open source toolchain is.

Altera heeft in de MAX serie nog 5V (tolerante) devices, mits je dus een device van een paar generaties terug pakt.

Als development kit kan ik de DE0-nano aanraden. Een zeer capabele FPGA. Daarnaast hebben ze m.i. de juiste insteek: Een aantal dingen als RAM kan je lastig extern aansluiten, want veel pinnetjes en moet rap gaan -> dus die onboard. Andere dingen waar je mogelijk mee wil spelen als 7 segment displays, schakelaars, VGA-out kan je makkelijk zelf in mekaar prutsen op een externe connector. Kortom, die mag je zelf doen.

Ik geloof dat je voor weinig extra de0-nano-soc kan kopen. Dat is nog leuker: Een complete Linux machine aan boord, en ipv een paar megabyte aan RAM heb je nu 1Gb aan ram...

Ik heb zowel bij "microcontrollers" als bij "FPGA fabrikanten" in het verleden een muntje opgegooid en een keuze gemaakt. In beide gevallen ben ik later geforceerd om toch over te stappen. De "andere" fabrikant bevalt mij VEEL beter in beide gevallen. Ik ben in beide gevallen bij de fabrikant met de A geeindigd. :-)

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Dat is dus drie keer een stem voor Altera. Ik ga me zeker verdiepen in wat er in het Altera kamp te krijgen is. Maar als ik het goed begrijp werken bijde met VHDL en zou in elk geval de basis gelijk moeten zijn. Net zoals CPLD en FPGA intern anders zijn maar als je het vanuit VHDL bekijkt ongeveer dezelfde basis 'instructies' kunnen uitvoeren. Als ik hrt tenminste goed begrijp.

Ik heb even gekeken naar de DE0-nano maar die is nog aardig aan de prijs. Er zit wel een hoop op en heeft veel mogelijkheden maar voor nu denk ik nog even iets te 'eng' om daar mee te spelen. Ik zoek echt iets in de richting van 30-50 euro om te starten. Ook met het oog op mijn uiteindelijke doel.

Het zou een mooie oplossing zijn om de 68k in de FPGA te 'draaien' maar dat gaat voor mij helaas niet lukken. Het gaat om een bestaand systeem waar ik een uitbreiding op wil maken. Het gaat om de Sega Megadrive en die werkt op 5v dus er moet een interface zijn die hiermee om kan gaan. Vandaar dat het mooi zou zijn als het 5v tolerant zou zijn. Ik weet van de XC9572XL dat die 5v tolerant is. De meeste FPGA's dir ik voorbij heb zien komen zijn 3.3v op de I/O en intern inderdaad al vaak op 1.8v.

Misschien toch maar eens kijken of ik de XC9572XL die ik heb op de Guzunty kan 'flashen' met een knipper led demo. En ondertussen kijken naar een kleinere altera variant.

Bedankt in elk geval voor de antwoorden en suggesties zover

Arco

Special Member

Zet een 74HCT573 als levelshifter ertussen. Propagation delay is maar 15nS, meestal geen probleem... (en in QFN20 heel klein...)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Op 30 juni 2016 18:26:39 schreef Archer:
Maar als ik het goed begrijp werken bijde met VHDL en zou in elk geval de basis gelijk moeten zijn. Net zoals CPLD en FPGA intern anders zijn maar als je het vanuit VHDL bekijkt ongeveer dezelfde basis 'instructies' kunnen uitvoeren. Als ik hrt tenminste goed begrijp.

Beide kun je inderdaad met VHDL programmeren.
Maar je moet het absoluut niet zien als instructies die uitgevoerd worden.

VHDL is een beschrijving van de gewenste hardware, die afgebeeld wordt op de LUTS en flip-floppen van de FPGA (of CPLD). Als je VHDL bekijkt als software die uitgevoerd wordt maak je het jezelf erg lastig. Als je je realiseerd dat alle VHDL vertaald word in logische waarheidstabellen (LUTS) en toestandsvariabelen (al je signals en persistente variabelen, Flipfloppen) dan kom je een stuk verder.

Je zou eens bij Waveshare kunnen kijken:
http://www.waveshare.com/product/fpga-tools.htm
Ze verkopen ook op Ebay:
Xilinx
Altera
Ik heb (nog) geen ervaring met deze bordjes (Ik heb een spartan 3E starter kit) maar ze hebben alle basic dingen die je nodig hebt: voeding en flash. (Nog geen programmer!!)
Verder kun je hun breakout board gebruiken of er zelf een maken en daar hun bordje in steken, dan hoef je in ieder geval zelf de FPGA en flash niet te routen.
Ik wil in de toekomst Altera ook een keer een kans gaan geven. (Xilinx gebruikten we via school)

Wat voor software wordt er gebruikt voor Altera FPGA's? Altera Quartus (prime)?
Voor Xilinx heb ik vooral webpack ISE gebruikt, nog geen vivado.

Helaas is de 74HCT573 niet volledig geschikt omdat deze niet bi-directioneel is. Maar dat zou voor de adres bus een optie kunnen zijn.

Ik weet dat het niet echte instructies zijn, daarom had ik dat ook tussen haakjes staan. Het is wel een omschakeling als je "normaal" een CPU gewend bent maar ik weet dat VHDL de hardware beschrijft en dat dit wordt vertaald naar de interne verbindingen die nodig zijn om de gewenste functionaliteit te krijgen.

bprosman

Golden Member

De jongere generatie loopt veel te vaak zijn PIC achterna.

Ik gebruik nu standaard het DE0-Nano FPGA bordje voor al mijn projecten en proeven. Daarvoor heb ik enkele onderliggende enkelzijdige I/O printen al gemaakt waar volgens de toepassingen de drivers, interfaces en buffers opzitten. Met 88 vrije I/O pinnen, allemaal gelijkwaardig te programmeren, kun je bijna alles aan. Er liggen altijd minstens 8 tot 16 pinnen gewoon aan de logic analyser,een enorme hulp tijdens de ontwikkeling van je toepassing.

https://c3.staticflickr.com/9/8640/16753544242_bcbdfa4c4f_c.jpg
R40_0571 by Frans, on Flickr

https://c1.staticflickr.com/8/7586/16564346088_f82987cd3b_c.jpg
R40_0544 by Frans, on Flickr

Hier zie je zelfs 2 aangesloten LCD display's van elk 4x20 char in de toepassing. Die werken ook op 5V, ik gebruik soms 2 weerstandjes om de inputs niet boven de 3.3V te laten gaan als de andere kant 5V stuurt. Maar als het zeer snel moet gaan ben je beter af met een echte levelshifter. Het keyboard is een 5x8 = 40 toetsen matrix met gewone kleine druktoetsjes van 20 cent onder een opdruk folie.

https://c8.staticflickr.com/8/7590/16147371583_5809ac154a_c.jpg
Lineaire stage controller for macro-micro photography R40_0607 by Frans, on Flickr

https://c8.staticflickr.com/8/7208/27800668951_247eabc1d0_c.jpg
Test for new power led module P6246027 by Frans, on Flickr

Ik gebruik verilog als programmertaal met de gratis Quartus (nog versie 12) tool. Met VHDL heb ik nooit van de baan kunnen gaan, vergeleken met verilog is het 3 x meer typen en minder overzicht.

De voorgaande bordjes waren de CPLD MAX-2 versie's, daarvan heb ik er zeker 7 stuks in gebruik. Die hebben ook veel I/O's maar zijn nu meer out-date door de nieuwe FPGA DE0-Nano voor ongeveer dezelfde prijs.

Arco

Special Member

Helaas is de 74HCT573 niet volledig geschikt omdat deze niet bi-directioneel is.

Dan neem je een 74HCT245... ;)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Op 30 juni 2016 18:26:39 schreef Archer:
Misschien toch maar eens kijken of ik de XC9572XL die ik heb op de Guzunty kan 'flashen' met een knipper led demo. En ondertussen kijken naar een kleinere altera variant.

Volgens mij is dat een 72 macrocel ding. Dat is prachtig om een "bus controller" voor een oude MCU mee te maken, maar niet iets om echt iets IN te zetten.

Met bus controller bedoel ik dan: adres X geselecteerd dan de RAM CS activeren. Adres Y dan ROM. Dat soort dingen.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

72 macrocellen was voor mij ruim genoeg voor her-implementatie van een ZX81 ULA: een kleine verzameling (schuif)registers, flip-flops, tellers, tri-state uitgangen en logica om eea. aan elkaar te knopen. Qua functie equivalent aan zo'n 20 stuks 74LS... IC's.

Daarvoor heb ik een zgn. "memory mapper" (RAM block-switch mechanisme voor MSX) in een XC9536 gestopt: 4 stuks 5-bit brede registers, ook weer tri-state uitgangen, en wat decodeer logica daar omheen. Al gauw 10 á 12 stuks 74LS... IC's als je die zou pakken.

Dus afhankelijk van wat je aan die 68000 wilt hangen, is een XC9572XL :+ misschien wel bruikbaar. Of pak een XC95144XL...
Maar vooral handig als een leer-instap in de wereld van programmeerbare logica. Zo gauw 't iets complexer wordt, zit je toch heel snel naar FPGA's te kijken.

Op 30 juni 2016 13:41:31 schreef Archer:
Ik heb ook al een Guzunty voor de raspberry pi (XC9572XC van xilinx) waar ik nooit iets mee heb gedaan. Dus eigenlijk zou ik daar al mee kunnen experimenteren. Heb alleen nog geen idee waar ik moet beginnen.

Niks mis mee om daar dan eens mee te beginnen. Als je dan een beetje aan de work-flow gewend bent, heb je ook een beter idee wat je zoekt / waar op te letten.

Persoonlijk vind ik Xilinx of Altera (of Lattice, ...) niet meer zo'n interessante vraag als ik vroeger dacht. Zoek een device (cq. -familie) die qua eigenschappen past bij jouw toepassing. CPLD of FPGA, aantal I/O's, aantal macrocellen/LUTs, prijs, verkrijgbaarheid, courant of obsolete, gewenste chip-behuizing, 5V tolerantie, intern configuratie flash of niet, beschikbare documentatie, tutorials, etc etc.
Software / programmer en dergelijke volgt dan daaruit, en 'moet je mee leren leven'. :7

5V tolerant: Xilinx XC9500XL en CoolRunner XPLA3 families. Die laatste is redelijk 'obsolete' dacht ik, maar chips/boards zijn nog wel te vinden.
Altera: MAX 3000A of MAX 7000S families. Allemaal al redelijk oud spul.
5V tolerante FPGA's ga je niet meer vinden, tenzij je met antieke FPGA's wilt werken. Maar 5V interfacing is niet altijd lastig of ingewikkeld. Lees bijv. de diverse app notes van de fabrikanten er eens op na.

Qua boards is er aardig wat te kiezen. Hangt voornamelijk af van in hoeverre je bereid bent er zelf spul op/aan te knutselen. Zo weinig mogelijk -> zoek board waar (bijna) alle benodigde I/O op zit. Veel knutselen -> losse IC's pakken & zelf een custom board ontwerpen, behoort tot de mogelijkheden.

bprosman

Golden Member

De jongere generatie loopt veel te vaak zijn PIC achterna.

EP2C5 heeft 4608 LE's, 119818 bits ram 2 PLL's en 18 embedded multipliers. Het boardje heeft ook zijn eigen 4Mbit configuratie chipje. De meeste van mijn toepassingen zouden erop kunnen draaien. Voor die prijs kun je idd wel starten. Extra devices zitten er niet op. Dat hangt af van je toepassing. Ik gebruik vb wel een 8 channel adc bit 12 om pot meters om te zetten naar ingestelde waardes. Ook de I2C EEPROM gebruik ik regelmatig om parameters te configureren voor de toepassingen. Als je veel RAM of DRAM nodig hebt ben je ook beter met het DE0-Nano boardje.

Ik zou in ieder geval met die 4608 LE's al heel veel kunnen doen, zeker als je vanwege de kostprijs het andere moet laten.

Het DE0-Nano boardje plug je gewoon in je USB van de pc en je start, geen externe voeding nodig. Maar alles heeft zijn prijs. Bij mij is het een standaard board geworden waarvan ik altijd een onderliggende interface board liggen heb. Ik heb al 3 DE0-Nano boards in gebruik. De basis programma's bestaan al(zoals de LCD display en matrix keyboard). Moet je iets nieuws testen dan start je enorm snel. Is het maar voor eenmalig gebruik dan valt het meestal te duur uit.

een 5k variant van de EP1 (dus de voorloper) kan een AVR CPU simuleren..... ruim 4000 elementen nodig, dus nog zo'n 10% over.

Dus... ZO'n 9536 of 9572 daar kan je prima een paar bits aan schuifregister inzetten, maar niet de ingewikkeldere dingen. Het is helemaal wat je er mee wilt. Dus voor die "bus-controller" die de bovenste adreslijnen decodeert, wat waitstates introduceert en misschien een paar bits controlregister heeft om bijvoorbeeld RAM-of-ROM te mappen op een bepaald adres (dat had je bijvoorbeeld in de C64).

Maar wil je dus wat ingewikkelders maken, zoals "een CPU" of "een UART met baud rate divider" dan is die 9572 dus aan de kleine kant.

Terasic verkoopt z'n ontwikkelkits voor vrijwel dezelfde prijs als de losse chips in "enkelvoud" bij farnell. En zo kan je ook kitjes in china kopen die vergelijkbaar kwa prijs zijn met de losse chips.

Let er wel op dat zo'n DE0-nano met ingebouwde programmer komt, terwijl je bij de chinese kitjes vaak nog een programmer moet kopen.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Ik heb besloten om toch maar geduldig te zijn en via aliexpress een aantal dingen te bestellen. Dus over 2 maanden zal het meeste hoop ik wel aangekomen zijn :)

Omdat ik de XC9572XL al heb liggen ga ik daarmee starten. Ik heb wel een paar extra bordjes besteld die wat makkelijker zijn dan het Guzunty printje. Maar ik ga ook zeker naar Altera kijken en heb een MAX II EPM240 en CycloneII EP2C5T144 besteld. Als eventuele vervanging voor Arduino indien nodig ook maar een STM32 nu ik toch bezig was. Voor het 3.3v <-> 5v verhaal heb ik misschien iets gevonden in de TXS0108E. Werkt het niet dan is dat jammer, koste maar 40 cent :D

Ik heb nu in Xilinx ISE een "project" gemaakt met een schema die een 74HC157 zou moeten kunnen vervangen. Dat is redelijk gelukt maar het lukt nog niet om het genereren/compilen/syntesiseren door te lopen. Ik krijg een foutmelding dat er geen outputs zijn gedefinieerd en heb het tijdelijk even opgegeven. Het vinden van tutorials is niet heel erg succes vol gebleken maar ik denk wel dat ik een heel eind ben gekomen.

Ik hoop dat iemand mij kan helpen om de juiste weg te vinden naar het oplossen van mijn issue. Ik zal later nog de exacte melding hier plaatsen.

Alvast bedankt

Op zich heb je voorlopig die hardware nog helemaal niet nodig. Je moet toch eerst HDL en de ontwikkelomgeving leren kennen. Dan je implementatie maken. Dmv simulatie kun je de hele zwik testen, zonder hardware. Daarna is het inderdaad best leuk om op de target draaien en te zien dat exact hetzelfde gebeurt als in je simulatie :-)

@rew hieronder: blinky werkt gegarandeerd als je eerst een goede simulatie gedaan hebt en je synthy/p&r loopt er foutloos door. Dat mag dan nauwelijks nog testen heten. Uiteraard is hardware daarna fijn, daar gaat het uiteindelijk om.

[Bericht gewijzigd door flipflop op woensdag 13 juli 2016 17:15:31 (26%)

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein

Nah. Het is erg fijn als je de "blinky" in echte hardware kan testen....

72 macrocellen was voor mij ruim genoeg voor her-implementatie van een ZX81 ULA: een kleine verzameling (schuif)registers, flip-flops, tellers, tri-state uitgangen en logica om eea. aan elkaar te knopen. Qua functie equivalent aan zo'n 20 stuks 74LS... IC's.

Tja, Ik wil al snel een SPI module ontwerpen die dan een schuifregister heeft en tot 24 moet tellen en als ie bij die 24 is alles in de "werkregisters" moet stoppen. 5+24+24 = al 50 bits aan "ram". De 72 zijn dan snel op....

[Bericht gewijzigd door rew op woensdag 13 juli 2016 14:15:59 (78%)

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Die heb je namelijk nodig als je je "blinky" in hardware wil testen. :-)

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

De foutmelding kan ik helaas niet meer genereren. In een poging de pin mapping met de hand te doen had ik mijn schema verwijdert in de project directory :(

Ik zal dus weer vanaf niets moeten beginnen, maakt niet veel uit want het werkte toch al niet. De simulatie is wel handig voor complexe dingen maar snap er nog niet veel van. Het lijkt op een logic analyzer scherm dus zal daar wel uit komen, maar een "simulatie script" is dan wat het weer lastig maakt.

Ik heb ook nog geen idee hoe veel resources sommige dingen vragen van een CPLD/FPGA. Zover ik begrijp gebruikt een 8bit register al 8 macrocell's en dan ben ik snel door de 72 heen die ik nu beschikbaar heb.
Wat ik nu als eerste ga doen is proberen 4 leds te laten knipperen op volgend na elkaar. De bordjes die ik heb besteld hebben namelijk al 4 leds aan boord en dan kan ik ze snel testen als ze er eenmaal zijn :D

Als me dat is gelukt wil ik proberen om een soort SPI -> SRAM interface te maken. Maar ik begrijp dat dit al snel veel macrocells gaat verbruiken dus? Het maakt niet veel uit hoeveel SRAM ik kan aanspreken als de timing en lezen en schrijven maar goed gaat. Ik snap de theorie wel maar het is me nog nooit echt gelukt met een Arduino om het voor elkaar te krijgen.

Ik heb voor de Altera wel een programmer besteld maar voor Xilinx nog niet, omdat ik had gezien dat het ook via een Arduino te doen was. En ook omdat de Xilinx programers meer kosten dus was nog aan het kijken of ik dat wel of niet ging doen. Ik heb wel al eens in het verleden een JTAG-KEY Tiny van Amontec besteld, misschien dat die ook wel te gebruiken is?

SPI-> SRAM is een leuk project om naar toe te werken. Prima keuze.

Als ik ga tellen hoeveel bits je dan nodig hebt, dan denk ik aan 8 databits, 20 adres bits en 4 "command" bits. misschien nog wat er om heen (onder andere: tel tot 32 bits). Ik zie geen essentiele reden waarom je snel over de 72 heen zou gaan. Maar... Hij zit wel in 1x gewoon vol.

Ik wilde ooit een PWM controller bouwen. Dus via SPI de PWM waardes aanleveren en dan in "hardware" de PWM uitvoeren. Dan heb je per kanaal al 16 bits nodig voor de teller en de huidige PWM waarde. Heb je makkelijk 20 pins beschikbaar, maar kan je maar een paar van die kanalen maken.

Dus.... m.i. is zo'n 72 macrocell ding leuk om een bus controller te maken voor een C64 of zo, ALS adres=0xAxxx dan selecteer ROM2. ALS adres = 0xExxx selecteer ROM1. ALS adres = 0x0000 en WE dan pak databus in control register. En het control register beinvloed dat: ALS adres=0xAxxx dan als CR.1 selecteer ROM2 anders RAM.

Dit gaat allemaal nog net. Maar wil je een SPI protocolletje afhandelen, dan is die 72 al snel weinig.

Als je uitzet hoeveel "FPGA" je krijgt voor je euro, dan kan je een tijdje "veel meer voor weinig extra centen" krijgen. Totdat het ineens lineair met het aantal celletjes wordt. Dus zo'n 600k ding is enorm prijzig.
Dat ding kost zo'n EUR 10 per K aan logic elements. Dat ligt helemaal niet zo ver van de EUR 20 voor een 5k Cyclone vandaan (prijs van 10 jaar geleden!). Je betaalt kennelijk een factor twee voor "stratix" die wat heftiger is dan Cyclone.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Op 14 juli 2016 09:01:11 schreef Archer:
...De simulatie is wel handig voor complexe dingen maar snap er nog niet veel van. Het lijkt op een logic analyzer scherm dus zal daar wel uit komen, maar een "simulatie script" is dan wat het weer lastig maakt.

"is wel handig"? In de hoek jij!
Simulatie is voor complexe designs een must, en voor eenvoudige alleen maar super handig. Het script wat jij noemt is een testbench, wat een laag boven je te testen module (UUT) is. Je instantieert je UUT in de testbench en die run je vervolgens in de simulator. Ik zou je toch echt sterk aanraden om daar nu alvast mee te beginnen, voordat je hardware hebt. Als je met de kennis van nu direct naar hardware gaat, wordt dat heeeeeeeeeeel veel trial-and-error, en veel frustratie. Read my lips.

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein