Re: Mala nedoumica
> Na disku za VLSI u zanimljivom tutorijalu za VHDL "Language training"
> chapter 6, section 4, page 4, pise(vezano za signale):" ... self
> assignments (like Sig<=Sig+1) make no sense and are forbidden." U nekim
> resenjima i primerima vrednost signala se (de)V(in)krementira na taj
> nacin.
> (debounce.vhd)
> ...
> signal counter: natural range 0 to cnt_max;
> ...
> when DEBOUNCE =>
> counter <= counter - 1;
> ...
>
> sve se prevodi bez greske.Interesuje me da li ovakvo menjanje signala
> utice kasnije na projekat, ili neko gresi, ili sam ja skroz promasio temu?
>
> Pozdrav,Bojan.
Treba napraviti razliku izmedju:
(1) process(clk,...)
begin
...
if (rising_edge(clk)) then
if ...
* counter <= counter - 1;
...
end if;
...
end if;
end process;
i:
(2) ...
* counter <= counter - 1; (van procesa)
...
U slucaju (1), linija * se izvrsava na rastucu ivicu takta (uz mozda jos
neki uslov), tako da ce u sintezi za ovako neki biti inferiran brojac.
U slucaju (2), linija * ce se izvrsavati dok se ne zaustavi greskom
prekoracenja zadatog opsega (cnt_max), a za slucaj da je counter definisan
kao std_logic_vector(x downto 0) simulator bi se na ovom mestu zaglavio
kao u beskonacnoj petlji.
Operator '<=' nije samo obican operator dodele vrednosti: operacija
definisana sa njegove desne strane izvrsava se na svaku promenu operanada
koji u tome ucestvuju ukoliko ne postoji ogranicenje da se to desava na
neki drugi dogadjaj (kao u (1)). Kako je kod (2) u liniji * isti operand i
sa leve strane, onda bi svaka njegova promena bila ujedno i promena
opearanada operacije sa desne strane i tu nastaje beskonacna petlja (ili
petlja sa izlazom na prekoracenje opsega).
Procesi se izmedju ostalog i koriste zato da bi se uvela kontrola nad
dodelama.
Ovo je, dakle, jos jedan razlog da se dizajn razbije na sitnije module.
Greske ovog i drugih tipova 'same' se prave ako je modul veliki, a
sofisticirana kontrola koja je uvedena procesima se malte ne gubi. Ovaj
deo koda lici mi na FSM, a za pisanje FSM postoje tacno odredjena pravila
kod kojih je iskljucena pojava gresaka dodele.
Nadam se da ovime nisam nekoga jos vise zbunila :)
Pozdrav
Marija
> chapter 6, section 4, page 4, pise(vezano za signale):" ... self
> assignments (like Sig<=Sig+1) make no sense and are forbidden." U nekim
> resenjima i primerima vrednost signala se (de)V(in)krementira na taj
> nacin.
> (debounce.vhd)
> ...
> signal counter: natural range 0 to cnt_max;
> ...
> when DEBOUNCE =>
> counter <= counter - 1;
> ...
>
> sve se prevodi bez greske.Interesuje me da li ovakvo menjanje signala
> utice kasnije na projekat, ili neko gresi, ili sam ja skroz promasio temu?
>
> Pozdrav,Bojan.
Treba napraviti razliku izmedju:
(1) process(clk,...)
begin
...
if (rising_edge(clk)) then
if ...
* counter <= counter - 1;
...
end if;
...
end if;
end process;
i:
(2) ...
* counter <= counter - 1; (van procesa)
...
U slucaju (1), linija * se izvrsava na rastucu ivicu takta (uz mozda jos
neki uslov), tako da ce u sintezi za ovako neki biti inferiran brojac.
U slucaju (2), linija * ce se izvrsavati dok se ne zaustavi greskom
prekoracenja zadatog opsega (cnt_max), a za slucaj da je counter definisan
kao std_logic_vector(x downto 0) simulator bi se na ovom mestu zaglavio
kao u beskonacnoj petlji.
Operator '<=' nije samo obican operator dodele vrednosti: operacija
definisana sa njegove desne strane izvrsava se na svaku promenu operanada
koji u tome ucestvuju ukoliko ne postoji ogranicenje da se to desava na
neki drugi dogadjaj (kao u (1)). Kako je kod (2) u liniji * isti operand i
sa leve strane, onda bi svaka njegova promena bila ujedno i promena
opearanada operacije sa desne strane i tu nastaje beskonacna petlja (ili
petlja sa izlazom na prekoracenje opsega).
Procesi se izmedju ostalog i koriste zato da bi se uvela kontrola nad
dodelama.
Ovo je, dakle, jos jedan razlog da se dizajn razbije na sitnije module.
Greske ovog i drugih tipova 'same' se prave ako je modul veliki, a
sofisticirana kontrola koja je uvedena procesima se malte ne gubi. Ovaj
deo koda lici mi na FSM, a za pisanje FSM postoje tacno odredjena pravila
kod kojih je iskljucena pojava gresaka dodele.
Nadam se da ovime nisam nekoga jos vise zbunila :)
Pozdrav
Marija
- References:
- Re: priprema za domaci
- From: Marko Mitić <mimarko@rti7020.etf.bg.ac.yu>
- Re: priprema za domaci
- From: don kihot <donkihot_bg@yahoo.com>
- Mala nedoumica
- From: cobi@3dnet.co.yu
- Re: priprema za domaci
Previous by date: Re: priprema za domaci
Next by date: Za Gvozdena
Previous by thread: Mala nedoumica Next by thread: Re: Mala nedoumica
Previous by thread: Mala nedoumica Next by thread: Re: Mala nedoumica