Dobry den,<br><br>dakujem za trochu osvetlenia problematiky. Priznam sa, ze ked som to zacal hlbsie citat, tak som akosi intuitivne pochopil z textu, ze problem je v tom, ze raz ten bit set trva 10 cyklov a raz 15... A snazenie nasho experta je zistit, kedy je to 10 a kedy 15. To som fakt netusil, zeby na 160MHz toto mohlo niekoho zaujimat. A uplne absurdne je to v pripade bit-bandingovej I2C na pinoch portu, ktora bezi na 100kHz resp. 400kHz... To len hrana medzi log. urovnami je niekolko instrukcii procesora. <br>
<br>No nic ludia su rozny, a kazdy je uleteny nejako inac.<br><br><div class="gmail_quote">A.<br><br>Dōa 12. apríl 2013 1:02, Tomas Dresler <span dir="ltr">&lt;<a href="mailto:dresler@hw.cz" target="_blank">dresler@hw.cz</a>&gt;</span> napísal(-a):<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hezky receno :-) Hromadu tech detailu lze zjistit tak, ze se na veskerou<br>
dokumentaci ARMu a ST rozprostre ucici algoritmus, ktery da dokromady<br>
vsechny podminky a definice a neco vyplivne.<br>
<br>
Vec se ma tak, ze tak slozity stroj uz je nepopsatelny mimo vyrobni<br>
dokumentaci. Proto se pro analyzu pouziva simulace na urovni RTL pro FPGA,<br>
kde lze nasimulovat log. analyzator v libovolnem bode toho designu.<br>
<br>
Treba prave latence AHB/APB zalezi na tom, kdy o transfer dat pozadate.<br>
Pokud je delici pomer frekvenci 1/4, APB prebere data ve 4. pulzu hodin<br>
AHB, ale procesor je muze vystavit v 1., 2., 3. nebo 4. taktu, takze<br>
latence je 1-4 takty. Je to deterministicke, ale na urovni programu<br>
nevite, jak jste synchronizovani.<br>
<br>
Dtto zapis na nikoli defaultni pamet skrz AHB pridava jeden takt, takze<br>
pokud pouzivate RAM s DMA (asynchronni k jadru), pokud byla pouzita jadrem<br>
v predchozim taktu, je tam 0 WS, ale pokud byla &quot;prepnuta&quot; k DMA, trva<br>
prepnuti k jadru 1 WS. A takovych podminek je tam stovky.<br>
<br>
T.<br>
<div><div class="h5"><br>
&gt; Dobry vecer,<br>
&gt;<br>
&gt; nechcem sa do tohoto vlakna moc rypat, pretoze ak mam pravdu povedat, len<br>
&gt; velmi matne tusim o co ide v tomto vlakne. Ked som to dobre pochopil,<br>
&gt; problem je v rychlosti nastavovania nejakych bitov na porte pripojenom na<br>
&gt; jadre Cortexu.<br>
&gt;<br>
&gt; Osobne si myslim, ze tieto veci nie su z pohladu praktickeho designu<br>
&gt; relevantne, pretoze ak chcete pocitat cykly medzi bit set a bit reset, tak<br>
&gt; na 168MHz je asi vhodnejsie pouzit FPGA nez tu STM32F4. Druha vec je to,<br>
&gt; preco je to tak. Povedal by som ze to ma background v emc a aj<br>
&gt; potencionalnej identifikacii systemu. Aj ked si myslim, ze to jadro ma tak<br>
&gt; 30 rokov, predsa len pouzivaju sa uz dost vysoke pracovne frekvencie a<br>
&gt; riesit tuto problematiku nie je jednoducha vec ani v dnesnej dobe. Osobne<br>
&gt; si  myslim, ze sa tam pouziva viacero netrivialnych technik ovplyvnujucich<br>
&gt; filozofiu celkoveho navrhu toho procesora cez obvodove riesenia az po<br>
&gt; rozne<br>
&gt; vychytavky v layoute. Jednoducho povedane, dali vam 168MHz a dan za to je,<br>
&gt; ze nevidite do vsetkych detailov. Bud s tym dokazete zit, alebo ich<br>
&gt; nepouzivajte.<br>
&gt;<br>
&gt; A.<br>
&gt;<br>
&gt;<br>
&gt; Dōa 11. apríl 2013 12:56, milger &lt;<a href="mailto:milger@pobox.sk">milger@pobox.sk</a>&gt; napísal(-a):<br>
&gt;<br>
&gt;&gt; Zda sa, ze tipy mi nevysli...<br>
&gt;&gt; Kazdopadne rad sa dozviem odpoved ak niekto &quot;zamachruje&quot; rozumnym<br>
&gt;&gt; vysvetlenim.<br>
&gt;&gt;<br>
&gt;&gt; Milan<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On 11. 4. 2013 10:37, Jan Waclawek wrote:<br>
&gt;&gt;<br>
&gt;&gt;&gt; K odhaleniu tychto veci mal sluzit dnesny ranny prispevok. Ale este<br>
&gt;&gt;&gt; stale<br>
&gt;&gt;&gt; som z toho jelen.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Skusil som   while(1) {<br>
&gt;&gt;&gt;      __SEV();<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;      GPIOA-&gt;BSRRL = (1 SHL 2);<br>
&gt;&gt;&gt;      __SEV();<br>
&gt;&gt;&gt;      GPIOA-&gt;ODR = ~(1 SHL 2);<br>
&gt;&gt;&gt;      __SEV();<br>
&gt;&gt;&gt;      GPIOA-&gt;BSRRL = (1 SHL 2);<br>
&gt;&gt;&gt;      __SEV();<br>
&gt;&gt;&gt;      GPIOA-&gt;ODR = ~(1 SHL 2);<br>
&gt;&gt;&gt;      __SEV();<br>
&gt;&gt;&gt;      GPIOA-&gt;BSRRL = (1 SHL 2);<br>
&gt;&gt;&gt;      __SEV();<br>
&gt;&gt;&gt;      GPIOA-&gt;ODR = ~(1 SHL 2);<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;      __SEV();<br>
&gt;&gt;&gt;      __SEV();<br>
&gt;&gt;&gt;      __SEV();<br>
&gt;&gt;&gt;      __SEV();<br>
&gt;&gt;&gt;      __SEV();<br>
&gt;&gt;&gt;      __SEV();<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;      GPIOA-&gt;BSRRH = (1 SHL 2);<br>
&gt;&gt;&gt;      __SEV();<br>
&gt;&gt;&gt;      GPIOA-&gt;ODR = 1 SHL 2;<br>
&gt;&gt;&gt;      __SEV();<br>
&gt;&gt;&gt;      GPIOA-&gt;BSRRH = (1 SHL 2);<br>
&gt;&gt;&gt;      __SEV();<br>
&gt;&gt;&gt;      GPIOA-&gt;ODR = 1 SHL 2;<br>
&gt;&gt;&gt;      __SEV();<br>
&gt;&gt;&gt;      GPIOA-&gt;BSRRH = (1 SHL 2);<br>
&gt;&gt;&gt;      __SEV();<br>
&gt;&gt;&gt;      GPIOA-&gt;ODR = 1 SHL 2;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;      __NOP();<br>
&gt;&gt;&gt;      __NOP();<br>
&gt;&gt;&gt;      __NOP();<br>
&gt;&gt;&gt;      __NOP();<br>
&gt;&gt;&gt;      __NOP();<br>
&gt;&gt;&gt;      __NOP();<br>
&gt;&gt;&gt;    }<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
</div></div>&gt;&gt;&gt; <a href="http://www.efton.sk/STM32/r3.**png" target="_blank">http://www.efton.sk/STM32/r3.**png</a> &lt;<a href="http://www.efton.sk/STM32/r3.png" target="_blank">http://www.efton.sk/STM32/r3.png</a>&gt;<br>

<div class="im">&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; wek<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; ----- Original Message ---------------<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; To je hodne poucne, len ma napadlo ci by bol rovnaky vysledok aj pri<br>
&gt;&gt;&gt;&gt; impuze opacnej polarity, t.j. najskor &quot;0&quot; potom &quot;1&quot;?<br>
&gt;&gt;&gt;&gt; Take male percento na objasnenie tejto zahady by som tipol na rozne<br>
&gt;&gt;&gt;&gt; riesenu logiku pre SET a RESET. V tom zmysle ze oneskorenie je rozne.<br>
&gt;&gt;&gt;&gt; A dalsie male percento na vysvetlenie typu &quot;ak zmena sa tyka rovnakej<br>
&gt;&gt;&gt;&gt; logiky(bitov) ako naposledy, usetrime jeden takt na oneskoreni lebo<br>
&gt;&gt;&gt;&gt; nemusime nieco robit&quot;. To by sa asi dalo tak isto otestovat.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Milan<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; On 10. 4. 2013 15:21, Jan Waclawek wrote:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; SEV je vykonana okamzite, takze potrebujete-li nejak zobrazit<br>
&gt;&gt;&gt;&gt;&gt;&gt; casovou vzdalenost mezi dvema udalostmi, SEV reaguje rychleji (ale<br>
&gt;&gt;&gt;&gt;&gt;&gt; trva 1<br>
&gt;&gt;&gt;&gt;&gt;&gt; HCLK!) nez zapis na port.<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Tak som si to vyskusal.<br>
&gt;&gt;&gt;&gt;&gt;<br>
</div>&gt;&gt;&gt;&gt;&gt; <a href="http://www.efton.sk/STM32/r.**png" target="_blank">http://www.efton.sk/STM32/r.**png</a> &lt;<a href="http://www.efton.sk/STM32/r.png" target="_blank">http://www.efton.sk/STM32/r.png</a>&gt;<br>

<div class="im">&gt;&gt;&gt;&gt;&gt; <a href="http://www.efton.sk/STM32/r.c" target="_blank">http://www.efton.sk/STM32/r.c</a><br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Hore su tie dva SEV, v strede su tie dva zapisy na port (jeden do<br>
&gt;&gt;&gt;&gt;&gt; nastavovacieho registra, druhy do nulovacieho, t.j. BSRRL/BSRRH),<br>
&gt;&gt;&gt;&gt;&gt; dole<br>
&gt;&gt;&gt;&gt;&gt; su<br>
&gt;&gt;&gt;&gt;&gt; hodiny (HCLK).<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Ten posun zapisu na port voci tym SEV, a najma vzajomny posun tych<br>
&gt;&gt;&gt;&gt;&gt; dvoch<br>
&gt;&gt;&gt;&gt;&gt; zapisov na port - zapisy su od seba vzdialene minimalne 2 clocky<br>
&gt;&gt;&gt;&gt;&gt; vdaka<br>
&gt;&gt;&gt;&gt;&gt; tomu SEV vlozenemu medzi nimi, ale pulz je dlhy len 1 clock - to<br>
&gt;&gt;&gt;&gt;&gt; vsetko<br>
&gt;&gt;&gt;&gt;&gt; je<br>
&gt;&gt;&gt;&gt;&gt; poucne.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; wek<br>
&gt;&gt;&gt;&gt;&gt;<br>
</div>&gt;&gt;&gt;&gt;&gt;  ______________________________**_________________<br>
<div class="im">&gt;&gt;&gt; HW-list mailing list  -  sponsored by <a href="http://www.HW.cz" target="_blank">www.HW.cz</a><br>
&gt;&gt;&gt; <a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a><br>
</div>&gt;&gt;&gt; <a href="http://list.hw.cz/mailman/**listinfo/hw-list" target="_blank">http://list.hw.cz/mailman/**listinfo/hw-list</a>&lt;<a href="http://list.hw.cz/mailman/listinfo/hw-list" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a>&gt;<br>

&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; ______________________________**_________________<br>
<div class="im">&gt;&gt; HW-list mailing list  -  sponsored by <a href="http://www.HW.cz" target="_blank">www.HW.cz</a><br>
&gt;&gt; <a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a><br>
</div>&gt;&gt; <a href="http://list.hw.cz/mailman/**listinfo/hw-list" target="_blank">http://list.hw.cz/mailman/**listinfo/hw-list</a>&lt;<a href="http://list.hw.cz/mailman/listinfo/hw-list" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a>&gt;<br>

<div class="HOEnZb"><div class="h5">&gt;&gt;<br>
&gt; _______________________________________________<br>
&gt; HW-list mailing list  -  sponsored by <a href="http://www.HW.cz" target="_blank">www.HW.cz</a><br>
&gt; <a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a><br>
&gt; <a href="http://list.hw.cz/mailman/listinfo/hw-list" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
&gt;<br>
<br>
<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">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>