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 2

Go to most recent revision | 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
 
70
    /*assign  s_wb_transfer_master_hold   =   (iv_wbs_burst_addr==0)                              & // START from INIT ADDR
71
                                            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
always @ (posedge i_clk or posedge i_rst)
82
begin   :   TEST_CHECK_DATA_OUT
83
    //
84
    o_test_check_data_ena   <= s_wb_transfer_ok_0;
85
    ov_test_check_data      <= iv_wbs_burst_data;
86
 
87
end
88
//////////////////////////////////////////////////////////////////////////////////
89
//
90
// Create WB ERROR logic:
91
//
92
always @ (posedge i_clk or posedge i_rst)
93
begin   :   WB_ERR
94
    if (i_rst)
95
        begin   :   RST
96
            o_wbs_burst_err         <= 0;
97
            sv_wbs_burst_counter    <= 0;
98
        end
99
    else
100
        begin   :   WRK
101
            // BURST counter
102
            if (i_wbs_burst_cyc)
103
                begin   :   TIME_TO_COUNT
104
                    if (o_wbs_burst_ack) // count ENA
105
                        sv_wbs_burst_counter <= sv_wbs_burst_counter + 1'b1;
106
                end
107
            else            // W8 for COUNT Time, CLR COUNTER 
108
                sv_wbs_burst_counter <= 0;
109
            // ERR logic
110
            if  (
111
                    (sv_wbs_burst_counter == 511 & o_wbs_burst_ack & iv_wbs_burst_cti!=3'b111)  |   // check End-of-Burst
112
                    (sv_wbs_burst_counter <  511 & o_wbs_burst_ack & iv_wbs_burst_cti!=3'b001)      // check Const-Addr-Burst
113
                                                                                                    // ==> WB_BTE check at "s_wb_transfer_ok"
114
                )
115
                o_wbs_burst_err <= 1;
116
            else
117
                o_wbs_burst_err <= 0;
118
        end
119
end
120
//////////////////////////////////////////////////////////////////////////////////
121
endmodule

powered by: WebSVN 2.1.0

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