CPLD-FPGA eenvoudige voorbeelden.

Oef, dit wil zeggen dat de layout en schema na de updates moeten werken.

Eigenlijk is het spijtig dat er voor dergelijke hobby printen zo veel heel kleine SMD gebruikt wordt met fijne baantjes terwijl er ruimte zat is voor onze doodgewone traditioneele componenten.

Ik heb niets tegen SMD en miniaturisatie waar het nodig is maar het zou toch veel gemakkelijker kunnen gaan. Heel fijne baantjes geven snel aanleiding tot kortsluitingen.

Je moet ook eens zien hoe weinig plaats er is voor het bedienen van de 6 druktoetsen op de FPGA board. Ik moet oppassen of mijn vinger ligt op 2 knoppen gelijktijdig. Allemaal mooi, modern maar zo onconfortabel in bediening.

I/O connectors staan zo dicht dat je 2 normale 3M kabelconnectors niet kunt aansluiten en onderling dan nog niet eens op volle raster maat. Dit noem ik eigenlijk ontwerp fouten door gemist aan praktische ervaring.

Ontwerpen maken voor onervaren gebruikers moeten ruim en robust zijn. kijk niet op naar enkele cm meer oppervlakte en gebruik waar mogelijk gewone componenten. Maar ja fotoopa wordt waarschijndelijk oud...

Enfin ik ben blij dat de programmer toch werkt!

Een aantal weken geleden heb ik de Terasic DE1 en het Nano bordje aangeschaft. Werd supersnel geleverd en het materiaal ziet er prachtig uit. Z'n geld meer dan waard.
Ik ben nu langzamerhand Quartus aan het verkennen. Dat valt nog niet mee, het is een indrukwekkend, maar ook complex geheel aan functies. Maar, het eerste led-knipper programmaatje werkt! De voorbeelden die met name fotoopa en anderen op dit forum plaatst zijn zeer behulpzaam bij het begrijpen van een en ander. Soms gaan de posters wel wat snel bij het uitleggen van het hoe en wat en dan ben ik een avondje zoet met het uitzoeken van de preciese procedure. Maakt niets uit, daar leer ik veel van!

Wat wil ik met FPGA's? Ik ben met name geinteresseerd in Software Designed Radio. Dat is in het ideale geval een Analoog Digitaal Converter direct aan de antenne en de rest is "software". In de praktijk is het allemaal veel ingewikkelder natuurlijk. Als oefening wil ik starten met het maken van een Direct Digital Synthesizer, een schakeling die direct een sinusvormig signaal opwekt. Daat ben ik voorlopig even zoet mee...Het mooie van het Nano bordje is dat je daar van alles en nog wat mee uit kunt testen voordat je naar de 'grote' DE1 moet uitwijken.

@fotoopa:

Er was wel een argument voor de grootte van het FPGA bordje en dat is dat de gratis versie van de software (Eagle) maar een beperkte 10x8cm toestaat.

Straks kan er ook een DE1 club opgericht worden ;) Maar idd het is een superboard voor zijn prijs. Ik weet dat het voor low buget al een hoop geld is maar op iets langere termijn heb je dit snel terug. Die MAX II vind ik dan weer praktisch om ergens in te bouwen want die is weer heel klein.

Hé die DDS daar heb ik ook al over gedroomt. Ik ben ook jaren radio amateur geweest ( ex ON5DK) maar dat is 45 jaar geleden en dan moesten we alles met lampen bouwen ( heb ik ook gedaan zowel 80-10 m als 2 m band. Ik had toen een SSB zender gebouwd, allemaal lampen en was 250W.

Op 2m was ik toen al met transistors en fets aan het werken en die transceiver was dan ook VFO gestuurd maar traditioneel. Spijtig, later met de druk op het werk had ik geen tijd meer om te zenden en heb ik mijn vergunning opgezegd omdat ik die niet verder wou betalen gezien ik ze niet meer gebruikte. Maar achteraf gezien heb ik daar toch spijt van gehad. Mijn ruim 10.000 QSL kaarten van over de hele wereld heb ik wel behouden als aandenken van de vele radio verbindingen.

@madwizard,

nee dat was geen argument want xantus heeft ergens gezegt dat hij de full versie had en niet beperkt was tot die oppervlakte.

Oke, dan heb ik niets gezegd.

Flink wat mensen met een DE1 inderdaad, dat is ook wel het voordeel van zo'n enorm standaard bordje: over de hele wereld werken er mensen mee en zijn er voorbeelden beschikbaar.

free_electron

Silicon Member

Op 19 oktober 2007 15:04:41 schreef fotoopa:
[...]

Het is niet waar hé dat je nu uw boek moet gaan aanpassen ;)

damn. moet vanaf eerste blad gaan herbeginnen :p

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 er al zoveel voorbeelden her en der staan wordt het stilaan een puzel om iets terug te vinden. Vandaar dat ik eraan houd om zoveel mogelijk mijn voorbeelden samen te bundelen op een deel van mijn webspace. Deze pagina's heb ik voorlopig volledig afzonderlijk gehouden van mijn gewone web en zijn bijgevolg enkel terug te vinden via deze link. Zo blijft dit een beetje een CO aangelegenheid. Vandaar dat alles in het nederlands is en al mijn taalfouten moet je daar maar bij nemen.

Is er voldoende belangstelling dan laat ik deze link actief. Mijn provider leverd doorgaans een heel snelle acces. Ik heb de opbouw heel eenvoudig gelaten want het is niet mijn bedoeling daar een model site van te maken, eerder gewoon zoveel mogelijk de gegevens te bundelen.

Ik kan dit gedeelte van de site ook niet testen voor alle soorten webbrouwsers. Maar zijn er zware problemen met acces of leesbaarheid, geef maar gewoon een seintje ik kijk wel of ik het kan verbeteren.

Ik blijf nieuwe voorbeelden hier ook posten maar tracht die terzelfde tijd online te plaatsen op mijn site.

De link hiervoor is:

FPGA fotoopa CPLD/FPGA voorbeelden

[offtopic]Ik ben zelf ook bezig met een site waar anderen hun projecten naar kunnen uploaden. Is nu alleen nog maar voor de Pic-starters bordjes. ( En ik ben de enige die erbij kan :P ). Maar de bedoeling is om dit over een tijdje "publiek" te maken. Zodat we er hier ook profijt van kunnen hebben.[/offtopic]

@MrGamba: Nou daar zal ik dan zeker gebruik van gaan maken.

@Fotoopa: Schitterende site. Maar hoe zit het met die .qar files die je gepost hebt? (ik ben nieuw in alles wat met Quartus en FPGA te maken heeft). Ik heb hier RS232.qar, schema_template.qar en zeven_segment.qar liggen, ik vind er geen info over terug op je site nml.

Op 20 oktober 2007 19:01:17 schreef Eagle666:
@MrGamba: Nou daar zal ik dan zeker gebruik van gaan maken.

@Fotoopa: Schitterende site. Maar hoe zit het met die .qar files die je gepost hebt? (ik ben nieuw in alles wat met Quartus en FPGA te maken heeft). Ik heb hier RS232.qar, schema_template.qar en zeven_segment.qar liggen, ik vind er geen info over terug op je site nml.

Dat komt in orde. Ben bezig met zoveel mogelijk alles over te zetten. Maar dat vraagt een beetjes tijd. Ik ga die .qar files bij de downloading plaatsen zodat ze daar verzameld zijn. Een site opbouwen vergt nogal wat werk.

ps:
Vergeet niet regelmatig jullie webinhoud te refreschen van mijn site. Ik ben kontinue bezig met aanvulligen. Als je een cache gebruikt in je browser zou je de vernieuwingen niet zien.

Schema_template staat er ook al bij.

[Bericht gewijzigd door fotoopa op 20 oktober 2007 19:18:17 (15%)

Ik zie het, goed werk!

Zijn .qar files de gecompileerde versies van .v files? Ik heb nml ook nog de lcd_keyboard.qar hier liggen dus die zal wel bij je "Lcd 2x16 character display" pagina horen.

Ook heb ik een bouncing_ball.qar liggen voor een VGA demo, geen idee waar ik die gevonden heb.

Verder heb je op dit moment "10 bits pwm met rotary encode." pagina er 2 keer op staan (fpga6 en fpga11).

Op 20 oktober 2007 23:15:29 schreef Eagle666:Verder heb je op dit moment "10 bits pwm met rotary encode." pagina er 2 keer op staan (fpga6 en fpga11).

Bedankt, ik had het nog niet opgemerkt! Intussen is het aangepast.

Bedoeling is om het nog wat verder uit te werken en te verduidelijken. Ik heb eerst zoveel mogelijk mijn topics overgenomen zonder veel extra uitleg. Maar ik zal hier en daar nog wel wat bijsturen.

Ik zal trachten nog een klein schema entry op te nemen die stap voor stap aangeeft hoe je het moet doen samen met een kleine simulatie. Want velen zullen daar wel problemen mee hebben om de stimuli file (wavefile) aan te maken en te gebruiken. Het probleem is altijd dat je heel wat tekst moet neerschrijven die je eigenlijk anders in een paar minuten zou kunnen uitleggen.

Mocht je hier op de gemeente wonen, dan zou je wel gemakkelijk van een gratis opleiding kunnen genieten. De gemeente heeft hiervoor een goede infrastructuur en is vrij positief voor dergelijke zaken, maar ik vermoed dat het voor de meesten veel te ver zou zijn.

Op 20 oktober 2007 17:44:59 schreef fotoopa:
... mijn voorbeelden samen te bundelen op een deel van mijn webspace...

Zeer goed initiatief!

(Een suggestie: De datum van plaatsing/wijziging toevoegen, zodat je makkelijk kunt zien wat nieuw of gewijzigd is.)

Op 21 oktober 2007 10:04:03 schreef P.Techneut: (Een suggestie: De datum van plaatsing/wijziging toevoegen, zodat je makkelijk kunt zien wat nieuw of gewijzigd is.)

Heb ik aangepast. Als er nieuwe items bijkomen plaats ik dan ook wel nog een extra marker bij die item.

update:
Ondertussen zijn een aantal items upgedate op de site. De meeste .qar files zijn ook upgedate om de meest recente pin nummer aanpassingen weer te geven.

ter verduidelijking: een .qar file is een archieve file die een volledig project bevat en heel eenvoudig kan gerestored worden om terug te kunnen compileren of zelfs gewoon de .sof of .pof file te gebruiken om je FPGA te programmeren.

.sof file voor programmeren van de FPGA via de JTAG.
.pof file voor programmeren van de FPGA via de AS mode voor de config eeprom (EPCS1 chip). Dit laatste behoud zijn data ook na spannings uitval.

[Bericht gewijzigd door fotoopa op 21 oktober 2007 14:57:14 (48%)

Ik zoek een character rom die een 5x7 dot font bezit om te gebruiken bij het LCD 4.3". Ik heb het web afgezocht en heb slechts 1 bruikbaar gevonden. Echter het is een pdf file waar alle characters in getekend staan. Opzich voldoende informatie om de hele rom aan te maken maar het is verduiveld een enorm werk om dit allemaal manueel te editeren. Vroeger bestonden character roms die je gewoon kon kopen. Ze bestonden in een aantal versie's waarbij ook andere font types en grootes gebruikt werden. Maar die rom's vind ik nergens meer terug om te kunnen downloaden. Rond de jaren 1977 heb ik ze nog gebruikt ten tijde van de eerste CPU kits ( de "KIM" was met een 6502) toen hadden we ook zelf een display gemaakt en daar stak die character rom in. Maar dit is allang voorbij.

Ik heb zo een rom nodig om characters op het LCD 4.3" te plaatsen. Als mij iemand kan helpen dan zou dit mij ontslaan van een dagje "dummy editeer werk".

Het voorontwerp staat op mijn web "CPLD en FPGA voorbeelden" Die kun je raadplegen via de link in mijn signature.

Op 17 oktober 2007 21:44:01 schreef free_electron:
[...]

klopt. maar hier is de truuk met de hamer ...

op je TOPLEVEL definieer je ALLE pinnen als BIDIR
met andere woorden een signaal wat de chip verlaat of binnekomt wordt ALTIJD als bidir getekend.

de compiler stript dan automatisch de niet gebruikte functie weg.

Ok dat werkt bedankt voor de tip

Maar als ik dat doe en ik gebruik een bidir pin als output (en dus niet als bidir) dan krijg ik de warning

code:


Warning: Inserted an always-enabled tri-state buffer between logic and the tri-state bus out~0 that it feeds

Dus kun je ergens in de compiler instellen dat die niet een always enabled tristate buffer moet nemen maar een hardcoded output?

Op 22 oktober 2007 13:03:18 schreef fotoopa:
Ik zoek een character rom die een 5x7 dot font bezit om te gebruiken bij het LCD 4.3".......
......Maar die rom's vind ik nergens meer terug om te kunnen downloaden. Rond de jaren 1977 heb ik ze nog gebruikt ten tijde van de eerste CPU kits ( de "KIM" was met een 6502) toen hadden we ook zelf een display gemaakt en daar stak die character rom in. Maar dit is allang voorbij.

Zo een rom heb ik nog wel, echter kan ik hem pas volgende week uitlezen (ivm met een welverdiende vakantie).
Mocht het dan nog van enig nut zijn laat het dan nog even weten.

Dat zou heel mooi zijn.

Er is veel kans dat hij zelfs nog mooier is. Te laat is het zeker niet want ik ga die file maar editeren als ik echt niet verder meer kan en al de rest klaar is. Ik kan voorlopig gebruik maken van een bijna blanke rom die kan ik opvullen via een hexeditor en een paar characters voorlopig ingeven. Daar kan ik al mijn routines testen.

Is het een 7x9 dot versie dan zou het ook prima zijn. Ik ga de hardware zo schrijven dat ik die kan aanpassen volgens het font type.

Als ik maar niet alles manueel moet ingeven....

Geniet maar eerst van je welverdiende vakantie!

free_electron

Silicon Member

Op 22 oktober 2007 13:16:28 schreef surge_me:
[...]

Ok dat werkt bedankt voor de tip

Maar als ik dat doe en ik gebruik een bidir pin als output (en dus niet als bidir) dan krijg ik de warning

code:


Warning: Inserted an always-enabled tri-state buffer between logic and the tri-state bus out~0 that it feeds

Dus kun je ergens in de compiler instellen dat die niet een always enabled tristate buffer moet nemen maar een hardcoded output?

geen idee. maar de fusemapper werkt die alays enabled tri buffer dan toch weg. dus komt op hetelfde neer.

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

@surge_me:
@free_electron:
Die code lijn in jullie posts rekken deze forum pagina helemaal op. Kunnen jullie die even veranderen in een quote lijn (dus [ quote ][ /quote ] gebruiken ipv [ code ][ /code ])?

@fotoopa: Ik weet er verder niet veel vanaf maar ik lees dat grafische LCD schermen character (generator) ROM's in hun besturings/driver-ic hebben zitten. Zit dat dan niet in die van jou?

Ik kan het verder niet checken omdat ik geen typenummer van het gebruikte LCD zie. En ik snap ook nog niet helemaal wat je nou wilt doen. Ik dacht vaker mensen characters te zien maken voor projectjes met LCD schermen maar dan zonder extra ROM's te plaatsen ofzo. Maar zelf geen ervaring mee dus....

Oh, op je site spreek je in de tekst over RAM ipv ROM :P.

Waarschijnlijk heeft dit ermee te maken ;):
http://www.atariarchives.org/cgp/Ch02_Sec04.php

Kijk zo leren we nog eens wat:

Some graphic LCDs come with what's called a built-in "character ROM", and some don't.

The character ROM stores predefined letters, numbers, and some symbols (just like the "conventional" HD44780 controlled alphanumeric LCDs (16X1, 16X2, etc..do)).

Having a built-in character ROM (CGROM) is handy, since it cuts down big time on code. However, the graphic LCDs which have CGROM built in are not cheap.

En termen:

CGROM - Character Generator ROM
CGRAM - Character Generator RAM
DCRAM - Data Control RAM
ADRAM - Additional Data RAM

CGROM, CGRAM and DCRAM are embedded in 5x7 dot character VFD drivers. General or Custom codes are installed in CGROM. CGRAM can be used for additional characters that would be 5x7 dot characters or graphic characters. Once installed in CGRAM, characters are retained in the system until it is powered off. This is more efficient than getting the characters from another external memory every time it is needed. However, the characters have to be re-installed each time the system is powered-up. DCRAM works as an address pointer to character data in CGROM or CGRAM. ADRAM stores a symbol data and can be used for a cursor on display.

@Eagle666,
Er zijn idd vele soorten LCD's, drivers enz maar dit LCD 4.3" is een zuiver grafisch display zonder de minste intelligentie ingebouwd. Het enige dat hij doet is de sync en het afscannen van de aangeboden data (24 bit) die hij dan als RGB pixel op het scherm brengt. Voor de gewone software oplossingen kan de omzetting om karacters te vormen via software gebeuren en die zitten dan in de drivers of de applicatie. Maar bij een FPGA moet je daar zelf voor zorgen. Dat gebeurt via een zogenaame charactor generator en of dit een rom of een ram is maakt eigenlijk niets uit.

Op zich is het ook geen enkel probleem maar om zo een karacter generator op te bouwen voor 128 characters is dit een vrij omslachtige taak, een dummy taak want het is een erg tijdrovend en vervelend werk. Met software tools kun je dit werk mogelijks wel vooruithelpen maar dan moet je eerst over die tools bschikken en over bepaalde bron code. Ook zijn er vele characterrom copyright net zoals de fonts copyright zijn en het is niet omdat je ze vind dat je ze zelfs mag verdelen.

Bij de klassieke character LCD display's zit die character rom in de controller opgeslagen. Het is die bitmap die je eigenlijk kunt gebruiken om over te zetten op je FPGA. Ik heb nu wel een hel mooie pdf waar al die characters ingetekend staan maar als je weet dat iedere character 8X8 = 64 bits heeft en je 128 characters heb moet je bijgevolg 8192 bits gaan editeren.

Het LCD 4.3 display is vooral een full grafisch display op 24 bit kleur resolutie. Wat ik nu aan het maken ben is deze aan sturen vanuit de FPGA als full color grafisch ( is een image van 480x272x24 bit, een foto zeg maar maar daarin kun je ook characters schrijven als een overlay, bovenop dus en door enkele functie's kun je die letters in het beeld zetten, vervangen, mixen enz Dit zijn logische functie van grafisch en character mode. Maar op de Blue Bird board zijn onvoldoende resources beschikbaar om alle mods en functie's te gebruiken omdat je daarvoor minstens een ruime 3 Mbit ram nodig hebt en die hebben we intern niet.

Maar de hardware die ik nu ontwikkel heeft een aantal optie's zodat je de grafische mode beperkt tot eenvoudige dingen maar je behoud nog een full character mode zodat je het display in een tekstmode kunt gebruiken waarbij je de kleuren nog kunt bepalen. Een oplossing is ook bepaalde algorithmen te schrijven in hardware die zonder veel resources realtime beelden genereren. Omdat deze berekeningen realtime gebeuren heb je daarvoor geen extra ramopslag nodig.

Dat staat nu reeds gedeeltelijk op mijn web maar het ontwerp is nog lopende en zal nog aangevuld worden.

Op 23 oktober 2007 04:37:54 schreef Eagle666:
@surge_me:
@free_electron:
Die code lijn in jullie posts rekken deze forum pagina helemaal op. Kunnen jullie die even veranderen in een quote lijn (dus [ quote ][ /quote ] gebruiken ipv [ code ][ /code ])?

Helaas is dat niet echt de oplossing. Het font bij gebruik van quote-tags is niet monospaced (wat niet altijd heel erg is, maar soms niet duidelijk, vooral bij uitgelijnd commentaar o.i.d.) en bovendien blijven leading-spaces niet behouden (inspringen).
Je hebt verder wel gelijk: het is irritant dat de site-layout eraan onderdoor gaat. De oplossing zou echter eerder zijn om de betreffende stukken code met de hand iets aan te passen.
De foutmeldingen van f_e surge_me kunnen uiteraard prima tussen quote-tags, dan wordt de regel gewoon ge-wrapped:

Warning: Inserted an always-enabled tri-state buffer between logic and the tri-state bus out~0 that it feeds

If you want to succeed, double your failure rate.
Met geld moet je creativiteit bekopen.

@Jouke,

Ja daar staat idd info bij die bruikbaar is. Ik heb deze morgen reeds een e-mailtje ontvangen van Eagle666 met vele links en deze zat erook bij. Bedankt in ieder geval!

Ik ga nu eerst de routines afwerken en dan de verschillende character rom's trachten erin te plaatsen. De routines zijn zeer dynamisch opgezet waardoor ik ieder font type formaat zou moeten kunnen gebruiken mits de parameters vooraan in het programma aan te passen. Zo ook het aantal characters per lijn, font pixels horizontaal en vertikaal, font frame afmetingen, aantal characters per lijn vertikaal enz. Zo kan er gekozen worden om weinig heel grote characters op het scherm te krijgen ofwel kleine letters maar heel veel. Ook de start en eind positie binnen de 480x272 pixels waar de characters beginnen kan zowel horizontaal als vertikaal ingesteld worden.

Maar eerst verder programmeren want het wordt toch al een flink stuk verilog code....

Op 23 oktober 2007 10:41:38 schreef Jouke:
@fotoopa
staat hij hier bij.
http://www.sharpmz.org/mz-700/charrom.html

Ik had die ook gezien, maar het nadeel van deze character roms is dat de character bitmap niet op een veelvoud ligt van de ascii waarde van het karakter dat je wilt displayen.
Normaal begin de 'A' op (hex) 41 en de '0' op (hex) 30.
DIt maakt het een heel stuk makkelijker als je bepaalde tekst wilt weergeven, anders moet je weer met lookup tabellen gaan werken.