VHDL - ruzne vysledky pro (predpokladane) stejnou konstrukci (Xilinx)...

David Belohrad david na belohrad.ch
Úterý Únor 1 20:22:54 CET 2011


priklad by mohl byt napr zde

http://svnweb.cern.ch/world/wsvn/fbctdab/branches/05_new_blr_dualclocks/stratix_fbct/sources/newstyle/vme_interface/command_register/command_decoder/command_decoder.vhd

2011/2/1 Marek Sembol <hwm.land na gmail.com>

> 2011/2/1 David Belohrad <david na belohrad.ch>:
> > co je CONV_INTEGER(state_reg)? je to to same jako
> > to_integer(unsigned(state_reg)) ?
> Ano.
>
> >
> > potrebujete aby to jelo na 240MHz?
> Nepotrebuji. Bude mi stacit i 200MHz (teda pokud to budu opravdu
> realizovat) Proste mne to zarazi...A navic - navrh jeste neni
> kompletni...
>
> >
> > ja takove veci resim obvykle jako deklaraci konstantniho recordu a
> pouzivam
> > ten record jako informaci jak vygenerovat VHDL kod pomoci genericu. Staci
> to
> > pole a pocet polozek v poli a je to.
> Hmm, mohu poprosit toto trochu rozvest? Nejlepe pomoci prikladu. A uz
> uzplne nejlepe prikladovym resenim meho problemu:) - ale to uz bych
> mozna chtel moc:)
>
> >
> > mimochodem - dival jste se na RTL co Vam vygeneruje za schema v obou
> > pripadech?
> Jiste, dival. Ale proc to generuje jinak stejne nechapu:) Mohu
> pripadne Vystavit jako obrazek (predpokladam).
>
> Kazdopadne zatim diky,
> Marek
>
> >
> >
> >
> >
> > 2011/2/1 Marek Sembol <hwm.land na gmail.com>
> >>
> >> Prosim o pomoc s nasledujicim problemem. Doufam ze fragment meho kodu
> >> bude stacit:) Mam (v ramci jednoho procesu) konstrukci:
> >>                case state_reg is
> >>                when "0000" =>
> >>                        if (trigfiltered_reg(0) = '1') then
> >>                                state_next <=
> >> regset(0)(nextStateRange'range);
> >>                        end if;
> >>                when "0001" =>
> >>                        if (trigfiltered_reg(1) = '1') then
> >>                                state_next <=
> >> regset(1)(nextStateRange'range);
> >>                        end if;
> >> -- a tak dale a tak dale az po
> >>                when "1111" =>
> >>                        if (trigfiltered_reg(15) = '1') then
> >>                                state_next <=
> >> regset(15)(nextStateRange'range);
> >>                        end if;
> >>                when others => null;
> >>                end case;
> >>
> >> Vysledek je funkcni, pise mi to max. hodiny 240MHz.
> >> Myslel jsem, ze konstrukce:
> >>                        if (trigfiltered_reg(CONV_INTEGER(state_reg)) =
> >> '1') then
> >>                                state_next <=
> >> regset(CONV_INTEGER(state_reg))(nextStateRange'range);
> >>                        end if;
> >> bude shodna. Problem je, ze to nageneruje zcela jinak a vysledkem je
> >> max. takt 212MHz
> >>
> >> A ted moje otazky:
> >> 1) proc?
> >> 2) jak to vyresit aniz bych musel rucne psat vsechny ty vetve? (duvod:
> >> chci tu cast obecneji a pocet vetvi (4/8/16/32) ridit pomoci genericu.
> >> Dik za kazdou radu,
> >> Marek
> >> _______________________________________________
> >> HW-list mailing list  -  sponsored by www.HW.cz
> >> Hw-list na list.hw.cz
> >> http://list.hw.cz/mailman/listinfo/hw-list
> >
> >
> > _______________________________________________
> > HW-list mailing list  -  sponsored by www.HW.cz
> > Hw-list na list.hw.cz
> > http://list.hw.cz/mailman/listinfo/hw-list
> >
> >
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20110201/0610165c/attachment.htm>


Další informace o konferenci Hw-list