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

Subversion Repositories encore

[/] [encore/] [trunk/] [fpmult/] [src/] [fpmult_stage0.vhdl] - Blame information for rev 8

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 8 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_stage0_comp.all;
6
 
7
entity fpmult_stage0 is
8
        port(
9
                clk:in std_logic;
10
                d:in fpmult_stage0_in_type;
11
                q:out fpmult_stage0_out_type
12
        );
13
end;
14
 
15
architecture twoproc of fpmult_stage0 is
16
        type reg_type is record
17
                a:fp_type;
18
                b:fp_type;
19
 
20
                p_sign:fp_sign_type;
21
                p_exp:fp_exp_type;
22
                p_mantissa:fp_long_mantissa_type;
23
        end record;
24
        signal r,rin:reg_type;
25
begin
26
        comb:process(d,r)
27
                variable v:reg_type;
28
        begin
29
                -- sample register outputs
30
                v:=r;
31
 
32 4 aloy.amber
                -- overload
33 8 aloy.amber
    v.a:=d.a;
34
    v.b:=d.b;
35
 
36
                v.p_sign:=fp_sign(d.a) xor fp_sign(d.b);
37
                v.p_exp:=fp_exp(d.a) + fp_exp(d.b) - 127;
38
                if fp_mantissa(d.b)(0)='1' then
39
                        v.p_mantissa:=resize(fp_mantissa(d.a),48);
40
                else
41
                        v.p_mantissa:=(others=>'0');
42
                end if;
43
 
44
                -- drive register inputs
45
                rin<=v;
46
 
47
                -- drive outputs
48
                q.a<=r.a;
49
                q.b<=r.b;
50
 
51
                q.p_sign<=r.p_sign;
52
                q.p_exp<=r.p_exp;
53
                q.p_mantissa<=r.p_mantissa;
54
        end process;
55
 
56
        seq:process(clk,rin)
57
        begin
58
                if rising_edge(clk) then
59
                        r<=rin;
60
                end if;
61
        end process;
62 4 aloy.amber
end;

powered by: WebSVN 2.1.0

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