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

Subversion Repositories pcie_ds_dma

[/] [pcie_ds_dma/] [trunk/] [core/] [wishbone/] [block_test_check/] [block_check_wb_burst_slave.v] - Blame information for rev 17

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dsmv
//////////////////////////////////////////////////////////////////////////////////
2
// Company:         ;)
3
// Engineer:        Kuzmi4
4
// 
5
// Create Date:     14:39:52 05/19/2010 
6
// Design Name: 
7
// Module Name:     block_check_wb_burst_slave 
8
// Project Name:    DS_DMA
9
// Target Devices:  any
10
// Tool versions:   
11
// Description:     
12
//                  
13
//                  For now we have such restrictions for WB component:
14
//                      1) no WB_RTY syupport
15
//                      2) WB_ERR arize only at event detection and fall after it goes.
16
//                      3) WB Transfer granularity - 64bit
17
//                      4) (TBD)...
18
//                  
19
//                  ==> Design SUPPORT Master DELAY in Transfer !!!
20
//
21
// Revision: 
22
// Revision 0.01 - File Created
23
//
24
//////////////////////////////////////////////////////////////////////////////////
25
`timescale 1ns / 1ps
26
 
27
module block_check_wb_burst_slave
28
(
29
    //
30
    // SYS_CON
31
    input   i_clk,
32
    input   i_rst,
33
    //
34
    // WB BURST SLAVE IF (WRITE-ONLY IF)
35
    input       [11:0]  iv_wbs_burst_addr,
36
    input       [63:0]  iv_wbs_burst_data,
37
    input       [ 7:0]  iv_wbs_burst_sel,
38
    input               i_wbs_burst_we,
39
    input               i_wbs_burst_cyc,
40
    input               i_wbs_burst_stb,
41
    input       [ 2:0]  iv_wbs_burst_cti,
42
    input       [ 1:0]  iv_wbs_burst_bte,
43
 
44
    output              o_wbs_burst_ack,
45
    output reg          o_wbs_burst_err,
46
    output              o_wbs_burst_rty,
47
    //
48
    // TEST_CHECK IF (Output data with ENA)
49
    output reg  [63:0]  ov_test_check_data,
50
    output reg          o_test_check_data_ena,
51
    //
52
    // TEST_CHECK Controls (WBS_CFG)
53
    input       [15:0]  iv_control
54
 
55
);
56
//////////////////////////////////////////////////////////////////////////////////
57
    // 
58
    wire    s_wb_transfer_ok_0;
59
    //wire    s_wb_transfer_master_hold;
60
    // define WB stuff:
61
    reg     [8:0]   sv_wbs_burst_counter;
62
 
63
//////////////////////////////////////////////////////////////////////////////////
64
    // 
65
    assign  s_wb_transfer_ok_0  =   (iv_wbs_burst_addr==0)                              & // START from INIT ADDR
66
                                    i_wbs_burst_cyc & i_wbs_burst_stb & i_wbs_burst_we  & // WB Transfer strobes
67
                                    iv_wbs_burst_sel==8'hFF                             & // WB_SEL point to 64bit transfer
68
                                    iv_wbs_burst_bte==2'b00                             ; // WB Burst Transfer type check (Linear Burst)
69 17 dsmv
  //FIX  
70
    assign  s_wb_transfer_master_hold   =   (iv_wbs_burst_addr==0)                            & // START from INIT ADDR
71 2 dsmv
                                            i_wbs_burst_cyc & !i_wbs_burst_stb & i_wbs_burst_we & // WB Transfer strobes (MASTER STALL case)
72
                                            iv_wbs_burst_sel==8'hFF                             & // WB_SEL point to 64bit transfer
73
                                            iv_wbs_burst_bte==2'b00                             ; // WB Burst Transfer type check (Linear Burst)*/
74
    // WB stuff:
75
    assign  o_wbs_burst_ack =   s_wb_transfer_ok_0;
76
    assign  o_wbs_burst_rty =   0;  // for now no WB Retry func, only WB_ERR for now
77
//////////////////////////////////////////////////////////////////////////////////
78
//
79
// 
80
//
81 17 dsmv
//always @ (posedge i_clk or posedge i_rst)
82
always @ (posedge i_clk)
83 2 dsmv
begin   :   TEST_CHECK_DATA_OUT
84
    //
85
    o_test_check_data_ena   <= s_wb_transfer_ok_0;
86
    ov_test_check_data      <= iv_wbs_burst_data;
87
 
88
end
89
//////////////////////////////////////////////////////////////////////////////////
90
//
91
// Create WB ERROR logic:
92
//
93
always @ (posedge i_clk or posedge i_rst)
94
begin   :   WB_ERR
95
    if (i_rst)
96
        begin   :   RST
97
            o_wbs_burst_err         <= 0;
98
            sv_wbs_burst_counter    <= 0;
99
        end
100
    else
101
        begin   :   WRK
102
            // BURST counter
103
            if (i_wbs_burst_cyc)
104
                begin   :   TIME_TO_COUNT
105
                    if (o_wbs_burst_ack) // count ENA
106
                        sv_wbs_burst_counter <= sv_wbs_burst_counter + 1'b1;
107
                end
108
            else            // W8 for COUNT Time, CLR COUNTER 
109
                sv_wbs_burst_counter <= 0;
110
            // ERR logic
111
            if  (
112
                    (sv_wbs_burst_counter == 511 & o_wbs_burst_ack & iv_wbs_burst_cti!=3'b111)  |   // check End-of-Burst
113
                    (sv_wbs_burst_counter <  511 & o_wbs_burst_ack & iv_wbs_burst_cti!=3'b001)      // check Const-Addr-Burst
114
                                                                                                    // ==> WB_BTE check at "s_wb_transfer_ok"
115
                )
116
                o_wbs_burst_err <= 1;
117
            else
118
                o_wbs_burst_err <= 0;
119
        end
120
end
121
//////////////////////////////////////////////////////////////////////////////////
122
endmodule

powered by: WebSVN 2.1.0

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