CAN für Spartan6 EDK an AXI

#2227957
Funktioniert jetzt. Falls jemand das gleiche vor hat...

In Xilinx EDK 13.1 scheint die Generierung noch fehlerhaft zu sein.
Für Verilog und den Opencores CAN:

ADDR, RNW im Wizard durchrouten lassen. CS wird fehlerhfafterweise nicht 
richtig beschalten, daher muss RdCE und WrCE verwendet werden, selbst 
wenn die user registers abgewählt sind.

Bei Interesse an der CAN Komponente, einfach eine Nachricht an mich.

Gruß Frank
#2457794
hallo frank,

ich versuche den can controller von opencores in xilinx edk 10.1 
einzubinden.
Ich möchte den can controller in einem plb slave template instanzieren.
das hab ich im ISE auch schon soweit hinbekommen.

meine frage ist jedoch, wie ich am besten mit dem can controller 
kommuniziere...genauer, wie viele register sollte ich zb verwenden? für 
jedes input signal eines?
und welche signale vom plb kann ich direkt and den can controller 
mappen? (clk und rst hätte ich genommen, kann ich wr und re auch direkt 
mappen?
wie hast du das gelöst?

danke
mfg
martin
#2459332
Danke für die schnelle Antwort und die Files!!
Das hilft mir sehr!

Ein paar fragen hätt ich noch, wieso hast du das wishbone und nicht das 
standard interface genommen? oder kann man eh beides verwenden und es 
ist nur geschmackssache?

Und hat bei dir alles einwandfrei funktioniert oder hattest du 
irgendwelche probleme mit dieser methode?

Vielen Dank!!
Martin
#2470974
Hallo Frank!

Eine Frage hätt ich noch zu deiner user_logic.

warum verwendest du die Bits 2 - 9 von addressbus?

.wb_adr_i         ( Bus2IP_Addr[ 9:2 ]),

ich möchte doch den offset von meiner Baseaddresse an den CAN Controller 
weitergeben? Meine Baseadresse ist jetzt zb 0xc1200000, sollte ich dann 
nicht die letzten beiden stellen an den controller übergeben?

ich weiß noch nicht genau ob bei mir das LSB links oder rechts steht, da 
bei mir alle Vektoren mit (0 to 31) beschrieben sind, und ich noch nicht 
genau weiß wie das EDK das macht.
Aber müsste ich dann nicht den bereich [0 : 7] bzw. [24 : 31] verwenden?

Danke für deine Hilfe!

lg martin
Gast #2470990
Hi Martin

Der sja1000 hat einen 8 Bit Bus. Wenn du jetzt mit einem 32 Bit Bus da 
ankommst dann musst du auch 4 Bytes auf einen Rutsch da rein bringen. 
Dann musst du auch die Byte enable Leitungen beachten usw.
Daher habe ich es mir einfach gemacht und mappe je ein 8 Bit Register 
auf eine 32 Bit Adresse. Dann kann ich auch bestehende Sja1000 Treiber 
fast eins zu eins wieder verwenden.

Wenn du den PLB verwendest dann sind deine Bits andersherum angeordnet, 
wie du schon vermutet hast. Dann also 22 .. 29

Gruß Frank
Gast #2470992
Martin S. schrieb:
> ich weiß noch nicht genau ob bei mir das LSB links oder rechts steht, da
> bei mir alle Vektoren mit (0 to 31) beschrieben sind, und ich noch nicht
> genau weiß wie das EDK das macht.
Die OPB/PLB-Sachen sind big-endian. Damit steht das LSB links.

Duke
#2471017
Danke für die schnelle antworten!!

>Daher habe ich es mir einfach gemacht und mappe je ein 8 Bit Register
>auf eine 32 Bit Adresse.

das würde ich auch so machen, aber warum dann 22 .. 29 und nicht 24 .. 
31?
verliere ich bei 22 .. 29 nicht die untersten 2 LSBs?

Danke
martin
Gast #2471021
Hi Martin

Die Zugriffe sind sowieso immer 32 Bit aligned, daher werden diese 
beiden Leitungen immer "00“ sein, zumindest nach meinem Verständniss. 
Werden einzelne Bytes angesprochen, so sind die Byte enable Leitungen 
nicht alle auf 1.

0x0000 000000AA
0x0004 000000BB
....

Dann sieht bei mir das Speicherlayout so aus. BB ist dann das zweite 
Register innerhalb des Sja1000

Gruß Frank
Gast #2471027
Martin S. schrieb:
> verliere ich bei 22 .. 29 nicht die untersten 2 LSBs?
In den 32-Bit-Systemen, mit denen ich bisher zu tun hatte, wurde 
Byteweise adressiert:

Adresse 00: 44 33 22 11
Adresse 01: 44 33 22 11
Adresse 02: 44 33 22 11
Adresse 03: 44 33 22 11

Da wurden die zwei LSB für die Adressierung des Bytes innerhalb des 
32-Bit-Wortes verwendet.

Duke

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.