在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: liulangshusheng

[资料] 32位除法器设计Verilog代码

[复制链接]
发表于 2011-8-4 11:41:11 | 显示全部楼层
Thanks for sharing!
发表于 2011-11-17 12:08:28 | 显示全部楼层
谢谢楼主分享
发表于 2011-11-17 23:53:21 | 显示全部楼层
不错不错,谢谢!
发表于 2011-11-18 00:48:45 | 显示全部楼层
感谢分享!
发表于 2011-11-19 17:14:12 | 显示全部楼层
感谢分享~!!!!
发表于 2011-11-19 19:04:59 | 显示全部楼层
多谢分享,收下了
发表于 2011-11-19 21:47:35 | 显示全部楼层
下来看看!
发表于 2011-11-21 09:45:49 | 显示全部楼层
本帖最后由 chen.terry 于 2011-11-21 09:47 编辑

`timescale 1ns/1ns
module divider( input                  clk,
                input                  rst,
                input                  div_start,
                input [31:0]           div_data1,
                input [31:0]           div_data2,
                output reg             div_end,
                output reg [31:0]      div_dout);

reg inverse_start;
wire inverse_end;
wire[31:0] inverse_result;

parameter IDLE=3'b000,START=3'b001,COMP=3'b010,END1=3'b100;

reg[2:0] state,next_state;

always@(posedge clk or negedge rst)
if(~rst) state<=IDLE;
else state<=next_state;

always@(*)
begin
    next_state=state;
    div_end=1'b0;
    inverse_start=1'b0;
    case(state)
    IDLE:if(div_start)
               begin
                   next_state=START;
                   inverse_start=1'b1;
               end
    START:if(inverse_end)next_state=COMP;
    COMP:next_state=END1;
    END1:begin
            div_end=1'b1;
            next_state=IDLE;
        end
    default:next_state=IDLE;
    endcase
end

inverse inverse (.clk(clk),
                 .rst(rst),
                 .inv_start(inverse_start),
                 .inv_data(div_data2),
                 .inv_end(inverse_end),
                 .inv_dout(inverse_result));


reg[31:0] inverse_data2;
always@(posedge clk or negedge rst)
if(~rst) inverse_data2<=0;
else if(inverse_end) inverse_data2<=inverse_result;

reg[31:0] data1;
always@(posedge clk or negedge rst)
if(~rst) data1<=0;
else if(div_start) data1<=div_data1;
                      
                 
wire[31:0] m1,m2,result_m;
wire[63:0] result;

assign m1=data1;
assign m2=inverse_data2;

/*
multiply multiply(.a(m1),
                  .b(m2),
                  .c(result_m)
                  );
*/

assign result=m1*m2;
assign result_m=result>>10;

always@(posedge clk or negedge rst)
if(~rst) div_dout<=0;
else div_dout<=result_m;


endmodule

标记为红色的模块是什么?IP核还是自己写的算法模块。
发表于 2011-11-21 17:41:12 | 显示全部楼层
download 研究看看
发表于 2011-11-23 22:36:34 | 显示全部楼层
谢谢分享~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-15 14:03 , Processed in 0.024158 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表