Tutorial: Eerste verilog program met Quartus.

Anoniem

oke dat is fijn te hooren want ik heb geen zener van 3,3v

Ik heb het schema van de TSOP1736 aangepast op mijn web voor het gebruik van 4 diodes indien je geen zenerdiode van 3.3V voorhanden hebt.

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

Wanneer komt de: "Tutorial: Eerste vhdl program met Quartus." ?? ^_^

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

bedankt Opa...ik volg ze op de voet....

cnc filmpjes op Http://www.arjan-swets.com
free_electron

Silicon Member

Op 21 januari 2009 21:46:09 schreef Daan Timmer:
Wanneer komt de: "Tutorial: Eerste vhdl program met Quartus." ?? ^_^

als ze een masochist vinden die zich daar het hoofd wil op breken >:)

waar wil je het liefst mee werken :

code:


verilog
-----------------------------------------------
module teller (input clock,output reg [3:0] uit);
always @(posedge clock) uit <= uit +1;
endmodule
-----------------------------------------------

VHDL (Vervelende Hardware Design Language):
-----------------------------------------------
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;   
entity teller is
port (  clock : in std_logic;
        uit : out std_logic_vector(3 downto 0)
      );  
end entity teller;
architecture rtl of teller is
signal i_uit : std_logic_vector(3 downto 0);
begin
  process(clock,i_uit)
  begin
        i_uit <= i_uit + 1;
  end process;
  uit <= i_uit;
end architecture rtl;

3 lijnen tegen 16... om het zelfste te doen.....

je moet alles 2 keer definieren ( een keer in entity, een keer in architecture) , je moet een interne variabele aanmaken omdat vhdl zo stom is dat het niet kan lezen van zijn eigen uitgangen, je moet zelf je interne variabelen naar externe copieren , als je de numeric library niet laadt kan vhdl geneens een +1 doen ... je hebt een hoop extra meuk, en als je 'i_uit' vergeet in je process dan loopt het ook fout ( in bovenstaand voorbeeld niet , maar als je scheduled code maakt moet het in je sensitivity lijst staan anders is er kans dat het niet juist propageert.

Het voorbeeld voor mijn boek ( ook een klok maar een iets complexere dan die van foto_opa) geef ik in 3 vormen. eens in schema , eens in verilog en eens in vhdl. die in vhdl was compleet onvoorspelbaar. bij de ene compilatie werkten de uren niet , bij de andere compilatie zat het probleem in de minuten ( er waren 75 minuten in een uur )... tot ik de interne variabelen in de 'process' clause zette. alle problemen weg ...

geef mij maar de oplossing met die 3 lijnen hoor... dan ben ik rapper klaar en op tijd thuis s'avonds.

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

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.

Anoniem

misschien is een i2c verbinding ook wel een goed idee om een tutorial van te maken
en voor latere zorg iets van een 10base-t interface

ALS je de vergelijking al kunt maken, is VHDL eerder als C, waarin je alles precies zo moet neerzetten als je het bedoelt. Verilog is dan een soort VB, waarin het altijd wel lijkt te werken, ook als je een fout maakt; daar kom je dan pas later achter als het gedrag anders is dan verwacht.

De vele declaraties in VHDL zijn zeker een nadeel, maar zijn wel eenmalig voor een blok code en kunnen ook een voordeel zijn (duidelijkheid) als je bijvoorbeeld elders met een externe library werkt. Even een copy-paste van parameters is dan zo gebeurd. Maar het geeft inderdaad overhead voor het 'even snel' maken van iets, dat geef ik absoluut toe.

Free haalt wel altijd graag de meest extreme voorbeelden van de plank, en mag dan ook graag in het stuk VHDL de parameters over meerdere regels uitspreiden en ook voor de afsluitende ); nog even een extra regel pakken. Dit voorbeeld waarin de begin / end blokken een hoop overhead geven vanwege die ene regel die erin staat is ook flauw, normaal zijn er een paar dingen die je in zo'n blok doet, en ook bij verilog komt er dan begin / end onder de always. Als je een uitgang wilt lezen, is het dus ook een ingang, en dan gebruik je gewoon een inout in VHDL.

Verilog lijkt me makkelijker snel te leren voor de hobby, maar VHDL dwingt je wel meer tot het meteen begrijpen waar je mee bezig bent, door de striktere aanpak.

Sorry dat ik er in dit topic even op in ga, maar het eeuwige VHDL-is-brol-en-verilog-is-de-bom van free zodra er maar iemand een vraag over VHDL stelt, hangt me inmiddels een beetje de keel uit. Ik zeg niemand dat hij beter het één of het ander kan kiezen, maar de scheve vergelijkingen zijn geen manier om een eerlijk beeld te schetsen, of iemand z'n keuze te vergemakkelijken.

If you want to succeed, double your failure rate.

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.

If you want to succeed, double your failure rate.

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 vrijdag 23 januari 2009 18:03:37 (14%)

Anoniem

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 zondag 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

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