verilog 设计8bit乘8bit硬件乘法器
本帖最后由 fpgaw 于 2010-7-6 05:37 编辑verilog 设计8bit乘8bit硬件乘法器 如果仅仅是实现而不要求性能的话,这样一个乘法器并不难,而且网上应该也有很多相关的材料。<br>
搜索一下booth算法 缺乏自己查阅资料、思考问题的过程,很难帮你的 乘法器应该不是很难吧,网上例子很多的.<br>
你搜索verilog实例,应该有的. module mul_ser (clk, x, a, y); //----> Interface<br>
<br>
input clk;<br>
input x, a;<br>
output y;<br>
reg y;<br>
<br>
<br>
always @(posedge clk) //-> Multiplier in behavioral style<br>
begin : States<br>
parameter s0=0, s1=1, s2=2;<br>
reg count;<br>
reg state;<br>
reg p, t; // Double bit width<br>
reg a_reg;<br>
case (state) <br>
s0 : begin // Initialization step <br>
a_reg <= a;<br>
state <= s1;<br>
count = 0;<br>
p <= 0; // Product register reset<br>
t <= {{8{x}},x}; // Set temporary shift register to x<br>
end <br>
s1 : begin // Processing step<br>
if (count == 7) // Multiplication ready<br>
state <= s2;<br>
else <br>
begin // not allow variable bit selects, <br>
if (a_reg == 1) // see (LRM Sec. 4.2.1)<br>
p <= p + t; // Add 2^k<br>
a_reg <= a_reg >> 1;// Use LSB for the bit select<br>
t <= t << 1;<br>
count = count + 1;<br>
state <= s1;<br>
end<br>
end<br>
s2 : begin // Output of result to y and<br>
y <= p; // start next multiplication<br>
state <= s0;<br>
end<br>
endcase <br>
end<br>
<br>
endmodule 直接让VHDL软件实现呀,直接用“*”就可以了,不过综合的时候在SINPLIFY中指定用“LOGIC”实现,就不会用到芯片的DSP IP核了 谢谢楼主分享~~~~~~~ 可以直接调用IP核实现 期待好一点的算法!! module mult_for(outcome,a,b);
parameter size=8;
input a,b; //两个操作数
output outcome; //结果
reg outcome;
integer i;
always @(a or b)
begin
outcome=0;
for(i=1; i<=size; i=i+1) //for 语句
if(b) outcome=outcome +(a << (i-1));
end
endmodule
这个程序看看还可以,如果仿真的话,会有很多毛刺
页:
[1]