Testbench für bidirectionale Leitung

Gast #4145214
Lesenswert?

Hallo,

ich lese gerade einen speziellen Chip mit Hilfe eines FPGAs aus. Er hat 
ein serielles Protokoll mit Chipselect, Clock und einer Datenleitung. 
Diese ist bidirektional. Ich schicke also ein Kommando hin und er 
schickt mir dann als Slave die gewünschten Daten zurück. Das 
rausschieben des Codeworts sieht ganz gut aus, ich hatte jetzt nur Lust, 
das einlesen auch mal zu überprüfen. Gibt es da eine einfache 
Möglichkeit? Ich möchte nur ungern, das Verhalten des Chips auch noch in 
VHDL abbilden...

Habe leider den Code nicht hier, der Ausgangsbuffer ist aber von der 
Form
1
  data_inout <= daten_raus when ( oe = '1' ) else  'Z';
2
  daten_rein <= data_inout;

Grüße
Joe
Gast #4145219
Lesenswert?

Hi,

damit's keine Kollisionen gibt, kannst Du statt '0' und '1' auch die 
schwachen Treibersignale 'H' und 'L' nutzen, ansonsten simuliert sich 
sowas wie normale I/Os. Ansonsten kannst du dir bei diversen 
i2c-Testbenches was abgucken.
Gast #4145485
Lesenswert?

Na ja, da das Einlesen ja vermutlich synchron zum Takt erfolgt und somit 
der Slave ja die Daten synchron zum Takt ausgeben muss UND du auch DATEN 
einlesen willst, die irgendwo erzeugt werden müssen, wirst du nicht 
drumrum kommen, zumindest das Interface des Slave minimalistisch zu 
beschreiben.
Gast #4146249
Lesenswert?

Hm normnalerweise macht man sowas mit nem Open Collector Treiber, wenn 
man kein Datenrichtungsignal vorgegeben bekommt oder vorgen kann. Denn 
du kannst ja dein tristate Ausgang nicht steuern da dir das Out Enable 
Signal fehlt, und du kannst das IC nicht steuern da es ja auch nur 
CS,Clk und IO besitzt.
Also gibt keiner die Datenrichtung vor. Sowas macht man wie bei I2C mit 
OC Treiber und nen Pullup.
Gast #4146369
Lesenswert?

bau doch einfach einen Zaehler dazu. Wenn du anfaengst mit deinen 
Ausgangsdaten zaehlst du einfach die Takte/Bits mit und nach soundsoviel 
Bits schaltest du die Datenleitung auf 'Z'. Dein Counterpart macht genau 
das gleiche, nur umgekehrt (erst 'Z', dann Daten raustreiben)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren