Witam,
dlaczego w Quartusie nie chce sie skompilowac wyrazenie
for k in depth-1 downto 0 GENERATE
cas('1', pipe(k).x, pipe(k-1).x, shift_right(pipe(k-1).y, k)); cas('0', pipe(k).y, pipe(k-1).y, shift_right(pipe(k-1).x, k)); end generate;
a po zamianie generate na loop wszytsko jest OK? Co robie zle?
Druga sprawa: chcialbym, by wewnatrz powyzszego for-a zostalo wyliczone pewne wyrazenie booleowskie typu std_logic, a nastepnie uzyc jego wartosci w kilku miejscach, m.in. jako pierwszego parametru funkcji cas, ktory obecnie jest ustawiony na sztywno. Niestety napisanie
(*) variable/signal c : std_logic := wartosc_wyrazenia;
if c then ...
powoduje przerwanie kompilacji i zgloszenie bledu w linii (*). W takim razie w jaki sposob to zrobic?
Trzecie pytanie: mam wektory x i y typu signed, przy czym x jest M downto 0, a y N downto 0 i M > N. Chcialbym, by dwom najstarszym bitom x zostal przypisany bit znaku y, kolejnym N bitom y, a pozostalym bitom 0. Jak to zapisac? Dla ustalonych wartosci M=N+4 dziala
x := y(N) & y(N) & y & "00"
ale chcialbym, by liczba ostatnich zer sie automatycznie dostosowywala do roznicy w dlugosciach wektorow, bo wersja ostateczna tego modulu bedzie generyczna.
Pozdrawiam Piotr Wyderski