OpenCores
URL https://opencores.org/ocsvn/fixed_point_arithmetic_parameterized/fixed_point_arithmetic_parameterized/trunk

Subversion Repositories fixed_point_arithmetic_parameterized

[/] [fixed_point_arithmetic_parameterized/] [trunk/] [src/] [qadd.v] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 samis13
`timescale 1ns / 1ps
2
//////////////////////////////////////////////////////////////////////////////////
3
// Company: 
4
// Engineer: 
5
// 
6
// Create Date:    09:28:18 08/24/2011 
7
// Design Name: 
8
// Module Name:    q15_add 
9
// Project Name: 
10
// Target Devices: 
11
// Tool versions: 
12
// Description: 
13
//
14
// Dependencies: 
15
//
16
// Revision: 
17
// Revision 0.01 - File Created
18
// Additional Comments: 
19
//
20
//////////////////////////////////////////////////////////////////////////////////
21
module qadd(
22
    input [N-1:0] a,
23
    input [N-1:0] b,
24
    output [N-1:0] c
25
    );
26
//sign+16.15
27
 
28
        //Parameterized values
29
        parameter Q = 15;
30
        parameter N = 32;
31
 
32
reg [N-1:0] res;
33
 
34
assign c = res;
35
 
36
always @(a,b)
37
begin
38
        //both negative
39
        if(a[N-1] == 1 && b[N-1] == 1) begin
40
                //sign
41
                res[N-1] = 1;
42
                //whole
43
                res[N-2:0] = a[N-2:0] + b[N-2:0];
44
        end
45
        //both positive
46
        else if(a[N-1] == 0 && b[N-1] == 0) begin
47
                //sign
48
                res[N-1] = 0;
49
                //whole
50
                res[N-2:0] = a[N-2:0] + b[N-2:0];
51
        end
52
        //subtract a-b
53
        else if(a[N-1] == 0 && b[N-1] == 1) begin
54
                //sign
55
                if(a[N-2:0] > b[N-2:0])
56
                        res[N-1] = 1;
57
                else
58
                        res[N-1] = 0;
59
                //whole
60
                res[N-2:0] = a[N-2:0] - b[N-2:0];
61
        end
62
        //subtract b-a
63
        else begin
64
                //sign
65
                if(a[N-2:0] < b[N-2:0])
66
                        res[N-1] = 1;
67
                else
68
                        res[N-1] = 0;
69
                //whole
70
                res[N-2:0] = b[N-2:0] - a[N-2:0];
71
        end
72
end
73
 
74
endmodule

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.