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

Subversion Repositories encore

[/] [encore/] [trunk/] [fpmult/] [src/] [fpmult_stageN.vhdl] - Blame information for rev 4

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 4 aloy.amber
library ieee;
2
use ieee.std_logic_1164.all;
3
use ieee.numeric_std.all;
4
use work.fp_generic.all;
5
use work.fpmult_stageN_comp.all;
6
 
7
entity fpmult_stageN is
8
        generic(
9
                N:integer
10
        );
11
        port(
12
                clk:in std_logic;
13
                d:in fpmult_stageN_in_type;
14
                q:out fpmult_stageN_out_type
15
        );
16
end;
17
 
18
architecture twoproc of fpmult_stageN is
19
        type reg_type is record
20
                a:fp_type;
21
                b:fp_type;
22
 
23
                p_sign:fp_sign_type;
24
                p_exp:fp_exp_type;
25
                p_mantissa:fp_long_mantissa_type;
26
        end record;
27
        signal r,rin:reg_type;
28
begin
29
        comb:process(d,r)
30
                variable v:reg_type;
31
        begin
32
                -- sample register outputs
33
                v:=r;
34
 
35
                -- overload
36
                v.a:=d.a;
37
                v.b:=d.b;
38
 
39
                v.p_sign:=d.p_sign;
40
                v.p_exp:=d.p_exp;
41
                if fp_mantissa(d.b)(N)='1' then
42
                        v.p_mantissa:=(resize(fp_mantissa(d.a),48) sll N) + d.p_mantissa;
43
                else
44
                        v.p_mantissa:=d.p_mantissa;
45
                end if;
46
 
47
                -- drive register inputs
48
                rin<=v;
49
 
50
                -- drive outputs
51
                q.a<=r.a;
52
                q.b<=r.b;
53
 
54
                q.p_sign<=r.p_sign;
55
                q.p_exp<=r.p_exp;
56
                q.p_mantissa<=r.p_mantissa;
57
        end process;
58
 
59
        seq:process(clk,rin)
60
        begin
61
                if rising_edge(clk) then
62
                        r<=rin;
63
                end if;
64
        end process;
65
end;

powered by: WebSVN 2.1.0

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