Hallo, ich bin noch ziemlich am Anfang der großen FPGA-Welt und bin auf ein Problem gestoßen, bei dem ich Eure Hilfe gebrauchen könnte. Ich möchte gern mein Spartan 3 Board (von Digilent) mit einem externen Takt (3,3 V - 8,8 MHz) ansteuern. Mein Problem ist, das ich iwie keine vernünftige Beschreibung dazu finde. Ich hätte da mal ein paar Fragen dazu: 1.) Versteh ich das richtig, das ich einen externen Takt nur über die GCLK (Global Buffer Inputs) führen kann und darf? 2.) Wenn ja, sind diese Pins bei meinem Board überhaupt herrausgeführt? Im Board-Manual ist nichts zu finden darüber! 3.) Muss ich den Takt danach noch durch ein selbst erzeugtes DCM jagen, oder sind die GCLKs schon intern damit ausgestattet. 4.) Mit dem Tool "Core Generator" kann ich mir ja ein DCM zusammenbasteln! kann ich den externen Takt dann auch (inkl. DCM) über einen normalen I/O führen? Danke
Hallo nochmal, also nach erweiterter Suche bin ich glaub ich ein kleines Stück weiter gekommen. Laut Manual stellt der Sockel IC8 meines Boards eine "optionale Oszillatorerweiterung" zur Verfügung. Der entsprechende FPGA PIN D9 ist ebenfalls auf den Expansion Connector A2 (35) geführt. Kann ich jetz nun über A2 (35) mein externen Takt einlesen oder dient dieser nur als Output des optionalen Takts? Wäre nett wenn die oben genannten Fragen auch berücksichtigt werden. THX
Ramon F. schrieb: > 1.) Versteh ich das richtig, das ich einen externen Takt nur über die > GCLK (Global Buffer Inputs) führen kann und darf? Ja das solltest Du tun, allerdings ist das kein Muss (falls Du aber kein GCLK nimmst, ist das Routing intern nicht ideal, und Du verlierst Speed und handelst Dir Jitter ein. Ist aber bei 8.8 MHz vielleicht nicht so ein Thema...) > 2.) Wenn ja, sind diese Pins bei meinem Board überhaupt herrausgeführt? > Im Board-Manual ist nichts zu finden darüber! Das findest Du im Spartan-Manual (mapping GCLK-Pin pro Typ). Mit der Pin-Nummer findest Du dann heraus, was damit auf Deinem Board gemacht wird. > 3.) Muss ich den Takt danach noch durch ein selbst erzeugtes DCM jagen, > oder sind die GCLKs schon intern damit ausgestattet. Wenn Du 1:1 mit dem Input-Clock arbeiten willst/kannst, dann reicht ein Clock-Buffer, ansonsten brauchst Du einen DCM. > 4.) Mit dem Tool "Core Generator" kann ich mir ja ein DCM > zusammenbasteln! kann ich den externen Takt dann auch (inkl. DCM) über > einen normalen I/O führen? Weiss ich nicht auswendig, zu bevorzugen sind sicher GCLK, ansonsten hilft Dir Chapter 3 "Using digital clock managers (DCMs)" sicher weiter...
Hi, erst mal vielen Dank für deine schnelle Antwort Peter. also ich hab da jetz mal was versucht was iwie nicht so ganz hinhaut wie ich mir das vorstelle. Habe mein 8,8 MHz Takt über den Pin 35 des A2 Expansion Connectors (GCK4) geführt und wollte das ganze einmal ganz primitiv mit dem folgenden Code testen. In meinen top-level-Design (schematic) habe ich vor den clcok noch einen BUFG (standard - Symbol)geschaltet.
1 | ---------------------------------------------------
|
2 | |
3 | entity Clock_tester is |
4 | Port ( Clk : in STD_LOGIC; |
5 | switch : in STD_Logic; |
6 | led : out STD_LOGIC); |
7 | end Clock_tester; |
8 | |
9 | |
10 | architecture Behavioral of Clock_tester is |
11 | |
12 | signal clk_counter : natural range 0 to 20000000 := 0; |
13 | |
14 | begin
|
15 | clock: process (Clk) |
16 | begin
|
17 | if rising_edge (Clk) |
18 | then
|
19 | clk_counter <= clk_counter + 1; |
20 | |
21 | if (clk_counter >= 10000000) |
22 | then
|
23 | led <= '0'; |
24 | else
|
25 | led <= '1'; |
26 | end if; |
27 | |
28 | if(clk_counter = 19999999) |
29 | then
|
30 | clk_counter <= 0; |
31 | end if; |
32 | |
33 | end if; |
34 | end process; |
35 | end architecture Behavioral; |
36 | ---------------------------------------------------
|
So bei 8,8 MHZ (+- 113ns) sollte die LED ca. alle 1,13 sec aus bzw. an gehen. Problem: Dies passiert aber nur ca. alle 2 sec. !!!!!!!! Iwie hab ich das gefühl er triggerd nur auf jede 2. steigende Flanke. Woran kann dies liegen? Versteh das nicht so ganz.....
Ist doch alles OK, die Periode ist natürlich etwa 2.27s (die Hälfte davon "ein", die andere Hälfte "aus"). Wenn Du dem Teil nicht traust, gib ein paar interne Signale (clock, LSBs des Zählers) auf unbenutzte Pins und schau sie Dir auf dem Scope an, dann hast Du schnell die Gewissheit...
ne ne, was ich meine ist das die led 2 sec. an, 2 sec aus ist. Und das kann doch iwie nicht sein. Das mit dem scope ist ne gute idee :) thx MfG
Hallo zusammen. Mein generelles CLK Problem hab ich soweit hinbekommen. Nun hab ich folgendes Problem: Spartan 3 Board: Wie kann ich meinen 8,8 MHz input clk verdoppeln. Für DLL/DCM Geschichte ist dieser ja zu klein? Gibts da ne simple LSG? MfG
Ramon F. schrieb: > Mein generelles CLK Problem hab ich soweit hinbekommen. Falls jemand mal ein ähnliches Problem hat: Was war das Problem? > Wie kann ich meinen 8,8 MHz input clk verdoppeln. Woher kommt der Takt? Kannst du nicht einfach z.B. einen 88MHz Oszillator ans FPGA anschliessen und daraus abgeleitete 8,8MHz an die Peripherie ausgeben?
nein, der 8,8 Mhz Takt kommt von außen, sowie meine parallel vorliegenden Daten. Um meine (dem takt entsprechenden ändernden Daten) aber im SRam ablegen zu können, brauche ich ja den doppelten Takt. MfG
Bezug auf den Beitrag "SRAM - IS61LV25616AL Ansteuerung" Dann nimm die 25MHz mal 4 und lass dein FPGA intern mit diesem 100MHz Takt laufen. Dann ist das Abtasten und Einsynchronisieren des 8,8MHz Busses kein Problem.
Lothar Miller schrieb: > Dann nimm die 25MHz mal 4 und lass dein FPGA intern mit diesem 100MHz > Takt laufen. Bei 100 MHz dürfte es beim Spartan 3 mit dem Timing knapp werden. Aber versuchen kannst Du es erstmal. Duke
Naja, halb volle S3E 1200 laufen hier auch sehr gut bei 100Mhz...muss man sich halt bissl Gedanken machen beim Design.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.