OpenCores
URL https://opencores.org/ocsvn/2d_game_console/2d_game_console/trunk

Subversion Repositories 2d_game_console

[/] [2d_game_console/] [trunk/] [Processor_Quartus/] [db/] [abs_divider_mug.tdf] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 lucas.vbal
--abs_divider DEN_REPRESENTATION="SIGNED" LPM_PIPELINE=2 MAXIMIZE_SPEED=5 NUM_REPRESENTATION="SIGNED" SKIP_BITS=0 WIDTH_D=16 WIDTH_N=16 clock denominator numerator quotient remainder
2
--VERSION_BEGIN 17.0 cbx_cycloneii 2017:04:25:18:06:29:SJ cbx_lpm_abs 2017:04:25:18:06:29:SJ cbx_lpm_add_sub 2017:04:25:18:06:29:SJ cbx_lpm_divide 2017:04:25:18:06:29:SJ cbx_mgl 2017:04:25:18:09:28:SJ cbx_nadder 2017:04:25:18:06:30:SJ cbx_stratix 2017:04:25:18:06:30:SJ cbx_stratixii 2017:04:25:18:06:30:SJ cbx_util_mgl 2017:04:25:18:06:30:SJ  VERSION_END
3
 
4
 
5
-- Copyright (C) 2017  Intel Corporation. All rights reserved.
6
--  Your use of Intel Corporation's design tools, logic functions
7
--  and other software and tools, and its AMPP partner logic
8
--  functions, and any output files from any of the foregoing
9
--  (including device programming or simulation files), and any
10
--  associated documentation or information are expressly subject
11
--  to the terms and conditions of the Intel Program License
12
--  Subscription Agreement, the Intel Quartus Prime License Agreement,
13
--  the Intel MegaCore Function License Agreement, or other
14
--  applicable license agreement, including, without limitation,
15
--  that your use is for the sole purpose of programming logic
16
--  devices manufactured by Intel and sold by Intel or its
17
--  authorized distributors.  Please refer to the applicable
18
--  agreement for further details.
19
 
20
 
21
FUNCTION alt_u_div_srf (clock, denominator[15..0], numerator[15..0])
22
RETURNS ( quotient[15..0], remainder[15..0]);
23
FUNCTION lpm_abs_k0a (data[15..0])
24
RETURNS ( result[15..0]);
25
 
26
--synthesis_resources = lut 179 reg 132
27
OPTIONS ALTERA_INTERNAL_OPTION = "{-to DFF_diff_signs} POWER_UP_LEVEL=HIGH";
28
 
29
SUBDESIGN abs_divider_mug
30
(
31
        clock   :       input;
32
        denominator[15..0]      :       input;
33
        numerator[15..0]        :       input;
34
        quotient[15..0] :       output;
35
        remainder[15..0]        :       output;
36
)
37
VARIABLE
38
        divider : alt_u_div_srf;
39
        DFF_diff_signs[1..0] : dffe
40
                WITH (
41
                        power_up = "high"
42
                );
43
        DFF_num_sign[1..0] : dffe;
44
        my_abs_den : lpm_abs_k0a;
45
        my_abs_num : lpm_abs_k0a;
46
        compl_add_quot_result_int[16..0]        :       WIRE;
47
        compl_add_quot_cin      :       WIRE;
48
        compl_add_quot_dataa[15..0]     :       WIRE;
49
        compl_add_quot_datab[15..0]     :       WIRE;
50
        compl_add_quot_result[15..0]    :       WIRE;
51
        compl_add_rem_result_int[16..0] :       WIRE;
52
        compl_add_rem_cin       :       WIRE;
53
        compl_add_rem_dataa[15..0]      :       WIRE;
54
        compl_add_rem_datab[15..0]      :       WIRE;
55
        compl_add_rem_result[15..0]     :       WIRE;
56
        aclr    : NODE;
57
        clk_en  : NODE;
58
        dff_num_sign_q_out      : WIRE;
59
        diff_signs      : WIRE;
60
        gnd_wire        : WIRE;
61
        neg_quot[15..0] : WIRE;
62
        neg_rem[15..0]  : WIRE;
63
        norm_den[15..0] : WIRE;
64
        norm_num[15..0] : WIRE;
65
        num_sign        : WIRE;
66
        protect_quotient[15..0] : WIRE;
67
        protect_remainder[15..0]        : WIRE;
68
        vcc_wire        : WIRE;
69
 
70
BEGIN
71
        divider.clock = clock;
72
        divider.denominator[] = norm_den[];
73
        divider.numerator[] = norm_num[];
74
        DFF_diff_signs[].clk = clock;
75
        DFF_diff_signs[].d = ( ( diff_signs, DFF_diff_signs[1..1].q));
76
        DFF_diff_signs[].ena = clk_en;
77
        DFF_diff_signs[].prn = (! aclr);
78
        DFF_num_sign[].clk = clock;
79
        DFF_num_sign[].clrn = (! aclr);
80
        DFF_num_sign[].d = ( ( num_sign, DFF_num_sign[1..1].q));
81
        DFF_num_sign[].ena = clk_en;
82
        my_abs_den.data[] = denominator[];
83
        my_abs_num.data[] = numerator[];
84
        compl_add_quot_result_int[] = (compl_add_quot_dataa[], compl_add_quot_cin) + (compl_add_quot_datab[], compl_add_quot_cin);
85
        compl_add_quot_result[] = compl_add_quot_result_int[16..1];
86
        compl_add_quot_cin = vcc_wire;
87
        compl_add_quot_dataa[] = (! protect_quotient[]);
88
        compl_add_quot_datab[] = ( gnd_wire, gnd_wire, gnd_wire, gnd_wire, gnd_wire, gnd_wire, gnd_wire, gnd_wire, gnd_wire, gnd_wire, gnd_wire, gnd_wire, gnd_wire, gnd_wire, gnd_wire, gnd_wire);
89
        compl_add_rem_result_int[] = (compl_add_rem_dataa[], compl_add_rem_cin) + (compl_add_rem_datab[], compl_add_rem_cin);
90
        compl_add_rem_result[] = compl_add_rem_result_int[16..1];
91
        compl_add_rem_cin = vcc_wire;
92
        compl_add_rem_dataa[] = (! protect_remainder[]);
93
        compl_add_rem_datab[] = ( gnd_wire, gnd_wire, gnd_wire, gnd_wire, gnd_wire, gnd_wire, gnd_wire, gnd_wire, gnd_wire, gnd_wire, gnd_wire, gnd_wire, gnd_wire, gnd_wire, gnd_wire, gnd_wire);
94
        aclr = GND;
95
        clk_en = VCC;
96
        dff_num_sign_q_out = DFF_num_sign[0..0].q;
97
        diff_signs = (numerator[15..15] $ denominator[15..15]);
98
        gnd_wire = B"0";
99
        neg_quot[] = compl_add_quot_result[];
100
        neg_rem[] = compl_add_rem_result[];
101
        norm_den[] = my_abs_den.result[];
102
        norm_num[] = my_abs_num.result[];
103
        num_sign = numerator[15..15];
104
        protect_quotient[] = divider.quotient[];
105
        protect_remainder[] = divider.remainder[];
106
        quotient[] = ((protect_quotient[] & (! DFF_diff_signs[0..0].q)) # (neg_quot[] & DFF_diff_signs[0..0].q));
107
        remainder[] = ((protect_remainder[] & (! dff_num_sign_q_out)) # (neg_rem[] & dff_num_sign_q_out));
108
        vcc_wire = B"1";
109
END;
110
--VALID FILE

powered by: WebSVN 2.1.0

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