Tutorial: Eerste verilog program met Quartus.


We gaan de discussie misschien wel niet voeren, maar als f_e er zonder commentaar iets van mag zeggen,mag ik het ook :)

Op 22 januari 2009 01:44:23 schreef free_electron:
3 lijnen tegen 16... om het zelfste te doen.....

Vind je ook niet dat dit een heel extreem en uitvergroot voorbeeld is? Ik wel. Zo kan ik ook nog wel een paar vergelijkingen maken. Het gaat in een taal niet om het aantal regels code. Code typen is maar een klein deel van het hele process. Als dat anders is, ben je niet meer dan een code-klopper.

Het voorbeeld voor mijn boek...die in vhdl was compleet onvoorspelbaar

[/quote]
Dat verklaart al een hoop van je VHDL allergie. Je beheerst te taal gewoon niet. Met VHDL ontwerp je net zo betrouwbaar als met Verilog. Ik heb 5 jaar VHDL gedaan en 4,5 jaar Verilog. Ik heb geen verschil gemerkt. Ook niet in design tijd overigens.

dan ben ik rapper klaar en op tijd thuis s'avonds.

Nogmaals, code kloppen is maar een fractie van de design tijd.

Als Verilog zo overduidelijk beter zou zijn, waarom gebruikt dan de halve wereld nog steeds VHDL? Helemaal achterlijk zijn we hier ook niet hoor.

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

@patrick valk,

Ik heb hier wel nog enkele I2C chips liggen. Die kan ik ook nog wel testen op de breadboard. Maar ik vind dit toch vrij dure IC's tov de 74HC595 reeks. Met 3 lijntjes ga je die veel sneller en vooral eenvoudiger aansturen. Maar ze hebben elk hun toepassings gebied. In de I2C reeks zitten wel een paar mooie versie's maar je moet er toepassingen voor hebben. Maar ik hou het graag simpel, eenvoudig en vooral praktisch. Met de SPI signalen clk, data en load kun je heel veel realiseren met weinig LE's.

@Jochem, flipflop en free_electron,

Gebruikt gewoon wat je goed vindt. Nog steeds gaat het voormij gemakkelijker in verilog. Ik dacht dat CO gebruikers vooral hobby gebruikers zijn. Het heeft ook geen zin de VHDL gebruikers op te zetten tegen de verilog gebruikers. Als je een goede toepassing hebt mag je die altijd posten in je voorkeur taal. Het is net hetzelfde of het nu Xilinx of Altera is. Die beide oorlogen voeren we toch niet meer. We hebben meer aan eenvoudige voorbeelden. Ervaren gebruikers trekken wel hun plan.

Update: free_electron bijgevoegd in mijn @ lijst.

Op 22 januari 2009 10:22:07 schreef fotoopa:
Gebruikt gewoon wat je goed vindt. Nog steeds gaat het voormij gemakkelijker in verilog. Ik dacht dat CO gebruikers vooral hobby gebruikers zijn. Het heeft ook geen zin de VHDL gebruikers op te zetten tegen de verilog gebruikers.

Exact mijn punt.

Ervaren gebruikers trekken wel hun plan.

Eveneens juist, maar dat is nog geen reden om beginners te misleiden door te pas en te onpas te roepen dat VHDL niks waard is en dat met vreemde voorbeelden te beargumenteren.

Dit alles heeft overigens op geen enkele manier betrekking op jouw prachtige duidelijke voorbeelden (in Verilog). Ik denk dat de beschikbaarheid van dit soort tutorials voor beginners een (geldig!) argument kan zijn om voor Verilog te kiezen.

Heb geduld: alle dingen zijn moeilijk voordat ze gemakkelijk worden.

Ik neem aan dat je @Jochem, flipflop en free_electron bedoelt fotoopa. De laatste is immers de starter van de discussie.
Verder onderschrijf ik volkomen de post van Jochem. Ik wordt er ook moe van om telkens weer de discussie te moeten voeren, maar ik doe het toch om het vhdl/verilog beeld zuiver te houden (ik hou m'n hart vast over dat boek in aantocht). Case closed wat mij betreft.

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

Laten we idd alle discutie's over de onderlinge voorkeuren zoals "VHDL-verilog" en "Xilinx-Altera" als Case closed beschouwen.

Vele nieuwe gebruikers hebben echt nood aan een impuls om te starten met FPGA's of CPLD's. Tutorials zijn een middel om zoveel mogelijk te helpen bij deze eerste stappen. Ik zou het fijn vinden als er iemand ook een of andere tutorial schrijft in VHDL. Dit zou meer een evenwicht geven. Ik ga ook nog eens een tutorial maken met schema entry in combinatie met de breadboard modules.

Er zijn ook heel wat "Xilinx Spartan 3A Evaluation kits" verkocht geweest bij de CO gebruikers. Het ware ook mooi dat er iemand een gelijkaardige tutorial topic zou openen met ook kleine eenvoudige toepassingen. Voorbeelden kunnen dan ook gemakkelijker afgestemd worden op de mogelijkheden van het boardje.

Op 22 januari 2009 11:04:01 schreef fotoopa:
Er zijn ook heel wat "Xilinx Spartan 3A Evaluation kits" verkocht geweest bij de CO gebruikers. Het ware ook mooi dat er iemand een gelijkaardige tutorial topic zou openen met ook kleine eenvoudige toepassingen. Voorbeelden kunnen dan ook gemakkelijker afgestemd worden op de mogelijkheden van het boardje.

Ben ik momenteel mee bezich. Heb mijn 'grote' project even aan de kant geschoven. Vindt dit topic namelijk ook een goed idee, omdat het gewoon blijkt dat de wil er bij mensen wel is om met FPGA's/CLPD's te starten, maar niet de kennis (dan wel de lef).
Van de AVnet boards heb namelijk ook nog geen project zien langskomen (net als van de MAXII boards). Topic's als dit zullen daarom hopelijk ervoor zorgen dat mensen hun bordjes weer onder het stof vandaan halen en er toch wat mee gaan doen.

EDIT:
Van het weekend hoop ik de eerste paar tuts te kunnen posten.

Wat ik wel wil doen is een stap voor stap implementatie te maken voor dat Spartan board. Ik ben zelf echter nog niet zover dat ik een echte applicatie heb en ik weet niet wanneer dat echt zover is (heb nog geen concreet doel met het boardje). Ik zal dit weekend wel eens kijken wat ik kan doen.
En inderdaad, het blijft wel errrrrug stil op Spartan3e gebied, nadat er zoveel komotie was over de aanschaf

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

Silicon Member

een i2c master is vrij eenvoudig te maken. ik heb er ergens eentje liggen. ook spi is heel eenvoudig. ik heb een aantal snelle spi dacs die aangestuurd worden.

en over de discussie vhdl verilog. kga er mij niet meer mee moeien. iederen gebruikt wat hij het fijnst vindt. voor de synthesizers maakt het geen fluit uit. ze lezen beide. De analogie is trouwens VHDL = ADA daartegen is verilog = c.

@flipflop. het gaat hem niet om betrouwbaarheid , maar om het werk en al de frullerij die erbij komt kijken. zelfs als je ene paar overtollige begin en ends kan verijwderen en hier en daar ene cr/lf in dat voorbeeld van mij. Tel het aantal toetsaanslagen die nodig zijn. Het enige wat ik aan vhdl leuk vind is dat het case insensitive is ( dat haat ik dan weer aan verilog) En met het aantal tikfouten wat ik maak is minder typwerk = beter. zolang er geen automatische spellchecker bestaat voor die talen tenminste :) ploeter ik verder.

enfin. case closed wat mij betreft hoor. iedereen gebruik maar wat hij liefst heeft.

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

Je hoeft geen applicatie te hebben om iets voor een tutorial te schrijven. Al mijn voorbeelden tot op heden zijn ook geen applicatie's. Maar somige delen kunnen wel herbruikt worden. Trouwens een grote applicatie voor een beginner heeft helemaal geen zin.

Ik ben toch nog bezig met de voorbereiding voor proef8. Ik heb nog wat tijd beschikbaar en zou daar morgen aan werken.

Proef8 zal vertrekken van proef7, de 24 uurs klok maar nu aangevuld met 3 stuks 74HC595 en 3 ledmodules van elk 8 leds. Deze 24 leds zijn juist gepast om naast de 6x7 segment displays ook de binaire weergave van die zelfde tijd weer te geven. Omdat ze nu aangestuurd worden via de schuifregisters heb ik maar 3 extra I/O pinnen nodig. Het is trouwens iets waar je nog wat mogelijkheden mee kunt aanbrengen. Ik zou voorzien, in proef9 dan om die leds te kunnen dimmen in 8 stappen. Die 8stappen zouden wel een linair lichtverloop krijgen wat inhoud dat ik een dimtabel zou gebruiken vertrekkende van een 8 bit pwm waarde. Anders dimmen de leds bijna niets vanaf voluit branden terwijl ze helemaal op het einde dan weer plots gaan uitdoven. Vandaar liever 8 goed verdeelde linaire stappen via een lookup table.

De 3 stuks ledmodules uit de samenkoop zijn net bestukt en op de breadboard geduwt. Ik heb een symbool aangemaakt in Eagle zodat de pinout van de 74HC595 direct past op de ledmodules zonder draadverbindingen. Zo blijft de breadboard overzichtelijk en is heel snel op te bouwen. De CPLD krijgt dan ook de juiste bitvolgorde om de bittrein door te sturen.

Ik was sowieso van plan om van beide walletjes te gaan proeven ;-).

Ik ben gevraagd, naar aanleiding van mijn afstudeerstage (presentatie waar een extern bedrijf bij was die mij beoordeelde), om bij 'dat bedrijf' te komen solliciteren. 'Hij had nog wel een plekje vrij voor een ambitieus iemand als ik'.

Je raad het al, dat bedrijf werkt met FPGA's. (www.aimvalley.com). Ik hap nog niet toe, ik wil graag namelijk óók nog verder studeren, maja. Ik moet nog maar gaan kijken.

Overigens was mijn opmerking meer een beetje als grapje, totaal niet om een discussie te starten! Ik heb tot nu toe nog alle proeven bekeken van fotoopa (met veel bewondering, mag ik wel zeggen) maar nog geen tijd gehad om er iets mee te doen ;-)

Ik ben programmeur! geen electronicus! http://www.daantimmer.nl/ Er is een ontwerp! nu nog inhoud :-)

Voor de goede orde, ik ga niets met Quartus doen. Ik heb dat Spartan3 bordje wat hier via IA aangeschaft is. De tool wordt dus ISE.

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

Het is zo ver, proef8 is online. Zie hieronder het schema:

http://users.skynet.be/fotoopa/quartus/proef8_schema.png

Deze proef vertrekt vanaf proef7 die een 24 uursklok bevat die uitgelezen wordt op 6x7 segments display. In proef8 zijn er nu 3 shiftregisters bijgeplaatst op de breadboard en die sturen in totaal 3 modules van elk 8 leds (samenkoop MrGAmba). Deze 24 leds zijn juist voldoende om diezelfde klok nu binair weer te geven. Hiervoor hebben we slechts 3 extra I/O pinnen nodig gezien alles rustig serieel doorgestuurd wordt. Een kleine statecontroller stuurt deze bits serieel uit. De voeding wordt nog steeds geleverd door de USB verbinding van de PC, dus geen extra voeding nodig!

De link van proef8 staat hier

Zoals gewoonte zijn zowel de afzonderlijke verilog files als de totale archief file beschikbaar.

ps: De aansluitingen zijn zo gekozen dat de meeste pinnen op de breadboard netjes overeenkomen. Je hoef heel weinig verbindingen met draadjes te maken. Ook de keuze van de uitschuifbitjes is daarvoor aangepast. Vooral de 74HC595 met de ledmodule is "een op een" te verbinden zonder draden.

[Bericht gewijzigd door fotoopa op 23 januari 2009 18:03:37 (14%)]

Anoniem

Member

nu nog een dcf77 ontvanger
ofwel de atoomklok

ja ik maak hem ook zelf
maar het was gewoon een idee wat me binnen schoot

[Bericht gewijzigd door Anoniem op 1 februari 2009 10:09:32 (46%)]

Die maak je toch zelf even Patrick?

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

Even tussendoor een volgende module geschreven. Deze maal is het een universeele timermodule. Deze timermodule beschikt over een instelbare directe puls uitgang tussen 1..1000 en een vertraagde pulsuitgang 1..1000

Het startsignaal mag volledig asynchroon zijn en de gebruikte clock voor de timer is 10x hoger dan de timertick. Hierdoor is een betere besturing mogelijk.

Beschrijving is terug te vinden op deze link

Overzicht van alle tutorials staat hier

Frans

Anoniem

Member

ik wacht volgens co nou al 90 dagen op de volgende proef
ik zou er graag weer een willen zien

misschien nog wel een goede tip zet bij de proefen wat meer info beetje picbasic.nl achtig

offtopic
@fotoopa :zou u willen mailen hoe u het heeft aangepakt om de rc5 te ontvangen
ik zit nog te denken hoe ik kan detecteren of die nou hoog begon of laag

Op 22 januari 2009 19:43:14 schreef free_electron:
... Tel het aantal toetsaanslagen die nodig zijn. Het enige wat ik aan vhdl leuk vind is dat het case insensitive is ( dat haat ik dan weer aan verilog)

Daar ben ik het nou juist niet mee eens, ik vind de case gevoeligheid geweldig omdat ik dan bewust de zelfde identifier in vol upper en lowercase kan gebruiken. Ik gebruik UPPERCASE om de module poorten te definieren. Zie ik gelijk overal in de source dat het om een externe module aansluiting gaat.

Juist omdat je nie van kloppen houd zou je dat aan moeten spreken:

code:

module Iets( input [7:0] A)

reg [7:0] a; //het zelfde ding als A gebufferd in ene reg

always @ (posedge CLK) a <= A;

Goed, ik gebruik dat niet vaak, maar het is alleen maar onhandig om voor een 'locale' variabele (reg/wire) een andere naam of uitgebreidere naam moet gaan verzinnen omdat er geen case sensitivity zou zijn.

In elk geval, geef mij maar Verilog, daar ben ik nu eenmaal mee begonnen en zit voor mijn gevoel ook wat dichter op gate nivo. Systemverilog neemt je helemaal veel klopwerk uit handen met die 'interface' construct.

Maar alas, om on topic te blijven.. de reden waarom men niet veel projectjes met al die CPLD/FPGA bordjes voorbij ziet komen is waarschijnlijk omdat het allemaal van tijdelijke aard is. Je bouwt wat om uit te proberen, werkt 't - leuk, de ervaring opgedaan. Afbreken en als de zin er is weer eens iets nieuws uitproberen. Je maakt er niet echt permanente projecten mee.

En juist omdat het allemaal van tijdelijke aard is, rijst de vraag, wat moet je nou met zo'n bordje tenzij je bepaalde concepten wil uitproberen. Mijn Cyclone III starter kit gebruik ik nu ook voor een testproject van tijdelijke aard. Ik heb er onlangs een VGA ramdac unit bijbesteld aan te sluiten met Santa Cruz interface, had ik ook wel weer een HSMC -> Santacruz adapter voor nodig maar die goedkoop kunnen krijgen bij Terasic. En ben nu bezig een videoprocessor aan het uitwerken. Het is meer voor de fun en uitdaging om zoiets te bouwen en werkend te krijgen, dan dat ik op een zelfgebouwde videoprocessor zit te wachten. Een beetje in lijn van een LCDtje aansturen met een AVR.

Recentelijk was ik met een SRAM controller begonnen en die leek prima te werken, totdat ik een test statemachine voor dat ding maakte.. eerst hele ram vullen met een test patroon, dan met burst read weer uitlezen en kijken of het aan het patroon voldeed. Kwam ik er dus achter dat 'ie niet altijd door de test heen kwam. Timings aan zitten te passen en rommelen, grenzen opzoeken en uiteindelijk werkend gekregen :) 200MHz stabiel, liep een paar uur te testen. Geweldig spul ;) 'k ben benieuwd tot hoever ik die S-RAM kan overclocken maar da's voor een andere keer om te proberen <g>

[Bericht gewijzigd door MagicBox op 15 september 2009 00:07:09 (12%)]

De reden waarom men niet veel projectjes met al die CPLD/FPGA bordjes voorbij ziet komen is waarschijnlijk omdat het allemaal van tijdelijke aard is. Je bouwt wat om uit te proberen, werkt 't - leuk, de ervaring opgedaan. Afbreken en als de zin er is weer eens iets nieuws uitproberen. Je maakt er niet echt permanente projecten mee.

Ik heb hier toch al 5 definitieve projecten waar telkens een FPGA of CPLD board inzit. Vooral het type MAX II nano CPLD boardje is uitstekend geschik voor heel wat toepassingen. Voor iets grotere projecten gebruik ik de DE1 board.

Recente toepassingen worden naast de CPLD of FPGA board aangevuld met bijkomende AVR controllers om vooral analoge deeltjes te verwerken of kleinere deelprojectjes op te nemen in het geheel. CPLD-FPGA delen verzorgen dan altijd de meest hardware kritische delen waarbij ook vrij veel I/O pinnen nodig zijn. Dus ja permanente projecten worden hier wel degelijk gemaakt!

Wat voor projecten dan?

Ik heb zo onderhand een groot deel van de mogelijkheden van PICs wel verkend volgens mij, ik merk dat er steeds meer herhaling in m'n PIC projecten komt. Ik wil dus beginnen met FPGA's om daar weer nieuwe dingen bij te leren. Ik heb echter het probleem dat ik niet echt toepassingen kan verzinnen waar ik perse een FPGA voor nodig heb, wat niet met een PIC kan.

Ik zit er aan te denken om zo'n DE0 boardje te bestellen.

Op 15 september 2009 09:50:32 schreef fotoopa:
[...]
Ik heb hier toch al 5 definitieve projecten waar telkens een FPGA of CPLD board inzit. Vooral het type MAX II nano CPLD boardje is uitstekend geschik voor heel wat toepassingen. Voor iets grotere projecten gebruik ik de DE1 board.

Recente toepassingen worden naast de CPLD of FPGA board aangevuld met bijkomende AVR controllers om vooral analoge deeltjes te verwerken of kleinere deelprojectjes op te nemen in het geheel. CPLD-FPGA delen verzorgen dan altijd de meest hardware kritische delen waarbij ook vrij veel I/O pinnen nodig zijn. Dus ja permanente projecten worden hier wel degelijk gemaakt!

Ik denk dat jij één van de weinige uitzonderingen bent dan.. :) Jij gebruikt de bordjes dus echt als bouwstenen voor een project. Da's waarschijnlijk niet voor iedereen weggelegd dat zo te doen. Denk je zelf niet?

Ik gebruik een MAX II boardje voor om alle spots te regelen in de living van mijn zoon. Dit is echt op maat gemaakt wat mogelijkheden en eisen betreft. Werkt nu bijna 2 jaar zonder problemen. Er zijn 6 halogeenspots van 50W 12V.

Nog een MAX II boardje zit in mijn huidig toestel voor het fotograferen van vliegende inseten. Daar zijn bijna alle I/O pinnen gebruikt en zijn nog eens 2 AVR controller gebruikt.

Een DE1 board wordt gebruikt voor mijn highspeed fotografie experimenten. Die zit ingebouwd in een grotere bedieningskast en kan allerlei flitsen maar ook highpower magneten sturen. Daarin zitten fets in die tot 600V kunnen verdragen bij grote stromen.

Ik heb nog 2 andere oudere besturingen voor vliegende beestjes. Ieder jaar wordt een nieuwe versie gemaakt met meer mogelijkheden voortbouwend op de jaarlijkse ervaringen.

Zo ben ik opnieuw bezig met het sturen van heel veel flitsen in TTL mode waarbij ik zelf het juiste hoeveelheid licht kan instellen op mijn controller. Een deel van de flitsen worden wireless gestuurt op 868 Mhz via de RFM12B modules. Daarin zit ook een Atmega168 of Atmega328 De centrale module berekend alle timingen ook rekening houdend met de verschillende vermogens en gaat dan de flitsen sturen zodat ze allemaal centraal en gesynchroniseert staan. ook wordt rekening gehouden met de transmisie snelheid en de ontstane delay. Houd je hier allemaal geen rekening mee dan heb je dubble wazige beelden bij highspeed fotografie zoals mijn toepassingen.

Je ziet dit zijn vrij mooie projecten waar je u echt kunt mee uitleven.

Op 15 september 2009 09:59:31 schreef Neen:
Ik heb echter het probleem dat ik niet echt toepassingen kan verzinnen waar ik perse een FPGA voor nodig heb, wat niet met een PIC kan.

Wat dacht je van 50 PWM generatoren die onafhankelijk in te stellen zijn? Jij maakt het in PIC, ik in FPGA. Kijken welke het beste werkt :-)

@f_e hieronder: 50 leek me wel genoeg om het te winnen :-)

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

Silicon Member

@flipflop. tzou zelfs in cpld kunnen. als je een maxII pakt met 144 poten krijg je er zelfs 100 in geramd...

die PIC moet zo hard nadenken dat hij waarschijnlijk ontploft...
die cpld doet dat gans dat pwm process met 1 clocktick ,telkens opnieuw...

@flipflop hierboven : zelfs met 10 software pwm;s drait die pic al zot.

[Bericht gewijzigd door free_electron op 15 september 2009 21:57:31 (13%)]

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

Zoiets is inderdaad wel de richting waar ik aan zat te denken.

http://www.youtube.com/watch?v=pHdAvMrkO0U

Ik heb het boek van free_electron in de bestelling staan, als die binnen is zal ik ook een boardje bestellen. Dan komen de ideeen wel. :)