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

Subversion Repositories pcie_ds_dma

[/] [pcie_ds_dma/] [trunk/] [core/] [ds_dma64/] [pcie_src/] [pcie_core64_m1/] [source/] [cmm_errman_cpl.v] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dsmv
 
2
//-----------------------------------------------------------------------------
3
//
4
// (c) Copyright 2009-2010 Xilinx, Inc. All rights reserved.
5
//
6
// This file contains confidential and proprietary information
7
// of Xilinx, Inc. and is protected under U.S. and
8
// international copyright and other intellectual property
9
// laws.
10
//
11
// DISCLAIMER
12
// This disclaimer is not a license and does not grant any
13
// rights to the materials distributed herewith. Except as
14
// otherwise provided in a valid license issued to you by
15
// Xilinx, and to the maximum extent permitted by applicable
16
// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
17
// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
18
// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
19
// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
20
// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
21
// (2) Xilinx shall not be liable (whether in contract or tort,
22
// including negligence, or under any other theory of
23
// liability) for any loss or damage of any kind or nature
24
// related to, arising under or in connection with these
25
// materials, including for any direct, or any indirect,
26
// special, incidental, or consequential loss or damage
27
// (including loss of data, profits, goodwill, or any type of
28
// loss or damage suffered as a result of any action brought
29
// by a third party) even if such damage or loss was
30
// reasonably foreseeable or Xilinx had been advised of the
31
// possibility of the same.
32
//
33
// CRITICAL APPLICATIONS
34
// Xilinx products are not designed or intended to be fail-
35
// safe, or for use in any application requiring fail-safe
36
// performance, such as life-support or safety devices or
37
// systems, Class III medical devices, nuclear facilities,
38
// applications related to the deployment of airbags, or any
39
// other applications that could lead to death, personal
40
// injury, or severe property or environmental damage
41
// (individually and collectively, "Critical
42
// Applications"). Customer assumes the sole risk and
43
// liability of any use of Xilinx products in Critical
44
// Applications, subject only to applicable laws and
45
// regulations governing limitations on product liability.
46
//
47
// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
48
// PART OF THIS FILE AT ALL TIMES.
49
//
50
//-----------------------------------------------------------------------------
51
// Project    : V5-Block Plus for PCI Express
52
// File       : cmm_errman_cpl.v
53
//--------------------------------------------------------------------------------
54
//--------------------------------------------------------------------------------
55
 
56
/***********************************************************************
57
 
58
  Description:
59
 
60
  This module figures out what to do for scheduling Cpl transactions:
61
    1) count up or count down,
62
    2) how much to add or to subtract,
63
    3) it counts the Cpl requested by TLM and USER separately.
64
  It returns the number and a add/subtract_b signals to the Cpl
65
  tracking counter. The outputs are based on how many non-posted
66
  requests have been received by either the TLM or the user.
67
 
68
***********************************************************************/
69
 
70
module cmm_errman_cpl (
71
                cpl_num,               // Output
72
                inc_dec_b,
73
 
74
                cmm_err_tlp_posted,    // Inputs
75
                decr_cpl,
76
                rst,
77
                clk
78
                );
79
 
80
 
81
  output  [2:0] cpl_num;
82
  output        inc_dec_b;             // 1 = increment, 0 = decrement 
83
 
84
  input         cmm_err_tlp_posted;
85
  input         decr_cpl;
86
  input         rst;
87
  input         clk;
88
 
89
 
90
  //******************************************************************//
91
  // Reality check.                                                   //
92
  //******************************************************************//
93
 
94
  parameter FFD       = 1;        // clock to out delay model
95
 
96
 
97
  //******************************************************************//
98
  // Figure out how many errors to increment.                         //
99
  //******************************************************************//
100
 
101
 
102
  reg     [2:0] mod_to_incr;
103
  reg           mod_add_sub_b;
104
 
105
 
106
  always @(cmm_err_tlp_posted or decr_cpl)
107
  begin
108
    case ({cmm_err_tlp_posted, decr_cpl})   // synthesis full_case parallel_case
109
    2'b00:   begin   mod_to_incr   = 3'b000;
110
                     mod_add_sub_b = 1'b1;
111
             end
112
    2'b01:   begin   mod_to_incr   = 3'b001;
113
                     mod_add_sub_b = 1'b0;
114
             end
115
    2'b10:   begin   mod_to_incr   = 3'b001;
116
                     mod_add_sub_b = 1'b1;
117
             end
118
    2'b11:   begin   mod_to_incr   = 3'b000;
119
                     mod_add_sub_b = 1'b1;
120
             end
121
    default: begin   mod_to_incr   = 3'b000;
122
                     mod_add_sub_b = 1'b1;
123
             end
124
    endcase
125
  end
126
 
127
 
128
  //******************************************************************//
129
  // Register the outputs.                                            //
130
  //******************************************************************//
131
 
132
 
133
  reg     [2:0] reg_cpl_num;
134
  reg           reg_inc_dec_b;
135
 
136
  always @(posedge clk or posedge rst)
137
  begin
138
    if (rst)
139
    begin
140
      reg_cpl_num   <= #FFD 3'b000;
141
      reg_inc_dec_b <= #FFD 1'b0;
142
    end
143
    else
144
    begin
145
      reg_cpl_num   <= #FFD mod_to_incr;
146
      reg_inc_dec_b <= #FFD mod_add_sub_b;
147
    end
148
  end
149
 
150
  assign cpl_num   = reg_cpl_num;
151
  assign inc_dec_b = reg_inc_dec_b;
152
 
153
 
154
  //******************************************************************//
155
  //                                                                  //
156
  //******************************************************************//
157
 
158
endmodule

powered by: WebSVN 2.1.0

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