乗算ルーチン

拡大+縮小+回転をサポートするとなると乗算回路が必須な気がしてきた。どう計算すればいいんだ、ということでぱっと思いつきで、各bit を shift して足していけばいいじゃんとソースを書いてみる。

begin
	m = 2260
	v = 0
	#460 のうちに1になってるbit
	[8, 7, 6, 3, 2].each{|t| 
		v += m << t
	}
	p v
	p 2260 * 460
end
  • 計算はあってたが、wikipedia に同じことが符号なしについて書いてあった。
  • 符号ありの説明は難しそうで理解する気をなくした。
  • 素直に verilog で * 演算子を使って実装しろってことか?