Flash fixes
[mw/milkymist.git] / cores / tmu2 / rtl / tmu2_mult2_virtex4.v
1 /*
2  * Milkymist VJ SoC
3  * Copyright (C) 2007, 2008, 2009, 2010 Sebastien Bourdeauducq
4  *
5  * This program is free software: you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation, version 3 of the License.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
16  */
17
18 module tmu2_mult2(
19         input sys_clk,
20         input ce,
21
22         input [12:0] a,
23         input [12:0] b,
24         output [25:0] p
25 );
26
27 DSP48 #(
28         .AREG(1), // Number of pipeline registers on the A input, 0, 1 or 2
29         .BREG(1), // Number of pipeline registers on the B input, 0, 1 or 2
30         .B_INPUT("DIRECT"), // B input DIRECT from fabric or CASCADE from another DSP48
31         .CARRYINREG(0), // Number of pipeline registers for the CARRYIN input, 0 or 1
32         .CARRYINSELREG(0), // Number of pipeline registers for the CARRYINSEL, 0 or 1
33         .CREG(0), // Number of pipeline registers on the C input, 0 or 1
34         .LEGACY_MODE("MULT18X18"), // Backward compatibility, NONE, MULT18X18 or MULT18X18S
35         .MREG(0), // Number of multiplier pipeline registers, 0 or 1
36         .OPMODEREG(0), // Number of pipeline regsiters on OPMODE input, 0 or 1
37         .PREG(1), // Number of pipeline registers on the P output, 0 or 1
38         .SUBTRACTREG(0) // Number of pipeline registers on the SUBTRACT input, 0 or 1
39 ) DSP48_inst (
40         .BCOUT(), // 18-bit B cascade output
41         .P(p), // 48-bit product output
42         .PCOUT(), // 48-bit cascade output
43         .A(a), // 18-bit A data input
44         .B(b), // 18-bit B data input
45         .BCIN(18'd0), // 18-bit B cascade input
46         .C(48'd0), // 48-bit cascade input
47         .CARRYIN(1'b0), // Carry input signal
48         .CARRYINSEL(2'd0), // 2-bit carry input select
49         .CEA(ce), // A data clock enable input
50         .CEB(ce), // B data clock enable input
51         .CEC(1'b1), // C data clock enable input
52         .CECARRYIN(1'b1), // CARRYIN clock enable input
53         .CECINSUB(1'b1), // CINSUB clock enable input
54         .CECTRL(1'b1), // Clock Enable input for CTRL regsiters
55         .CEM(1'b1), // Clock Enable input for multiplier regsiters
56         .CEP(ce), // Clock Enable input for P regsiters
57         .CLK(sys_clk), // Clock input
58         .OPMODE(7'h35), // 7-bit operation mode input
59         .PCIN(48'd0), // 48-bit PCIN input
60         .RSTA(1'b0), // Reset input for A pipeline registers
61         .RSTB(1'b0), // Reset input for B pipeline registers
62         .RSTC(1'b0), // Reset input for C pipeline registers
63         .RSTCARRYIN(1'b0), // Reset input for CARRYIN registers
64         .RSTCTRL(1'b0), // Reset input for CTRL registers
65         .RSTM(1'b0), // Reset input for multiplier registers
66         .RSTP(1'b0), // Reset input for P pipeline registers
67         .SUBTRACT(1'b0) // SUBTRACT input
68 );
69
70 endmodule