sočasna uporaba narašča in sodi roba

A

arshad_mir

Guest
Živjo,

Rad bi naredil nekaj dejavnost na obeh rising and falling robu signala (pravijo tick_ip) in še nekaj drugih dejavnosti, kadar ni naraščajoč ali padajoč robif (tick_ip "dogodek in tick_ip = '1 ') then
next_clockout <= '1 ';
še
next_clockout <= '0 ';

end if;

if (tick_ip "dogodek in tick_ip = '0 ') then
next_clockout_new <= '1 ';
še
next_clockout_new <= '0 ';

end if;

Toda prevajalnik ne more sintetizirati to.Ali lahko vsakdo pomoč mi jasno

 
Ali ga želite uporabiti "tick_ip" kot ur ura!
Kaj pa potem ur poskuša storiti, je immpossible s sodobnimi orodji sintezo.
Moral bi začeti početje nekaj asinhronih digitalnih
model, ki ne podpira trenutna orodja sintezo!
Upam, da imaš moj point

 
V moji prejšnji izraz, kar sem hotel omeniti, je:

if (tick_ip'event) in nato
clock_out <= '1 ';
še
clock_out <= '0 ';
end if;

Nisem mogla sintetizirati to.

 
arshad_mir wrote:

V moji prejšnji izraz, kar sem hotel omeniti, je:if (tick_ip'event) in nato

clock_out <= '1 ';

še

clock_out <= '0 ';

end if;Nisem mogla sintetizirati to.
 
arshad_mir wrote:

V moji prejšnji izraz, kar sem hotel omeniti, je:if (tick_ip'event) in nato

clock_out <= '1 ';

še

clock_out <= '0 ';

end if;Nisem mogla sintetizirati to.
 
To je možno, ampak moraš ga razdelite na 2 različnih procesov.En proces bo odgovorna za operacije na robovih narašča.In drugič - za pod rob.

 
Hi arshad_mir,

Ne pozabite, da kaj pišete v VHDL opisuje logični elementi ali flip flop.
Ko uporabljate my_signal'event argument, bo vedno sysnthesiser zemljevid my_signal na uro vnosa flilp flop (ali navzdol za ure, ki spadajo rob ...).
Kaj vam zdi, da želiš, da se odkrije narašča ali spada robu signala.
Če je vaš signal je počasen in da ste svetovni signal ure v vašem design (npr.: signal pri 1 kHz in ura na 10 MHz ...), ki jih lahko storite to za odkrivanje:

Citat:proces (CLK, reset_n)

začeti

če reset_n = '0 'then

signal_d <= '0 ';

elsif clk'event in CLK = '1 'then

signal_d <= signal;

če signal_d / = signal potem - rob odkrivanje

izhod <= '1 ';

še

izhod <= '0 ';

end if;

end if;

koncu postopka;

 
Želim tudi poudariti, da ne samo coolrunnerII, ki imajo dvojno FF uro, Virtex-II, Spartan3 in Virtex-4 imajo dvojno FF uro, ki je na FF DDR IOB.

 
Če uporabljate VHDL, mislim, da tega ni mogoče storiti.
Jaz sem z uporabo @ odbor ltera, ampak, moja besedila knjig in odbor potrjuje to preveč.

Problem je, poskušate uporabiti isti signal dvakrat.

Primer:
proces (ura)
če (clock'event in ure = '1 ') - naraščajoči rob
potem ...
end if;
koncu postopka;

proces (ura)
če (clock'event in ure = '0 '), - z oznako roba
potem ...
end if;
koncu postopka;

ta koda ne bo delovala, ker lahko uporabljate samo eno uro v procesu.tako da bo vaš compiller ustvarila nekaj napak, običajno bo pogled na eno samo in disreguard drug postopek, in ne sintetizira drugi proces.

poskušam narediti, da na ta način ne bo uspelo tudi
Primer:
proces (ura)
če (clock'event in ure = '1 ') - naraščajoči rob
potem ...
elsif (clock'event in ure = '0 ') --
potem ...
še
storiti ničesar;
end if;
koncu postopka;

Problem je lahko uporabite clock'event enkrat.spet problem, je prvi dogodek je rob narašča, vendar bo prevajalnik pritožujejo zaradi drugega dogodka.

Morda obstaja način, okoli tega, vendar nisem našel še eno.Upam, da nekatere države lahko in je našel način, saj bi to prispevalo tudi mene.

Tudi to je bil z uporabo bajt Blaster 2.Moral sem narediti projekt v šoli (build mini cpu), z uporabo VHDL in sem imel enake težave tudi.

Moj vložki za pomoč in za nadaljnjo razpravo.
wa

 
WA wrote:

Če uporabljate VHDL, mislim, da tega ni mogoče storiti.

....

Problem je, poskušate uporabiti isti signal dvakrat.

 
ace-x wroteCitat:

Zdaj, v zvezi z vašo težavo - Sem prepričan, je to zato, ker poskušate dodeliti isti signal v različnih procesih.
To bi lahko privedlo do težav, ker je enak signal prisilne več voznikov.
 
Again, morate uporabiti različne postopke, če želite uporabljati dvakrat na uro.

statement on clock.

V drugih besedah, v enem postopku se lahko uporabi le enega, če je
izjavo na uro.

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

To pa zato, ker VHDL gradnje, kot so IF (clk'event in CLK = '1 ')
ni analiziral / sintetizirani, kakor je logika gradnje, ki ga prevajalnik - to je samo priznan kot predpona, da preostali del procesa predstavlja sinhrono.In ker vsaka flip-flop v FPGA / CPLD Običajno ima samo eno uro vnos, zato ne moremo bi bili ukrepi na obeh robovih z isto FF (flip-flop), vendar smo lahko, da je ukrepanje z eno FF na pozitivne robu, z Drugi o negativnih in potem nekako združiti poslovni izid iz logike ravni.Upam, da bodo popravki vaše primere spodaj počistite to.

Tu so vaši primeri ponovno pisno upoštevati opisana pravila:

Code:pROCES (CLK)

BEGIN

IF (clk'EVENT in CLK = '1 '), nato

IF (obremenitev = '1 '), nato

q <= p;

END IF;

END IF;

END PROCESS;

PROCES (CLK)

BEGIN

IF (clk'EVENT in CLK = '1 '), nato

IF (count_ena = '1 '), nato

p <q = 1;

END IF;

END IF;

END PROCESS
 
Lahko uporabite "NCLK <= NE CLK," in dva "proces (CLK)" in "proces (NCLK)"

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Nasmeh" border="0" />
 
Najboljša rešitev tega problema je, da napišete treh ločenih procesov - ena odvisna od rasti robu, druga odvisna od roba iz tretjega in neodvisno od tega signala

 
jaz sem se strinjajo s crazyman, u imajo za uporabo različnih postopkov.

 
hej vsem,
to lahko dela ... začeti to ... in pustiti mi znanje ...
Process: 1
začeti
if (tick_ip'event) in nato
signal <= pre_Signal_state;
še
signal <= current_signal_state;
end if;
konec postopka 1;

Process: 2
začeti
če (tick_ip'event in tip_ip = '0 ') thenend ifvi moči tudi začeti z uporabo državnih stroj ...da se lahko tudi delo

 

Welcome to EDABoard.com

Sponsor

Back
Top