samanaikainen käyttö kasvaa ja laskeva reuna

A

arshad_mir

Guest
Hei,

Haluan tehdä joitakin toimintaa sekä nouseva ja laskeva reuna signaalin (eli tick_ip) ja tehdä jotain muuta toimintaa, kun ei ole nousussa tai laskeva reunajos (tick_ip-tapahtumaa ja tick_ip = '1 ') then
next_clockout <= '1 ';
muuten
next_clockout <= '0 ';

end if;

jos (tick_ip-tapahtumaa ja tick_ip = '0 ') then
next_clockout_new <= '1 ';
muuten
next_clockout_new <= '0 ';

end if;

Mutta kääntäjä ei pysty syntetisoimaan sitä.Voiko joku auttaa minua

 
Haluatko käyttää "tick_ip" kuten ur vuorokauden!
Mitä sitten ur yrittää tehdä on immpossible nykyisen synteesin työkaluja.
Sinun pitäisi yrittää tehdä joitakin Asynchronous Digital
suunnitelma, joka ei tue nykyisen synteesi työkaluja!
Hope you got my point

 
Aikaisemmassa kyselyssä, mitä halusin mainita:

jos (tick_ip'event) jälkeen
clock_out <= '1 ';
muuten
clock_out <= '0 ';
end if;

En pysty syntetisoimaan sitä.

 
arshad_mir kirjoitti:

Aikaisemmassa kyselyssä, mitä halusin mainita:jos (tick_ip'event) jälkeen

clock_out <= '1 ';

muuten

clock_out <= '0 ';

end if;En pysty syntetisoimaan sitä.
 
arshad_mir kirjoitti:

Aikaisemmassa kyselyssä, mitä halusin mainita:jos (tick_ip'event) jälkeen

clock_out <= '1 ';

muuten

clock_out <= '0 ';

end if;En pysty syntetisoimaan sitä.
 
Tämä on mahdollista, mutta sinun täytyy jakaa se 2 eri prosesseissa.Yksi prosessi on vastuussa toimintansa kasvaa reunat.Ja toinen - ja laskeva reuna.

 
Hi arshad_mir,

Muista, että mitä kirjoitat VHDL kuvataan loogiset tai läppä floppi.
Kun käytät my_signal'event väitettä, sysnthesiser aina kartta my_signal kelloa panos flilp floppi (tai käänteinen kellon laskeva reuna ...).
Mitä voit näyttää haluavan tehdä on havaita nouseva tai laskeva reuna on signaali.
Jos signaali on hidasta ja että sinulla on maailmanlaajuinen kellosignaalin teidän suunnittelu (for ex: signaali 1 kHz ja kello 10 MHz ...), voit tehdä tämän toteamiseksi:

Quote:prosessi (CLK, reset_n)

aloittaa

Jos reset_n = '0 'then

signal_d <= '0 ';

elsif clk'event ja CLK = '1 'then

signal_d <= merkki;

Jos signal_d / = signaali sitten - reunan havaitseminen

output <= '1 ';

muuten

output <= '0 ';

end if;

end if;

end process;

 
Haluan myös todeta, että ei ainoastaan coolrunnerII jolla on kaksi kelloa FF, Virtex-II, Spartan3 ja Virtex-4 on kaksi kelloa FF, joka on DDR Ff IOB.

 
Jos käytät VHDL, mielestäni tätä ei voida tehdä.
Käytän @ ltera aluksella mutta minun oppikirja ja hallitus vahvistaa tämän.

Ongelmana on, jota yrität käyttää samaa signaalia kahdesti.

Esimerkiksi:
prosessi (kello)
jos (clock'event ja Clock = '1 ') - nouseva reuna
sitten ...
end if;
end process;

prosessi (kello)
jos (clock'event ja kellon = '0 ') - laskeva reuna
sitten ...
end if;
end process;

Tämä koodi ei toimi, koska et voi käyttää vain kellon samassa prosessissa.joten compiller syntyy jokin virhe, yleensä se katso vain disreguard muut prosessi eikä tiivistetään toinen prosessi.

yrittää tehdä sen tällä tavalla epäonnistuu myös
Esimerkiksi:
prosessi (kello)
jos (clock'event ja Clock = '1 ') - nouseva reuna
sitten ...
elsif (clock'event ja kellon = '0 ') --
sitten ...
muuten
tehdä mitään;
end if;
end process;

Ongelmana on, voit käyttää clock'event kerran.taas ongelma on ensimmäinen tapahtuma on nouseva reuna, mutta kääntäjä valittaa toinen tapahtuma.

Ehkä on olemassa tapa kiertää tämä, mutta en ole löytänyt yhden vielä.Toivon, että eräät jäsenvaltiot voivat ja on löytänyt tavan, koska tämä voisi auttaa minua.

Tämäkään käytti tavu Blaster 2.Minulla oli hankkeen tehdä koulussa (rakentaa mini-suoritin) käyttävät VHDL ja minulla oli samoja ongelmia myös.

Omat panoksia auttaa ja edistää keskustelua.
uusimaa

 
WA kirjoitti:

Jos käytät VHDL, mielestäni tätä ei voida tehdä.

....

Ongelmana on, jota yrität käyttää samaa signaalia kahdesti.

 
ace-x kirjoittiQuote:

Nyt koskeva ongelma - Olen melko varma, että tämä johtuu siitä, että yrität antaa samaa signaalia eri prosesseissa.
Tämä voi aiheuttaa ongelmia, koska sama signaali on pakko useita kuljettajia.
 
Uudelleen, sinun on käytettävä erilaisia prosesseja, jos haluat käyttää kellon kahdesti.

statement on clock.

Toisissa sanoen samassa prosessissa sinulla on lupa käyttää vain, jos
lausunto kelloa.

is not analyzed/synthesized as logic construction by compiler - it is just recognized as prefix that the rest of process represents synchronous part.

Tämä johtuu siitä, VHDL rakentaminen kuten IF (clk'event ja CLK = '1 ')
ei ole analysoinut / synteettisesti kuin logiikan rakentaminen kääntäjä - se on juuri tunnustettu etuliite muu prosessi edustaa synkronista osa.Ja koska jokainen flip-flop FPGA / CPLD on yleensä vain yksi kellon tulo, joten emme voi toimia molemmissa reunoissa samaa FF (flip-flop), mutta emme voi toimia yksi FF myönteisiä reunassa toinen on negatiivinen ja sitten jotenkin liittyä tulos logiikan tasolla.Toivon, että korjauksia teidän esimerkkejä alla selvää tätä.

Tässä ovat esimerkkejä uudelleen kirjoitettu seurata kuvatut säännöt:

Koodi:pROCESS (CLK)

ALOITA

IF (clk'EVENT ja CLK = '1 ') THEN

IF (load = '1 ') THEN

Q <= p;

END IF;

END IF;

END PROCESS;

PROCESS (CLK)

ALOITA

IF (clk'EVENT ja CLK = '1 ') THEN

IF (count_ena = '1 ') THEN

p <= q 1;

END IF;

END IF;

PÄÄTTYY PROCESS
 
Voit käyttää "NCLK <= ei CLK," ja kaksi "prosessi (CLK)" ja "prosessi (NCLK)"

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Hymyillä" border="0" />
 
Paras ratkaisu tähän ongelmaan on kirjoittaa kolme erillistä prosessit - yksi riippuvaisia nouseva reuna, muista riippuvainen laskevasta reunasta ja kolmas riippumaton signaalin

 
Olen samaa mieltä crazyman, u on käyttää erilaisia prosesseja.

 
Hei kaikki,
Tämä voi toimia ... kokeile ... ja haluaisin tietää ...
Prosessi: 1
aloittaa
jos (tick_ip'event) jälkeen
signaali <= pre_Signal_state;
muuten
signaali <= current_signal_state;
end if;
Lopeta prosessi 1;

Prosessi: 2
aloittaa
jos (tick_ip'event ja tip_ip = '0 ') thenend ifVoit myös kokeilla tilakone ...jotka voivat myös toimia

 

Welcome to EDABoard.com

Sponsor

Back
Top