CPLD-FPGA eenvoudige voorbeelden.

Hetgeen ik aangaf komt idd in die .qsf file. Als je in een nieuw project een import doet via Quartus gaat hij precies die .qsf file aanpassen. Er is dus geen enkele reden om daarin nog te moeten editeren. Maar je kunt het natuurlijk wel doen.

oeps, blijkbaar dubbel klik gedaan...

[Bericht gewijzigd door fotoopa op 4 november 2007 12:11:19 (89%)

Nou eindelijk wat gesoldeerd, rustig begonnen dus eerst maar de ByteBlaster :P. Maar hoe zie ik nou welke kant de cathode is bij die SMD LED's? Ik dacht dat het gewoon de kant van de stip was maar achteraf bleek mijn rode LED, LED1 (working LED) verkeerdom te zitten :(. Ik heb het omgedraaid en als ik pin 14 van de sub-d connector aan de voeding gooi (een 1 dus), gaat de LED nu wel aan.

Wel grappig hoe gevoelig de rework nou is, als ik een draaidje in de connector doe (pin 14, sub-d) en met mijn hand de andere uiteinde aanraak dan gaat de LED al aan. De transistor versterkt dus aardig wat. Normaal maak je zo'n gevoeligheid met een darlington schakeling. :P

Ik heb de boardfile in Eagle ernaast gehouden maar kan geen manier vinden om de grote massa en vcc vlakken weer te geven. Waar zijn die grote polynomen verstopt? Ik het elke layer wel aan en uit gehad.

Gezien ik met 2 projectjes toch best wel bezig ben geweest denk ik de FPGA board toch maar op mijn werk te gaan doen. Ik zie meer onder de microscoop en de materialen daar zijn toch beter, werkt netter en sneller.

[Bericht gewijzigd door Eagle666 op 4 november 2007 15:01:01 (24%)

free_electron

Silicon Member

aaah het eeuwige led probleem...

het stuk waar de led-chip op ligt is ALTIJD de kathode. ALTIJD !

der is maar 1 uitzondering ( lasers weet ik niet. ik beschouw een laserdiode niet als een LED. tis nog altijd LIGHT Emitting Diode en geen Light Amplification by Stimulated Emission of Radiation Diode... )

bon de enige uitzondering is : high efficiency rode leds en blauwe leds. aarom ? simpelweg omdat die 2 electroden hebben.
bij een normale led is het substraat de min ( kathode )

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

Hm, en toch was het zo dat de leds bij het FPGA bordje van Xantus allen oplichtten bij de 'stip'. Dus zou je zeggen dat die stip altijd kathode is, maar dat bleek dus niet voor alle kleuren te gelden (vraag me niet meer welke precies).

If you want to succeed, double your failure rate.

Op 4 november 2007 14:54:17 schreef Eagle666:
Ik heb de boardfile in Eagle ernaast gehouden maar kan geen manier vinden om de grote massa en vcc vlakken weer te geven. Waar zijn die grote polynomen verstopt? Ik het elke layer wel aan en uit gehad.

je moet even op het knopje "netlist" rammen, dan kan je de volgende commando intikken: show gnd

@miniK0bo: Hee thanks, ik probeerde het even uit maar vond niet die knop maar de knop Ratsnest en boem, daar waren ze!

@driessens_nl: Jep ik was dus ook aan het meten om er uit te komen, ik dacht dat ik gek werd maar de print klopt met het schema, het component is gewoon raar.

@Jochem_S: Bij de ByteBlaster iig de rode dus.

@free_electron:

het stuk waar de led-chip op ligt is ALTIJD de kathode. ALTIJD !

Nou vergeet het maar, dit klopt voor de groene LED maar niet voor de rode LED. Ik heb het schema bekeken, de print en gewoon met de multimeter de spanningen gemeten (en ook diode test gedaan). De print en schema kloppen maar die rode LED is dus precies andersom.

Of deze LED's zijn meteen die genoemde High Efficiency LED's, geen idee. Maar wat bedoel je met 2 electroden? Anode en cathode samen zijn ook 2 :P (en het zijn ook electroden):

An electrode is an electrical conductor used to make contact with a nonmetallic part of a circuit (e.g. a semiconductor, an electrolyte or a vacuum).

Het substraat is dus ook een electrode ;).

[Bericht gewijzigd door Eagle666 op 5 november 2007 01:14:32 (21%)

free_electron

Silicon Member

even verduidelijken. met electroden bedoelde ik 2 bondwires.

als je een blauwe of high-eff led onder de micoscoop legt ( of sterk vergrootglas ) zul je 2 bondwires zoen die overhoeks verbonden zijn.

bij een normale led is er maar 1 bondwire , ofwel vanuit het center ofwel vanop een hoek.
bij normale led is de achterkant vand e wafer de andere electrode.

bij high-eff reds en blauwe leds ( ook de witte van nichia vallen daar onder . dat zij uv stralers met fosfor erover ) heb je effectief twee electrodes nodig. de achterkant van de wafer isoleert daar.

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

Omdat mijn LCD 4.3" driver eigenlijk universeel geschreven is, is hij ook perfect geschikt om een VGA display te gebruiken als output. De resolutie heb ik ingesteld op 640x480 pixels. Hiervoor is een clock nodig van 27 Mhz die terug met de pll aangemaakt wordt vanuit de 50 Mhz basis clock.

Na enkele kleine hardware probleempjes, er was nog een onderbreking in de VGA output door een slechte soldeerpunt, maar eens opgelost ben ik snel tot een heel behoorlijk resultaat gekomen.

Hierbij een foto van de monitor met enkele regels tekst. Merk op dat de timmer bovenaan aan het lopen is waardoor de seconde eenheid wat dubbel te zien is alsook de dubbelpunt die in blinkings mode staat tussen uren en minuten.

http://users.skynet.be/fotoopa/fpga/FV1_5457.jpg

De driver kan nu ook de veranderlijke waarden van een applicatie weergeven. Een afzonderlijke state machine verzorgt de data uitwisseling via de dualported ram.

De origineele weerstanden aan de output van de video driver zijn te hoog. Hierdoor bekom je te weinig signaal op een standaard monitor. Ik heb de waarden van 330 ohm voorlopig teruggebracht naar 47 ohm. Ook is de aansturing van de tussen niveau's niet goed op de DA convertor. Maar als je de achtergrond op zwart staat kun je voor de tekst heel mooie kleuren bekomen.

@fotoopa: Dus van R23, R9 & R24 op je bestukkingsplan heb je 47Ohm gemaakt?

Oh, als het goed is heb ik binnenkort de juiste 4 pins connector voor de LCD print :D.

[Bericht gewijzigd door Eagle666 op 6 november 2007 01:02:41 (35%)

Graag voorbeeldcode is VHDL want we zien dat maar in het bedrijf

Kan jij een voorbeeld geven hoe je een looplicht programmeert in VHDL met een FPGA module. Je moet de richting kunnen veranderen door het drukken op een knopje van links en dan een knopje van rechts.

Ik heb geen enig idee hoe je dat moet schrijven die knoppen in je code.

Kan je ook een voorbeeld geven hoe je een klokdeler schrijft in VHDL en een ontdenderschakeling?

Stefke

Ik heb mijn web voorbeelden aangepast met 2 nieuwe items.

Het eerste is het looplicht zoals gevraagd door Stephane1976 met 16 leds ( sorry maar enkel verilog). Het volledige project staat ook online voor downloading als .qar file. 3 toetsen zijn gebruikt. MS1 om het looplicht te doen oplopen van led1 naar led16, MS2 doet de omgekeerde richting en met MS3 stop je het looplicht. Het patroon van het looplicht wordt bepaald bij de powerup waarde en kan daar gewijzigd worden. De snelheid van het looplicht is 10 pulsen per seconde. De toetsen zijn gedebounced via een 10 msec clok en enkele registers.
Project kun je Hier downloaden

Het 2de nieuw voorbeeldje is de VGA monitor aansluiting op het FPGA boardje. Intussen heb ik dezelfde routine ook getest op mijn DE1 board en heb daar gezien dat het video signaal veel beter is. De oorzaak ligt bij de gebruikte schakeling die ronduit niet voldoet op het BlueBird boardje. Bij de DE1 gebruiken ze enkel een weerstands ladderwerkje met heel goed resultaat. Je kunt het BlueBird bordje verbeteren met die 330 ohm weerstanden wat te verkleinen. Ik zou voorstellen 100 ohm, ik had eerst 50 ohm maar dit is wat te klein. Maar eigenlijk moet die ganse opamp eruit en vervangen worden door enkele weerstandjes. Veel goedkoper en vooral beter.

Update:

Gezien de beperkte aantal kleuren is het resultaat zelfs van heel kleine letters toch nog heel behoorlijk. Zolang je geen heldere achtergrond zoals wit gebruikt gaat het heel goed. Ik heb nu 32 regels van 64 characters op het display staan en het gaat perfect. Door enkel die weerstandjes wat te verkleinen heb je ruim voldoende signaal. De stijgtijd is voldoende zelfs bij 1 pixel per dot. Wow, het gaat dus heel goed om hem als full display te gebruiken. Nu staat hij in 640x480 maar straks probeer ik hem nog eens op 800x600 met een clock van 40 Mhz of hij het daar ook nog doet.....

[Bericht gewijzigd door fotoopa op 6 november 2007 22:04:08 (18%)

Mooi hoor fotoopa!

Zou dat makkelijk te patchen zijn, zo'n laddertje ipv de opamp? Op zich is een opamp natuurlijk niet helemaal verkeerd, ik heb eerder het voorstel gezien (van wie ben ik vergeten) om inderdaad de uitgangsweerstanden te verkleinen, maar de netwerkjes VOOR de opamp te vergroten, is dat nog een idee? Dat is nopg niet zo ingrijpend (daarbij, m'n netwerkjes zitten er toch nog niet op ;)

Ik vind het wel mooi, zo'n VGA scherm eraan, wie hoeft er nou nog zo'n klein PSP schermpje :P

Oh en fotoopa, no offence, maar 'timer' is met één 'm'.

If you want to succeed, double your failure rate.
free_electron

Silicon Member

Op 6 november 2007 18:42:01 schreef Jochem_S:

Oh en fotoopa, no offence, maar 'timer' is met één 'm'.

tenware dat ding het aantal tim's telt dat per dag voorbij komen ...

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

Kan je leesbare code posten want ik kan dat niet unzippen ik gebruik XLinkx

Hoe maak je nu een ontdendering in VHDL en een klokdeler?

Stefke

Er zijn wel oplossingen mogelijk voor dat video signaal. Maar dit is weer een beetje analoog en daar ben ik heel slecht in. Ik laat die verbeteringen eigenlijk aan anderen. Ik weet enkel dat het op de DE1 zo eenvoudig is en dat het perfect werkt. Ik ga het ook zo maken, eerst de opamp + array's eruit en de weerstandjes op een klein gaatjesprint en er terug in zetten.

En oh ja ik schrijf zoveel fouten, je moet weten dat ik geen nederlandse taal geleerd hebt in mijn jonge jaren. Ik zal het nooit meer kunnen maar lig daar ook niet van wakker. Maar "timer" kan ik nu weer onthouden.

Ik ben bezig de verilog sources van de display driver te documenteren om ze online te brengen. Ze vragen vrij veel uitleg gezien er ongeveer 50 parameters zijn. Maar daarmee kun je heel veel soorten display's en timingen aan.

Op 6 november 2007 20:03:30 schreef Stephane1976:
Kan je leesbare code posten want ik kan dat niet unzippen ik gebruik XLinkx

Hoe maak je nu een ontdendering in VHDL en een klokdeler?

Ik had het online in een Quartus archive file geplaatst omdat het anders vrij veel plaats inneemt en indien je Altera gebruikte je direct het project had.

Maar ik probeer even enkel de belangrijkste code delen hier te plaatsen:

code:


reg [15:0] loopreg;
reg [1:0] stop_flag_reg;
reg [1:0] l_flag_reg;
reg [1:0] r_flag_reg;
reg 	  l_flag;
reg 	  r_flag;

// reset circuit
always@(posedge clk_1us)
begin
  if(res_cnt !=12'hFFF)
    begin
      res_cnt <= res_cnt+1;
      resetn  <= 1'b0;
    end else
      resetn <=	1'b1;
end

// toets input routine
always @ (posedge clk_10ms)
begin
  l_flag_reg    <= {l_flag_reg[0],!MS1};
  r_flag_reg    <= {r_flag_reg[0],!MS2};
  stop_flag_reg <= {stop_flag_reg[0],!MS3};
  if (l_flag_reg == 2'b01) begin l_flag <= 1; r_flag <= 0; end
  if (r_flag_reg == 2'b01) begin r_flag <= 1; l_flag <= 0; end
  if (stop_flag_reg == 2'b01) begin r_flag <= 0; l_flag <= 0; end
end

// looplicht routine
always @ (posedge clk_100ms)
begin
  if (!resetn)loopreg <= 16'h03c0; // hier patroon bepalen.
    else
      begin
        if (l_flag) loopreg[15:0] <= {loopreg[14:0],loopreg[15]};
      else 
        if (r_flag) loopreg[15:0] <= {loopreg[0],loopreg[15:1]};
      end
end

MS1 tot MS3 zijn 3 drukknoppen.
Flank detektie van de drukknoppen wordt met een clk_10ms gedaan en telkens 2 ff's. Die clk_10ms zorgt tevens voor een kleine ontdender.

Het looplicht is 16 bits (leds) lang en je kunt het patroon bepalen in de reset circuit.
MS1 oplopen leds via l_flag bestuurd
MS2 aflopen leds via r_flag bestuurd
MS3 stoppen ter plaatse via l_flag en r_flag op 0 zetten

Voor alle clk's heb ik altijd in een module die ik mee compileer en die mij de clk's maakt van 1 sec tot 1 usec.
Dit zijn de belangrijkste delen van de routine...

Kan je eens die code niet in VHDL schrijven maar waar moet ik nu in die code die drukknoppen sturen want ik moet met eerste drukknop links lopen, tweede drukknop rechts lopen, derde drukknop 1 sneller, vierde drukknop 2 keer sneller maar hoe doe je dat in code waar programmeer ik die knoppen en kan je eens een voorbeeld geven voor een looplicht van 4 LEDS?

Stefke

Op 6 november 2007 20:38:10 schreef Stephane1976:
Kan je eens die code niet in VHDL schrijven ?

Nee, veel te moeilijk voor mij.

Het aantal ledjes speeld geen de minste rol, hangt gewoon af hoeveel je er ter beschikking hebt. Je hebt maar de source code te wijzigen enkel door het getal aan te passen.

Bijkomende functie's zoals je snelheid doe je weer met extra toetsen maar nu ga je best een extra loop met parameter bijplaatsen zodat je een vrije keuze hebt hoeveel sneller of trager het moet verlopen. Met een kleine state machine en/of tabel realiseer je zoveel als je wilt van die wensen. Maar gezien je de verilog niet kent en ook geen Quartus gebruikt is het voor mij niet te doen om al die code hier in VHDL correct neer te schrijven. Anderen kunnen die eventueel wel.

free_electron

Silicon Member

Op 6 november 2007 20:38:10 schreef Stephane1976:
Kan je eens die code niet in VHDL schrijven maar waar moet ik nu in die code die drukknoppen sturen want ik moet met eerste drukknop links lopen, tweede drukknop rechts lopen, derde drukknop 1 sneller, vierde drukknop 2 keer sneller maar hoe doe je dat in code waar programmeer ik die knoppen en kan je eens een voorbeeld geven voor een looplicht van 4 LEDS?

los uw schoolvragen zelf op.
moet moet moet. moeten is dwang en sch... is afg...
trouwens der zijn al stapels oplossingen gepost op uw vraag.

zie ook hier :

http://www.circuitsonline.net/forum/view/54480

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

Viel jou die dwang ook al op? :P.
Ik had het al in meerdere topic bij dezelfde persoon gezien. Maar of iemand van '76 nog op school zit? ;)

[Bericht gewijzigd door Eagle666 op 7 november 2007 06:31:14 (19%)

Op 6 november 2007 10:11:14 schreef Stephane1976:
Graag voorbeeldcode is VHDL want we zien dat maar in het bedrijf

Het lijkt dus zelfs iets voor 'op het werk'.
De wil om zelf wat te ontdekken ontbreekt kennelijk.

@Stephane: Ik kan ook nog geen VHDL, maar als je nou eens (zoals fotoopa eerder in dit topic aankaartte) begint met schema-entry en dan de VHDL gaat bekijken die Quartus (of wat jij gebruikt) ervan maakt? Verder zijn er een hoop tutorials op internet te vinden. Je mag al blij zijn dat fotoopa in het kader van ´u vraagt wij draaien´ meteen met een prachtig verilog-voorbeeld aan komt zetten. Ook daarvan kun je leren, zelfs als je VHDL nodig hebt. Het gaat om het principe van de werking.

If you want to succeed, double your failure rate.

Jochem,
Communiceren is lastig. Wat staat er nu...

.... in het bedrijf

Ik heb na zitten denken of er "in mijn bedrijf" bedoeld werd, of "in actie". Ik heb het als het laatste geinterpreteerd. i.e. we zien maar fotos van bijvoorbeeld VGA output die werkt, maar niet de code die dat aanstuurt.

Stephane, Je hoeft Fotoopa niet te pushen om de boel openbaar te maken. Vaak als je ergens mee bezig bent, dan groeit het wat "slordig" bij mekaar. Voordat je het online zet, wil je nog even alles netjes maken. Zo ook bij fotoopa. Als ie eenmaal klaar is, dan heb je ook wat moois.

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

Ik vindt dat fotoopa meer dan voldoende doet, de instelling van Stephane1976 kom je helaas steeds meer tegen, iedereen verwacht maar dat de gebakken duiven 'm zo in de mond vliegen...

In mijn jonge jaren zat ik avonden en soms nachten op de commodore 64 in assembly spelletjes te hacken. Toen moest je wel zelf alles uitzoeken, internet en fora waren er nog niet...

It's the rule that you live by and die for It's the one thing you can't deny Even though you don't know what the price is. It is justified.