Apua!

V

vuoristoalueiden

Guest
Olen vihreä käsi VHDL.Nyt minä suunnittelu ASIC toteuttaa koko funcions Mitsubishi M66500 SP / FP PROGRAMMABLE puskuroitu I / O EXPANDER.
Mutta minä kohdata joitakin eroja, etenkin "InOut" Port.Olen minimoida minun koodi edustaa päätoiminta alla.
Voitko antaa neuvoja siitä koodin?

MAX Plus II 10.23 Full.Kääntäminen on OK, mutta simulaatio osoittaa, tällainen virheilmoituksen: Warning: Löytyy logiikkaa erimielisyyksiä 40ns on solmun "D0"
Varoitus: Löytyy logiikkaa erimielisyyksiä 40ns on solmun "D1"
...
Varoitus: Löytyy logiikkaa erimielisyyksiä 40ns on solmun "A7"

Pyydän teiltä apua!

<img src="http://www.edaboard.com/images/smiles/icon_cry.gif" alt="Crying or Very sad" border="0" />--*************************************
Library IEEE;
Käytä IEEE.Std_Logic_1164.All;
Käytä IEEE.Std_Logic_Arith.All;
Käytä IEEE.Std_Logic_Unsigned.All;
--*************************************
Entity M66500 Is
Port (
Osoite: In std_logic_vector (2 downto 0);
D: InOut std_logic_vector (7 downto 0);
RST: In Std_Logic;
CS: In Std_Logic;
WR: In Std_Logic;
RD: In Std_Logic;
: InOut std_logic_vector (7 downto 0)

)
End M66500;
--*************************************
Arkkitehtuuri Of M66500 on
Signaalin Status: std_logic_vector (7 downto 0) = "11111111";
Signal BitCon: std_logic_vector (7 downto 0) = "00000000";
Signal Buffa: std_logic_vector (7 downto 0);

Aloittaa

Process (osoite, CS, RD, WR, RST)
Muuttuja Sel: std_logic_vector (3 downto 0);
Aloittaa
SEL: = CS ja osoite;
Jos RST = 1 "ja CS = '0 'jälkeen
Tila <= "11111111";
Elsif WR'Event Ja WR = '1 'Sitten - Kirjoita D Ports
Asia Sel Is
Kun "0000" => - Kirjoita D jos mahdollista, tai Buffa, jos ei
Buffa <= D;
Jos tila (3) = '0 'Sitten
Muodostuva <= Buffa;
Elsif tila (3) = '1 'Sitten
Muodostuva <= "ZZZZZZZZ";
End if;
Kun "0111" => - Kirjoita valvomiseksi Rekisteröidy
Jos D (7) = '0 'Sitten
BitCon <= D;
Elsif D (7) = '1 'Sitten
Tila <= D;
End if;
Kun Muut =>
Null;
End asia;
End if;

Jos RD = '0 'Sitten - Lue Port D
Asia Sel Is
Kun "0000" => - Lue A-D Jos mahdollista, tai Buffa, jos ei
Jos tila (3) = '1 'Sitten
D <=;
Elsif tila (3) = '0 'Sitten
D <= Buffa;
End if;
Kun Muut =>
Null;
End asia;
End if;End process;

Varten;
Last edited by vuori 07 kesäkuu 2004 17:11, muokattu 2 kertaa yhteensä

 
Mitä se tapahtuu omassa simulaatio 40 ns?Ehkä reset release?

koodissasi sivuliike, D ja lähdöt are'nt asetettu korkean impedanssin valtio: tämä voisi johtaa linja väitteen kanssa ja D testbench tuloa!

InOut portti ei saa ajaa kaksi signaalia yhtä aikaa: yksi (tai molemmat) on asetettu "Z" ...Ehkä tämä voisi olla ongelma?

 
Kiitos vastauksesta.Mutta minulla on asetettu "ZZZZZZZZ", miksi ei toimi?

Tässä hankkeessa on 2 valvonta rekisteri - "Tila" ja "BitCon".Tehtävät satamaan tulo-tai lähtötaajuus, määritetään tila.

Kun tiedot sammuttaa satamassa, tiedot otetaan käyttöön Buffa, jos portti on asetettu lähtö ennen, tiedot on järjestettävä kautta suoraan.Tai, jos portti on syöttää ennen, tiedot pannaan Buffa vain.

Kun luetaan Port, jos portti on asetettu lähtö ennen, tiedot voidaan lukea Buffa vain, muuten Port A.

Mitä voin tehdä?

<img src="http://www.edaboard.com/images/smiles/icon_question.gif" alt="Kysymys" border="0" />
 
rol73 kirjoitti:

Mitä se tapahtuu omassa simulaatio 40 ns?
Ehkä reset release?koodissasi sivuliike, D ja lähdöt are'nt asetettu korkean impedanssin valtio: tämä voisi johtaa linja väitteen kanssa ja D testbench tuloa!InOut portti ei saa ajaa kaksi signaalia yhtä aikaa: yksi (tai molemmat) on asetettu "Z" ...
Ehkä tämä voisi olla ongelma?
 
koodisi on joitakin ongelmia, sinun ei pitäisi antaa jatkuvasti muuttuja
signaalin tila ja bitcon että processs aina tehdä elsif
Signaalin Status: std_logic_vector (7 downto 0) = "11111111";
Jos tila (3) = '0 'Sitten
Muodostuva <= Buffa;
Elsif tila (3) = '1 'Sitten
Muodostuva <= "ZZZZZZZZ";
Toinen ongelma huomaa diffrence
välillä CS-osoite ja-cs
CS & osoite => SEL (4) = CS SEL (0) = osoite (0)
osoite & cs => SEL (4) = osoite (2) SEL (0) = cs
Minusta teidän pitäisi korvata osoite & cs

 
MC & FPGA wrote:

koodisi on joitakin ongelmia, sinun ei pitäisi antaa jatkuvasti muuttuja

signaalin tila ja bitcon että processs aina tehdä elsif

Signaalin Status: std_logic_vector (7 downto 0) = "11111111";

Jos tila (3) = '0 'Sitten

Muodostuva <= Buffa;

Elsif tila (3) = '1 'Sitten

Muodostuva <= "ZZZZZZZZ";

Toinen ongelma huomaa diffrence

välillä CS-osoite ja-cs

CS & osoite => SEL (4) = CS SEL (0) = osoite (0)

osoite & cs => SEL (4) = osoite (2) SEL (0) = cs

Minusta teidän pitäisi korvata osoite & cs
 
klo 40ns sinun prosessi on aktiivinen ansiosta herkkyys luettelo muuttuu.D (FF) on ristiriidassa d ulos (BufA).
Vaikka lukea osa prosessia ei nolla, tämä ainoa keino d ulos pitää edelliseen: BufA.(mielestäni se ei ole ainoa tapahtuman aikana simulaatio, joka aiheuttaa konflikteja, jos en saa epäonnistua.)
Periaatteessa pidän valvonta bussin master-slave suhteen: yksi asemat ja yksi saa kerrallaan.
Voit tehdä tämän, yritä päätellä 3STATE puskurit ja niiden valvonnasta.Se on lähes aina toimii.
Joka tapauksessa sinun m66500 siru luettelo on saatavilla?

 
Husoo kirjoitti:

klo 40ns sinun prosessi on aktiivinen ansiosta herkkyys luettelo muuttuu.
D (FF) on ristiriidassa d ulos (BufA).

Vaikka lukea osa prosessia ei nolla, tämä ainoa keino d ulos pitää edelliseen: BufA.
(mielestäni se ei ole ainoa tapahtuman aikana simulaatio, joka aiheuttaa konflikteja, jos en saa epäonnistua.)

Periaatteessa pidän valvonta bussin master-slave suhteen: yksi asemat ja yksi saa kerrallaan.

Voit tehdä tämän, yritä päätellä 3STATE puskurit ja niiden valvonnasta.
Se on lähes aina toimii.

Joka tapauksessa sinun m66500 siru luettelo on saatavilla?
 
ensimmäisellä rivillä, muokata testbench, et voi lukea ja kirjoittaa samaan aikaan K-linja, koska näen.O busmaster tekee niin ja nyt, sinun penkki pitäisi käyttäytyä kuin MCU tai mitä tahansa, luulisin.

Toivottavasti alla oleva koodi voitaisiin soveltaa oman CPLD.

yksikkö CPLD on
satama (
...
D: InOut std_logic_vector (N downto 0);
rd: in Std_Logic;
...
)
lopussa CPLD;

arkkitehtuuri cpld_arch ja CPLD on

SEL: std_logic_vector (3 downto 0);
- Signaalien sisäisiä rekistereitä
DIN: std_logic_vector (N downto 0);
Dout: std_logic_vector (N downto 0);

aloittaa
...
Sel <= CS ja osoite;
Din <= D;
D <= Dout kun rd = '0 'else (others =>' Z ');

- Kirjoita prosessi, päivitetty satamat / rekisterit
prosessi (...)
...
...<= DIN;
end process;

- Anna arvo Dout riippuen Sel ja tila
prosessi (SEL, tila)
...
Dout <= ...;
end process;

lopussa cpld_arch;

Ja yrittää välttää:
Jos tila (3) = '1 'Sitten
D <=;
Elsif tila (3) = '0 'Sitten
D <= Buffa;
End if;

käyttö sen sijaan on:
Jos tila (3) = "1" Sitten D <=; else D <= Buffa, end if;

Että melkein kaikki on sitä.
Toivottavasti tämä auttaa.

 
[quote = "Husoo"] ensimmäisellä rivillä, muokata testbench, et voi lukea ja kirjoittaa samaan aikaan K-linja, koska näen.O busmaster tekee niin ja nyt, sinun penkki pitäisi käyttäytyä kuin MCU tai mitä tahansa, luulisin.

Toivottavasti alla oleva koodi voitaisiin soveltaa oman CPLD.
......
quote]

Kiitos!
Minusta neuvoja toimii hyvin.Mutta tässä hankkeessa, Port (ja B, C, E, F, G) on kaksisuuntainen satamien sekä sataman D mukaan oman menetelmän, haluan päivittää Port kun
Din <= D;
D <= Dout kun rd = '0 'else (others =>' Z ');
koska:
Din <= D;
D <= Dout kun rd = '0 'else (others =>' Z ');
Ain <=;
<= Aout kun tila (3) = '0 'else (others =>' Z ');
?
Ja prosessin (SEL, ...), en updat Din, Dout, Ain, Aout jälkeen tila?
nimellä
Asia Sel Is
Kun "0000" =>
Aout <= DIN;
Dout <= Ain;
...
End tapauksessa;
?
Kaikkein sekava on, että sekä A-ja D on kaksisuuntainen portti.

 
Olen uudelleenkirjoitussuodattimet koodia, mutta "Found logiikalla väite" varoitus olemassa myös.
Tässä on kaksi menetelmää.

--*************************************
Library IEEE;
Käytä IEEE.Std_Logic_1164.All;
Käytä IEEE.Std_Logic_Arith.All;
Käytä IEEE.Std_Logic_Unsigned.All;
--*************************************
Entity M66500 Is
Port (
Osoite: In std_logic_vector (2 downto 0);
D: InOut std_logic_vector (7 downto 0);
S: InOut std_logic_vector (7 downto 0);
RST: In Std_Logic;
CS: In Std_Logic;
WR: In Std_Logic;
RD: In Std_Logic;
: InOut std_logic_vector (7 downto 0)

)
End M66500;
--*************************************
Arkkitehtuuri Of M66500 on
Signaalin Status: std_logic_vector (7 downto 0);
Signal BitCon: std_logic_vector (7 downto 0);
Signal Din: std_logic_vector (7 downto 0);
Signal Dout: std_logic_vector (7 downto 0);
Signal Ain: std_logic_vector (7 downto 0);
Signal Aout: std_logic_vector (7 downto 0);
Signal Sel: std_logic_vector (3 downto 0);

Aloittaa

Sel <= CS ja osoite;
Din <= D;
D <= Dout kun RD = '0 'else (others =>' Z ');

Ain <=;
<= Aout kun tila (3) = '0 'ja WR = '0' else (others => 'Z');

S <= Tila - Testi

Process (SEL, D, A, RST)
Aloittaa

Jos RST = 1 "ja CS = '0 'Sitten - Nollaa valvonta rekisteri" Tila "
Tila <= "11111111";
End if;

Asia Sel Is
Kun "0000" =>
Dout <= Ain;
Aout <= DIN;
Kun "0111" =>
Jos Din (7) = '0 'Sitten
BitCon <= DIN;
Elsif Din (7) = '1 'Sitten
Tila <= DIN;
End if;
Kun Muut =>
Null;
End asia;

End process;

Varten;

 
--*************************************
Library IEEE;
Käytä IEEE.Std_Logic_1164.All;
Käytä IEEE.Std_Logic_Arith.All;
Käytä IEEE.Std_Logic_Unsigned.All;
--*************************************
Entity M66500 Is
Port (
Osoite: In std_logic_vector (2 downto 0);
D: InOut std_logic_vector (7 downto 0);
S: InOut std_logic_vector (7 downto 0);
RST: In Std_Logic;
CS: In Std_Logic;
WR: In Std_Logic;
RD: In Std_Logic;
: InOut std_logic_vector (7 downto 0)

)
End M66500;
--*************************************
Arkkitehtuuri Of M66500 on
Signaalin Status: std_logic_vector (7 downto 0);
Signal BitCon: std_logic_vector (7 downto 0);
Signal Din: std_logic_vector (7 downto 0);
Signal Dout: std_logic_vector (7 downto 0);
Signal Sel: std_logic_vector (3 downto 0);

Aloittaa

Sel <= CS ja osoite;
Din <= D;
D <= Dout kun RD = '0 'else (others =>' Z ');

Process (SEL, WR, RD, RST)
Aloittaa

Jos RST = 1 "ja CS = '0 'Sitten - Nollaa valvonta rekisteri" Tila "
Tila <= "11111111";
Elsif WR'Event Ja WR = '1 'Sitten - Kirjoita D Ports

Asia Sel Is
Kun "0000" => - Kirjoita D jos mahdollista, tai Buffa, jos ei
Buffa <= DIN;
Jos tila (3) = '0 'Sitten
Muodostuva <= Buffa;
Muuten
Muodostuva <= "ZZZZZZZZ";
End if;

Kun "0111" => - Kirjoita valvomiseksi Rekisteröidy
Jos Din (7) = '0 'Sitten
BitCon <= DIN;
Elsif Din (7) = '1 'Sitten
Tila <= DIN;
End if;
Kun Muut =>
Null;
End asia;

End if;

End process;

Process (SEL, tila)
Aloittaa

Jos RD = '0 'Sitten - Lue A-D

Asia Sel Is
Kun "0000" => - Lue A-D Jos mahdollista, tai Buffa, jos ei
Jos tila (3) = '1 'Sitten
Dout <=;
Muuten
Dout <= Buffa;
End if;
Kun Muut =>
Null;
End asia;

End if;

End process;

Varten;

 
Lue

http://edaboard.com/ftopic79985.html

Lähtötilanteeseen versio Max Plus II 10.23 voi käyttää bi-directional portti?
Onko minun Max Plus II joitakin ongelmia lisenssi?Tai muuta ongelmaa?

 
En ole asiantuntija, Max, mutta olen varma, että se ei ole lisenssiä asia.
itse, mikä on teidän ongelma bidir.vhd?

mennessä, husoo

PS.: e-mail osoite ei toimi ...

 

Welcome to EDABoard.com

Sponsor

Back
Top