Hallo zusammen, ich arbeite gerade an einer Project mit schwerpunkt CAN Bus in Vhdl. ich habe 2 Can gleiche CAN Controller module die im Vhdl geschrieben sind und ich möchte dass sich die beide Daten Autauschen. das Module Besitzt: Tx :out Rx :in send_data :in (8bit) adresse :in (8bit) data_out: out (8 bit) für empfangene Daten Clk: in. für simulation zwecke bin ich mal auf die Idee gekommen entsprechenden tx und rx zu verbinden. aber ich habe leider kein empfang von Daten am Ausgang dh ich bekomme nichts am beide controller. Kann mir jemand helfen oder tipps geben wie ich den beiden CAN Controller in vhdl für simulation zwecks verbinden kann? Danke!!!
Ohne weitere Code-Teil und eine Beschreibung der Hardware kann dir hier vermutlich niemand helfen. TX und RX sind vermutlich die Ausgänge des CAN-Controllers, die zum Prozessor führen sollen oder? Und NICHT die Ausgänge zum CAN-Treiber: also CAN-HIGH und CAN-LOW? Grüße
Man kann nicht einfach die Rx und Tx signale zweier CAN Controller mit einander verbinden. Rx und Tx dienen dazu den Buspegel (meist zwischen CAN High/CAN Low) zu lesen (Rx) bzw. zu schreiben (Tx), was durch den CAN Tranceiver geschieht. Um zwei (oder mehr) CAN Controller ohne Tranceiver zu verbinden, muss der physikalische Bus durch Logikverschaltung der Rx und Tx Signale aller CAN Controller nachgebildet werden. Wichtig ist, dass der CAN Controller beim Senden jederzeit den aktuellen Buspegel zurücklesen muss. Um mehrere CAN Controller zu verbinden muss der Buspegel aus den Tx Signalen aller Controller ermittelt werden. Ein Ansatz wäre: bus_level <= Tx_0 and Tx_1 ... Rx_0 <= bus_level; Rx_1 <= bus_level; ... Durch die Und-Verknüpfung wird der "Bus" dominant sombald ein Controller ein dominantes Bit schreibt (Tx). Der ermittelte Buspegel wird an die Controller zurückgegeben (Rx). Gruß
xxx_vhdl_y schrieb: > send_data :in (8bit) > adresse :in (8bit) > data_out: out (8 bit) für empfangene Daten Bist Du sicher, das das CAN sein soll? CAN arbeitet weder mit Adressen, noch mit Bytes. CAN arbeitet mit MOBs und diese bestehen aus einen Identifier (11 bzw. 29 Bit) und einem Datenfeld (0..8 Byte). Oftmals gehört zu einem MOB auch ein 16Bit Timestamp. Damit kann man die Uhren aller Teilnehmer sehr genau synchronisieren. Das Empfangs-MOB enthält zusätzlich eine Maske, mit der man Bits im Identifier maskieren kann.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.