Moin moin.
Habe vor einigen Tagen hier im Forum was gepostet (
Beitrag "NIOS-System mit PLL und diversen Speichern" ). Das Problem glaubte
ich gelöst zu haben, jetzt weiß ich nicht ob das wirklich der Fall ist.
Vor dem Einbinden der PLL ging alles wunderbar. Jetzt habe ich mit dem
Mega-Plugin-Wizzard eine ALT_PLL generiert, im SoPCB die externe clock
auf 100 MHz geändert und die PLL im top-level folgendermaßen
eingebunden:
...
...
...
ARCHITECTURE Structure OF top IS
...
...
...
COMPONENT pll_sys
PORT (
inclk0: IN STD_LOGIC; -- 50MHz
c0: OUT STD_LOGIC; --100MHz
c1: OUT STD_LOGIC; --100MHz um 54° versetzt
locked : OUT STD_LOGIC
);
END COMPONENT;
signal system_clock, sdram_clock, pll_lock : std_logic;
test: pll_sys
port map(
inclk0 => CLOCK_50,
c0 => system_clock,
c1 => sdram_clock,
locked => pll_lock
);
NiosII: nios_system
PORT MAP (
reset_n => pll_lock,
clk_100 => system_clock,
zs_addr_from_the_sdram_0 => DRAM_ADDR,
zs_ba_from_the_sdram_0 => DRAM_BA,
zs_cas_n_from_the_sdram_0 => DRAM_CAS_N,
zs_cke_from_the_sdram_0 => DRAM_CKE,
zs_cs_n_from_the_sdram_0 => DRAM_CS_N,
zs_dq_to_and_from_the_sdram_0 => DRAM_DQ,
zs_dqm_from_the_sdram_0 => DRAM_DQM,
zs_ras_n_from_the_sdram_0 => DRAM_RAS_N,
zs_we_n_from_the_sdram_0 => DRAM_WE_N
);
DRAM_CLK <= sdram_clock;
END Structure;
Und jetzt kann ich mein C-Code, den ich in der Eclipse IDE schreibe,
nicht auf dem System laufen lassen. Ab und zu geht das, wenn ich im
SoPCB assign-base-address und refresh system klicke, dann neu generire
und im Quartus neu kompiliere, dann das System wieder drauf lade.
Manchmal kommt dann der Fehler "Downloading ELF Process failed" und
manchmal geht es, bekomme "Hello World" Ausgabe. Sobald ich das zuvor
kompilierte und generierte System wieder auf das FPGA drauf lade, kann
ich mein Projekt nicht laufen lassen, kommt halt IMMER "Downloading ELF
Process failed"....
Es ist vielleicht ein wenig unverständlich, so ein Fehler ist ziemlich
schwer zu erklären, noch schwieriger nach so einem Fehler zu googlen.
Ich weiß wirklich nicht mehr weiter, so etwas eigenartiges hatte ich
noch nie. Mache ich vielleicht mit PLL etwas falsch? Muss die PLL ein
reset-Eingang haben? Ich habe mein System mittlerweile auch auf Quartus
13.1 getestet, mit QSYS statt SoPC, hat nichts gebracht. Hatte jemand
sowas schon mal gehabt?
Bitte um Hilfe, bin der Verzweiflung nahe.
Danke. Schmidtmann.
updatest du im eclipse die adressen mit generate bsp?
oder probier mal beim draufladen der software den haken zu setzen das er
die ID nicht prüfen soll
Moin moin.
Danke für die Antwort. Ja, das erste mache ich immer. Das zweite.... Er
meckert ja nicht weil er nicht die richtige ID vorfindet, probiert habe
ich das jetzt, brigt jedoch nichts.... Weiß wirklich nicht mehr weiter.
Hab alles gelesen was es dazu gab, das einzige was mir noch einfällt ist
lock-range der PLL. Das kann ich aber nicht einstellen wenn ich mein
device (Cyclon IV E) im Mega-Plugin-Wizzard auswähle. Scheint so, als ob
er das automatisch machen sollte. Keine Ahnung was ich da noch tun kann.
Findet sich vielleicht ein Experte, der eben helfen würde? Falls
irgendwas fehlt, Erklärung, Screenshots, sagt bitte bescheid.
Danke.
Schöne Grüße, Schmidtmann.
Vielleicht lockt die PLL nicht.
Dann muss man den Pluginmanager ein wenig beschubsen.
(Eingangs-)Clock war bei mir 50 MHz.
Gewuenschte Ausgangsclock: 100 MHz.
Leider rastete die PLL nicht.
Geholfen hat, dem Pluginmanager einen Eingangstakt von 100 MHz und
einen Ausgangstakt von 200 MHz anzugeben.
Wenn beim NIOS-Debuggen etwas schief geht, bleiben auch gern Zombies
auf dem System zurueck, die den neuen Start erfolgreich verhinden.
Moin moin!
Lag die letzten Tage krank im Bett und konnte nicht wirklich arbeiten,
hoffe jetzt mal einfach, dass der Thead nicht in Vergessenheit geraten
ist.
Ich schrieb:> kommt mir komisch vor. -18 Grad würde ich erwarten.
Die -54 Grad habe ich aus dem Altera-Tutorial Using the SDRAM:
ftp://ftp.altera.com/up/pub/Altera_Material/9.0/Tutorials/VHDL/DE2-115/U
sing_the_SDRAM.pdf
Demnach, ab Seite 10, sollte der SDRAM Clock -3ns vorauseilen. Also:
20ns = 360
-3 = 360/20 * (-3) = -54
Mit -18 habe ich das jetzt auch ausprobiert, geht nicht.
./. schrieb:> Geholfen hat, dem Pluginmanager einen Eingangstakt von 100 MHz und> einen Ausgangstakt von 200 MHz anzugeben.
Also, wenn ich das richtig verstehe, hast du schon als input 50MHz
benutzt und über die verdoppelt? Oder hattest du.....2 Plls, 50 --> 100
und dann 100 --> 200? Versteh ich da irgendwas falsch?
Danke für die Antworten. Einer der wirklich wenigen Foren, bei den man
mal Antworten zu dem Thema kriegt.
Liebe Grüße, Schmidtmann.
Was hast du denn für ein Evaluation-Board?
Ein Altera/terasIC DE2-115 Board oder ein anderes?
Ich benutze Quartus 12.1sp1 auf Linux mit einem DE2-115 Board, und bei
mir funktioniert es. NIOS Clock ist auf 125 MHz. Naja... ich habe noch
SDRAM-Timings, die nicht erfüllt werden. Bin auch gerade am PLL tweaken.
Was mich stutzig macht ist dein PLL-Lock-Output (MegaWizard -> 1.
Parameter Settings -> Inputs/Lock -> Lock Output), der an den Reset vom
NIOS geht.
Ich mache den NIOS Reset auf eine der KEY-Tasten. Einen Versuch wäre es
Wert. Ob es "erwünscht" ist... keine Ahnung. Die Beispiele auf der CD
vom DE2-115 benutzen den PLL-Lock auf nicht für den Reset vom NIOS.
> Demnach, ab Seite 10, sollte der SDRAM Clock -3ns vorauseilen.
In Quartus 12.1sp1 hast du die Wahl den "Clock phase shift" auch in "ns"
anzugeben. Geht das bei älteren Versionen nicht?
> Also, wenn ich das richtig verstehe, hast du schon als input 50MHz> benutzt und über die verdoppelt?
So wie ich das verstehe, täuschst du der PLL vor, du hättest 100 MHz
Input und möchtest 200 MHz Output (Input * 200% = Output). Eigentlich
hast du aber nur 50 MHz und möchtest 100 MHz. Wie der Input der PLL
aussieht ist Wurscht. Die PLL verdoppelt es einfach.