原创 加法树乘法器(8位)

2010-6-1 23:45 3120 5 6 分类: FPGA/CPLD

      从书上抄了一个加法树乘法器的verilog程序,以飨大家。


 


 


 


///////////////////////////////////////////////////////////////////<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


//// Description: //加法树乘法器(8位)


// Create Date: 2010- 05 -26


// Engineer: 张书腾


// Module Name: mult


// 该算法是实现是用加法表示乘法,用一个81 数据选择器来实现加法,再移位,


// 累加,可得结果。 虽增加了若干个寄存器暂存数据,增加了资源消耗,但是提高了速度。


module mult (clk, a, b, out);


input clk; // 系统时钟


input [7:0] a,b;  //被乘数


output [15:0] out; //乘后的数


 


wire [15:0] out;


wire [15: 0] out1,c1;


wire [13:0] out2;


wire [11:0] out3,c2;


wire [9:0] out4;


 


reg [14:0] temp0;


reg [13:0] temp1;


reg [12:0] temp2;


reg [11:0] temp3;


reg [10:0] temp4;


reg [9:0] temp5;


reg [8:0] temp6;


reg [7:0] temp7;


//////////////////////////////////////////////////////////////////////////////////////////////


///函数function mux8_1的定义,实现选择操作数据


function [7:0] mux8_1;


input [7:0] oprand;


input sel;


begin


mux8_1 = (sel) ? (oprand):8'b0000_0000; //选择语句


end


endfunction


/////////////////////////////////////////////////////////////////////////


///形成移位中间值, 左移位数扩展


always @ (posedge clk)


begin


temp7 <= mux8_1(a,b[0]);


temp6 <= (mux8_1(a,b[1])<<1);


temp5 <= (mux8_1(a,b[2])<<2);


temp4 <= (mux8_1(a,b[3])<<3);


temp3 <= (mux8_1(a,b[4])<<4);


temp2 <= (mux8_1(a,b[5])<<5);


temp1 <= (mux8_1(a,b[6])<<6);


temp0 <= (mux8_1(a,b[7])<<7);


end


//////////////////////////////////////////////////////


//连接实现相乘 a * b


assign out1= temp0 + temp1; // 同理,out1的最大可能比temp0的位数大1.


assign out2 = temp2 + temp3; // 同理,out2的最大可能比temp2的位数大1.


assign out3 = temp4 + temp5;  // 同理,out3的最大可能比temp4的位数大1.


assign out4 = temp6 + temp7;  //注意out4最大可能为10位二进制数 255*255


assign c1 = out1 + out2; 


assign c2 = out3 + out4; 


assign out = c1+c2;


endmodule

 
PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户377235 2012-11-12 22:29

c2的位数应该再大点吧
相关推荐阅读
用户243614 2010-05-17 23:45
Verilog频率计(低频)
  小弟最近弄了个频率计,主要测量工频50HZ的。代码附在下边。  下面的代码,功能实现了,通过了modelsim仿真,实际测试也成功。还是存在一些问题,不是功能上的,而是实现方法上了,我总感觉我的这...
EE直播间
更多
我要评论
1
5
关闭 站长推荐上一条 /3 下一条