Op 5 april 2007 21:07:58 schreef flipflop:
Bedoel je dat als je de zaak in de FPGA laadt, het dan niet werkt terwijl het op simulatie wel goed gaat?
Heb je de timing constraints goed gezet? Clock constraint is het belangrijkste.
In het timing rapport kun je zien wat de gehaalde max frequentie is.
Nee zal ik een voorbeeld code laten zien.
module flipflop (
data ,
clk1 ,
clk2 ,
reset ,
q
);
input data, clk1, reset ;
output q;
reg q;
always @ ( posedge clk1 and posedge clk2)
if (~reset) begin
q <= 1'b0;
end else begin
q <= data;
end
endmodule
Dit heb bv nodig op een NLP te generen zie:
http://en.wikipedia.org/wiki/Autonegotiation
Robin
flipflop
"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
Het gaat hier fout omdat je zegt:
always @ ( posedge clk1 and posedge clk2)Je moet dus een edge van clk1 EN een edge van clk2 op hetzelfde moment. En de reset mist in de sensitivity list. Het zou zoiets moeten zijn:
always @ ( negedge reset or posedge clk1 or posedge clk2)Twee clocks op dezelfde flipflop is overigens niet netjes. Na synthese zul je wel een or in de clocklijnen krijgen en heb je dus geen synchroon design meer. Niet doen dus.
Je zou eigenlijk meer in functies moeten denken en niet zo direct een FF modeleren. Wat is de functie die je wilt hebben?
[Bericht gewijzigd door flipflop op ]
het doel is dat ik pulskse heb van 100ns on en 125µs off. Meer moet ik niet hebben. Mijn manier was contanst pulskse
van 100ns en constanst pulskse 125µs. Dan die door een RS flipflop met egde triggert ingangen. De set is de 125µs en de reset is de 100ns. dan heb ik mijn doel.
Robin
Op 6 april 2007 01:35:14 schreef miniK0bo:
en dit werkte wel tijdens je simulatie?
Jep Dit werkte weil in de simulatie. Nu ga ik het oplossen met mijn AVR
Robin
flipflop
"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
Robin, wat is de clockfrequentie die je intern in de FPGA tot je beschikking hebt? Zo'n simpele functie moet makkelijk te maken zijn in logica.
ps, tis misschien beter om een apart topic te openen hiervoor? moderators?
heeft iemand tijd voor een enthousiaste beginner?
ik kom nog van de tijd dat alles met simpele poortjes ging. Heb onlangs een kleine partij altera's gekregen. 2 types: EPF10K30 en EPM7128. Het leek me een goed idee om na de GAL (waarmee ik vroeger speelde) over te stappen op het betere werk. Aldus quartus bij altera afgehaald en de EPM7128 even getest. Het is blijkbaar erg eenvoudig een .gdf file door de compiler te halen en in het IC te pompen. Ik wil nu de EPF10K30 gebruiken, maar dat blijkt een FPGA te zijn, en geen CPLD, andere bronnen noemen dat weer een EPLD,.... De hamvraag, wat is het verschil in gebruik (de technologie laat me voorlopig koud), blijft de inhoud ook bewaard na een spanningsuitval? even testen gaat niet, moet dan eerst een testprint maken
Ik las in dit forum dat sommigen problemen hebben met de PQFP-vorm, ik kan wel een dergelijk printje maken dat de ic-pint naar connectoren verbindt. Zelfs een BGA met 484 pins is geen probleem.
en dan nog iets, ik heb een heleboel XILINX XC4000-serie IC's liggen. Hoe krijg ik die aan de praat?
Op 5 april 2007 21:54:28 schreef robint91:
het doel is dat ik pulskse heb van 100ns on en 125µs off. Meer moet ik niet hebben. Mijn manier was contanst pulskse
van 100ns en constanst pulskse 125µs. Dan die door een RS flipflop met egde triggert ingangen. De set is de 125µs en de reset is de 100ns. dan heb ik mijn doel.
Ik zou het zo schrijven:
module flipflop (clk1,clk2,reset,q);
input clk1, clk2, reset;
output q;
reg q;
reg clk2_reg;
always @ ( posedge clk1 )
begin
clk2_reg <= clk2;
if (!reset) q <= 0;
else
begin
if (!clk2_reg & clk2) q<=1; else q<=0;
end
end
endmodule
~Galaxy
In the beginning there was nothing.... and even that exploded...
Ben geinteresserd geraakt in dit draadje...
Korte, maar dringende vraag; kan ik bijv. een (geprogrammeerde) pic16F628 in een FPGA smijten, en de periferie daaromheen configureren ??
Theo
Bedoel je een microcontroller core in een FPGA synthetiseren? Ja dat kan natuurlijk.
De 16F84 is zelfs direct te downloaden in verilog:
http://www.opencores.org/projects.cgi/web/risc16f84/overview
Het programma voor de core dien je meestal aan te bieden via een externe memory interface (rom oid). Als je slim bent, kun je het programma natuurlijk ook mee-synthetiseren. Bespaart externe componenten.
Het toevoegen van periferie is relatief makkelijk. Heb je bijvoorbeeld 20 PWM modules nodig, dan knup je die er zo aan vast. Last van de beperkte stacksize? (8 levels in de 16F geloof ik) Constante ophogen en hoppa, meer stack. SPI interface? geen probleem. Zolang het in je device past kun je toevoegen.
De 16F84 core hierboven is ook nog eens een stuk sneller dan de originele. Op een virtex2 draait ie tot 65MHz. Zal op een virtex5 nog wel een stukkie sneller gaan 
flipflop
"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
Op 5 april 2007 21:54:28 schreef robint91:
het doel is dat ik pulskse heb van 100ns on en 125µs off. Meer moet ik niet hebben. Mijn manier was contanst pulskse
van 100ns en constanst pulskse 125µs. Dan die door een RS flipflop met egde triggert ingangen. De set is de 125µs en de reset is de 100ns. dan heb ik mijn doel.
Wat ik zou doen is een teller maken die rondloopt in 125us +100ns (of dit zo exact kan hangt af van je klokfrequentie, vandaar dat ik het vroeg). In een always@ statement check je dan of de teller voorbij het 100ns moment is. Als dat zo is zet je je uitgang '1', anders '0'. Als je een klok hebt van 100ns (10MHz) zou het al kunnen.
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
@thyractor: Een FPGA is vergelijkbaar met SRAM: spanning er af -> Data (configuratie) weg.
Kan jij betaalbaar aan enkel stuks 4 laags printen komen? Volgens mij is dat het minimum om BGA aan te kunnen....
Documentatie over de flex 10K familie vind je:
http://www.altera.com/literature/lit-f10.jsp
Flipflop geeft het goede antwoord...
Een teller die op 10mhz loopt van 0 t/m 1250, wanneer de teller op 1250 staat dan een uitgang hoog maken en de rest laag (0 t/m 1249).
flipflop
"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
Dank Manta
Voordeel van deze methode is ook dat je de duty cycle heel makkelijk aan kunt passen. Gewoon het het compare-getal (1250 in dit geval) veranderen. Kun je zelfs nog programmeerbaar maken.
@REW
ik ben bezig een printje te maken voor de epf10k30/50/100. Dit zijn BGA's met 256/256/484 balls.
Ik wil er wel enkele laten bijmaken.
Ik ben ondertussen zover dat ik het verschil ken tss fpga en cpld. Een cpld toepassen is ondertussen geen probleem meer.
Ik vond beschrijvingen hoe een Prom aan een fpga te knopen, maar kan de prom ook via de jtag geprogrammeerd worden?
Welke soft zou ik best gebruiken voor XILINX, heb er daar een heleboel van, (de XC4000-serie) verouderd maar t'zou jammer zijn ze weg te werpen.
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
Op 10 april 2007 11:55:48 schreef thyractor dit:
@REWik ben bezig een printje te maken voor de epf10k30/50/100. Dit zijn BGA's met 256/256/484 balls.
en ook dit
Ik ben ondertussen zover dat ik het verschil ken tss fpga en cpld.
en ook nog dit
Ik vond beschrijvingen hoe een Prom aan een fpga te knopen, maar kan de prom ook via de jtag geprogrammeerd worden?
[paniek mode]
ik wil nu niet denigrerend doen maar .. als je nauwelijks verder bent dan dat , en je niet weet hoe je met die proms om gaat zou ik me begot niet wagen aan een bord met BGA chips erop...
de kans dat er iets cruciaal ontbreekt is heeeel hoog en dan is dat bord voor de vuilbak. 1 kritische pin verkeerd bij die BGA en je zit vast. je gaat daar niet efkes zoals bij een gewone chip met een draadje aan een pootje liggen solderen ...
[/paniek mode]
begin met iets simpels.
wat zie-links betreft : download hun ISE.
volkomen mee eens, maar k'heb er zo'n 126 liggen van de 10k30's, liever die "opmaken" dan nieuwe kopen.
Mocht u een voorstel hebben voor een bordje met een dergelijke fpga? ik stuur u dan zo'n borje met bestukte BGA op.
De kritische pins zijn toch enkel de "dedicated-pins" en de "globals"? ik dacht dat de rest i/o was, zodoende kon ik die naar headers wiren. of zie ik het (wellicht) te simpel?
ik heb Quartus II van Altera gedownload op aanraden van dit forum. ik wil dus iets begrijpen van die FPGA meuk. Maar ik snap nu al helemaal niets van het programma.
Ik heb een prject aangemaakt en een device geslecteerd. Ik heb de std. compiler + simulator + nog iets wat standaard was er ook maar in geweven (heb geen device, noch programmer, dus ben even aangewezen op de programmer)
kan iemand me even verder helpen hoe ik nu daadwerkelijk iets kan schrijven in zo'n ding en hoe/wat waar werkt?
mijn eigen ervaring is met de AVR uC's Ik heb op school ooit iets gedaan met een XILINX spartan, maar daar heb ik traumatische ervaringen aan en dat was een soort grafische VHDL. Ik heb toen geen tijd gehad er echt in te duiken, dus wil nu op herhaling. Iemand die me kan helpen?
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
@Thyractor,
Ik ben het FE eens. De eerste ontwerpen hebben vrijwel altijd nog wat "stomme fouten" waardoor je bordje de vuilnis in kan of een patch nodig heeft. (en patchen is lastig bij BGA: Je zult net zien dat je niet bij het signaaltje kunt wat je nodig hebt....)
Met PIC versus AVR, of Xilinx versus Altera, is het een kwestie van smaak. Ik zelf houd van de Altera filosofie met dat je hun web-edition gratis mag gebruiken. (ik heb uiteindelijk toch een licentie ter waarden van bijna 2000 euro gekocht). Vandaar dat ik voorlopig het liefst met Altera werk.
Zelf vind ik het fijner om zo'n FPGA vanaf de PC te programmeren, en niet via een flash chip te gaan. Ook dat is een beetje "smaak". Ik denk dat het de ontwikkelcyclus verkort, dus dat het sneller werkt.
Anderzijds, de Altera software is zo langzaam dat een paar seconden extra om een flash te programmeren niet meer er toe doet....
Als je een manier weet om voor minder dan 150 euro kleine oplage 4-laags prints te maken, dan hoor ik het graag. (Heeft iemand hier ervaring met "Custompcb.com"?)
ledsee, €90 euro opstarten en dan €0.075 per cm2. Is van goede kwaliteit. Heb hier zelf al heel vaak pcbs laten maken (nog een 4 laags).
Ik zelf houd van de Altera filosofie met dat je hun web-edition gratis mag gebruiken.
ISE is ook gratis te gebruiken.
Op 13 april 2007 07:52:49 schreef High met Henk:
kan iemand me even verder helpen hoe ik nu daadwerkelijk iets kan schrijven in zo'n ding en hoe/wat waar werkt?
Probeer mijn post in dit topic eens:
http://heb.circuitsonline.net/forum/view/44360/1#563107
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
Op 13 april 2007 08:51:38 schreef rew:
@Thyractor,Anderzijds, de Altera software is zo langzaam dat een paar seconden extra om een flash te programmeren niet meer er toe doet....
langzaam ? verklaar u nader ...
dat ding compileert designs met een miljoen gates binnen het half uur .. das razendsnel. !
bij quartus is het vooral memory wat ene limiet is. zorg maar als je met grote designs aan de slag gaat dat je tikbak 2 of meer gig ram heeft ...
voor normale designkes compileert dat 2 a 3 minuten. volkomen normaal.
je mag blij zijn dat je geen silicon compiler moet lopen .... daar zijn runs van dagen niet uitzonderlijk.
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
Op 13 april 2007 07:52:49 schreef High met Henk:
ik heb Quartus II van Altera gedownload op aanraden van dit forum. ik wil dus iets begrijpen van die FPGA meuk. Maar ik snap nu al helemaal niets van het programma.
ho rusig. pak u een taske koffie en zet u 2 minuten.
start quartus op.
File - new project. geef dat ding ene naam en ene directory. Al de rest vul je NIET in. gewoon op next blijven klikken. device selecteren en zo is pas voor veeeeel later.
als je daar mee klaar bent.
we gaan eerst iets simpels maken.
File - new. er floept een kadertje open. selecteer daar BDF file.
je krijgt een groot wit blad.
we gaan eerst saven. file-save. eef dat ding een naam.
links van het witte blad heb je ene project browser. je zal die file daar zien in verschijnenen.
en dan beginnen we nu.
dubbelklik op het grote witte blad. er gaat ene library browser open. je kan daar zelf in rondwandelen , maar het simpelste is gewoonweg in dat search veldje ( redelijk laag in die browser ) iets in te tikken. bijvoorbeeld INPUT. het sympooltje komt dan op. klik 'PLACE' en zet dat ding op je blad.
dubbelklik opnieuw. normaal staat input nog geselecteerd. je zult onderaan ene checkbox zien 'repeat insert' als je meerder wilt plaatsen : vink die aan. telkens je klikt krijg je dan ene symbooltje. druk op escape om te stoppen.
een aatal leuke dinges
INPUT OUTPUT GND VCC NOT AND2 OR2 AND3 AND4 AND5 ... DFF , enfin je snapt hem. de primitieven.
maar je kan daar ook bijvoorbeeld 7490 intikken. dan krijg je dat ding als blok.
bon. plaats 2 ingangen , een AND2 en een uitgang.
de grafische manipulatie is simpel. slepen.
om draden te tekenen : zet uw muis op 1 van de pinnen. de cursr zal veranderen. en tekenen maar.
je kan ook gewoon een sumpool pakken , dat tegen ene ander schuiven ( pin tegen pin ) en dan wegslepen. dat ding zal verbinden.
nu gaan we onze dingen een naam geven.
naast een pin staat een naam. dubbelklik op die naam : dan kan je hem wijzigen.
om snel te werken.
klik 1 keer op die naam : hij verkleurt. dubbelklik dan. en tik its in. als je dan op enter duwt gaat de editor utomatisch naar de volgende pin eronder ( niet ernaast ). zo kan je snel een tros dingen een naam geven.
als je daarmee klaar bent
bovenaan op de menubalk ( de toolbar ) staat een pijl ( driehoek die naar rechts wijst. is groenachtig van kleur.
klik daarop. en laat dat ding lopen. das de compiler.
als alle balkjes blauw gekleurd zijn issie klaar.
je mag dan dat compiler venster sluiten.
ga terug naar file - new.
en selecteer VWF file. ( je zult op de tabjes moeten klikken )
save de file.
in die waveform editor. je hebt eerst een kolom met de node names.
klik met de rechtermuistoets in die kolom en sleecteer 'insert node'
de node browser gaat open. daar staat een knop 'find nodes. klik daar op.
er gaat een neiuw vensterke open. klik daar 'all'. je krijgt ene lijst met alle nodes in je project ( alle in en outputs ) lijstje overzetten naar rechterkolom ( op >> klikken ) en kaderkes suiten.
nu kan je golfvormpjes tekenen
selecteer een stukje , kli rechts en kies daar wat je wilt.
eenmaal je waveform klaar save.
terug op de toobalk staat een andere knop ( weer zo een pijl maar met ene blokgolfje bij. klik daar op. dat start de simulatie.
je kan nu ook VHDL en verilog blokken toevoegen.
file insert whatever formaat. en begin te tokkelen.
als je file klaar is. save ga naar de menu en geef aan dat je een block symbol wilt maken. de comiler analyseert jouw code en er rolt een mooi symbool uit met alle ins en outs.
je kan ook met de megawizard spelen.
tellertje nodig ? invullen wat je wilt en tellertje komt eruit.
enzovoort.
het programma is zeeeeeer uitgebreid. verwacht niet dat je dit in 14 dagen volledig kent.
maar de basis heb je in ene paar uur onder de knie.
flipflop
"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein