CPLD-FPGA eenvoudige voorbeelden.

Fotoopa, ik heb eens naar het analoge deel van de VGA out zitten kijken.

Het principe op het DE1 bord is dat we met de R/2R DAC een analoog singaal maken tot 3.3V maar met een uitgangs impedantie van 266 ohm. Hang je daar een 75 ohm VGA kabel aan, zakt het signaal tot ongeveer 0.72 volt. (VGA standaard zegt: 0.7V p-p).

Het bedoelde princiepe op ons bluebird bordje is om met de R/2R DAC een analoog signaal te maken, dat dan te bufferen, en vervolgens met een impedantie aanpassing de VGA kabel in te sturen. De 330 serieweerstand zorgt met de 75 ohm op de kabel in principe voor een verzwakking tot rond de 0.61V (moet 0.7 zijn).

Ik heb ergens gezien dat iemand een "beter" voorstel had: een 330/100 ohms weerstandsdeler. De uitgangsimpedantie van het schema is dan ook ongeveer 75 ohm. Moet iets met refelecties schelen.

Het signaal wordt daar echter nog kleiner van. En of de opamp snel genoeg is, weet ik niet. Waren ook nog problemen mee. Bovendien vermoed ik dat mijn opamp van de tafel gevallen is, en door de schoomakers opgezogen....

Stappie terug: Als we willen namaken wat op het DE1 bord goed werkt, moeten we simpelweg een R/2R DAC maken met een uitgangsimpedantie van zo'n 250 ohm.

(hmm. het is niet eens een R/2R DAC. Alhoewel het best kan dat als je maar 2 bits hebt zoals op bluebird, het 't zelfde wordt).

Volgens mij wordt het dan:
http://prive.bitwizard.nl/dac.png
Nu nog een manier vinden om dat op het bestaande printje te prutsen.... [edit:] Ooops. Rekenfout in de weerstanden. Volgens mij moeten ze 425 en 850 zijn.... ....

[edit:] Oh nog iets. Het MSB_G signaal heet ineens AR als ie door de opamp heen is. Bij rood omgekeerd....

P.S. Roland, helemaal mee eens. Dat bedoel ik te zeggen! :-)

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

Silicon Member

nog iets. je weet toch dat je de 'drive strength ' kan programmeren van die outputs he ? dus het zou kunnen dat je zonder de weerstanden aan te passen en met de strength te spelen tch op de juiste amplitude kan geraken ....

drive stringen zit onder assignments. open de pin assignment editor. daar k je parameters instellen. je kan ook serieweerstanden bij in of uitschakelen ...
tis maar een gedacht ...

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

Wat is eenieder toch onvriendelijk jegens Stephane.

Hij lijkt me een heel vriendelijke beleefde jongeman, die tot het uiterste gaat om dingen zelf uit te zoeken en op te lossen, voor zover zijn capaciteiten het toelaten.

free_electron

Silicon Member

Op 7 november 2007 06:30:34 schreef Eagle666:
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? ;)

ela . ik ben van 70 en ik loop ook nog school ! elke maandagavond (USCSJ). en paar weken terug ook nog 3 dagen 'school' bij altera zelf ( met diploma !)

tis niet omdat we 'oude taarten zijn' dat we niet meer willen bijleren he .

enfin. ik heb de indruk dat 'stephane' met gebakken peren zit. hij moet iets doen voor het bedrijf en is in het 'peter-principe' beland .. ofwel heeft hij echt geen zin.

@stephane. teken dat ding eens uit met blokken.

code:


                      _____      ________
clock-+- tweedeler --| mux |____| teller |____ decoder
      |--------------|_____|    |________|
                        |              |
           snelheid-----    up/down ---


voila dat is uw 'hoofdblok' . met de multiplexer kan je schakelen tussen clock en clock/2.
en je kan heen en weer met up/down.

debuncer princiepe is al uitvoerig uitgelegd.
waar je je knoppen moet verbinden : welke tool gebruik je ? indien Quartus : simpelste is je VHDL schrijven. File - make symbol file (BDF)

maak een toplevel schematic aan. dubbelklikken en instantieer je BDF.
dubbelklikken en kies input of output. en verbinden maar de boel. niks makkelijker dan een top level schematic.

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

@ rew,
idd, je voorbeeld komt overeen met de DE1 en zal zeker goede resultaten geven. Al moet ik erbij vertellen dat de resultaten nu met de 50 ohm op de uitgang van de opamps heel goed is. Zeker ruim voldoende voor de meeste toepassingen.

Ik ga die oplossing toepassen op mijn 2de FPGA boardje. Die moet ik toch nog solderen en dan zal ik beter het verschil zien. Ik zal die weerstandjes op ic voetjes plaatsen dan kan ik nog wat spelen met de waardes. Omdat er maar heel weinig combinatie's van de kleuren zijn kan het best zijn dat het beter is om de zaak minder lineair te maken.

Ik heb nu al meerdere testen gedaan met de driver en die ook nog verder aangepast. Nu zijn bijna alle parameters over hun volledige range uitgetest. Dit houd in dat ik kan een scherm maken van 1 character tot 2048 characters. Je kunt de characters zomen tussen 1:1 en 32:32

De kleuren zijn nu prachtig. Ik had eerst een probleem omdat er een zwart niveau gesampeld wordt door de monitor juist na de horizontale sync en ik had daar niet de goede waarde voor gegeven. Maar nu dit correct gedaan is wordt het zwart niveau door de monitor goed gesampeld en bijgevolg ook alle andere waardes. Bijde LCD driver heb je dit probleem niet omdat het daar digitale signalen zijn en geen analoge.

Nu nog wat verder schrijven aan de documentatie van de driver. Dit is echt heel veel werk maar ik kan jullie verzekeren dat de VGA resultaten buiten alle verwachtingen heel heel goed zijn. Zodra het klaar is geeft ik het volledige project wel vrij.

@ free_electron,

Ja ik weet dat je de 'drive strength kunt bepalen. Maar gezien er 10 kohm aan de ingangen van de opamp zitten maakt het niet veel meer uit. Maar nu zijn de resultaten heel goed. Zelfs met 1 pixel per character dot gaat het perfect.

@stephane,

Ik tracht altijd zoveel mogelijk te helpen, bewijs ook mijn voorbeelden. Vroeger kon ik enkel schema entry maar na de goede aanbevelingen ben ik uiteindelijk overgestapt op verilog. Na 2 weken kon ik al behoorlijk enkele mooie routines schrijven. Gevolg was dat ik mijn schema entry grotendeels verlaten heb. VHDL lijkt mij te omslachtig. Dat was ook de reden van mijn vroeger falen. Maar door de verilog te leren kan ik nu toch al behoorlijk VHDL begrijpen. Als ik je vragen bekijk heb je echter meer dan VHDL problemen, blijkbaar door totaal gemis aan ervaring. Opzich is dat geen probleem want iedereen moet ergens starten. Maar omdat ik geen VHDL toepassingen schrijf heb ik ook niet de kennis om dit probleemloos te doen. Maar puur ontwerp gezien zou je toch al heel veel voordeel moeten kunnen putten uit de aangehaalde voorbeelden in verilog.

@FE: ELA! :P, ik ben zelf van '78 en ben nu met mijn master bezig, dus op de uni. Dus ik zit ook nog op school, geen cursus maar echt school. Maar tis gewoon onwaarschijnlijk dat iemand van mijn jaar of ouder nog echt op school zou zitten maar zoals je ziet kan het. Twas gewoon een opmerking omdat je het misschien niet gezien had.

Dat je jezelf een oude taart noemt moet je zelf weten ;).

Dat meneer in peter-principe zit wil ik best wel aannemen maar we reageren hier op het forum op elkaar met een beetje beleid. Ik zie graag hoeveel men elkaar helpt hier, enorm leuk. Maar dat willen we dan ook zo houden ;). Feit is dat hij met een andere benadering veel meer hulp had gekregen.

free_electron

Silicon Member

Op 8 november 2007 00:39:50 schreef Eagle666:

Dat meneer in peter-principe zit wil ik best wel aannemen maar we reageren hier op het forum op elkaar met een beetje beleid. Ik zie graag hoeveel men elkaar helpt hier, enorm leuk. Maar dat willen we dan ook zo houden ;). Feit is dat hij met een andere benadering veel meer hulp had gekregen.

klopt , maar altijd dat 'ik moet moet moet moet. meneer heeft al wel 10 oplossingen gekregen en allerhande tips en tis telkens dezelfde vraag : t'moet in VHDL... ( hij heeft het trouwens in vhdl gekregen ook ). en das erom vragen he...

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

Ik weet niet of ik hier gelijk in t goede forum zit. Ik vond het misschien een beetje overbodig om een nieuw topic te openen.

Ik ben nu bezig om een quadrature decoder te maken, alleen heb ik nu problemen om te bepalen of deze links of rechtsom kan draaien. Weet iemand wat ik fout doe?

code:



library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity Quadrat is
    Port ( Clock : in  STD_LOGIC;
           Quad_A : in  STD_LOGIC;
           Quad_B : in  STD_LOGIC;
           Quad_A_delay : in  STD_LOGIC;
           Quad_B_delay : in  STD_LOGIC;
           Count : out  STD_LOGIC_VECTOR (7 downto 0));
end Quadrat;

architecture Behavioral of Quadrat is

signal count_direction: STD_LOGIC;
signal count_enable: STD_LOGIC;
signal count_int: STD_LOGIC_VECTOR (7 downto 0):="00000000";

begin
process (clock)
begin


count_enable <= quad_A or quad_B or quad_A_delay or quad_B_delay ;
count_direction <= quad_A xor quad_B_delay;

if rising_edge(clock) then
	if count_enable = '1' then 
			if count_direction = '1' then
				count_int <= count_int + 1;
			else
				count_int <= count_int - 1;
			end if;
	Count <= Count_int;
        end if;
end if;
end process;

end Behavioral;

Uiteraad als dit werkt geldt dit natuurlijk ook als eenvoudig voorbeeld.

De simpelste quadrature encoder gebruikt gewoon rising edge van QuadA
(dus bijvoorbeeld Quad_A AND !Quad_A_delay) en dan Quad_B als direction. Probeer dat eerst eens....

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

@J. The Ripper,

Dergelijke routine heb ik reeds beschreven op de eerste pagina, eerste bericht. Zo te zien heb ik ook XOR functie's voor je "count_ena" ipv de OR die je gebruikt. Ik ga ook altijd eerst mijn ingangs signalen volledig gaan synchroniseren omdat ik nooit direct een ingangssignaal ga gaan verwerken in de vergelijkingen. Immers je weet nooit of je setup en hold tijden correct zijn waardoor vrij eigenaardige toestanden kunnen voorkomen. Dit is een heel belangrijke algemene regel, een must bij complexe systemen.

Ondertussen heb ik mijn VGA driver als een volledig project beschikbaar gesteld. Die is ook te vinden op mijn web pagina waar al de voorbeelden die ik reeds gemaakt heb staan. Deze driver is een vrij uitgebereide versie geworden met een heel goed resultaat. Dit project is terug als een archive file beschikbaar, je moet maar gewoon restoren en opladen naar de FPGA module. Een gewone VGA monitor verbinden aan je print en klaar is kees.

Merkop dat het origineel uitgangs signaal vrij laag is. Ik heb daar 50 ohm weerstandjes geplaatst ipv de 3x330 ohm die er origineel inzitten. Doe je deze wijziging niet dan zal je het contrast en de helderheid van je monitor volledig moeten opendraaien.

Ik hoop dat jullie dit vrij aanzienlijk werk van deze driver waarderen. Niet iedereen is bereid dit zomaar beschikbaar te stellen. Er zit een basis applicatie bij die het uur:min sec op het scherm brengt. Dit is gedaan opdat jullie het princiep van werking met de dpram zou zien. De driver is vrij uitvoerig getest maar houd geen garantie in. Het is ook als voorbeeld bedoeld en zeker nog vatbaar voor heel veel verbeteringen. Maar ik hoop dat jullie hierbij een ernstige basis en motivatie hebben om iets gelijkaardig te maken.

Een voorbeeld lijste met de parameters zie je hier:

http://users.skynet.be/fotoopa/fpga/vga_par.png

Terwijl je een ander scherm instelling kunt maken via het activeren van een andere include file ( alle include files zitten in de .qar)

http://users.skynet.be/fotoopa/fpga/vga_par1.png

De LCD versie moet ik nog wat updaten omdat de parameterfile nog moet gewijzigd worden. Maar die .qar file komt er ook nog. Ik heb echter de voorkeur gegeven aan de VGA versie omdat iedereen met het BlueBird bordje hiermee zou moeten kunnen werken.

Zijn er fouten dan hoor ik het ook graag. Wijzig je de parameters, doe het dan langzaam en voorzichtig. Een meer gedetailleerde uitleg staat op mijn web pagina. (zie de link mijn sign)

Update:
link vergeten: vga_640.qar

Ik begrijp de opmerking van rew niet zo heel goed? Domme gast ben ik ook :(.

Iets met:

code:


if rising_edge(clock) then
	if quad_A and ! quad_A_delay  then 
			if quad_B = '1' then
				count_int <= count_int + 1;
			else
				count_int <= count_int - 1;
			end if;
	Count <= Count_int;
        end if;
end if;
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Ik heb de code een beetje aangepast maar toch wil het me niet lukken.

code:



library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity Quadrat is
    Port ( Clock : in  STD_LOGIC;
           Quad_A : in  STD_LOGIC;
           Quad_B : in  STD_LOGIC;
           Count : out  STD_LOGIC_VECTOR (7 downto 0));
end Quadrat;

architecture Behavioral of Quadrat is

signal count_direction: STD_LOGIC;
signal count_enable: STD_LOGIC;
signal count_int: STD_LOGIC_VECTOR (7 downto 0):="00000000";
signal quad_A_delay: STD_LOGIC;
signal quad_B_delay: STD_LOGIC;

begin

process
	begin
		wait until rising_edge (clock);
		quad_A_delay <= quad_A;
end process;

process
	begin
	wait until rising_edge (clock);
		quad_B_delay <= quad_B;
end process;

process (clock)
begin


count_enable <= quad_A or quad_B or quad_A_delay or quad_B_delay ;
count_direction <= quad_A xor quad_B_delay;

if rising_edge(clock) then
	if count_enable = '1' then 
			if count_direction = '1' then
				count_int <= count_int + 1;
			else
				count_int <= count_int - 1;
			end if;
	Count <= Count_int;
        end if;
end if;
end process;

end Behavioral;

bovendien als ik bij count_enable overal xor invul dan zal hij deze niet mee kunnen nemen in de count. Deze waarde blijft onbekend.

@ rew is het niet zo dat de counter alleen bij quad_B omhoog gaat en bij alle andere waardes omlaag?

Onbekend bestaat alleen in simulatie. Bij jou simulatie (dat neem ik aan ten minste) krijgen quad_A_delay (en B) pas een waarde bij de eerste klokflank. Op die zelfde klokflank wordt er naar count enable gekeken. of count_enable onbekend is of niet hangt (bij jouw opgegeven signalen) af van de functie er tussen. Bij een or is één 1 al voldoende voor een 1, ongeacht andere mogelijk U's of X-en.
Bij de xor niet. Immers, xor is 1 als slechts één ingang hoog is. Hoe kun je dat weten als er U's tussen zitten?

Deze informatie staat ook in de std_logic_1164 library:

code:


-- truth table for "or" function
    CONSTANT or_table : stdlogic_table := (
    --      ----------------------------------------------------
    --      |  U    X    0    1    Z    W    L    H    -         |   |  
    --      ----------------------------------------------------
            ( 'U', 'U', 'U', '1', 'U', 'U', 'U', '1', 'U' ),  -- | U |
            ( 'U', 'X', 'X', '1', 'X', 'X', 'X', '1', 'X' ),  -- | X |
            ( 'U', 'X', '0', '1', 'X', 'X', '0', '1', 'X' ),  -- | 0 |
            ( '1', '1', '1', '1', '1', '1', '1', '1', '1' ),  -- | 1 |
            ( 'U', 'X', 'X', '1', 'X', 'X', 'X', '1', 'X' ),  -- | Z |
            ( 'U', 'X', 'X', '1', 'X', 'X', 'X', '1', 'X' ),  -- | W |
            ( 'U', 'X', '0', '1', 'X', 'X', '0', '1', 'X' ),  -- | L |
            ( '1', '1', '1', '1', '1', '1', '1', '1', '1' ),  -- | H |
            ( 'U', 'X', 'X', '1', 'X', 'X', 'X', '1', 'X' )   -- | - |
    );

code:


-- truth table for "xor" function
    CONSTANT xor_table : stdlogic_table := (
    --      ----------------------------------------------------
    --      |  U    X    0    1    Z    W    L    H    -         |   |  
    --      ----------------------------------------------------
            ( 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U' ),  -- | U |
            ( 'U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X' ),  -- | X |
            ( 'U', 'X', '0', '1', 'X', 'X', '0', '1', 'X' ),  -- | 0 |
            ( 'U', 'X', '1', '0', 'X', 'X', '1', '0', 'X' ),  -- | 1 |
            ( 'U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X' ),  -- | Z |
            ( 'U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X' ),  -- | W |
            ( 'U', 'X', '0', '1', 'X', 'X', '0', '1', 'X' ),  -- | L |
            ( 'U', 'X', '1', '0', 'X', 'X', '1', '0', 'X' ),  -- | H |
            ( 'U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X' )   -- | - |
    );

Je ziet, bij or geeft een 1 altijd een één, bij xor lang niet altijd

De code in je laatste bericht zou moeten werken als je quad_A_delay (en B) een initieele waarde meegeeft.

Mijn posts dienen u in perfecte staat te bereiken. Mocht u op wat voor wijze dan ook ontevreden zijn, stuur dan de site, met post en leesdatum, naar: ongeldig@dres.nl

De lcd_480x272 driver is nu ook volledig klaar. Net zoals de VGA driver wordt gebruik gemaakt van een afzonderlijke parameterfile die included wordt in het programma. Grote voordeel hiervan is dat je meteen de verschillende schermversie's kunt compileren zonder in de code nog te moeten gaan sleutelen. Dit is het voordeel van een modulaire opbouw met parameters. Gewoon een van die include files actief maken en terug compileren om een andere compositie te bekomen.

Ik heb 5 verschillende scherm resolutie's aangemaakt. Deze zijn:

5 regels van 11 characters
6 regels van 14 characters
8 regels van 19 characters
12 regels van 29 characters
24 regels van 58 characters

Standaard zit de 12 regels van 29 characters erin met volgende parameters:

http://users.skynet.be/fotoopa/fpga/lcd_par.png

De andere compositie's kun je oproepen door deze include files aan te passen:

http://users.skynet.be/fotoopa/fpga/lcd_par1.png

Hoe groter de karacters hoe minder er op een schermpje kunnen. In tegenstelling tot de VGA hardware kunnen hier de 24 bit data lijnen gebruikt worden wat leid tot een full color display. Deze kleur parameters kun je ook in de include file bepalen. Er is terug een image zone en een character zone. Stel je de kleur van de imagezone op de achtergrondkleur van de characters dan zie je de imagekader niet meer.

Alles is terug in meer detail te vinden bij mijn voorbeelden op mijn web pagina. Het volledige project is terug als archive file te downloaden en direct te compileren.

De volledige archive file staat hier
Alle nodige files zitten erin, ook de font character generator en de voorconfiguratie van de rambuffer met een startup tekst. Er is terug het uurwerk die op het display komt en die je met MS2 tot MS6 drukknoppen kunt instellen, terwijl MS1 nu ook kan gebruikt worden om het display te resetten mocht het nodig zijn.

Niemand zegt er iets over dus doe ik het maar:

FOTOOPA bedankt! ziet erg goed uit en ik heb weer wat bijgeleerd, ik wist niet dat het mogelijk was om met die include files te werken!

Voor de rest ziet de VGA driver er goed (modulair) opgezet uit. Helaas heb ik geen bord waar ik het direkt kan proberen... (maar wel een FPGA bord en een losse VGA connector dus ik ga het zeker een keer proberen.)

@surge_me,
Bedankt! Blij dat er toch al iemand is die het even bekeken heeft. Je kunt zeker de VGA versie heel gemakkelijk op iedere hardware implementeren, tenminste als je voldoende interne ram hebt. Die ram is nu nogal ruim genomen om zoveel mogelijke alle combinatie's aan te kunnen. Daardoor heb je ongeveer een 45.000 bits ram nodig.

Ik heb het ook op de DE1 board gedraaid. De LCD versie vergt meer hardware connectie's maar is wel perfect geschikt voor het Bluebird bordje. Die ligt op mijn tafel nu te draaien. Wat je niet ziet zijn de uren werk die in zo een driver gaan om hem te schrijven, maar vooral om al de combinatie's te testen.

Nu ben ik weer werkeloos....

Op 8 november 2007 21:40:02 schreef fotoopa:
Nu ben ik weer werkeloos....

Oh nee hoor, daar geloof ik niets van :)

Hmm wat kunnen we nog bedenken...De moodlight waar u ooit zo vol enthausiasme aan begonnen was (werk genoeg >:))

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

Ik heb nog wel een vraag: die plaatjes die u altijd maakt (zoals bij dat moodlight topic), waar tekent u die in?

(meer specifiek deze bijvoorbeeld: http://users.skynet.be/fotoopa/fpga/lichtspel4b.png )

Plaatjes worden in een oude versie van visio 5.0 getekend. Heb ik al jaren in gebruik voor alles wat er moet voorgesteld worden, ook mijn gaatjesprint bestukking omdat je op raster kunt tekenen en eigen symbolen aanmaken.

Die moodlight ligt nog standby. Daar is het louter een keuze van de leds waar ik nog niet uitben omdat het een behoorlijk prijskaartje is en ik eigenlijk nog geen (artistiek) doel voor heb.

Maar mijn zoon heeft mij vandaag wel kunnen overhalen om voor hem een uitgebereide dimmer regeling te maken voor in zijn living. Hij moet een valse plafond steken en wil daar allerlei halogeen spots (12V 50W 6 stuks) in. Ik ga er een MAXII CPLD boardje insteken en de regeling met fets uitvoeren. Natuurlijk wordt alles via afstandsbediening en moeten er nog allerlei andere (nu nog onbekende) uitgangen voorzien worden.

Maar een led verlichting wordt het niet vanwege de prijs en het te nieuw zijn.

Op 8 november 2007 21:40:02 schreef fotoopa: Nu ben ik weer werkeloos....

Ik dacht dat dit het projectje voor deze winter was ;):

Op 17 oktober 2007 14:20:23 schreef Eagle666:
Nou dit is niet zomaar een 'eenvoudig' voorbeeld maar misschien toch even leuk om te zien wat mensen zoal doen met een FPGA: http://home.comcast.net/~olimar/DS/jumbotron/

Op 17 oktober 2007 15:04:18 schreef fotoopa:@Eagle666,
Mooie link, precies een werkje voor een hele winter.

De herfst levert vaak ook mooie foto's op trouwens ;). Alleen mag het weer dan wel wat beter. Wat een stortbui net...

Enfin, ik vind ook dat u enorm goed werk doet. Wordt hier zeker gewaardeerd. Ik heb alleen te weinig tijd om zelf aan de slag te gaan. Als mijn tentamens klaar zijn zal ik het bordje eens in elkaar gaan zetten. Ik ben eigenlijk blij dat het zo lang duurt omdat ondertussen zulk waardevolle info boven tafel is gekomen. Ik kan voor mezelf straks alles bij elkaar zetten en het bordje ineens met alle mods/hacks/tweaks goed in elkaar solderen :D.

[Bericht gewijzigd door Eagle666 op 9 november 2007 01:55:59 (23%)

@fotoopa: GEWELDIG! Werkelijk ongelooflijk in wat voor een nood-tempo u zoiets moois afrondt!

Maar ik moet wel zeggen dat dit me nog volledig boven de pet gaat. Ik ga het in de toekomst zeker gebruiken (wie heeft er nou niet nog een ongebruikte monitor staan) maar voorlopig richt ik me op hele simpele voorbeeldjes, zoals uw counter en rotary encoder. In eerste instantie gaat dat dan ook nog om de voorbeelden in schema-entry. Langzaam wil ik zo de basis onder de knie krijgen en, zoals gezegd, mezelf VHDL eigen maken (ivm het feit dat dat binnen het bedrijf waar ik werk de gangbare taal is). Als ik daar wat verder mee ben kan ik natuurlijk ook eens naar Verilog gaan kijken, maar dat is dan wel de volgorde die ik aan wil houden.

Maar nogmaals: chapeau!

If you want to succeed, double your failure rate.

@Jochem_S,
Ook bedankt! Ik ben altijd blij als mijn inspanningen ergens van dienst kunnen zijn.

Om de VGA aan te sluiten hoef je niet veel werk te doen, gewoon monitor inpluggen en de .sof file van het project in je FPGA laden. ( je hoef zelfs niet te hercompileren).
Schrijven in verilog of VHDL gaat veel sneller dan schema entry. Maar er zijn nog altijd ogenblikken waar je met schema entry voordeel bij hebt. Vandaar dat iedere combinatie perfect samen kan gaan, ook met bestaande modules die je ergens kunt importeren. Je hoeft ze daarom niet altijd 100% te begrijpen.

Maar als je over een aantal werkende voorbeelden beschikt kan je sneller vooruit gaan of nieuwe afgeleiden maken. Zo leer ik ook heel veel van kleine stukjes voorbeelden die hier regelmatig gepost worden. (Was trouwens de bedoeling van deze topic).

In het begin spendeer je meer tijd aan de taal maar na enige tijd gaat dit veel vlotter en kun je uw aandacht meer op de toepassing richten. Voor heel wat praktische timingen is een logic analyser ook een onmisbaar instrument. Vooral als je met state machines werkt is dit een heel praktisch middel om snel te weet te komen waar je programa blijft plakken

@Eagle666,
Ja er zijn nog andere projecten mogelijk maar de link spreekt mij niet zo aan. Ik zoek altijd iets dat meer praktisch bruikbaar is. Voor de fun alleen is het nogal beperkt.

Dat je zo lang wacht om je boardje af te werken is niet goed. Je mist zoveel uren FPGA genot die je nooit meer in je leven kunt inhalen :)

Voor de volledigheid: Ook ik waardeer de voorbeelden van fotoopa ontzettend. Het is zeer lastig om tegelijk hardware en fpga-configuratie te debuggen. Als je weet dat de fpga confguratie het zou moeten doen, en het werkt niet, ligt het dus aan de hardware.

M'n ftdi doet vrijwel helemaal niks. :-( Hij wordt herkend op de bus, maar ik krijg er geen bit uit of in. Ik heb de TX en RX ledjes gemonteerd, en de eeprom aangepast zodat de juiste signalen op de ledjes komen. Ook die krijg ik niet actief.

Nu bedacht ik me vannacht dat het mogelijk aan het werkstation ligt waar ik hem aanhangt: Die detecteert hem als FTDI232AM. Die heeft volgens mij een NET iets ander USB protocol dan de BM en R varianten. Gaan we zo even proberen.

Fotoopa, bedankt! Als ik nog eens ergens mee kan helpen, dan doe ik dat graag. Zo ziet het er naar uit dat ik wel een paar van die 1ml spuitjes over ga houden, dus als die voor de vloeistoffen experimenten handig zijn, kan ik ze wel opsturen. Maar u heeft ze denk ik al zelf gekocht?

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

@rew,
Opstarten met nieuwe hardware en software blijft altijd moeilijk. Maar dat is de echte taak van een ontwerper.

Ondertussen ligt de fotografie zogoed als stil. Te veel FPGA's, te weinig nieuwe ideeen. Maar tussendoor droom ik toch wel van nieuwe proeven. Nu de winter voor de deur staat wordt dit best wat uitgesteld tot in de vroege lente periode. Straks wordt het te koud boven om daar experimenten te doen. Maar er komen zeker nog andere waterfiguren of varianten.

Alternatief is wat verilog programma's schrijven. Ik vind straks wel enkele nieuwe voorbeeldjes.

Eindelijk!

code:


Connecting to /dev/ttyUSB0, speed 9600.
The escape character is Ctrl-\ (ASCII 28, FS)
Type the escape character followed by C to get back,
or followed by ? to see other options.
----------------------------------------------------
Welcome to the test ram van fotoopa. Dit bericht wordt 
doorgestuurd bij het indrukken van MS1 en MS2 samen. De baudrate 
is 128000 en de data wordt over de USB bus gestuurd. Daar kun je 
de data lezen via een serial logger tool oktober 15 2007 einde 
bericht.

( op 115200 ging de boel zo snel dat ik het met de scope niet goed kon volgen (het versturen van het hele bericht is dan te snel klaar). Vandaar dat i hem nu even op 9600 heb... )

Het was @#$#@! weer een slecht gesoldeerde verbinding. Bah...

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