FPGA通过移位相加实现有符号乘法器(参数化,封装成IP可直接调用)
创作时间:
作者:
@小白创作中心
FPGA通过移位相加实现有符号乘法器(参数化,封装成IP可直接调用)
引用
CSDN
1.
https://blog.csdn.net/xxqlover/article/details/139611543
FPGA(现场可编程门阵列)是一种可编程逻辑器件,广泛应用于数字信号处理、通信系统、图像处理等领域。在FPGA中实现有符号乘法器是一个常见的需求,本文将介绍如何通过移位相加的方法实现这一功能,并将其封装成可复用的IP核。
在上一篇博客中,我们实现了无符号移位相加乘法器。有符号乘法器和无符号乘法器的原理基本相同,只是需要额外处理符号位。本文将详细介绍如何在FPGA中实现有符号乘法器,并将其封装成可复用的IP核。
原理
对于有符号数乘法,一种常见的处理方法是先将两个数进行符号位扩展,然后按照无符号数的计算方式进行计算。例如,计算(-3)×(-6)时,首先将-3和-6转换为8位补码形式:
- (-3)的补码是1101,符号位扩展后变为11111101
- (-6)的补码是1010,符号位扩展后变为11111010
然后按照无符号数的计算步骤进行计算。
然而,本文提出了一种不同的思路:不进行符号位扩展,而是先抛开符号位,将负数的补码转换为原码,然后以无符号数乘法的计算方式进行计算。最后再来处理符号位,即"同号为正,异号为负"。
实现
下面展示了基于上述思路设计的有符号移位相加乘法器的Verilog代码实现。该实现是并行计算的,只需要一个周期就能出结果,并且进行了参数化。
module sign_Mult
#(parameter WIDTH_A = 8,
WIDTH_B = 8)
(
input clk ,
input signed [WIDTH_A-1:0] a,
input signed [WIDTH_B-1:0] b,
output reg signed [WIDTH_A+WIDTH_B:0] out
);
integer i ;
reg signed [WIDTH_A+WIDTH_B:0] out_r;//考虑结果会有溢出
wire signed [WIDTH_A:0] a_r ;
wire signed [WIDTH_B:0] b_r ;
always @(a or b) begin
out_r = 0;
for(i=0; i<(WIDTH_B); i=i+1)
if(b_r[i])
out_r = out_r + (a_r << i);
end
assign a_r = a[WIDTH_A-1] ? {1'b0,~a + 1'b1} : {1'b0,a};//负数取反加一转化为补码
assign b_r = b[WIDTH_B-1] ? {1'b0,~b + 1'b1} : {1'b0,b};//正数保持不变
always @(posedge clk)
if(a[WIDTH_A-1] == b[WIDTH_B-1])
out <= out_r;
else
out <= ~out_r + 1'b1;
endmodule
测试激励代码
为了验证上述设计的正确性,我们编写了以下测试激励代码:
`timescale 1ns / 1ps
module sign_Mult_tb;
reg signed [11:0] a ;
reg signed [15:0] b ;
wire signed [28:0] out ;
reg clk ;
sign_Mult
#(.WIDTH_A(12),
.WIDTH_B(16))
u1(
.clk(clk),
.a (a) ,
.b (b) ,
.out(out)
);
always #10 clk = ~clk;
initial begin
clk = 1'b0;
a = -12'd2;
b = -16'd3;//计算结果应为6
#200
a = -12'd2048;//12bit最小值-2048
b = 16'd32767;//16bit有符号数最大值//计算结果应为-67_106_816
#200
a = 12'd2;
b = -16'd3;//计算结果应为-6
#200
a = 12'd2047;//12bit最大值2047
b = -16'd32768;//16bit最小值-32768//计算结果应为-67_076_096
end
endmodule
注意事项
- 无论是有符号数相乘还是无符号数相乘,其乘积的位宽必定位a+b;
- 如果被乘数和乘数均为有符号数,那么相乘之前首先要进行符号位扩展,将被乘数和乘数均扩展位a+b位。
- 有符号数乘法的最终结果也是补码形式。
热门推荐
从唐朝到当代,汪姓名人闪耀历史舞台
学会“一个上面添一个下边顺口溜”-轻松破解汉字构造:简直是语言学的藏宝库!
北京邮电大学王牌专业怎么样?高薪榜常客,薪资涨幅可观
北邮再创辉煌:2024年6G十大最新进展,通信与智能融合试验网入选
欧洲心脏病学会发布新指南:血压标准下调至120/70mmHg
从播种到采收只需30天,7种速生蔬菜让冬季菜园不断档
甲磺酸倍他司汀片:成人儿童如何正确使用
从技术革新看,苏联在二战中如何应对德军武器优势?
中国第六代战机研发新动向,美媒:或将改变空战格局
古代男子真的可以“三妻四妾”吗?
青岛五大美食街:小吃天堂到高端餐饮,总有一款满足你
牡丹江至云南旅程距离:全程公里数解析
哈尔滨有哪些好玩的地方?带小孩去哈尔滨旅游五天人均多少钱?超实在的干货
冬季防寒神器:清凉油 vs 风油精
最新数据:西藏养老金全国第一,江浙因农民转保拉低平均值
牛奶营养高 每日不能少
国家酒类品质与安全国际联合研究中心:酿造原料真实性鉴别技术突破
如何通过犬舍信誉和血统证书挑选健康博美?
纯种博美犬市场价格揭秘:哪些因素影响?
成都宽窄巷子:传统与现代交融的文旅新名片
上下九步行街美食地图:从鲜虾云吞到牛杂,八家老字号的广州味道
双Token机制加持,Vue.js与Node.js打造安全注册系统
路径分析在用户注册流程优化中的应用与实践
一文详解:如何打造GDPR合规的网站注册功能
方大同新专辑《梦想家The Dreamer》:音乐与心理的成长之旅
方大同新专辑《梦想家》:用坚韧精神克服病痛,用音乐点亮青春回忆
方大同的音乐旅程:从夏威夷到华语乐坛的传奇
方大同:从夏威夷到华语乐坛的音乐追梦人
薇薇唱红《老鼠爱大米》:2004年网络神曲的诞生与走红
遭遇诈骗跌入低谷,杨臣刚转型经商再创辉煌