ルート(平方根)を計算する回路です。VHDLで記述しています。
Lattice FPGA(ECP2M)で確認していますが、ALTERA, Xilinx でも動作するはずです。
計算中は次のデータ入力を受け付けない仕様で作ったため、
FPGAに組み込むソフトCPUで計算させればよさそうな物になってしまいました。
ソースコードはご自由にお使いください。
入力信号 | |
RST | 非同期リセット H=リセット |
CLK | クロック |
DTIN[63..0] | y=√x の x 64bitの整数 |
DTEN | DTIN の有効フラグ (計算開始フラグ) DTIN と同時に 1CLK H を入力 |
出力信号 | |
BUSY | 計算中 HBUSY=H の期間中は、DTIN, DTEN 信号は無視されます |
DTOUT[63..0] | y=√x の y 整数32bit, 小数32bit 計64bit の固定小数点出力 |
DTOUT_VLD | 出力マーカーDTOUT 出力時、1CLK H を出力 |
遅延量 | |
DTOUT 出力は、DTIN, DTEN 入力から 196 クロック後(固定) |
入出力のシミュレーション画面
DTIN=1(0000_0000_0000_0001h)の出力は、DTOUT の整数=0000_0001h, 少数=0000_0000h、
従って DTOUT=1.0 です。
DTIN=2(0000_0000_0000_0002h)の出力は、DTOUT の整数=0000_0001h, 少数=6A09_E667h,
6A09_E667h=1779033703(decimal),1779033703/(2の32乗)=0.41421356、
整数部と小数部を足すと DTOUT=1.41421356 です。