MyFPGA Forum

 找回密码
 注册
搜索
查看: 5414|回复: 3
打印 上一主题 下一主题

常见signed data 加法运算的处理

[复制链接]
跳转到指定楼层
1#
发表于 2010-2-24 10:35:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
算法常见基本的问题:signed data的加法运算,该如何用硬件电路来实现?若处理不好,debug是很费时费力。这边跟大家分享不同于软件(ex. C)的写法。
使用Verilog实现 “signed_add.v”(for 4-bit input and 5-bit output)

module signed_add (
   iclk,
   ia,
   ib,
   osum
);

input iclk;
input [3:0] ia;
input [3:0] ib;
output [4:0] osum;

reg  [4:0] osum;
wire [4:0] sum_temp;

assign sum_temp = {ia[3], ia} + {ib[3], ib}; // Note here!!

always@(posedge iclk)
     osum <= sum_temp;

endmodule
2#
发表于 2010-2-28 16:36:29 | 只看该作者
請問該方法使用的負數表示方法為何? 2補數嗎?
3#
 楼主| 发表于 2010-2-28 23:32:47 | 只看该作者
是的~   
比较详细的描述
RTL 所提供的运算分unsigned与signed两种:

Unsigned:不含signed bit
以4 bit来说,值域从0000~1111,也就是0 ~ 15
Signed:含signed bit(MSB为signed bit,1为负,0为正,负数使用2补码表示)
以4 bit来说,值域从1000~0111,也就是-8 ~ +7
4#
发表于 2010-7-21 15:54:37 | 只看该作者
本帖最后由 Frank 于 2010-7-23 10:25 编辑

嗯....
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|MyFPGA

GMT+8, 2024-11-11 03:42 , Processed in 0.049352 second(s), 14 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表