VHDL simulering af åbne dræn armbøjninger

S

shaiko

Guest
Hej, jeg vil gerne simulere open drain trukket op porte i min testbench. For eksempel: I2C ur og data Inout porte outputed så højt 'Z' en og derefter trukket op til et '1 'ved en pull-up modstand for at opnå en "kablet og". I min simulation, ønsker jeg de udgange, der får
 
Hvorfor ikke bruge den eksisterende løsning funktion for std_logic? Tilføj denne linje sted: my_inout_signal
 
Hej std_match, jeg ønsker at være i stand til at gøre dette uden at ændre den RTL kode. Derfor skal det signal løses fra den testbench side ...
 
Det bør ikke ligegyldigt hvor du kører signalet til 'H', så det bør være OK at have det i prøvebænk.
 
Du tilføjer en driver til den prøvebænk signal (std_logic), der er forbundet med "some_inout_signal". test_bench_signal_connected_to_dut_open_drain
 
Prøvet det, ikke godt. Jeg har brug for min RTL for at "se" (registrere tilbage) '1 ', når den selv driver output til' Z 'og intet andet signal på bussen trækker den til '0'. For examle: - Vi kører en InOut port til 'Z' et eller andet sted i vores RTL kode inout_port
 
hvis du skriver en resolution funktion, bliver du nødt til at ændre hele din logik til 2. typen, der plejer understøttes af synthesisor korrekt. Jeg har stadig dont forstå, hvad du forsøger at gøre i din testbench. Det er som om du forsøger at se noget i testbench, der intet har at gøre med at UUT. Jeg har også don? T forstå, hvad du mener med "registreret" InOut port. Dette er ikke muligt. Registrerer går kun i en retning med udgangen forbundet til en tri-state-puffer.
 
prøvet det, ikke godt. Jeg har brug for min RTL for at "se" (registrere tilbage) '1 ', når den selv driver output til' Z 'og intet andet signal på bussen trækker den til '0'. For examle: - Vi kører en InOut port til 'Z' et eller andet sted i vores RTL kode inout_port
 
'H' ikke har den samme virkning som '1 '. inout_signal = 'H' er ikke det samme som inout_signal = '1 'hvad nu hvis jeg ikke har adgang til RTL. VHD?
 
hvorfor så ikke bare tilslutte inout_signal til '1 '? hvis kørsel "Z" intenerally derefter læst logik vil kunne se '1 '. Du bør også have adgang til aktiveringssignalet, så du ved hvornår du skal skifte til 'Z'
 
"H" ikke har samme virkning som '1 '. inout_signal = 'H' er ikke det samme som inout_signal = '1 'hvad nu hvis jeg ikke har adgang til RTL. VHD?
Ok,' H 'kan bryde simuleringen. Alle funktioner i std_logic_1164 vil arbejde, men kode som "hvis inout_signal = '1 '" vil mislykkes. En ting mere at prøve i prøvebænk (jeg har ikke testet det):
Code:
 pull_up: proces (test_bench_signal_connected_to_dut_open_drain) begynder - Output fra denne proces vil blive låst til '1 'eller' Z ', hvis test_bench_signal_connected_to_dut_open_drain =' Z 'da test_bench_signal_connected_to_dut_open_drain
 
hvorfor så ikke bare tilslutte inout_signal til '1
Det er en InOut port ... det tesbench side også driver signalet '?'. Tænk på følgende på en I2C bus: En mester sender adresse og venter for slaven at anerkende ved at trække bussen til '0 '. Ingen drev bussen til '1 '... en '1' niveau opnås ved pull-up modstande. Jeg har brug for en enkel løsning funktion, der konverterer 'Z' s til '1 '...
 
En '1 'og et' Z 'drevet tilsammen vil give '1'
Den DUT og prøvebænk skal også være i stand til at køre signalet til '0 '.. Hvis testbench driver det til '1 ', kan det aldrig være '0', kun '1 'og' X '. Vi har to eller flere chauffører, de kører '0 'eller' Z '. Vi ønsker, at signalet skal være '0 'hvis nogen føreren fører '0', ellers vil vi '1 '.
 
præcis ... i den "virkelige verden", det er gjort på PCB eller af en intern trække op på IC. Jeg vil gerne gøre det samme på testbench
 
En ting mere at prøve i prøvebænk (jeg har ikke testet det):
Hvis du får 'U' i simuleringen, ændrer sig så, at 'X' eller 'U' vil aktivere den 'Z' driver:
Code:
 pull_up: proces (test_bench_signal_connected_to_dut_open_drain) begynder - Output fra denne proces vil blive låst til '1 'eller' Z ', hvis test_bench_signal_connected_to_dut_open_drain =' Z 'og derefter test_bench_signal_connected_to_dut_open_drain
 
Synes at gøre jobbet ... men signalerne er "meget farverig". På den stigende kanten af ​​trak op signal, den er blå (angiveligt 'Z') for en forsvindende lille mængde af tid og på den faldende flanke det er rødt (angiveligt 'X'). Ellers når signalet er stabilt, det er grønt (på '1 'eller '0' som det er meningen at være). Nogle slags race condition på kanten ...
 

Welcome to EDABoard.com

Sponsor

Back
Top