2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Float計算回路のVerilog-HDL実装について -その4(除算回路)

Posted at

#Float計算回路のVerilog実装
~ FPGA に載せたい ~
オレオレ実装なので間違っていても知りません

加算回路編
Float計算回路のVerilog-HDL実装について -その1

デバッグツール作成編
Float計算回路の(ry-その1.1(float値の16進数表記)

補足とLeadingZeros編
Float計算回路のVerilog-HDL実装について -その1.5 (LeadingZeros)

減算回路編
Float計算回路のVerilog-HDL実装について -その2(減算編)

回路共通化とタイミング調整編
Float計算回路のVerilog-HDL実装について -その2.1(加算回路の共通化とタイミング調整)

共通化編
Float計算回路のVerilog-HDL実装について -その2.5(共通化)

0対応編
Float計算回路のVerilog-HDL実装について -その2.7(0対応)

乗算回路編
Float計算回路のVerilog-HDL実装について -その3(積算回路)

目的

floatの勉強
float32のハードウェア実装

だいたい前回と一緒
0 に対応しない乗算回路の実装を行う

今回のHW

div_timing.png

コード

module float_div(
	input wire clk,
	input wire [31:0] v1,
	input wire [31:0] v2,

	output wire [31:0] vres
);

	assign vres = res;

	// TIM1
	reg [7:0] v1e;
	reg [7:0] v2e;
	reg [23:0] v1v;
	reg [23:0] v2v;
	reg v1o;
	reg v2o;

	// TIM2
	reg [7:0] re;
	reg [47:0] rv;
	reg ro;

	// TIM3
	reg [31:0] res;

	always @(posedge clk) begin
	// TIM1
		v1e <= (v1[30:23] - 8'h7F);
		v2e <= (v2[30:23] - 8'h7F);
		v1v <= {1'b1, v1[22:0]};
		v2v <= {1'b1, v2[22:0]};
		v1o <= v1[31];
		v2o <= v2[31];

	// TIM2
		re <= v1e - v2e;
		rv <= {v1v, 24'b0} / v2v;
		ro <= v1o ^ v2o;

	// TIM3
		if (rv[24]) begin
			res <= {ro, re + 8'h7F, rv[23:1]};
		end else begin
			res <= {ro, re + 8'h7E, rv[22:0]};
		end
	end

endmodule

TIM2

div_tim2.png
v1v も v2v も最上位ビットが 1 であるため、
そのまま除算すると1桁しか答えが出ないので 0 で拡張する

逆に商は上位23ビットもしくは24ビットが 0 となる

シミュレーション結果と誤差

値1 値2 結果 正答
123.4 7.25 17.020689 17.0206896…
7.25 123.4 0.058752023 0.0587520259…
123.4 0.725 170.20688 170.206896…
0.725 0.00123 589.43085 589.430894…

ちょっとブレるけど誤差ということで・・・

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?