引言
两年前,我写过一个简单的除法器,当时由于时间问题,只实现了一个简单的逻辑电路,但是实际中大多都是时序的,所以后面给出了修改意见,但是并没有进行进一步的测试,最近发现那个简单的除法器引起了很多讨论,本小节就做一个终结。
1,RTL编码
a,div_rill.v
/*
* module:div_rill
* file name:div_rill.v
* syn:yes
* author:rill
* date:2014-04-10
*/
module div_rill
(
input clk,
input rst,
input enable,
input [31:0] a,
input [31:0] b,
output reg [31:0] yshang,
output reg [31:0] yyushu,
output reg done
);
reg[31:0] tempa;
reg[31:0] tempb;
reg[63:0] temp_a;
reg[63:0] temp_b;
reg [5:0] status;
parameter s_idle = 6'b000000;
parameter s_init = 6'b000001;
parameter s_calc1 = 6'b000010;
parameter s_calc2 = 6'b000100;
parameter s_done = 6'b001000;
reg [31:0] i;
always @(posedge clk)
begin
if(rst)
begin
i <= 32'h0;
tempa <= 32'h1;
tempb <= 32'h1