Villkor i vhdl - "elsif"
Postat: 2 juni 2007, 20:37:05
Jag undrar vad det blir av "elsif" egentligen.
När jag programmerar så försöker jag göra så att det bara är ett villkor i varje nivå:
Där ser man ju precis vad som kommer att hända.
Men vad blir det om man gör så här:
Vad händer om båda signalerna är 1 då? Tar den det första valet, eller kan det bli vad som helst? Om man har t.ex. 10 stycken så lägger den väl inte på en logiknivå för varje villkor. Eller blir det en tabell med (antalet signaler) x (antalet villkor)? Det vore kul att veta hur det fungerar. Är det olika för olika syntesprogram och simulerings-program?
Man använder ju ofta det andra sättet till nollställning och klocka:
När jag programmerar så försöker jag göra så att det bara är ett villkor i varje nivå:
Kod: Markera allt
when t_0 =>
if (signal_1 = '1') then
s_tillstaand <= t_1;
else
if (signal_2 = '1') then
s_tillstaand <= t_2;
else
s_tillstaand <= t_0;
end if;
end if;
Men vad blir det om man gör så här:
Kod: Markera allt
when t_0 =>
if (signal_1 = '1') then
s_tillstaand <= t_1;
elsif (signal_2 = '1') then
s_tillstaand <= t_2;
else
s_tillstaand <= t_0;
end if;
Man använder ju ofta det andra sättet till nollställning och klocka:
Kod: Markera allt
if (nollstaellning = '1') then
s_tillstaand <= t_0;
elsif (klocka'event and klocka = '1') then
(och så programmet här.)
end if;