Inout uostą testbench problema, verilog

K

Krywa

Guest
Parašiau testbench mano I2C kodas, bet neatrodo, kad darbo.

Modulyje sda Inout uosto.

Be testbench:

...
viela SDA;

reg SDA_reg;
Oe = 1;
...
priskirti SDA = (OE == 1)?SDA_reg: 1'bz;
...

Visada rašyti SDA_reg.Problema ta, kad SDA visada lieka Z ir tai nėra įkrauta.Ar kas nors yra mintis, kas man atsitiko?
Thx,
Krywań

 
Ar jūs nubrėžtos iš SDA_reg į treniruoklį ir įsitikinkite, kad ji nėra undefined?

Kas atsitiks, jei jūs pakeisite pareiškimą:
priskirti SDA = (OE == 1)?SDA_reg: 1'b1;
Ar SDA eiti aukštas?

Jei pakeisite pareiškimą:
priskirti SDA = (OE == 1)?SDA_reg: 1'b0;
Ar SDA eiti mažai?

Ką aš bandau patekti į šias laikinas kodas pokyčiai yra problemos šaknis.Ar SDA tikrai bus kontroliuojama, ar yra kažkas maskavimo problema.

 
labas,

Aš išbandžiau, bet nieko neįvyko.Aš turiu galvoje, kad SDA turi nuolat z vertė, nesvarbu, ar

priskirti SDA = (OE == 1)?SDA_reg: 1'b0;

ARBA

priskirti SDA = (OE == 1)?SDA_reg: 1'b1;

Aš jau bandė nustatyti SDA_reg kaip tri ir trireg bet jis buvo nenaudingas ...

 
Aš susiduria su ta pačia problema naudojant dvipusį kaip Kirvan daro.Let's do some stuff logiška:
(1) Inout uostas dvipusį uoste, tai jis yra įvesties uoste kai kurie iš jūsų projekto dalis, bet produkcija uosto kita dalis savo dizainą, ir jūs cant priskirti bet kokį projektinį galingumą ir uosto vertę, nes jų vertės yra tiesiogiai skaičiuojant nuo kitų įvesties uoste vertė.
Leiskite pasakyti labai paprastą, bet examplary pavyzdžiui, visiškai įtaisas, struktūrinis modeliavimas.Visi mes žinome, kad visas įtaisas gali būti archieved pagal Concat 2 pusė padidinimas, išėjimo signalas 1st half padidinimas taip pat yra antroji pusė įvesties įtaisas, tačiau mes negalime jums suteikti jokių Šis tarpinis (Inout uosto vertė) , nes jos vertę lemia pasaulinės 2 įėjimai, pasakyk ir B.
Su UR atveju, ir turi apibrėžti pasaulio įėjimai (vienas aspektas tik) ir suteikia vertę, bet ne bidiectional viena ....
Paskutinį kartą redagavo Atėnė 26 kov 2008 19:50, edited 1 kartą

 
Atėnė,

Atsiprašome, tačiau aš nesu įsitikinęs, kad aš suprantu, jūs teisingai.Taigi, jūs turite galvoje, kad [modulyje] SDA ir SCL turėtų būti įvesti ir ...
Atėnė rašo:

... suteikia vertę, bet ne bidiectional viena ....
 
Nuo sda įstrigo ne "z", atrodo, kad nei testbench uosto problema arba visą dizainą įstrigo iš naujo.
Kuris lygio dizainas esate Parodyta SDA ne?Ar jūs rodote testbench signalą arba vieno širdyje jūsų faktinis logika.Noriu numušti į logiką ir parodyti SDA, SDA_reg, ir OE.Jei tai yra normalus ne žemesnio lygio, tada jos Ryšio problema testbench.Jei jie blogai ne žemesnio lygio, tada logika įstrigo iš naujo, ar nemano, kad laikrodis ar kažkas panašaus.

Ar tikrai norite įtraukti viską, kad logika turi imituoti?Pavyzdžiui, su Xilinx, dažnai turi įtraukti glbl.v.Šis failas yra "medžiagos", kuris pasireiškia projektavimas iš naujo.Senesnė dizainui naudojamas, turi būti paleidžiant failą ar paleidžiant blokas.

Please don't get pakabinti ant Inout dalis.Įrodyti, ar Inout yra problemos šaknis, pakeisti SDA išvesti tik ir pažiūrėkite, ar "z" tampa gera logika lygis.

 
Aš tai pasakyti, kad norite geriau nutraukti savo dizainą į iš submodules numerį.Kiekvienas submodule yra tik įvedimo ir išvedimo uostų ne Inout uosto.Inout uostas yra ne kas kita vielos prijungti kiekviena submodule tik ...Mano nuomone tai geriausias būdas išvengti bet kokio dizaino DTL problema ...

 
Hi Kriváň, Ar galite parodyti mums visą modulio, kuris rodo problema?Tai padėtų diskusijos.

 
Hi all,

Banjo:
viskas [SDA_reg, SCL ,...] atrodo darbą išskyrus sda.Sda įstrigo "z" ir todėl aš negaliu duoti įvesties modulis Raginu i2c_slave_code3.
Na ... Aš tikiuosi, kad man viskas modeliavimas.Esu naujas ModelSim [dirbu su ModelSim] ir Nesu girdėjęs apie tokio failo glbl.v dar.Aš patikrinti ...
Bandžiau nustatyti SDA į "produkciją", tačiau problema yra ta pati.

Atėnė:
Ah, ok.Aš jį išbandyti, ačiū.Ar "Inout" tikrai tik "viela", kuris jungia "sąnaudų" ir "išėjimo"?Turiu galvoje, yra susintetintas elementas tikrai tik tarp Inout ir išėjimo submodules viela?

echo47:
Yes, you're right.Čia yra testbench kodą.

Thank you for your help.
modulis test_i2c_slave_code ();

viela SDA;

reg SDA_reg;
reg SCL;
reg P1, P2;
reg oe = 1;

reg pradžiojei2c_slave_code3 u (SCL,
SDA,
P1
P2
)

priskirti SDA = (OE == 1)?SDA_reg: 1'bz;

pradinis
pradėti
start = 0;
SDA_reg = 1;
SCL = 0;
P1 = 0;
P2 = 1;
# 10
SDA_reg = 0;
start = 1;
# 1
SDA_reg = 1;
# 1
SDA_reg = 0;
# 1
SDA_reg = 1;
# 1
SDA_reg = 1;
# 1
SDA_reg = 0;
# 1
SDA_reg = 0;
# 1
SDA_reg = 1;
# 1
SDA_reg = 1;
# 1
SDA_reg = 0;
# 1
SDA_reg = 1;
# 1
SDA_reg = 1;
# 1
SDA_reg = 0;
# 1
SDA_reg = 0;
# 1
SDA_reg = 0;
# 1
SDA_reg = 1;
$ kalbomis ( "X. bitų");
pabaiga

pradinis
pradėti
@ (posedge pradžios)
amžinai # 1 SCL =! SCL;
pabaiga
endmodule

 
Naudojant ModelSim SE 6.3e, aš nematau amžinai "z" narė jums aprašyti.

Turėjau komentarą-out i2c_slave_code3 momentinė, nes aš neturiu to modulio.Gal šis modulis yra problema?
Atsiprašome, bet jums reikia prisijungęs, kad galėtumėte peržiūrėti šį priedą

 
Hmmm ... strage.I tried to be I2C modulis [komentarų] ir gaunu tą patį rezultatą, kaip jūs ... Ehhh.

Be I2C modulis sda Inout kuris yra priskirtas sda_R [Tai reg] taip

priskirti SDA = (OE == 1)?sda_R: 1'bz;

kur

reg oe = 1;

I read / write sda_R į / iš komandų registrą.
Galbūt tai reg - Inout priskirti blogai?

/ Krywań

 
Nes ji dirba su žemesnio lygio komentarų dėmesį, manau, kad turite autobusų tvirtinimą ar trūksta pullup rūšiuoti.I2C duomenų eilutė yra atvira nutekėjimo sistemos.Ar turite pullup su logika viena testbench?Jei ne, tuomet galbūt žemesnio lygio bando išvesti "1", kuris reiškia, kad jis tik spaudai eilutę.Tačiau, be pullup, linijos atrodo eiti aukštas Z.

 
Būtų naudinga, jei norite pamatyti visus kodo, jei ji nėra konfidenciali.

Jūsų treniruoklio ekrane, galite būti tikri, ne paini plaukiojančios "z" valstybės, su nežinoma "x" būklės.Signaliniai tvirtinimas (du vairuotojai kovoti viena su kita), gali atsirasti "x" būklės.

Beje, savo stende ne imituoti Open-Drain pobūdis I2C.Jis vairuotojo SDA tiek didelės ir mažos, tačiau tai turėtų būti tik vairuotojo jis mažas.Naudokite nuolat silpna pullup išlaikyti signalas didelis, kai ji nėra išstumti mažas.

 

Welcome to EDABoard.com

Sponsor

Back
Top