MyFPGA Forum

标题: 常见signed data 加法运算的处理 [打印本页]

作者: Pocahontas    时间: 2010-2-24 10:35
标题: 常见signed data 加法运算的处理
算法常见基本的问题: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
作者: rich    时间: 2010-2-28 16:36
請問該方法使用的負數表示方法為何? 2補數嗎?
作者: Pocahontas    时间: 2010-2-28 23:32
是的~   
比较详细的描述
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
作者: male3219    时间: 2010-7-21 15:54
本帖最后由 Frank 于 2010-7-23 10:25 编辑

嗯....




欢迎光临 MyFPGA Forum (http://www.myfpga.org/discuz/) Powered by Discuz! X3