Hoe te detecteren High-Z staat in VHDL of Verilog?

V

vitiluck

Guest
In feite ben ik interactie met I2C bus.

Ik wil de waarde 1 krijgt als bus is op High 'z'.

hoe dit te implementeren?

if (bus = 'z')
gegevens <= 1;

het kan niet werken in de synthese.

Indien gebruik van een buffer macro, Zou iemand geven een buffer naam van een leverancier product?

 
In I2C de Hi-Z staat overeen met de '1 'staat, want in de SDA lijn moet er een pull-up in het circuit.Controleer de I2C norm en je zult vinden.
Dus, in plaats van "do IF (bus = 'z')" u "IF (bus = '1 ')".
Om te testen een Hi-Z staat uw apparaat moet het meten van de stroom die wordt afgevoerd in die lijn.

 
u kunt gebruiken in VHDL h ':

als bus = 'H', dan
gegevens <= '1 ';

 
vitiluck wrote:

In feite ben ik interactie met I2C bus.Ik wil de waarde 1 krijgt als bus is op High 'z'.hoe dit te implementeren?if (bus = 'z')

gegevens <= 1;het kan niet werken in de synthese.Indien gebruik van een buffer macro, Zou iemand geven een buffer naam van een leverancier product?
 
Dank u allen,

Ik ben nog steeds in verwarring.Lager is dan begrip is juist?

mycode naar hetzij Z of 0 (twee staat) die kunnen afleiden van een bufifx

standaardcode lees de I2C bus, zal altijd 1 krijgt als myout is z en alle andere apparaat out is z.(Dwz met een pull-up weerstand, input om een standaard logica z is 1).

Ik zal proberen in mijn echte test.

Is dat zo?Toegevoegd na 1 minuten:Als u I2C bus uitgang 1.moet worden verboden.

 
IN FPGA io haven vóór Lees signaal op pin SDA, dient u poort 'H'
SDA <= 'H'

 
BuBEE wrote:

IN FPGA io haven vóór Lees signaal op pin SDA, dient u poort 'H'

SDA <= 'H'
 
Excuseer, zwerven ik dit ook!
Quote:In feite ben ik interactie met I2C bus.Ik wil de waarde 1 krijgt als bus is op High 'z'.hoe dit te implementeren?if (bus = 'z')

gegevens <= 1;het kan niet werken in de synthese.Indien gebruik van een buffer macro, Zou iemand geven een buffer naam van een leverancier product?

 
Het is heel aardig van je, YUV!

Iedereen heeft dezelfde vraag pls zie uitleg van YUV in deze discussie.

 
Hoi

waarom willen opsporen van de hoge impedantie staat?

Laat ik deel mijn ervaringen met dit probleem.Het kan je helpen.

Ik heb ontworpen FPGA kern voor parallelle poort in ECP-modus.Een normale parallelle poort ondersteunt tot 200 KHz.Maar hetzelfde in ECP-modus, ondersteunt 25 MHz (afhankelijk van het ontwerp) of meer.In dit protocol, ik had het ontwerp van de bidirectionele data bus tussen PC parallelle poort en FPGA.Wanneer de FPGA wil enkele gegevens op de bus te schrijven, kan het schrijven van gegevens rechtstreeks.Het enige probleem is het lezen van de gegevens die door PC.Deze keer op FPGA kant, de data bus moet "Z".Eerst hebben we geprobeerd om hoge impedantie staat controle op de bus voor de lezing.In feite was het niet mogelijk is.Daarna heb ik gebruikt om het hoge impedantie voor de lezing.toen was het werkt perfect.Mijn suggestie is is het beter te maken hoge impedantie voor het lezen van gegevens in twee richtingen signaal (zelfs in I2C) in plaats van de controle voor hoge impedantie.Hier ben ik het geven van eenvoudig idee over deze uitvoering.

Writing_Data: signaal <= data;
Reading_Data: Signal <= 'Z';
Buffer <= signaal;Maar enige wat je moet doen is, moet je het hoge impedantie voor (minimaal een uur eerder) u leest.Als je deze kant (FPGA kant) hoge impedantie, dan is de Otherside (Sommige andere apparaat) van het signaal kan worden geschreven door de gegevens.Zodat u kunt lezen.Groeten,
Vishwa

 
Matrix_YL wrote:

Excuseer, zwerven ik dit ook!Quote:In feite ben ik interactie met I2C bus.Ik wil de waarde 1 krijgt als bus is op High 'z'.hoe dit te implementeren?if (bus = 'z')

gegevens <= 1;het kan niet werken in de synthese.Indien gebruik van een buffer macro, Zou iemand geven een buffer naam van een leverancier product?

 
Quote:

De pull-up weerstand verbindt het signaal '1 'wanneer alle uitgangen (tot hetzelfde signaal) worden in de Hi-Z of "disconnected" staat
 
Voor de synthese, de oplossing is circuits.Ik ga ervan uit te gaan kun je een schakelschema lezen.
the "pullup" resistor R will raise sig_out towards the Power voltage, which is interpreted as the high or '1' state.

Wanneer je de FPGA output buffer (driehoek links) in de hoge impedantie (Z) staat met sig_out <= 'Z',
de 'pullup "weerstand R zal verhogen sig_out de richting van de Power spanning, die wordt geïnterpreteerd als de hoge of' 1 'staat.Dit is fundamenteel digitale elektronica.

Merk op dat het de output circuit (buffer) die in de hi-Z staat, niet de draad of signaal.
Sorry, maar je moet inloggen om deze gehechtheid

 
Ik ben het eens met YUV.

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />Ik heb verrassende oplossing:

wanneer u wilt 'waarde Hiz', stelt pin AZ input!en wanneer je wilt stellen aan de uitgang van de '0 ',
set pin AZ uitgang en schrijf 0 tot en met pin.
Ik bedoel insted van u verandert de uitgang van de PIN-waarde, gewoon je van richting veranderen!!
Ex:
//-------------------------
/ / pin SDA
SDAout = 0; / / permanent op nul
SDAdir = _input; / / bij het opstarten
.....
/ / 'Data' moet zetten SDA pin
unsignd char rb / / verplaatsen 1
voor (rb = 0x80; rb! = 0; rb rb =>> 1) (
if (data & RB)
SDAdir = _input; / / uitgang gebracht naar 'Hiz'
anders
SDAdir = _output; / / uitgang gebracht op '0 '
_SENDCLK; / / Vergelijkbaar met SDA pin!
)
SDAdir = _input; / / release bus
....

reards Davood Amerion

 

Welcome to EDABoard.com

Sponsor

Back
Top