Nee het vraagteken hoort bij de dubbele punt. Het is een operator bestaande uit twee losse tekens ( ? : ) met 3 operands (wat vrij zeldzaam is) die geleend is uit C. De syntax is:
condition ? if_true : if_falseDit hele stuk is of wel gelijk aan if_true, of aan if_false. Als condition als true evalueert krijg je if_true, anders if_false.
In talen met C achtige syntax (C++, java, C# etc.) kun je dit bijvoorbeeld doen:
int a, b;
b = getB();
a = (b==0) ? 4 : 5;Als b 0 is wordt a 4, als b niet 0 is wordt b 5. In C is dit gelijk aan:
if (b == 0)
a = 4;
else
a = 5;Ok bedankt voorhet antwoord ik ben er nu min of meer uit 
Maar nu heb ik nog een vraagje, als je zit te werken met quartus en verschillende files open hebt staan (verctor wave form, code, compiler summary, etc) dan heb je een aantal tabs boven in je scherm staan.
Ik heb ze perongeluk weggehaald en nu kan ik niet meer vinden hoe ik ze terug kan krijgen. Weet iemand hoe ik ze terug tevoorschijn kan toveren?
edit lama ik heb het al (zag ff door het woud van opties niet meer de bomen)
je moet doen: tools=> options=>general=>Display tabs for childwindows
[Bericht gewijzigd door surge_me op ]
Wordt lastig. Je kunt clockfrequenties wel synthetiseren vanaf een basis klokfrequentie (met ingebouwde plls, deviders enz.) Maar een klok vanuit niets genereren ben ik nog niet tegengekomen. Wil niet zeggen dat het niet mogelijk is hoor (ik weet ook niet alles) Misschien hebben sommige fpga's hiervoor dedicated hardware aan boord.
Voor zover ik weet kan dit inderdaad niet intern. De Cylones hebben wel van die PLLs die KillerB noemt, maar die kunnen alleen werken op een bestaand kloksignaal. Extern oscillatortje is het handigst (zo'n ding met 4 pootjes). Let erop trouwens dat je een 3.3V oscillator hebt!
Vandaar dat men bijna altijd een xtal oscillator plaatst naast de FPGA. Omdat bij de meeste FPGA's toch PLL's inzitten is de clock niet zo kritisch omdat je heel gemakkelijk bijna iedere frequentie via de PLL's kunt genereren. Praktisch zijn er altijd meerdere CLK inputs en een deel brengt men doorgaans naar de I/O pinnen van de basis print om daar ook nogeens te kunnen kiezen om een externe clock te kunnen gebruiken.
ik volg al een tijdje met intresse de verschillende topics ,
nu heb ik onlangs ook een altera de1 bordje gekocht
over de onderdelen(mogelijkheden) niet te klagen voor het geld, helaas laat de documentatie nogal te wensen over
maar goed kan niet met alles voor 'n dubbeltje op de eerste rij zitten.
ik zat nu toch wel met een paar prangende vragen
allereerst vroeg ik me af waar fotoopa dat expirimenteer
print vandaan heeft gehaalt (ik ging er van uit dat u niet alle gaatjes zelf heeft geboort )
en als 2e kan ik uit logishe families geen wijs meer uit .
en zou ik graag te weten komen welke families goed met 3,3 kunnen praten zowel 5v (input tolerant ) en bv met een 5v microcontroller kunnen praten meschien met een uit de 74hc* lijn om waardes naar een 5v te krijgen (input only )
tot dus ver ben ik uitgekomen bij de dual voltage translators welke resp 3,3 en 5v vertalen maarja dan zit je weer vast dat je ergens van die chips moet gaan bestellen en dus waarschijnlijk aan een mooie minimum order zit
nu had ik wel gezocht onder andere famillies zoals
de 74*LS*
maar er zijn geen harde max voltage levels te vinden
de feiten zover ik vind
ALS | LS(244)
vcc 4,5 /5,5 4,5 /5,5
Voh typ 3,2 3,4
meting n/a (3,6 geen load
Vih=2,5&5v 3,3 met led, )
deze waarde komen redelijk overeen met de fpga's "pci" voltage levels
en vroeg ik me af wat de harde max voor fpga/cpld's zijn
voor zover ik uit deze altera datasheet kan opmaken is dat 4Vdc 100% dutycycle
zo dus erg prettig zijn om er iets tussen the user pinnen en het expirimenteer werk te hebben aangezien er meer dan eens onverwachte voltages staan op pinnen waar het niet de bedoeling is.
Op 26 februari 2007 13:17:11 schreef sould3mon:ik zat nu toch wel met een paar prangende vragen
allereerst vroeg ik me af waar fotoopa dat expirimenteer
print vandaan heeft gehaalt (ik ging er van uit dat u niet alle gaatjes zelf heeft geboort )
Deze printen zijn standaard verkrijgbaar bij verschillende levenanciers meestal in de vorm van enkele europa kaart (100x160mm) of dubbele europakaart (160x233mm) Omdat we die massaal gebruiken in ons labo was toen de verkrijgbaarheid geen probleem. Velleman heef ze ook, de ECS1 160x100mm. Je kunt ze in gaatjes of volle lijn of ic voetjes vinden.
Op 26 februari 2007 13:17:11 schreef sould3mon:
als 2e kan ik uit logishe families geen wijs meer uit .
en zou ik graag te weten komen welke families goed met 3,3 kunnen praten zowel 5v (input tolerant ) en bv met een 5v microcontroller kunnen praten meschien met een uit de 74hc* lijn om waardes naar een 5v te krijgen (input only )
Alle huidige ic's zijn bijna uitsluitend 3V3 tolerant. Vele externe bouwstenen ook, voor deze is er bijgevolg geen probleem.
Voor de uitgangen is er ook geen probleem. Alle I/O's zijn minstens TTL level voor alle externe TTL die minimaal 2.4V moet hebben is er ook geen probleem.
Enkel vormen bidirectioneele externe buffers met 5V interfaces een probleem. Hiervoor bestaan er specifieke levelconvertors die aan de ene kant 5V en aan de andere kant 3V3 hebben. Het zijn de 74LC reeks die 5V tollerant zijn.
Maar ik gebruik ze niet. Op mijn LCD display heb ik kleine weerstanden in serie geplaatst van 220 ohm en een zenerdiode aan de I/O pin van 3.3V geplaatst. Als er toch data van de LCD gelezen wordt blijft het level op de I/O pin beperkt tot de 3V3, trouwens de interne diode staat ook nog eens actief die de spanning zal beperken.
De absolute spanning is 4.5V maar daar blijf je beter wat vanaf. Maar de basis regel van een kleine begrens weerstand in serie zal je veel zorgen vermijden. De 74LSxxx reeks geef je trouwens ook geen 5V maar wel de CMOS types. Voor een PIC of dergelijke zou ik minimaal met serie weerstandjes werken en zenerdiodes. Die weerstanden zijn doorgaans mijn verbindingsdraden met de chip!
bedankt voor de snelle reactie ,
heb je de laatste tijd nog een 23x 16 cm print gekocht aangezien ze bij de lokaale boer tot max 10x16 cm hadden en dat past niet zo mooi op het altera bordje meschien eens online kijken nu ik de afmeting heb zal het iets makelijker te vinden moeten zijn
en mijn bedoeling van die LS is deze dan beetje als buffer te gebruiken zeg maar voor mocht er 5 v op komen te staan als deze in principe ook nog ttl triggerd zoals een mcu zou helemaal mooi zijn maar het ging mij er om of deze geschikt waren als zijnde die 2 resitors etc .
als ze ttl compatible zijn zou je voor de echte 5v bv een hc 595 kunnen gebruiken ?
Op 26 februari 2007 14:44:38 schreef sould3mon:als ze ttl compatible zijn zou je voor de echte 5v bv een hc 595 kunnen gebruiken ?
Als het enkel lezen is zou ik een weerstands deler maken zodat er maar 3V3 max kan opkomen vb 330/680. Die 330 ohm zal je zeker voldoende nul geven terwijl je max niet boven de 3V3 gaat.
ik heb hier nog een 5 tal grote printen liggen, dus nee geen aangekocht de laatste tijd. Ze zijn al enkele jaren oud maar met een beetje staalwol schuren en ze blinken weer, een nieuw laagje soldeer vernis en ze zijn weer nieuw!
Ik heb eens enkele van mijn basis schakelingen op pdf file geplaatst die ik gebruik bij de cyclone chips.
Je kunt dit hier weervinden
Zoals je ziet plaats ik veelal een diode in serie met de uitgang. Dit werkt als extra veiligheid mocht de uitgangstrap (fet of transistor) stuk vliegen dan kan de hogere spanning niet aan de cyclone.
Bij ingangen doe ik het ook. Maar ik begruik daar shottky diodes om maar 0.3V te verliezen zodat ik zeker beneden de 0.7V low level blijf.
Ook op die vermogen FET uitgang staat in de driver een 1N4007 als veiligheids diode. Die kan 1000V verdragen als de FET mocht doorvliegen ( ik heb toepassingen van 300V 12A)
De LCD display interface staat er ook op. Die werkt nu al 2 jaar zonder problemen op 2 units. laatst nog een bijgevoegd op de DE1 board ook.
Die 26 polig connector is de LCD kant, links staan de aansluitingen naar de cyclone chip. De zeners staan dus op de cyclone I/O pinnen
D34 rechts op schema zorgt ervoor dat er geen externe spanning kan binnenkomen op de cyclone. Deze ingang is bedoeld om extern naar de ground te trekken zodat de pullup weerstand R116 aan 0.3V komt te liggen door die diode. komt er toevalling extern vb 10V dan kan die niet door naar de cyclone, 5V ook niet en dat maakt het allemaal stukken veiliger zelfs als je eens iets dom doet.
[Bericht gewijzigd door fotoopa op ]
Dan heb ik nog een vraag over verilog:
volgens veel handleidingen kun je het volgende doen in verilog:
module for_loop(
input wire reset,
input wire clk, //dit is de systeem clock
output reg [3:0]integer_i); //deze output bevat de waarde van i
integer i;
always @(posedge clk)
begin
for(i=0;i<4;i=i+1)
begin
if(i ==3) //als er vier keer 1 bij i opgeteld is
integer_i <= integer_i+1; //tel dan 1 op bij integer_i
end
end
endmodule
Bij mij doorloopt i dat for loopje niet... hij geeft elke klok slag aan dat hij 1 optelt bij het register ïnteger_i.
Klopt het dat deze for loops niet gesynthetiseerd kunnen worden? Of doe ik iets fout?
Je moet een for loop in verilog anders zien dan in software. In software is een for loop een stukje code wat steeds herhaald wordt. In verliog is het een stukje hardware wat een aantal keer gesynthetiseerd wordt. Jouw code maakt dus 4 comparators met 2 constante ingangen (i en 3): Eentje met 0 en 3 als ingang, eentje met 1 en 3, met 2 en 3 en met 3 en 3. Als een van deze waar is wordt integer_i met eentje opgehoogd. De eerste 3 kunnen nooit waar zijn, want ze hebben geen gelijke ingang. Alleen de laatste met 3 aan beide inputs is altijd waar, dus wordt integer_i altijd opgehoogd. Alle comparators werken tegelijk! Omdat de comparators vaste uitgangen hebben worden ze weggeoptimaliseerd.
Wat wilde je precies maken?
Het was om bits uit te klokken vanuit een register
maar ik heb het nu al anders opgelost
een register integer_i aangemaakt (met lengte 4 bits) deze steeds 1 ophogen en bij 9 stopt i met uit klokken.
Dat werkt prima.
Bedankt ik wist niet dat de for loop gebruikt wordt om iets i keer aan te maken. Ik dacht dat het werkte als in software.
hallo,
[Indien dit off topic gaat, kan deze genegeerd worden.]
Wat ik even wilde is hoe je het beste een navigatie systeempje aanpakt in een FPGA. Daarvoor heb ik een aantal vraagjes die nog steeds niet echt duidelijk zijn:
- Implementeer je daarvoor best een processor als hoofd unit, met een dsp aangekoppeld voor de berekeningen? Draai je daar best een real time operating system op, op die processor?
- Of kan je vaste algoritmes met de vhdl syntax laten uitvoeren: vb uitkomst := A*B/(C+D).
- Of is het in eerste instatie beter met een processor te werken, tot de algoritmes hun goede werking bewezen hebben, en kunnen deze daarna in hardware geprogrammeerd worden.
Wat is de snelste design methode voor FPGA, wat laat het makkelijkst uitbreidingen, wijzigingen toe? Daarvoor volgende vraagjes:
- Met matlab zou het mogelijk zijn om algoritmes naar fixed point code te converteren. Kan je deze dan op voorgaande manier in een fpga proppen (matlab syntax bewerkingen: +*/-)
- Kan je in matlab/simulink een systeempje op punt stellen, simuleren, debuggen en uiteindelijk naar vhdl laten converteren? Welke tools zijn daarvoor nodig?
- Wat kan je met labview FPGA?
Kan je daarmee grafisch een "system on chip" bij elkaar 'draggen'? Heeft het daarvoor gratis IP cores in de library?
Op 27 februari 2007 12:50:35 schreef steenaap:
hallo,Wat ik even wilde is hoe je het beste een navigatie systeempje aanpakt in een FPGA. Daarvoor heb ik een aantal vraagjes die nog steeds niet echt duidelijk zijn:
Wat bedoel je met navigatie? kortsteweg algoritmes of iets als TomTom? in het eerste geval is het niet zo moeilijk, daar zijn goede dingen voor te vinden (Dijkstra algoritme)
Voor TomTom achtige zaken => koop een TomTom of clone, je kunt het toch niet beter maken.
- Implementeer je daarvoor best een processor als hoofd unit, met een dsp aangekoppeld voor de berekeningen? Draai je daar best een real time operating system op, op die processor?
Dat kan je hebt de NIOS II (voor Altera) er zijn er meer te vinden, de NIOS draait uC linux (omdat i geen mmu heeft) als je je eigen mmu schrijft (heb je even een paar maanden?) kun je wel gewoon linux draaien.
Daarnaast kun je custome instructie maken (als je bijvoorbeeld in VHDL een extra hardware multiplier gemaakt hebt kun je een Asembly instructie aanmaken die de multiplier aan stuurt)
Maar er zijn nog meer processoren (bijvoorbeeld SPARC, zie www.opencores.org).
Houd er wel rekening mee dat een processor veel ruimte in neemt en kijk of je het wel echt nodig hebt.
Wat is de snelste design methode voor FPGA, wat laat het makkelijkst uitbreidingen, wijzigingen toe? Daarvoor volgende vraagjes:
- Met matlab zou het mogelijk zijn om algoritmes naar fixed point code te converteren. Kan je deze dan op voorgaande manier in een fpga proppen (matlab syntax bewerkingen: +*/-)
- Kan je in matlab/simulink een systeempje op punt stellen, simuleren, debuggen en uiteindelijk naar vhdl laten converteren? Welke tools zijn daarvoor nodig?
Als je matlab VHDL code wilt laten genereren dan moet je lappen, de DSP toolbox van ALTERA is niet gratis (en de tegenhanger van Xilinx denk ik ook niet) daar ben ik nl. gistern avond knal hard tegen aan gelopen
(je pc loopt namelijk vast als er geen licentie aanwezig is :|)
MAar als je het geld ervoor over hebt (paar honderd euro) dan kun je een licentie aanvragen. Deze levert dan een aantal plugins voor Simulink en dan kun je met blokjes slepen fantastische systemen maken, simuleren en omzetten naar VHDL/Verilog
free_electron
Silicon Member
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
blijf weg van die craptional nstrucrap. dat werk ALLEEN met HUN kaarten !. je kan dat niet op ene willekeurig zelfgebouwd bord mikken.
Ik dacht dat als je de grote NOS hebt ( dus niet de kleine die bij de wbe edition zit ) dat er dan wel ene MMU in zit en dat je dan wel gewoon linux kan draaien ipv uClinux.
ik ken er die windows CE lopen op ene FPGA ...
en voor navigatie .. de motorsturing van de Space Shuttle is gedaan in een FPGA ( tis er wel ene gemaakt met antifuses omdattie rad-hard moet zijn ) , maar het is een fpga. ( ene one-time programmable dan ). ding is van Actel geloof ik.
ze voederen dat ding de data van de gyroscopen en de vector (x,y,z) die de shuttle moet volgen. de fpga rekent de boel door en zet de actuatoren die de straalpijpen richten.
aan de snelheid waarmee de shuttle gaat, kan een processor dat nooit uitrekenen. daar is echt real-time voor nodig ... aan 25000 km/uur kan een paar milliseconden grote gevolgen hebben ...
een 16 bit processortje wat aan 8 MHZ draait en ene 3D floating point berekening moet doen haalt dat nooit ... ( dat was wat er ter beschikking was toen de shuttle gemaakt werd...
De grote NIOS? oh grote NIOS u zij geprezen _O_!
Nee ff alle ongein op een stokje. Die grote nios, moet je daar veel voor betalen of zit die al standaard bij een "payed subscription" voor Quartus II?
Als dat zo is dan zouden ze het bij mij op de uni moeten hebben
Lijkt mij wel leuk om eens mee te spelen 
free_electron
Silicon Member
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
nios zit bi ene paying subscription. klopt. bij de web edition krijg je allene da basis versie. in de betalende versie zijn er nog 2 andere nios cores.
sven
pointers don't kill programs, programmers kill programs
Net m'n eerste test gedaan met MAXII. Enkele inputpennen -> inputbuffer -> outputbuffer --> terug naar buiten. Vrij nutteloos maar goed genoeg als eerste test. Gewoon met draadje naar massa of Vcc trekken --> uitgang volgt, sofar so good.
De ingangen die vrij liggen, pikken blijkbaar 50Hz op, want de (gebufferde) uitgangen geven 50Hz uit. Nu weet ik ook wel dat je in principe de ongebruikte aan massa moet leggen, maar vroeg me af af je dit ook software matig kan instellen?
Standaard zijn alle ongebruikte pinnen outputs naar GND. Je kunt dit ergens in je device settings opgeven bij unused pins.
sven
pointers don't kill programs, programmers kill programs
Op 16 maart 2007 12:28:40 schreef sven:
maar is er ook een mogelijkheid om bij gebruikte ingangen een pullup of pulldown te activeren?
Ja zie hierbij wat de manual aangeeft:
"Each MAX II device I/O pin provides an optional programmable pull-up
resistor during user mode. If the designer enables this feature for an I/O
pin, the pull-up resistor holds the output to the VCCIO level of the output
pins bank."
Dit kun je in Quartus bij je project instellen. Maar er zijn nog veel meer mogelijkheden en die worden beschreven in het hoofdstuk I/O standards & banks.
Sorry had het verkeerd gelezen, het gaat dus om inputs die je zelf hebt gedefinieerd. Je kunt deze met de assignment editor een pull-up geven. Voeg de pin toe aan de lijst assignmens en dan kun je bij de mogelijke assignments (ik dacht onder I/O features oid) ook een pull-up aanzetten.