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

Marek Sembol hwm.land na gmail.com
Úterý Únor 1 19:47:38 CET 2011


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
>
>


Další informace o konferenci Hw-list