Forum: FPGA, VHDL & Co. MSI Interrupt


von Keller T. (fabito)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich habe mein Lattice FPGA durchmit 8 Devices(UART0 ..UART7).Nun möchte 
ich gern wissen wie sieht die Verbindung aus damit der CPU weißt welcher 
Device seine Bedienung benötigt.
Meine Lattice PCIe Core bietet MSI[0..7] Signale an (Sieh Bild)

von Lattice User (Gast)


Lesenswert?

MSI ist in der PCI 3.0 Spec ausführlich erklärt.

Dir sollte aber bewusst sein, dass MSI nicht auf allen Systemen 
supported wird. (Bei Windows erst ab Vista, und erst ab Win7 
vollständig). Diverse Linuxvarianten haben auch so ihre Probleme.

von Wat (Gast)


Lesenswert?

>Nun möchte ich gern wissen wie sieht die Verbindung aus damit der CPU weißt 
>welcher Device seine Bedienung benötigt.

Habe die Frage nicht verstanden. Kannst du sie nochmal und 
verständlicher stellen?

von Keller T. (fabito)


Lesenswert?

Hi ,

Also ich meine wie werden die MSI[0..7] Signale aus meine Lattice IP 
Core zu verschiedene PCIe Devices verbunden?
MSI heßt Message werden gesendet ich frage mich ob man die Leitungen 
hier nochmal braucht?

Wenn ja welche Leitung zu welchen Devices? oder weißt er automatisch zu 
welchem Device ein Message gehört?

von Wat (Gast)


Lesenswert?

MSI - Message Interrupts
Das sind keine Leitungen, sondern spezielle PCI-Express-Pakete.

Du solltest dir mal ein PCI-Express-Buch zulegen, bevor du weitermachst.

von Keller T. (fabito)


Lesenswert?

Das habe ich schon seit 2 Monate und habe mich sogar mit Memory Write 
Transaktionen beschäftigt.

OK Wenn ich richtig verstanden habe:
Mein Treiber hat Message Adresse = 0x000AFE  und Message Data=0x0000 
festgelegt.
Um einen Interrupt zu generieren mache ich einfach ein Memory Write 
Transaktion mit oben fesgelegte Daten.


Bei 8 MSIs : nutze ich 3 letzte Bits um 8 unterschiedliche Messsages zu 
erzeugen.
Message Adresse = 0x000AFE
Device1: Message Data1= 0x0000
Device2: Message Data2= 0x0001
Device3: Message Data3= 0x0010
Device4: Message Data4= 0x0011
Device5: Message Data5= 0x0100
Device6: Message Data6= 0x0101
Device7: Message Data7= 0x0110
Device8: Message Data8= 0x0111

Und MSI[0..7] Signale dienen zu Interrupt Controller Implementierung um 
die Nachfrage von 8 verschiedene Devices zu synchronisieren.

bin ich richtig?

von Lattice User (Gast)


Lesenswert?

Ngii Rayan schrieb:
> bin ich richtig?

Nein.

Aus der Lattice Docu (IPUG75.PDF):

How to issue MSI
Up to eight MSI interrupts can be issued. The user can use any bit. 
Assertion to any of bit 0 to 7 of MSI issues an
interrupt of the corresponding MSI number. The IP issues the interrupt 
at the rising edge of MSI input signal.

-> Der Lattice PCIE IP Core führt den passenden Schreibzugriff 
selbständig aus.

von Keller T. (fabito)


Lesenswert?

Hi,


I have sucessfully test multiple MSI on my V6 Integrated Block Board and 
my concern now is:

Do I need an MSI Controller to sychronise all the Interrupts source or 
it will be handle by the Core automatically.

I would really appreciate any response in order to move forward.

Regards,

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.