mikrocontroller.net

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


Autor: Christian Dobler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
BEGIN ppc405
 PARAMETER INSTANCE = ppc405_use
 PARAMETER HW_VER = 2.00.c
 BUS_INTERFACE JTAGPPC = jtagppc_use
 BUS_INTERFACE IPLB = ppc_plb
 BUS_INTERFACE DPLB = ppc_plb
 PORT PLBCLK = sys_clk
 PORT C405RSTCHIPRESETREQ = C405RSTCHIPRESETREQ
 PORT C405RSTCORERESETREQ = C405RSTCORERESETREQ
 PORT C405RSTSYSRESETREQ = C405RSTSYSRESETREQ
 PORT RSTC405RESETCHIP = RSTC405RESETCHIP
 PORT RSTC405RESETCORE = RSTC405RESETCORE
 PORT RSTC405RESETSYS = RSTC405RESETSYS
 PORT CPMC405CLOCK = sys_clk
 PORT EICC405CRITINPUTIRQ = dma_intr
 PORT EICC405EXTINPUTIRQ = PPMCoreInterrupt
END

BEGIN opb_central_dma
 PARAMETER INSTANCE = opb_central_dma_0
 PARAMETER HW_VER = 1.00.c
 PARAMETER C_BASEADDR = 0x41e00000
 PARAMETER C_HIGHADDR = 0x41e0ffff
 BUS_INTERFACE SOPB = ppc_opb
 BUS_INTERFACE MOPB = ppc_opb
 PORT DMA_Interrupt = dma_intr
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.

Autor: Kristian K. (kristiank)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.