«« ( Date ) »» // «« ( Thread ) »» // vlsi-nastava - 2004

Re: Error???

by Marija Stojsavljevic
utorak, 27. januar 2004 - 09:17.


> @W:"C:\Fakultet\VLSI\Domaci\SerijskiPort\src\receiver.vhd":58:5:58:6|Reset/S
> et on register state is tied to a constant
> @W:"C:\Fakultet\VLSI\Domaci\SerijskiPort\src\receiver.vhd":58:5:58:6|Reset/S
> et on register state is tied to a constant

> buff:process(rst,rx_clk,rx_clk_x16) is
> begin
> if (rst='1') then
> obf<='0';
> else
> obf<='0'; <<<<<<<<<
> if (state=STOP and rising_edge(rx_clk_x16)) then
> obf<='1';
> end if;
> if (rx_en='1' and rising_edge(rx_clk)) then
> obf<='0';
> end if;
> end if;
> end process buff;

Ove warning-e imas zato sto i za slucaj resetovanja i u svim ostalim
slucajevima dodeljujes istu vrednost signalu obf. Drugo, signali state i
rx_en trebalo bi da budu u sensitivity listi procesa. Trece, ne znam kako
ti sintetizator nije pravio probleme za ovo reagovanje na ivicu dva
razlicita signala. Nemam iskustva sa Simplify, ali imam sa nekim drugim
alatima i provereno svaki od njih javlja gresku i nece da izvrsi sintezu
ako se nesto ovakvo napise.
Mislim da bi u simulaciji trebalo da bude isto i ako bi izbacio liniju
obelezenu strelicama. Za signal svakako efekat ima samo poslednja dodela
vrednosti u procesu. Problem onda ostaje: sta ako nije ispunjen ni jedan
uslov iz if-ova?
Moj predlog je (ako nesto od ova dva uslova moze da bude veceg prioriteta
ili se sigurno desava ranije):

else --od rst
if (uslov2) then
obf <= '0';
else
if (uslov1) then
obf <= '1';
else
obf <= '0';
end if;
end if;
end if;

Ovaj kod bi trebalo da ima istu funkciju kao onaj gore.

Pozdrav,
Marija