Forum: FPGA, VHDL & Co. 2 CAN-Core in VHDL verbinden


von Martina M. (xaiven-be)


Lesenswert?

Hallo,

ich versuche zwei ISE CAN-Cores in VHDL zu verbinden. Will dann also 
über den einen Core Daten auf den CAN-Bus geben, die vom zweiten Core 
empfangen werden sollen. Die Cores haben zwei Ausänge Tx unt Rx. Diese 
muss ich ja erstmal irgendwie zusammen auf eine Leitung bringen. Also 
mit einem Baustein, der die Regelung von schwachen 1 und starken 0 
übernimmt. Das müsste ich ja dann auf beiden Seiten machen und dann die 
beiden Cores verbinden. Wenn ich das dann aber machen, sendet der eine 
Core nichts mehr, oder der andere empfängt rein gar nichts mehr...

Hat da schonmal jemand Erfahrungen gesammelt?

Viele Grüße,
Martina

von Martin K. (mkohler)


Lesenswert?

Was für CAN Cores setzt du ein?
Woher hast du die?

von Martina M. (xaiven-be)


Lesenswert?

Das sind die Cores von Xilinx ISE (aus dem Core-Generator). Diese sind 
für Simulationen kostenlos verfügbar.

von Volker (Gast)


Lesenswert?

Tx-Leitungen verUNDen, Ausgang auf beide Rx zurückführen.

von Martina M. (xaiven-be)


Lesenswert?

OK, ganz herzlichen Dank! Werde ich jetzt mal so versuchen. Und eine 
weitere Logik für die dominanten Pegel brauche ich nicht? Bzw. eine 
verUNDung ist ja schon eine Art der Logik....

von Volker (Gast)


Lesenswert?

Bevor ich selber einen Erklärung über CSMA/CA-Zugriffsverfahren erstelle 
und warum ein UND-Glied ausreicht, hier ein Link:

http://www.elektroniknet.de/home/automotive/technik-know-how/uebersicht/l/bussysteme/serielle-bussysteme-im-automobil-ii/2/

Insbesondere mal die Grafik genauer anschauen.

von Martina M. (xaiven-be)


Lesenswert?

Hallo,

vielen Dank!! Hat jetzt wunderbar funktioniert!

Bin jetzt schon ziemlich lange damit beschäftigt, bei den Xilinx 
IP-Cores die Übertragungsgeschwindigkeit einzustellen. Dort muss man die 
mit den Baud Rate Prescaler und Bit Timing Register einstellen, und 
natürlich mit dem CAN-Clock. Hier gibt es ja nicht zur eine Möglichkeit, 
auch hier (http://www.kvaser.com/can/protocol/timing_calc.htm) werden ja 
mehrere Möglichkeiten angegeben. Welche Einstellungen kann man für eine 
gewünschte Rate von 1Mbps empfehlen?

Viele Grüße,
Martina

von Volker (Gast)


Lesenswert?

Hallo,
danke für das Feedback.
Netter Baudraten-Rechner. Hatte mal einen ein EXCEL angelegt.

Die verschidenen Möglichkeiten sind dazu da, einen physikalichen BUS zu 
optimieren. Stichworte : Syncronisation und Samplepoint.
http://www.can-cia.org/index.php?id=88

Für eine Simulation ist das aber ohne Belang. Es sei den, Du willst auch 
noch Überschwingen und Verzögerungen vom CAN-bus simulieren.

ciao Volker

von Volker (Gast)


Lesenswert?

O, ich glaub da Fehlt noch was.

Natürlich muss am ende 1MHz raus kommen. Wen man den Prescaler auf 16MHz 
einstellt, kan man fast alle Baudraten (bis auf die ganz langsamen) gut 
einstellen.
Hängt davon ab welchen Wertebereich deine CAN-Clock-Register erlauben.

ciao Volker

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.