Hallo,
vielleicht stehe ich nur auf dem Schlauch, aber ich dachte ich frage mal
in die Runde.
Ich möchte einen Pin mit externem Pullup simulieren.
Dabei kann der externe Baustein für ein Busy die Leitung auf 0 ziehen.
(Außerdem kann er noch Daten schicken, aber das ist hier egal)
D.h. ich muss intern auf 'Z' setzen und '1' prüfen, d.h. ob nicht busy.
Soweit, so gut.
Ich muss aber auch auf der Gegenstelle das gleiche tun, d.h. in der
Testbench auf 'z' oder 'H' setzen um zu lauschen was das FPGA so
schickt.
D.h. bei nicht busy kann ich nicht einfach '1' von der testbench
treiben.
Aktuell sieht mein Code so aus(Codebeispiel, nur relevanter Teil)
TB
1 | signal <= signal_out when signal_ena = '1' else 'H';
|
FPGA
1 | signal <= signal_out when signal_highz = '0' else 'Z'
|
2 |
|
3 | process(clk)
|
4 | ...
|
5 | signal_in <= signal
|
6 | if (signal_in = '1') then -- Variante 1
|
7 | if (signal_in /= '0') then -- Variante 2
|
8 | ...
|
Variante 2 funktioniert für die Simulation. Klar, weil 'H' eben nicht
'0' ist kann ich damit arbeiten.
Ich habe aber ein schlechtes Gewissen für die Synthese, dort würde ich
lieber Variante 1 nehmen. Die bekomme ich aber wie gesagt nicht
simuliert, weil die TB ein H treibt.
Was tun?