在不同時脈下工作的 CPU,例如在 pmode=0 的模式 fpp0(/2) fpp1(/8)
假設 fpp0 的 1T=1us、那麼 fpp1 的 1T=4us…
程式碼A:
fpp0:
delay unknown_cycles
set0 signal
goto fpp0
fpp1:
wait0 signal
set1 signal
goto fpp1
問題:fpp1 在 wait 的時候是每 4us 去檢查一次 signal 或者是每 1us 就會檢查一次(或更即時?) 並且往下跑 ? (這影響到 fpp1 頻率固定的問題)
實際測試結果==>
使用 ICE 單步追蹤的結果是 wiat 指令是按當時 CPU 的指令周期來算的,fppa1每 4us 才會檢查一次signal ~(真正的晶片應該也是?)
於是底下程式碼就有可能變成 fpp1 always waitting。(因為每次去檢查都不巧被設為1)
程式碼B:
fpp0Loop:
set0 signal;
set0 signal;
set1 signal;
goto fpp0Loop;
fpp1Loop:
wait0 signal;
// do something
goto fpp1Loop;
再回頭看原來的程式碼A…
程式碼A的 fpp1 有可能在檢查 signal 之前剛好 signal 被設為 0
也可能在檢查 signal 之後的 3us 之內 signal 才被設為 0,於是有了誤差。
相反的,若是快的 cpu 等慢的 cpu 也會有搶到拍子的情況發生。
結論==>
這應該是屬於 fppa 硬體上的特性,程式設計師自己要小心留意到的一個問題。
2007年7月26日 星期四
訂閱:
張貼留言 (Atom)
VirtualBox 空間減肥
sdelete64 -z c: VBoxManage modifymedium disk "/Users/fellow/VirtualBox VMs/Win10/Win10.vdi" --compact *.vdi 路徑可以在 VirtualBox 儲...
-
https://github.com/ljean/modbus-tk/ install pip… sudo apt-get install python-pip install... download modbus_tk-x.x.x.tar.gz tar zxvf...
-
ARis... ARis 是日本一間公司出品的產品,應用了 ARToolKit 技術。 展示影片在這… http://www.youtube.com/watch?v=yCCx7zANsGE YouTube上可以找到更多類似的影片。 這邊是我用 FLARToolK...
-
由於ASSEMBLA即將開始收費,因此要把所有的SVN進行大搬家,連帶的一些教學文件也跟著搬家了,看來還是GOOGLE的窩最舒適(重點是免費) FPPA實驗平台教學教材-使用C語言 FPPA實驗平台簡介 實驗(一) 8位元LED輸出單元 與 模組設計總論 實驗(二) 按鍵開關輸入...
沒有留言:
張貼留言