aboutsummaryrefslogtreecommitdiffstats
path: root/examples/up5k_mac16/mac16.v
blob: 73740e3b850b9db115df6cd66043251978056f60 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
module top(
  input clk,
  input rstn,
  output LED1,
  output LED2);
  
wire reset = !rstn;
  
wire [15:0] A    = 16'd999;
wire [15:0] B    = 16'd12345;
wire [31:0] RES  = 32'd12332655;

wire [31:0] dsp_out;

SB_MAC16 i_sbmac16
  (
    .A(A),
    .B(B),
    .C(16'b0),
    .D(16'b0),
    .CLK(clk),
    .CE(1'b1),
    .IRSTTOP(reset),
    .IRSTBOT(reset),
    .ORSTTOP(reset),
    .ORSTBOT(reset),
    .AHOLD(1'b0),
    .BHOLD(1'b0),
    .CHOLD(1'b0),
    .DHOLD(1'b0),
    .OHOLDTOP(1'b0),
    .OHOLDBOT(1'b0),
    .OLOADTOP(1'b0),
    .OLOADBOT(1'b0),
    .ADDSUBTOP(1'b0),
    .ADDSUBBOT(1'b0),
    .CO(),
    .CI(1'b0),
    .O(dsp_out)
  );

//16x16 => 32 unsigned pipelined multiply
defparam i_sbmac16. B_SIGNED                  = 1'b0;
defparam i_sbmac16. A_SIGNED                  = 1'b0;
defparam i_sbmac16. MODE_8x8                  = 1'b0;

defparam i_sbmac16. BOTADDSUB_CARRYSELECT     = 2'b00;
defparam i_sbmac16. BOTADDSUB_UPPERINPUT      = 1'b0;
defparam i_sbmac16. BOTADDSUB_LOWERINPUT      = 2'b00;
defparam i_sbmac16. BOTOUTPUT_SELECT          = 2'b11;

defparam i_sbmac16. TOPADDSUB_CARRYSELECT     = 2'b00;
defparam i_sbmac16. TOPADDSUB_UPPERINPUT      = 1'b0;
defparam i_sbmac16. TOPADDSUB_LOWERINPUT      = 2'b00;
defparam i_sbmac16. TOPOUTPUT_SELECT          = 2'b11;

defparam i_sbmac16. PIPELINE_16x16_MULT_REG2  = 1'b1;
defparam i_sbmac16. PIPELINE_16x16_MULT_REG1  = 1'b1;
defparam i_sbmac16. BOT_8x8_MULT_REG          = 1'b1;
defparam i_sbmac16. TOP_8x8_MULT_REG          = 1'b1;
defparam i_sbmac16. D_REG                     = 1'b0;
defparam i_sbmac16. B_REG                     = 1'b1;
defparam i_sbmac16. A_REG                     = 1'b1;
defparam i_sbmac16. C_REG                     = 1'b0;

assign LED1 = (dsp_out == RES) ? 1'b1 : 1'b0;
assign LED2 = 1'b0;



endmodule