Forum: FPGA, VHDL & Co. Problem mit Interrrupt Anbindung an PPC405 auf Xilinx Virtex II Pro


von Christian Dobler (Gast)


Lesenswert?

Hallo

Ich habe ein Problem beim Verbinden des Interrupt Ports eines OPB DMA 
Controllers mit dem kritischen Interrupt Port des PowerPC 405. Ich 
verwende EDK 8.1i (XPS 8.1i) als Entwicklungsumgebung und das FPGA ist 
ein Xilinx Virtex II Pro.

Nun zu meinem Problem: Wenn ich die MHS Datei (= Hardware Beschreibung) 
so editiere wie in der Xilinx Doku beschrieben um die Verbindung der 
Interrupt Ports des DMA und des PowerPC zu verbinden und diese Hardware 
ins FPGA programmiere, führt der PPC kein Programmcode mehr aus. Nicht 
mal die erste Instruktion meines Codes wird ausgeführt.

Die Beschreibung des PPC und des DMA in der MHS Datei sieht wie folgt 
aus:
1
BEGIN ppc405
2
 PARAMETER INSTANCE = ppc405_use
3
 PARAMETER HW_VER = 2.00.c
4
 BUS_INTERFACE JTAGPPC = jtagppc_use
5
 BUS_INTERFACE IPLB = ppc_plb
6
 BUS_INTERFACE DPLB = ppc_plb
7
 PORT PLBCLK = sys_clk
8
 PORT C405RSTCHIPRESETREQ = C405RSTCHIPRESETREQ
9
 PORT C405RSTCORERESETREQ = C405RSTCORERESETREQ
10
 PORT C405RSTSYSRESETREQ = C405RSTSYSRESETREQ
11
 PORT RSTC405RESETCHIP = RSTC405RESETCHIP
12
 PORT RSTC405RESETCORE = RSTC405RESETCORE
13
 PORT RSTC405RESETSYS = RSTC405RESETSYS
14
 PORT CPMC405CLOCK = sys_clk
15
 PORT EICC405CRITINPUTIRQ = dma_intr
16
 PORT EICC405EXTINPUTIRQ = PPMCoreInterrupt
17
END
18
19
BEGIN opb_central_dma
20
 PARAMETER INSTANCE = opb_central_dma_0
21
 PARAMETER HW_VER = 1.00.c
22
 PARAMETER C_BASEADDR = 0x41e00000
23
 PARAMETER C_HIGHADDR = 0x41e0ffff
24
 BUS_INTERFACE SOPB = ppc_opb
25
 BUS_INTERFACE MOPB = ppc_opb
26
 PORT DMA_Interrupt = dma_intr
27
END

Ich habe keine Ahnung, was daran falsch ist, aber ich weiss, dass die 
beiden Zeilen "PORT EICC405CRITINPUTIRQ = dma_intr" und "PORT 
DMA_Interrupt = dma_intr" für das Problem verantwortlich sind.

Ich hoffe, jemand kann mir helfen.

von Kristian K. (kristiank)


Lesenswert?

Hallo,

ich könnte mich ja täuschen, aber ich denke, du musst den Interrupt des 
opb_central_dma am Interruptcontroller anschließen (in den 
Interruptvektor). Also so etwas z.B.:

BEGIN opb_intc
...
 PORT Intr = ... & MY_DMA_INTR
END

BEGIN opb_central_dma
...
 PORT DMA_Interrupt = MY_DMA_INTR
END

Kristian

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
Noch kein Account? Hier anmelden.