Tutorial: Eerste verilog program met Quartus.

Alleen berichten met de trefwoorden “breadboard” worden getoond. Alle berichten tonen

@free_electron,

Idd, versie 8.1 en voorlopig zonder problemen op winXP. Maar ik zie dat je het al opgelost hebt.
Ik zou normaal ook een groter scherm gebruiken samen met een nieuwe computer maar gezien ze die nog enkel met Vista willen leveren wacht ik nog wat langer. Ik ben over die Vista niet direct te spreken.

@Sjees,

Proef4 zal waarschijndelijk een 4 ch ADC input zijn op het MAX II boardje. Ik heb dit al gemaakt met een ATtiny26. Het plaatsen op de breadboard zal vrij eenvoudig zijn. Maar eerst komt proef3. Dit zal een LCD display zijn op de MAX II board. Anders kan ik de resultaten van proef4 met 4 analoge waarden niet goed weergeven. De display zal eerst het 4x20 char zijn, gewoon omdat ik geen 2x16 char meer beschikbaar heb. Maar downscalen van 4x20 naar 2x16 is veel gemakkelijker dan omgekeerd.

Ik heb ook nog de rotary encoders. Die routines zijn al geschreven geweest in verilog. Ik ga eens zien in welke proef ik ze erbij kan plaatsen. Maar eigenlijk vind ik de oplossing met een AVR controllertje en potmeters beter geschikt voor bepaalde regel instellingen. Voordeel van een potmeter is dat hij zijn laaste instelling behoud zonder dat je daar iets moet voordoen. Met een ATtiny26 kan tot 11 channels ADC omzetten en kost slechts 1.67 euro. Communicatie naar MAX II boardje via 3 pinnen (SPI). In de CPLD board is dit kinderspel om de data binnen te nemen.

Proef7 is online en bevat een 24 uurs klok met een 6x7 segments display van de samenkoop. De kontrast van display's heb ik wat aangepast want in feite branden de 6 digits niet zo helder vanwege de 6 voudige multiplexing. Bij de levering van de display zijn 220 ohm smd weerstandjes voorzien maar als je stuurt vanuit de MAXII board die slects 3.3V level bezit is de segmentstroom wat aan de lage kant. Ik zou eerder opteren om die waarde op 120 of 100 ohm te brengen. Dan zit je nog net binnen de specs van de board en heb je iets meer helderheid. Ik gebruik nu ook een grotere breadboard van 4 eenheden en voor de signalen gebruik ik het extra gemaakte overgangsprintje tussen flatcable en breadboard.

http://farm4.static.flickr.com/3378/3215310037_7072527582_o.jpg

Zoals gewoonte staat de verilogcode in een zipfile en ook de Quartus project file voor de MAX II CPLD board.

Voor een directe link naar proef7 Kun je hier terecht

VHDL voorbeelden moet je van mij zeker niet verwachten. VHDL is te complex. Hoe mooi de taal ook is, je kunt het een beetje vergelijken met PASCAL, zuivere taal maar iedereen gebruikt C hoewel met VHDL hier in europa het iets minder erg is in verhouding. Maar die discutie ga ik hier niet verder meer voeren. Als ik iets nodig heb die in VHDL geschreven is zal ik wel proberen het te begrijpen en desnoods herschrijven in mijn toepassing.

Ik weet dat mijn code nog veel beter kan geschreven worden. Daarvoor hebben we trouwens onze F_E als leermeester. Maar de meeste routines die gebruikt zijn in de proef voorbeelden zijn al veel vroeger geschreven geweest. Vandaar dat ik ze nu niet ga herwerken. De bedoeling van al deze proeven is de beginner te motiveren om iets te doen met die MAX II boardjes die in omloop zijn. Samen met de kleine modules van de samenkoop actie van "MrGAmba" voor op de breadboard.

Bij het schrijven van nieuwere code ga ik proberen zoveelmogelijk de aanbevelingen van F_E te gebruiken.

Nu ga ik een paar weken minder aktief zijn op het forum. Ik heb een meeting voor een grote groep voor te bereiden over mijn highspeed fotografie en de vliegende beestjes. Die voordracht vergt veel voorbereiding, gezien ik ook live demo's ga geven in de zaal. Dus geen nieuwe tutorials meer voor begin februari.

Maar volgende tutorials liggen nog in planning vanaf februari:

- RS232
- IR zender
- IR ontvangen met TSOP1776 ook zelf te sturen met eigen codes.
- Aansturen van 74HC595 trein gegevens
- Inlezen van 74HC165 trein gegevens
- Laser zender en ontvanger
- Timers voor lasersturing en devices.

@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.

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.

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.

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%)]