Re: VHDL - signaly v processu?

j.Krajinka@seznam.cz j.Krajinka@seznam.cz
Úterý Listopad 24 10:44:48 CET 2009


Aktualne nic, snazim se trochu naucit VHDL, ci presneji chci se naucit pracovat s CPLD/FPGA, coz jak jsem pochopil neni uplne to same. Poridil jsme si knihu Cislicove systyemy a jazyk VHDL + spoustu anglicky psane literatury. S cesky psanou knihou jsme si zrovna nepadli do oka a i kdyz anglicky nadavam celkem plynne, cteni mi nedela problem, tak pokud ctu neco co mi prilis nedochazi tak radeji v cestine. Bohuzel v tom az neskutecne plavu. Asi starnu, jsem natvrdly nebo nemam ty spravne informacni zdroje ci oboji.
Priklad, v knize uvedou 
...
clk <='0';
wait for 20ns;
clk <='1';
...
Ja na to cucim a rikam si, to je nejaka blbost, jak sakra ten obvod odmeri 20ns,kdyz nema hodiny, nasledne minu mnoho PeV enegrie pri googleni, abych nasledne zjistil, ze tento kond neni urcen pro syntezu,ale autor tuto informaci nepovazoval za dulezitou atd.

Nac se potam, pujcim si kod, ktery tu nedavno probehl. Pokud to spravne chapu, tak by to nemelo fungovat, protoze signalu clock_en
se hodnota priradi az na konci procesu a tudiz ji uvnitr nelze smysluplne negovat?
Pletu se nebo pokud tomu tak je tak jak se to resi spravne?

signal clock_en: std_logic;
signal clock: std_logic;
signal clock_out: std_logic;

process (clock, rst)
begin
    if (rst = '1') then
       clock_en <= '0';
    elsif falling_edge(clock) then	-- prepiname v neaktivni fazi hodin (kvuli zakmitum!)
       clock_en <= not(clock_en);	-- delic 2
    end if;
end;
-- clock enable
clock_out <= clock and clock_en;



 

>Asi by bylo lepsi uvest co chcete vytvorit, protoze takovouhle hruzu 
prepisovat ani snad nema cenu. Obecne plati to ze se signaly pripravuji 
o cykl hodin predem, pokud to nelze, tak se pouzivaji asynchronni 
vstupy. Nejvic pomaha a predevsim u takto jednoduchych veci si pro 
zacatek nakreslit schema jak bych to realizoval obvodove. Pokud zjistim, 
ze na to potrebuji nejaky specialni trik tak to nelze implementovat. 
Pokud pouzivate predchozi stav nejakeho signalu, tak to nelze bez toho 
abyste si ten stav nekde ulozil, do registru. Registr je potreba ridit 
hodinovym signalem. Mam takovy pocit, ze vam nekdo rekl ze z FPGA a VHDL 
se da vyzdimat uplne cokoliv, ale to neda.

Tosa



j.Krajinka@seznam.cz wrote:
> To je samozrejme mozne. 
> Jak tedy resit nasledujici, nejde o logiku, a zda to vubec nejakou ma, ted jsem si tu vycucal z prstu , jde o pouziti pomocne promenne, signalu ci neceho uvnitr procesu, tak abych si to pak mohl odsimulovat a pripadne v tom najit chybu.
> Pouzit signal nejde, protoze tomu se hodnota priradi az nakonci procesu, uvnitr procesu hodnotu nema a nelze ji pouzit v podmince ci logicne operaci. Promenou pouzit jde , ale zase ji nejde dat do simulatoru.
>
> signal c_en : std_logic; -- pomocny signal
>
> process (Clk, Zc)
> begin
> if (Zc = '1') then
> c_en := '0';
> then
> c_en := not(c_en);
> end if;
> c_out <= Clk and c_en;
> end process ;
>
> Jirka
>
>
>   
>> Promenna nejde zobrazit asi proto ze je to programatorska pomucka, ktera 
>>     
> se nesyntetizuje a simulace se provadi na navrhu, ktery prosel syntezou.
> Nejak si nemuzu vzpomenout jestli jsem nekdy chtel zobrazit v simulaci 
> promennou a jak to dopadlo, ale jak rikam nedivil bych se, kdyby to neslo.
>
> Tosa
>
>
> j.Krajinka@seznam.cz wrote:
>   
>> Jde nejak zabranit sekvencnimu prirazeni signalu v processu?
>> Repektive rekneme, ze uvnitr procesu potrebuji pomocny signal, ktery se uvnitr procesu muze podle podminek menit a nakonec se ma priradit. Pouzit klasicky signal nelze, protoze ten se sekvencne priradi az nakonci procesu, tudiz se priradi pouze posledni hodnota a nelze ji treba negovat. 
>> Asi by slo pouzit promenne a sekvencni prirazeni :=, ale promene se mi pro zmenu nedari priradit do okna simulaci s Isim.
>>
>> Jak se spravne postupuje?
>>


More information about the Hw-list mailing list