mikrocontroller.net

Forum: FPGA, VHDL & Co. VHDL for modpack


Autor: tilman (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: tilman (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.