Forum: FPGA, VHDL & Co. VHDL for modpack


von tilman (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich möchte ein Interface von ModPack zum SJA100 (CanController) in VHDL 
beschreiben, um ihn dann simulieren zu können. Anbei ein Schaltplan. 
Leider sind Fehler in dem Schaltplan, die ich nicht finde (ich habe mir 
das ispLever erst letzte Woche installiert). Der Schaltplan lässt sich 
deshalb nicht automatisch in VHDL übersetzen. Wie sieht der dazugehörige 
VHDL Code aus ?

Vielen Dank
Tilman

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> SJA100 (CanController)
Ja, CAN-Controller isn SJA1000.
Das SJA100 ist ein Ferienhaus 6 Personen ;-)

Diesen Plan würde ich niemals einfach so in VHDL umsetzen.
Was mir schon so beim kurzen Überfliegen auffällt, ist, dass die FFs i11 
und i10 Kombinatorik am Clear-Eingang haben. So asynchron beschreibt man 
heutzutage keine FPGAs. Zudem hat er ja scheinbar auch noch Fehler...

Sinnvoller wäre da, sich ein Timing-Diagramm der Eingangssignale und der 
Ausgangssignale zu malen, und das dann runterzuhacken.

Wenns aber nun unbedingt sein muß, dann instatiiere die Komponenten 
(Und, Oder, Nicht, Mux, Buffer...) händisch und verdrahte sie wie im 
Schaltplan. das dürfte am einfachsten sein, und du hast das selbe 
(zwielichtige) Verhalten.

von tilman (Gast)


Angehängte Dateien:

Lesenswert?

Hallo nochmal

anbei die Timingdiagramme vom SJA1000 auf der einen Seite und ModPack 
auf der anderen. ModPack sollte Ende der 90er standartisiert werden, hat 
es aber nie über den Draft-Status hinausgeschafft. Er war dazu gedacht, 
um Module als Piggyback einfach und billig an den VME-Bus 
anzuschliessen. Das VME-Interface ist auf einem Carrierboard 
implementiert; die eigentlichen Funktionen (ADC, DAC,DIO, etc) sind auf 
Piggybacks, die auf das Carrierboard aufgesteckt werden, als "ModPacks" 
realisiert.

Da scheint noch etwas konzeptionelle Arbeit nötig zu sein, bevor man an 
eine Implementierung in VHDL denken kann.

Anforderung:
============
1)  Die Datanleitung vom ModPack (D)  und die Addressleitungen vom 
ModPack (A) sollen auf die Address/Datenleitungen des SJA100 (AD) 
gemultiplext werden.
2) Die Logik soll keine Zustände speichern (jedenfalls so weit wie das 
möglich ist). Ich will damit einen Lockup vermeiden, wenn ein 
Lese/Schreibzugriff nicht vollständig durchgeführt wurde. Sollte zwar 
von der VME-Seite her nicht passieren -- aber man weiss ja nie.
3) Die Logik sollte auch dann noch funktionieren, wenn AS vor DSL auf 
low geht. Das kann durch verschiedene Leitungsimpedanzen auf dem VME-Bus 
passieren.

Anmerkung:
==========
- AS=LOW bedeutet, dass ein gültiges Adresse auf den Addressleitung (A) 
liegt
- DSL=LOW bedeuetet, dass ein gültiges Datenword auf den Datenleitung 
D0-D7 liegt (D)

Diskussion der Logik:
=====================
1) Die Logik wird durch Reset oder DSL=High, bzw AS=High in den 
Ausgangszustand zurückgesetzt.
2) Die Addressleitung des Modpacks werden bei AS=Low bei der nächsten 
Flanke auf AD gemultiplext (ASOUT=High). ASOUT geht auf den AS/ALE des 
SJA1000
2a) Wenn DSL nicht kommen sollte, wird die Schaltung mit AS=High wieder 
zurückgesetzt.
3) Falls die  Addresse bereits gemultiplext wurde (I11.Q =1), und 
DSL=LOW ist oder geht, dann wird mit der nächsten Flanke von SYSCLK die 
Datenleitungen gemultiplext. Abhangig von R/W wird entweder D auf AD, 
oder AD auf D geschaltet.
4) Falls AS und DSL gleichzeitig auf Low gehen (das sollte der Regelfall 
sein), wird zuerst durch die FF zuerst der Address bei einer Flanke von 
SYSCLK gemultiplext, und anschliessend die Daten.

Für Verbesserungsvorschläge bin ich mehr als offen.
Ist es ferner möglich, auf jede Flanke zu triggern, d.h. auf und 
absteigend ?  SYSCLK läuft nur mit 16 Mhz (t=62,5ns), während der 
SJA1000 nur einige Nanosekunden braucht. Man könnte damit Wartezeit 
sparen

Danke

Tilman

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.