Simulare VHDL UPS deschise atracţie de scurgere

S

shaiko

Guest
Bună ziua, aş dori, pentru a simula Open scurgere de tras până în porturile testbench mea. De exemplu: I2C sunt de ceas şi date porturile inout sunt outputed ca "Z" mare o tras apoi până la un 1 "de către un rezistor de tragere pana la a realiza o" fir şi ". În simularea mea, vreau ieşirile care primesc
 
De ce nu folosiţi funcţia de rezoluţie existentă pentru std_logic? Adăugaţi această linie undeva: my_inout_signal
 
Hi std_match, vreau să fie capabil să facă acest lucru fără a schimba codul RTL. Prin urmare, semnalul trebuie să fie rezolvate din partea testbench ...
 
Acesta nu ar trebui să conteze în cazul în care vă conduce semnalul de la "H", aşa că ar trebui să fie OK pentru a avea în bancul de testare.
 
Va rugam sa elaboreze. in componenta mea RTL: some_inout_signal
 
Puteţi adăuga un driver pentru semnalul de standul de încercare (std_logic), care este conectat la "some_inout_signal". test_bench_signal_connected_to_dut_open_drain
 
Încercat, nu e bine. Am nevoie de RTL mea de a "vedea" (înregistrare din spate) un '1 'atunci când se conduce de ieşire la "Z" şi nici un alt semnal pe autobuz trage de el la '0'. Pentru examle: - ne conduce un port InOut la "Z", undeva în codul nostru inout_port RTL
 
Dacă aţi scrie o funcţie de rezoluţie, va trebui să schimbaţi toate logica de tipul 2, care wont a fi susţinută de către synthesisor în mod corespunzător. Eu încă nu inteleg ceea ce încercăm să facem în testbench dumneavoastră. Este ca şi cum ai încerca să vezi ceva în testbench care nu are nimic de a face cu USI. Am, de asemenea, nu inteleg ce vrei să spui de port "înregistrat" ​​inout. Acest lucru nu este posibil. Înregistrează numai du-te în 1 direcţie, cu ieşire conectat la un tampon tri-stat.
 
a încercat, nu e bine. Am nevoie de RTL mea de a "vedea" (înregistrare din spate) un '1 'atunci când se conduce de ieşire la "Z" şi nici un alt semnal pe autobuz trage de el la '0'. Pentru examle: - ne conduce un port InOut la "Z", undeva în codul nostru inout_port RTL
 
"H" nu are acelaşi efect ca şi 1 ". inout_signal = "H" nu este acelaşi lucru ca inout_signal = '1 'Ce se întâmplă dacă nu am acces la RTL. VHD?
 
atunci de ce nu conecta doar inout_signal la '1 '? în cazul în care de conducere de "Z", intenerally, apoi logica citi vor putea vedea '1 '. Tu ar trebui să aibă, de asemenea, acces la semnalul enable, astfel încât să ştiţi atunci când pentru a comuta la "Z"
 
"H" nu are acelaşi efect ca şi 1 ". inout_signal = "H" nu este acelaşi lucru ca inout_signal = '1 'Ce se întâmplă dacă nu am acces la RTL VHD?.
Ok, "H" se poate rupe de simulare. Toate funcţiile din std_logic_1164 va funcţiona, dar codul de genul "dacă inout_signal = '1 '" va eşua. Un lucru mai mult pentru a încerca, în standul de încercare (nu l-am testat):
Code:
 pull_up: proces (test_bench_signal_connected_to_dut_open_drain) începe - de ieşire din acest proces va fi mentinut la 1 "sau" Z ", în cazul în care test_bench_signal_connected_to_dut_open_drain = 'Z "test_bench_signal_connected_to_dut_open_drain apoi
 
atunci de ce nu conecta doar inout_signal la '1
Asta e un port ... InOut partea tesbench conduce, de asemenea, semnalul de "?". Gândiţi-vă la următoarele pe un autobuz I2C: Un maestru trimite adresa si asteapta slave să recunoască trăgând cu autobuzul la '0 '. Nici unul unităţi de transport cu autobuzul la '1 '... un '1' nivel este atins prin tragere la rezistori. Am nevoie de o funcţie de rezoluţie simplu care converteşte "Z de la '1 '...
 
A 1 "şi un" Z ", condus împreună va oferi '1 '
DUT şi bancul de încercare trebuie să fie, de asemenea, posibilitatea de a conduce semnalul de la '0'.. În cazul în care se testbench conduce la '1 ', aceasta nu poate fi '0', doar 1 "şi" X ". Avem două sau mai multe drivere, ei conduc '0 'sau "Z". Vrem semnalul să fie '0 'în cazul în care orice conducător auto conduce '0', altfel ne-o dorim '1 '.
 
exact ... în "lumea reală", se face pe PCB sau de către un intern trageţi pe IC. Aş dori să fac acelaşi testbench
 
Un singur lucru mai mult pentru a încerca, în standul de încercare (nu l-am testat):
Daca ai "U" în simulare, schimba, astfel că "X" sau "U" va activa conducător auto "Z":
Code:
 pull_up: proces (test_bench_signal_connected_to_dut_open_drain) începe - de ieşire din acest proces va fi mentinut la 1 "sau" Z ", în cazul în care test_bench_signal_connected_to_dut_open_drain = 'Z', apoi test_bench_signal_connected_to_dut_open_drain
 
Se pare că pentru a face treaba ... cu toate acestea, semnalele sunt "foarte cromatice". Pe marginea creştere a tras semnalul e albastru (aşa-zis "Z"), pentru o suma infima de timp şi pe care se încadrează marginea este roşu (aşa-zis "X"). În caz contrar, atunci când semnalul este stabil este verde (de la '1 'sau '0', deoarece ar trebui sa fie). Un fel de condiţie cursă pe margini ...
 

Welcome to EDABoard.com

Sponsor

Back
Top