基于FPGA的5位(有符号位)定点整数的原码乘法器Verilog代码Quartus仿真

名称:基于FPGA的5位(有符号位)定点整数的原码乘法器Verilog代码Quartus仿真(文末获取)

软件:Quartus

语言:Verilog

代码功能:

组成原理第二次实验内容:

  设计实现5位(包括符号位)定点整数的原码乘法器,分别由移位加和全加器阵列结构实现,比较两种结构的运算速度(输入乘数到输出积的时间)和硬件资源(逻辑门和触发器的个数)。

  可以画原理图或者写verilog程序,quartus或者modelsim仿真,可编程逻辑器件实现。

1.原码阵列乘法器结构参考教材上的结构,电路结构如下:

QQ图片20240201154239.png

其中的阵列乘法器结构如下:

 

QQ图片20240201154250.png

2.移位加实现的乘法器结构参考我补充的内容,数据通路图如下:

QQ图片20240201154256.png

控制器状态流程图如下:

QQ图片20240201154300.png

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. 状态图

6. 管脚分配

7. 仿真图

可以看到

-10*15=-150

12*-10=-120

7*12=84

11*-13=-143

-4*-12=48

乘法器功能验证正确

部分代码展示:

//5bit无符号移位相加乘法器
module Mult_5bit_unsigned(A,B,clk,start,mult_product);
input clk,start;//start高电平时输入乘数
input [4:0] A;//A是乘数5bit
input [4:0] B;//B是被乘数5bit
output [9:0] mult_product;//乘积
reg [9:0] mult_product=10'd0;
reg [9:0] mult_product_buf=10'd0;
parameter INIT=2'd0;
parameter ADD=2'd1;
parameter SHIFT=2'd2;
parameter s_END=2'd3;
reg[1:0] state=INIT;//初始状态为INIT
reg[9:0] B_buf=10'd0;//临时变量
integer Count=0;
循环移位相加状态机控制
always@(posedge clk)
  begin
 case(state)
INIT://初始状态
 if(start)begin
state=ADD;   //start有效跳转到下一个状态ADD
B_buf[4:0]=B;   //取被乘数
B_buf[9:5]=5'd0;   //临时变量的高5位置0
end
 else                  
begin
mult_product_buf=0;
Count=0;
state=INIT;      //初始状态
end
ADD://相加状态
 begin
if(A[Count])      //判断乘数的第Count位是否为1
  mult_product_buf=mult_product_buf+B_buf;  //若为1则把乘数左移一位相加
  state=SHIFT;    //完成相加后跳到SHIFT状态继续左移
 end
SHIFT://移位状态
  begin
B_buf={B_buf[8:0],1'b0};        //左移一位,最低位补0
Count=Count+1;            //计数器加一
if(Count==5)     //循环5次 
  begin
state=s_END;
mult_product<=mult_product_buf;
  end
     else
  state=ADD;
  end
s_END:begin//结束状态
mult_product_buf=0;
Count=0;
state=INIT;      //初始状态
end
endcase
   end
endmodule
源代码

 扫描文章末尾的公众号二维码

  • 26
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值