--><br> Ale ocekavat stejny vysledek syntezatoru pri ruznych zapisech ac napriklad funkce ekvivalentnich je pro me spis nemyslitelne.<br><br><br>O tomhle bych si dovolil s uspechem pochybovat :) Rozhodne to neplati pro matematicke funkce, ktere ackoliv jsou asociativni, vysledny kod je jiny. Alespon tohle nam lili do hlavy chlapci z doulos. Mozna bych jeste nekde pohledal papiry.<br>
<br>jinak souhlasim s tim 'when others'. tohle opravdu muze generovat jiny kod. dalsi moznosti je, ze pokud je typ integer unconstrained, vygeneruje se automaticky 32bitove cislo, ktere ma vetsinou za nasledek to, ze design 'jede' pomaleji.<br>
<br><br>Kdyz uz jsme tak u tech diskuzi: zajimalo by me, jesli ma nekdo zkusenosti s Altera Timing questem. Ja jsem doted pouzival pouze klasicky timing designer. Na novy projekt zkousim timequest a nestacim se divit. neni mi jasne, jak v SDC zadeklarovat asynchronni casove domeny a osetrit spravne to, ze veskere signaly jsou propasovane dvojitym flipflopem....<br>
<br>d.<br><br><br><br><br><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Doporucit reseni bez hlubsi znalosti problemu bude tezke ...<br>
<br>
Tosa<div><div></div><div class="h5"><br>
<br>
<br>
On 1.2.2011 19:00, Marek Sembol wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Prosim o pomoc s nasledujicim problemem. Doufam ze fragment meho kodu<br>
bude stacit:) Mam (v ramci jednoho procesu) konstrukci:<br>
case state_reg is<br>
when "0000" =><br>
if (trigfiltered_reg(0) = '1') then<br>
state_next<= regset(0)(nextStateRange'range);<br>
end if;<br>
when "0001" =><br>
if (trigfiltered_reg(1) = '1') then<br>
state_next<= regset(1)(nextStateRange'range);<br>
end if;<br>
-- a tak dale a tak dale az po<br>
when "1111" =><br>
if (trigfiltered_reg(15) = '1') then<br>
state_next<= regset(15)(nextStateRange'range);<br>
end if;<br>
when others => null;<br>
end case;<br>
<br>
Vysledek je funkcni, pise mi to max. hodiny 240MHz.<br>
Myslel jsem, ze konstrukce:<br>
if (trigfiltered_reg(CONV_INTEGER(state_reg)) = '1') then<br>
state_next<= regset(CONV_INTEGER(state_reg))(nextStateRange'range);<br>
end if;<br>
bude shodna. Problem je, ze to nageneruje zcela jinak a vysledkem je<br>
max. takt 212MHz<br>
<br>
A ted moje otazky:<br>
1) proc?<br>
2) jak to vyresit aniz bych musel rucne psat vsechny ty vetve? (duvod:<br>
chci tu cast obecneji a pocet vetvi (4/8/16/32) ridit pomoci genericu.<br>
Dik za kazdou radu,<br>
Marek<br>
_______________________________________________<br>
HW-list mailing list - sponsored by <a href="http://www.HW.cz" target="_blank">www.HW.cz</a><br>
<a href="mailto:Hw-list@list.hw.cz" target="_blank">Hw-list@list.hw.cz</a><br>
<a href="http://list.hw.cz/mailman/listinfo/hw-list" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
</blockquote>
_______________________________________________<br>
HW-list mailing list - sponsored by <a href="http://www.HW.cz" target="_blank">www.HW.cz</a><br>
<a href="mailto:Hw-list@list.hw.cz" target="_blank">Hw-list@list.hw.cz</a><br>
<a href="http://list.hw.cz/mailman/listinfo/hw-list" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
</div></div></blockquote></div><br>