2015年4月30日 星期四

整數定數除法的代換 (constant integer division)

不論是 CPU 或是硬體,裡面的除法都很慢
可以的話都要避免
而對於整數的常數除法,有一些方法可以用乘法代換掉
想法很簡單,既然是整數的話只要足夠近似就行了
例如在 gcc 裡面,以下這個東西編譯出來的組合語言相當於 (x*3435973837)>>35

echo "unsigned int f(unsigned int x){return x/10;}" | g++ -S -xc - -o -
接下來說明如何在 unsigned integer 達成這件事
主要參考了 libgmp 大數運算 library 的文件

2015年4月27日 星期一

Terasic DE5-NET Altera Stratix V FPGA PCIe 使用(一)

因為某些需求
花了一個禮拜研究怎麼使用 DE5 FPGA
希望可以使用到上面的 DRAM 跟 PCIe 界面
雖然說實驗的平台是 DE5
不過應該對於 DE4, DE2 150i 等等有 PCIe 的 FPGA 都或多或少適用
標題裡面有個(一),因為我應該不會想一次打完

2015年4月17日 星期五

Linux kernel module 嘗試 (1)

因為最近說不定有機會用到 kernel driver
所以藉此看了一下基本的使用
大致研究了一下,基本上這東西一般被認為不難寫
寫起來很無聊,只要照著硬體的 spec 去呼叫就會動
會寫的人就覺得很簡單,難的是如何呼叫到正確的函數

2015年2月25日 星期三

Altera USB Blaster Linux 問題排除紀錄

Mint 17.1 安裝好 Quatrus 13.1 或是 14.1 之後
依照官網說明設定 USB 權限之後
燒錄時遇到裝置顯示 USB blaster variant,然後不能燒錄
出現 JTAG error, return code 89 的訊息
奇怪了,以前在我電腦上是可以用的啊(工程師的常用藉口)