集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1799|回复: 3

除法器

[复制链接]
njithjw 发表于 2011-7-16 22:32:39 | 显示全部楼层 |阅读模式
`timescale 1ns/1ns
module divider
    (
    input               clk,
    input               rst,
    input       [7:0]   dividend,
    input       [7:0]   divisor,
    input               load,

    output  reg [7:0]   ratio,
    output  reg [7:0]   remainder,
    output  reg         finish
    );

reg     [3:0]   cnt;
reg     [16:0]  dividend_widen;
reg     [7:0]   ratio_shift;
wire    [8:0]   sub;
wire    [16:0]  dividend_shift;
always @ (posedge clk or posedge rst)
begin
    if (rst == 1'b1)
        cnt <= 4'd15;
    else if (load == 1'b1)
        cnt <= 4'd0;
    else
        cnt <= cnt + {3'd0,~(&cnt)};
end

always @ (posedge clk or posedge rst)
begin
    if (rst == 1'b1)
        dividend_widen <= 17'd0;
    else if (load == 1'b1)
        dividend_widen <= {9'd0,dividend};
    else
        dividend_widen <= dividend_shift;
end

assign sub = dividend_widen[16:8] - divisor;
assign dividend_shift = (sub[8] == 1'b0)? {sub[7:0],dividend_widen[7:0],1'b0}: {dividend_widen[15:0],1'b0};

always @ (posedge clk or posedge rst)
begin
    if (rst == 1'b1)
        ratio_shift <= 8'd0;
    else
        ratio_shift <= {ratio_shift[6:0],~sub[8]};
end

always @ (posedge clk or posedge rst)
begin
    if (rst == 1'b1)
        ratio <= 8'd0;
    else if (cnt == 4'd9)
        ratio <= ratio_shift;
    else ;
end

always @ (posedge clk or posedge rst)
begin
    if (rst == 1'b1)
        remainder <= 8'd0;
    else if (cnt == 4'd9)
        remainder <= dividend_widen[16:9];
    else ;
end

always @ (posedge clk or posedge rst)
begin
    if (rst == 1'b1)
        finish <= 1'b0;
    else if (cnt == 4'd9)
        finish <= 1'b1;
    else
        finish <= 1'b0;
end

endmodule
蓝余 发表于 2011-7-17 14:58:46 | 显示全部楼层
好贴,顶一个!~
liujilei311 发表于 2011-7-17 21:29:26 | 显示全部楼层
的确是好帖,顶一个!!!!
derksyq 发表于 2011-12-6 23:27:20 | 显示全部楼层
写的些什么呀 代码真难看 除数为0 都没写一个error报错 直接用移位相减不是更简单 这有超前借位提速吗
如果换成64位/32位 这个算法比移位相减速度快吗
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-5-24 04:04 , Processed in 0.082134 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表