VHDL ciag dalszy

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

Reply to
Piotr Wyderski
Loading thread data ...

Piotr Wyderski snipped-for-privacy@ii.uni.wroc.pl> napisal nam:

witam i mam pytanko, nie pomoge niestety ;)

Znalazles gdzies w VHDL jak wysterowac popularny LCD 2x16 (Albo podobny)? Do spartana 2 to podlacze ale nie wiem za co sie zabrac :)

dzieki

Reply to
invalid unparseable

Niestety nie, wcale nie uzywam wyswietlaczy alfanumerycznych (bo wygladaja obrzydliwie :-)).

Wsadz w FPGA najmniejszego Niosa (czy jak sie to na Xilinxie nazywa, Microblaze???) i oprogramuj sobie ten wyswietlacz jak na zwyklym mikrokontrolerze. :-)

Pozdrawiam Piotr Wyderski

Reply to
Piotr Wyderski

moze tak? x := y(N) & y(N) & y & (others=>'0')

pozdrawiam Krzychu

Reply to
Krzysiek Kubicki

"Error: VHDL aggregate error at rf_frontend.vhd(216): OTHERS choice used in aggregate for unconstrained record or array type is not supported"

Co mnie zupelnie nie dziwi, bo VHDL ma bardzo slabiutkie automatyczne wnioskowanie o typach.

Pozdrawiam Piotr Wyderski

Reply to
Piotr Wyderski

to powinno zadziałać : x <= (y(N), y(N), y, others=>'0');

Reply to
Krzysiek Kubicki

w miejscu pipe(k-1) bedziesz mial -1, moze to przeszkadza? Akurat nie mam dostepu do kompilatora zeby sprawdzic.

Znaczy w srodku for deklarujesz signal c ? Nie bardzo rozumiem w/w problem.

x:=cos tam 'others=>'0'

others uzupelni Ci zerami do konca wektora.

Aha - ja teraz pisze z pamieci, znaczy nie mam jeszcze dostepu do VHDLa.

Reply to
jerry1111

Nie, tablica jest zadeklarowana wlasnie jako array(-1 to depth-1) of... Ale, jak napisalem, z loop dziala, a z generate nie -- nawet wyswietla blad skladniowy "expecting 'loop'" (czy cos takiego, ale sens jest zachowany).

A ja z kolei do zrodel, by wkleic odpowiedni fragment. :-)

Wykonanie pewnych operacji w srodku petli zalezy od bitu znaku zmiennej z (scislej: jej odpowiedniej kopii na danym poziomie pipeline). Poniewaz od tego warunku jest uzaleznionych kilka operacji, to nie chce za kazdym razem wpisywac pipe(k-1).z(cordic_phase_width-1), czy jak to tam wyglada, lecz chcialbym do tego bitu dokleic wire i poslugiwac sie skrocona nazwa tego drutu. A do czego ten drut prowadzi, to juz niech sie kompilator martwi -- mnie sie nie chce N razy wpisywac tego samego skompliowanego wyrazenia.

Nie wiem, czy nawiasy sa istotne, ale z (others => '0') nie dziala. W czwartek sprawdze bez nawiasow.

Pozdrawiam Piotr Wyderski

Reply to
Piotr Wyderski

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.