Om even aan te tippen, mensen zijn doorgaans gewend om sequentieel te denken of aan sequentiele code in programmeertalen voor µC etc.
In Verilog (of VHDL) bestaan zowel sequentiele code als parallele code naast elkaar en dat vergt een andere manier van denken waar mensen moeite mee kunnen hebben. Die omschakeling van denkwijze is niet voor iedereen even gemakkelijk te begrijpen of te volgen.
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
Het probleem is dat je niet mag denken in termen van "sequentieel". Er is geen sequentie. Je maakt logica. Als je die logic iets sequentieel wil laten doen ga je dat moeten bouwen. Dat is wat state machienes doen.
Een microprocessor is niets anders dan een heel grote state machiene de je kan aansturen door middel van een instructielijst.
De eerste microprocessors hadden geen instructieset. Ze waren gemaakt met een 74181 ALU of een AMD2900 bitslice en een hoop flipflops. De Xerox Alto is een computer met grafische user interface, muisbesturing en windowing system, networking en harddisk storage. Daar zit geen microprocessor in. het is een grote doos met allemaal TTL ic's. Een grote statemachine.
Ditto voor de Apollo flight computer en maanlander computer. Een grote doos met NOR poorten.
De cray 1 : een grote doos met ECL logica.
De grote fout is denken dat je een programma schijft. Het is geen programma dat stap voor stap uitgevoerd word at runtime. Je maakt de machiene, niet het programma wat er op draait.
Je maakt de uart, niet het programma wat er een string naar toe stuurt en terug ontvangt.
Het is een beschrijving van logica. Een andere vorm van een schema maken. Er is natuurlijk abstractie mogelijk op heel hoog niveau, maar de onderliggende laag is niks anders dan flipflops en combinatorische logica.
Als je het benadert als ene programma maken ga je het nooit begrijpen. Het is een bak met 74xxx chipjes die je aan elkaar knoopt. tellertje hier, flipflopje daar, wat poortjes links en rechts. Maar, je hoeft niet op een poortje of flipflop min of meer te kijken. je hoeft je ook niet bezig te houden met karnaugh kaarten of de meeste efficiente manier uit vlooien om een logische vergelijking op te stellen of reduceren.
Tellertje maken ? x <= x+1; je hoeft die logic niet te maken die voor elke flipflop bepaald of ie nau moet veranderen op de volgende klokpuls of niet. JE moet je ook niet bezig houden met 4 bit tellertjes aan elkaar te lijmen met carry en borrow. Je loopt ook niet tegen dingen aan zoals verrek, ik heb een decoder nodig met actief hoge uitgangen en er is alleen een 74138, en die is nou net actief laag.
Daarom dat ik eerst uitleg hoe een synthesizer werkt en hoe die jouw instructies omzet in logica. Eenmaal je dat begrijpt is de rest heel eenvoudig. Stel de lijst op van wat een blok moet doen en laat de synthesizer die wolk logica bouwen.
maartenbakker
Golden Member
www.elba-elektro.nl | "The mind is a funny thing. Sometimes it needs a good whack on the side of the head to jar things loose."
Ik vind het wel erg interessant om te lezen. Ongeveer 75% van alle reparaties die ik doe is aan apparaten met 1 of meer FPGA's en daar doen ze dingen mee die anders inderdaad alleen in ASIC's kunnen, maar dan flexibel programmeerbaar. Ik wil er zelf tzt ook wat mee gaan doen maar ik heb alleen maar ervaring met sequentieel programmeren dus ik zal aan de gedachte moeten wennen.
Op maandag 10 november 2025 00:17:39 schreef free_electron:
Het probleem is dat je niet mag denken in termen van "sequentieel". Er is geen sequentie. Je maakt logica. Als je die logic iets sequentieel wil laten doen ga je dat moeten bouwen. Dat is wat state machienes doen.
Ik doelde met sequentieel op state machines.
Allereerst bedankt voor het werk wat je er in stopt. Voor een paar euro kun je op Ali al Quartus 4 bordjes krijgen.
(Wat ik ook gedaan heb).
MGP
LDmicro user.
Op maandag 10 november 2025 00:35:59 schreef maartenbakker:
Ik vind het wel erg interessant om te lezen. Ongeveer 75% van alle reparaties die ik doe is aan apparaten met 1 of meer FPGA's en daar doen ze dingen mee die anders inderdaad alleen in ASIC's kunnen, maar dan flexibel programmeerbaar. Ik wil er zelf tzt ook wat mee gaan doen maar ik heb alleen maar ervaring met sequentieel programmeren dus ik zal aan de gedachte moeten wennen.
Mijn zoon werkt in een bedrijf hier in de buurt waar ze oa. laserprojectoren maken voor bioscopen.
Daar worden FPGA's gebruikt voor beeldverwerkingstechnieken (kleurcorrecties, belichtingcorrecties en herschalingstechnieken) om het zeer snel kan.
Het aantal mensen (een dure elite, die bezeten is, zoals hij ze noemde) die FPGA's kunnen programmeren vermindert geleidelijk omdat CPU's en GPU's veel taken overnemen omdat ook die heel snel worden.
In sommige projectoren zitten nu al 2 of 4 high end grafische kaarten, ze zijn makkelijker te programmeren, vaak met aangeleverde libraries van bv Nvidia met AI ondersteuning etc..
Voor een hobbyist zijn FPGA's te duur en ze zijn met veel te weinig die met FPGA's kunnen omgaan om elkaar te helpen.
Op school wordt er ook niks over gegeven en je moet ofwel bezeten zijn of er inrollen via het werk.
Het zal een niche product blijven waarvan de software wordt uitgegeven aan lageloonlanden.
edit: het is wel een mooi initiatief om het weer eens onder de loep te brengen en misschien enkele mensen te overhalen om eens te experimenteren, je weet nooit wat dat teweegbrengt 
Interessant. Ooit VHDL op de hts gehad denk ik. Ik weet het niet meer zeker.
Waarom zou je dit echt moeten gebruiken? Snelheid? Stabiliteit? Kosten? Energieverbruik?
Ook ik heb practica VHDL gehad, maar ja, lang geleden en nooit meer gebruikt. @free: dankjewel, interessant!
maartenbakker
Golden Member
www.elba-elektro.nl | "The mind is a funny thing. Sometimes it needs a good whack on the side of the head to jar things loose."
Op maandag 10 november 2025 08:47:38 schreef MGP:
[...]In sommige projectoren zitten nu al 2 of 4 high end grafische kaarten, ze zijn makkelijker te programmeren, vaak met aangeleverde libraries van bv Nvidia met AI ondersteuning etc..
In mijn geval zitten ze in monitoren. Soms 2 FPGA's en 1 GPU, soms alleen een FPGA. Ik denk dat GPU's in de huidige vorm juist voor AI een doodlopend pad zijn, hoewel op het eerste gezicht door matrixbewerkingen heel geschikt.
Bij software en lagelonenlanden denk ik aan "zet het op fiver" maar dat gaat hem niet worden. De monitoren waar ik mee werk komen uit Korea en China en zoals ik het inschat heeft elk bedrijf maar een paar man die FPGA's snappen. Zulke mensen zijn denk ik toch vaak te duur om als huurling aan de slag te gaan.
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Op zondag 9 november 2025 20:33:30 schreef free_electron:
always @(posedge clk) beginHola. actie ! We gaan het CLK signaal aan die teller moeten hangen.
Dat is niet geheel correct. Het hangt van de inhoud van dat block af wat de synthesizer met dat clk signaal gaat doen.
Omdat daar dus een assignment van "counter" gebeurt ziet de synthesizer dat ie dit efficient kan maken door een register te maken wat geclockt wordt door de positieve flank van de clock ("posedge").
Vervolgens is er een uitdrukking voor de nieuwe waarde van register "counter". (Dat ie "counter" heet, wil nog niet zeggen dat ie weet dat ie een counter moet gaan maken!).
Die "counter + 1", daar zal ie gewoon eerst een "adder" voor maken, 8 bits in met "counter", andere kant "0b00000001".
Voor de "counter - 1" maakt ie weer een adder met dit keer "-1" als tweede input.
Voor de if maakt ie een 8 bit mux. die dan dus slecteert tussen de twee verschillende adders.
Dit zijn allemaal relatief simpele vertaalstapjes.
Dan... Blijkt in een verdere "processing step" dat dit vereenvoudigd kan worden. Zo is het laagste bitje van het resultaat van "counter + 1" en "counter -1" onafhankelijk van het selectie signaal. De 1bit mux daar is dus overbodig.
Na nog wat ingewikkeldere stappen blijkt uiteindelijk dat ie een counter gemaakt heeft. Mogelijk herkent ie "het patroon" van een teller en heeft ie een efficientere implementatie voor dat ding dan datgene wat er na simpele synthesis + optimalisatie komt. (anderzijds, van een moderne optimizer verwacht ik eigenlijk dat ie op hetzelfde uitkomt als een met de hand gemaakte updown counter. )
Maar met dingen als een "stukje RAM" (b.v. een register file van 32 registers van 32 bits), dat kan je gewoon in verilog opschrijven, maar dan moet ie dus weten dat ie ram blocks heeft in de FPGA die precies DAT doen en dat ie dus niet 1024 1-bit-registers moet maken.
(koop je een betaalbare (= de kleinste of 1 na kleinste) cyclone dan heeft ie maar ongeveer 1000 logica-registers. Je hebt er 8 nodig voor die counter, maar 1024 voor een 32x32bit register file zit ie in 1x vol als ie niet ook van die ram blocks heeft. )
Even tussendoor: waar is het boek "Programmeerbare logica, van 0 en 1 tot FPGA" eigenlijk nog te verkrijgen?
Op maandag 10 november 2025 12:38:31 schreef MNM(tm):
Even tussendoor: waar is het boek "Programmeerbare logica, van 0 en 1 tot FPGA" eigenlijk nog te verkrijgen?
Bij Elektor nog te bestellen als e-book, niet duur.
https://www.elektor.nl/products/programmeerbare-logica-e-book
benleentje
Golden Member
Voor een hobbyist zijn FPGA's te duur en ze zijn met veel te weinig die met FPGA's kunnen omgaan om elkaar te helpen.
Op school wordt er ook niks over gegeven en je moet ofwel bezeten zijn of er inrollen via het werk.
Wat eigenlijk ook heel erg jammer is. Want ik had dit graag veel eerder geleerd.
En van het een komt het ander.
Als er maar weinig mensen zijn die ze kunnen programmeren dan blijven ze ook duur.
IK had eigenlijk al gehoopt dat er eenmicrcocontroller met een deel FPGA zouden bestaan.
Voor een paar euro kun je op Ali al Quartus 4 bordjes krijgen.
Heb je een link.
De eerste microprocessors hadden geen instructieset.
Maar waren het dan niet gewoon macro processors?
Ik zit te denken hoe kan dit dan werken? Maar Ik denk dat je dan met externe ingangen de instructie moet selecteren die er uitgevoerd moet worden.
Op maandag 10 november 2025 13:42:53 schreef benleentje:
IK had eigenlijk al gehoopt dat er eenmicrcocontroller met een deel FPGA zouden bestaan.
Microchip heeft zoiets, de Configurable Custom Logic blokjes in sommige MCU's. Nooit gebruikt.
Andersom is het heel makkelijk om een MCU in een FPGA te instantieren. Dat kan een kloon zijn van een bekende (8051, AVR) maar ook een eigen ontwerp van de FPGA-fabriek. Die zijn vaak ook gesupport door GCC.
Heb je een link.
Zoek maar op "altera cyclone" of "altera max". Max en Cyclone zijn productseries van Altera, die je met Quartus programmeert.
maartenbakker
Golden Member
www.elba-elektro.nl | "The mind is a funny thing. Sometimes it needs a good whack on the side of the head to jar things loose."
Je zou een losse microcontroller kunnen nemen en een aantal I/O lijnen daarvan aan je PLD kunnen knopen om diverse functies te sturen of signalen toe te voegen. De monitoren die ik al noemde, hebben naast minstens 1 FPGA ook altijd een microcontroller. Vaak een ARM uit de STM32 reeks, maar je kan natuurlijk ook prima een PIC of een ATMega gebruiken.
[Bericht gewijzigd door maartenbakker op (54%)]
Op maandag 10 november 2025 13:31:22 schreef Bobosje:
[...]Bij Elektor nog te bestellen als e-book, niet duur.
https://www.elektor.nl/products/programmeerbare-logica-e-book
Krijgt de auteur daar wel nog royalties van?
Op maandag 10 november 2025 15:05:50 schreef MNM(tm):
[...]
Krijgt de auteur daar wel nog royalties van?
Als het goed is wel. Al zal het niet veel zijn Elektor kennende.
Het boek is zeker de moeite waard.
benleentje
Golden Member
Zoek maar op "altera cyclone" of "altera max".
Jammer. Ik vraag om een link omdat ik niet weet waar ik naar moet zoeken.
Als ik zoek op cyclone of max dan krijg ik op ali oude meuk te zien wat nog steeds duur is, of het is wat nieuwer maar heel erg duur.
En dan vind jij wel goedkoper producten waar ik dan wel nieuwsgierig naar bent.
[Bericht gewijzigd door benleentje op (13%)]
Hoeben
Golden Member
https://www.hoeben.com https://www.overstockdevices.com https://www.asensor.eu https://www.circuitsonline.net/forum/user/4355#aanbod Voor alle verkoop: een tegenbod is altijd welkom!
Op maandag 10 november 2025 10:25:51 schreef K7Jz:
Waarom zou je dit echt moeten gebruiken? Snelheid? Stabiliteit? Kosten? Energieverbruik?
Interessant draadje hier!
Stabiliteit: ja, er valt niets om. Een bugje geeft een lokaal probleem en laat de processor niet crashen.
Snelheid: is gigantisch.
Kosten: tegenwoordig kost een processor niks meer, niet dus
Energieverbruik: zou kunnen, alles hangt af van wat je doet
Je moet het niet als vervanger van een processor zien. Het doet geen dingen achter elkaar, het is logica die alles parallel doet.
Als je het dan toch met je processor wil vergelijken, zie het dan als een processor die alle instructies tegelijk uitvoert. En om dan dingen in een bepaalde vorm te doen bouw je state machines, wat je als je het goed deed in je processor software ook al deed.
Wat kun je ermee doen: real-time communicatiebussen aansturen, I2C, SPI, CAN, Ethernet in de vele MHz-en. Waarbij je dan wel een flinke FPGA nodig hebt. Allerlei snellere elektronica, allerlei encoders en decoders (bijvoorbeeld van servos).
Ik gebruikte vroeger GAL/CPLD vooral rond processoren voor adressering etc. Maar dat zit er tegenwoordig al ingebakken, niet meer nodig. Stel dat je nu het aantal pinnen wil uitbreiden kun je daar eenvoudig een mux mee maken die veel meer io geeft. Dit kan met de eenvoudigste CPLD al.
Er zijn veel mogelijkheden. Vooral daar waar het sneller moet.
Op maandag 10 november 2025 15:15:31 schreef Lambiek:
[...]
Als het goed is wel. Al zal het niet veel zijn Elektor kennende.
Dan ga ik wel op zoek naar een alternatieve bron voor het e-book en als ik die heb gevonden, dan stort ik die €40 liever direct op de rekening van de auteur!
Elektor is de uitgever van dat boek en heeft de auteursrechten op dat boek.
De auteur van dat boek kan iemand zijn die bij Elektor heeft gewerkt en daarvoor salaris heeft ontvangen of een externe auteur die daarvoor dan nog steeds royalties ontvangt.
Ik zou me daar niet druk over maken.
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
er zijn meer en meer microcontroller die een fpga aan boord hebben.
microchip heeft er.
Cypress heeft er ( de Psoc series)
de RP2040 en 3450 ( de PIO state machienes. maar aangezien user-definieerbaar zijn is dat bijna een cpld achtig ding)
de xilinx Zync (wordt gebruikt in veel budged-oscilloscopen. dat is een heel krachtige ARM multicore met een enorme FPGA eraan.
De combinatie can beide werleden is een heel krachtige basis om snelle dingen te doen.
Toepassing ? alles wat op gezette tijden moet werken (zoals de sampling in een oscilloscoop). Een processor is nooit snel genoeg, of niet determinisitisch genoeg. Zelfs real-time applicatie met harde timestamps kunnen niet op hoge snelhied werken.
Een simpel voorbeeldje :
if x = 1 then
y = y+1
else
y = y+1 // opzettelijk de zelfde +1 om de zelfde instructie lengte te krijgen.
zet dat in een eindeloze lus op een microprocessor. Laat die processor "X " lezen van een io pin , en Y uitstoren op een 8 bit poort. Kijk naar het laagste bit.
Afhnakelijk van de waarde van X , zal de frequentie anders zijn. Simpelweg omdat er in 1 van de "x" gevallen een jump opdracht is ( of een skip opdracht, afhankelijk van de architectuur. )
Een processor moet x 'lezen", een compare doen , en dan een branch. De branch opdracht is niet symmetrisch in tijd. Dan moet ie 1 optellen en dat terug op de poort zetten. Dat zijn meerdere instructies.
Als je dat aan een snelheid van 1MHz wil doen ga je die processor flink moeten clocken. En je krijgt te maken met die branch-delay.
in een CPLD of FPGA clock je die gewoon op 1MHz. Al die tussen opdrachten bestaan daar niet. Al dat signalen en data ophalen, compare, tellen , en branch werk bestaat daar niet. Dat is combinatorisch en neemt , op de delay van de poorten na , geen tijd in beslag. in een moderne fpga is dat in de picoseconden...
Daar zit het grote voordeel. Dingen werken niet alleen sneller , ze hoeven ook niet stapsgewijs afgehandeld worden. voor veeld dingen heeft een processor een aantal stappen nodig, en hij doet dat in een lus. Dat zijn heel veel instructies, tlekens opnieuw. Een cpld doet dat allemaal in 1 clockslag omdat de synthesizer uitgewerkt heeft hoe al dat werk in 1 keer kan gedaan worden.
Degene die het werk heeft geschreven is degende die het geld ervoor moet krijgen. Ik heb Elektor altijd al een geldgraaiende toko gevonden.
Trouwens, zover ik weet ligt het auteursrecht nog steeds bij Vincent. Hij is en blijft de auteur. Dat Elektor het (exclusieve) recht heeft om het werk te publiceren, doet daar geen afbreuk aan. Dat Elektor vervolgens met dat publicatierecht meer geld wil binnen harken dan de auteur krijgt, dat stuit me ernstig tegen de borst!
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Op maandag 10 november 2025 14:30:11 schreef blurp:
[...]
Microchip heeft zoiets, de Configurable Custom Logic blokjes in sommige MCU's. Nooit gebruikt.
Cyclone V kan je ook met "dual ARM" krijgen. Toffe chipjes. Maar dus "geen grappen" om als hobbyist of klein bedrijfje een systeem mee te bouwen: De chips kosten richting de 200 Euro.
Ik heb lang geleden een AVR in een FPGA gedaan. Kost ongeveer 5k aan gates. Dan maak je dus net als een "timer" een peripheral wat JOU toepassing doet. inclusief dus verkorte instructies om bij de peripherals te kunnen komen.
Maar die moderne cyclones met een AVR die hebben een complete Linux-capable dual-core CPU aan boord. Inclusief een memory bus waarmee je makkelijk een paar gigabyte aan DRAM kan aansluiten. De FPGAs kosten 200 euro (ongeveer) en de development boardjes ongeveer 100.
Hmm. Dat is kennlijk niet meer het geval: https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&am… ze kosten tegenwoordig meer dan 200.