Problem mit tristate Bus

Gast #2969811
Lesenswert?
• ▲
▼
Hallo,

ich habe ein kleines Problem und hoffe, dass mir jemand helfen kann.
Ich habe in meinem Design einen bidirektionalen Datenbus (inout) und ein 
register angeschlossen. Ich möchte auf den Datenbus schreiben 
(funktioniert) und erwarte eine Antwort (Bus in den Tristate versetzen). 
Wenn ich jetzt die Daten auf dem Datenbus in ein Register kopieren will, 
klappt das nicht. Das Zielregister hat dann immer einen 0xFFFF Wert, 
statt dem Datenbuswert. QuartusII gibt dazu auch eine Warnung aus:

Warning (13046): Tri-state node(s) do not directly drive top-level 
pin(s)
Warning (13047): Converted the fan-out from the tri-state buffer "AD" to 
the node "fifo_wrdat" into an OR gate

AD ist mein Datenbus, fifo_wrdat das Zielregister.

Verstanden habe ich die Warnung schon, aber ich weiß nicht, wie ich 
dieses Problem lösen kann, irgendwie muss das doch gehen!
Gast #2969824
Lesenswert?
• ▲
▼
Das sagt doch alles:

Tri-state node(s) do not directly drive top-level pin(s)

Die Tristates müssen bis in den Toplevel wenn du extern was treiben 
willst.

Interne Tristates können die meisten (eigendl. alle neuen) FPGAs nicht, 
Quartus wandelt es in Logik um
Gast #2970402
Lesenswert?
• ▲
▼
Ich beschreibe Tristates im Toplevel (und nur im Toplevel) immer so:
1
...
2
  port (
3
    data_pad : std_logic;
4
    ...
5
  );
6
...
7
  signal data_in     : std_logic;
8
  signal data_out    : std_logic;
9
  signal data_enable : std_logic;
10
...
11
  data_in  <= data_pad;
12
  data_pad <= data_out when data_enable = '1' else 'Z'; 
13
...
Alles was unterhalb des Toplevel liegt, muß mit den Signalen data_in, 
data_out und data_enable auskommen.

Duke

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