poglej moje VHDL, zakaj to ne deluje po sintezi

P

paradbird

Guest
Želim narediti asynchronism pisati, vendar ta program ne more delovati po sintezi, ne vem zakaj.
Prosim, daj mi nekaj svetuje.
Hvala veliko.

library IEEE;
uporaba ieee.std_logic_1164.all;
uporaba ieee.std_logic_unsigned.all;

Podjetje je ioInput
pristanišča (
D_out1: od std_logic_vector (255 downto 0);
D_out2: od std_logic_vector (127 downto 0);
cs: v std_logic;
wr: v std_logic;
naslov: v std_logic_vector (3 downto 0);
D_in: v std_logic_vector (31 downto 0)
);
end ioInput;

arhitektura arch_ioInput of ioInput je

podtip SLV32 je std_logic_vector (31 downto 0);
Tip je tmp_Data_in_type array (11 downto 0) of SLV32;
signal tmp_Data_in: tmp_Data_in_type;

začeti

proces (cs, naslov, WR, D_in)
začeti
če cs = '0 'in wr = '0' then
primeru je naslov
ko "0000" => tmp_Data_in (0) <= D_in;
ko "0001" => tmp_Data_in (1) <= D_in;
ko "0010" => tmp_Data_in (2) <= D_in;
ko "0011" => tmp_Data_in (3) <= D_in;

ko "0100" => tmp_Data_in (4) <= D_in;
ko "0101" => tmp_Data_in (5) <= D_in;
ko "0110" => tmp_Data_in (6) <= D_in;
ko "0111" => tmp_Data_in (7) <= D_in;
ko "1000" => tmp_Data_in (

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Hladen" border="0" />

<= D_in;
ko "1001" => tmp_Data_in (9) <= D_in;
ko "1010" => tmp_Data_in (10) <= D_in;
ko "1011" => tmp_Data_in (11) <= D_in;

ko drugi => null;

konec postopka;
end if;
koncu postopka;
D_out2 <= tmp_Data_in (3) & tmp_Data_in (2) & tmp_Data_in (1) & tmp_Data_in (0);
D_out1 <= tmp_Data_in (11) & tmp_Data_in (10) & tmp_Data_in (9) & tmp_Data_in (

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Hladen" border="0" />

&
tmp_Data_in (7) & tmp_Data_in (6) & tmp_Data_in (5) in tmp_Data_in (4);

end arch_ioInput;

 
code razumen pogled, morda je to vaš sintezo orodje.Vem, synplicity ima težave z "&" včasih.

 
Kot lahko vidim, skupno število vhodnih in bucike proizvodnja je zelo velika.Torej, če se ta modul uporabi kot najvišji ravni od modela, pls preverite max voljo io igle za napravo selected.If max število io je manjše od števila ste se tukaj ne bo delovala pravilno.

BTW, če je ura signal v vašem design, pls spremeniti ta modul za synchronus projektiranje, sicer bo imel dolgo zamudo sledi logiki!Zavedajte se, da je VHDL jezik HARDWARE

 
zakaj bi jo želite dodati uro videza?(old sinhrono design dogma!) je izrecno pravi, to je asynch design ... on je dekodiranje / muxing, ki je lep način, je to.

 
Živjo,

Ali ste dobili nobenih opozoril, napake po sinteza?
Kaj sinteza orodje uporabljate?
Katere naprave / tehnologija ste ciljno usmerjenost?

O uro, mislim, da ne more zagotoviti, da bodo vaši rezultati, ki se estable, vse od njih, ob istem času, čeprav vidim, da ste se spremeni le 32 bitov na pisanje.In, seveda, odvisno od prodajnih naprave, ki jih je za vzorčenje, in je odvisna tudi od tega, kako hitro ste toggle svoje vložke.
Z uro, je lažje izvajati čas analisys in ovira vaš design, ampak, če ne želite uporabiti uro boste imeli svoje razloge.

Kot je dejal arena_yang, če se ta modul uporabi na najvišji ravni, morate napravo s številom sponk uporabnika IO> 422.

S spoštovanjem,
-Maestor

 
Ali dejanski prispevek "D_in" v načrtujete zadovoljiti z nastavitvami časa? Na splošno bodo podatki zapah v register na naraščajoče robu wr.

 
preverite vaše sintezo omejitev prvi scenarij.ker če naredite narobe pritiske sintetizator proizvaja napačne rezultate.

Vedno se spomnite, da je oblikovalec, ne sintetizator, ki je responsable o pravilnosti modela.

 
preverite vaše sintezo omejitev prvi scenarij.ker če naredite narobe pritiske sintetizator proizvaja napačne rezultate.

Vedno se spomnite, da je oblikovalec, ne sintetizator, ki je responsable o pravilnosti design.great

 
Gradnja VHDL zdi, da je pravilna.če misliš, da modela dos ne dela v realnem svetu, lahko previdni, da se preveri kontrolni signal, ki s svojim design (CS, WR, naslov, podatki) je treba čist signali, kot vam je design compinational vsaka sprememba (nois) v vsakem signal bo spremenilo rezultata.preveri vreme napaka zaradi oblikovanja ali zaradi signala, ki doda vnos (ročna ura), da je delovanje modela narediti s tem vnos sprememb in preverite pričakovanih rezultatov z vsakim wirk rob, če je to res, potem napaka zaradi za signal, ki drugače du z načrtom napake

 
Drug način za pisanje je, da narašča z roba signala WR.Takole ...

proces (wr)
začeti

če wr'event in wr = '1 'then
če cs = '0 'then
primeru je naslov
...............

Ta slog je primeren za arhitekturo FPGA.

 
živjo,

Strinjam se z elektrom.Morate dodati uro signal, če želite zapomniti nekaj podatkov v registrih.Sintetizator bo naredil s signalom = "1" in signal'event kodo.Če ne, sintetizator ne bo nikoli zapah vaših podatkov ...bo samo še logiko.<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Nasmeh" border="0" />
 
Mislim, da je preveč Ambigous Code Tring za Mux 32 bit, da tako veliko ključavnice.Mabee si potrebe po izvajanju It On Large FPGA (VIRTEX2)
Ali pa na drugačen način!

 

Welcome to EDABoard.com

Sponsor

Back
Top