OpenCores
URL https://opencores.org/ocsvn/1g_ethernet_dpi/1g_ethernet_dpi/trunk

Subversion Repositories 1g_ethernet_dpi

[/] [1g_ethernet_dpi/] [tags/] [vmblite_base/] [hw/] [src/] [rtl/] [wb_pio/] [hdl/] [wb_pio_top.sv] - Blame information for rev 7

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 7 kuzmi4
//////////////////////////////////////////////////////////////////////////////////
2
// Company:
3
// Engineer:        IK
4
//
5
// Create Date:     11:35:01 03/21/2013
6
// Design Name:
7
// Module Name:     wb_pio_top
8
// Project Name:
9
// Target Devices:
10
// Tool versions:
11
// Description:
12
//                  simple pio-in/out, with DW-read/write
13
//
14
//                  WBS mem-map:
15
//                      0:     [in]
16
//                      4:     [out]
17
//
18
//
19
// Revision:
20
// Revision 0.01 - File Created,
21
//
22
//////////////////////////////////////////////////////////////////////////////////
23
`timescale 1ns / 1ps
24
 
25
module wb_pio_top #(parameter p_DW = 0)
26
(
27
    // SYS_CON
28
    input   i_clk,
29
    input   i_srst,
30
    // PIO
31
    input       [p_DW-1:0]  iv_pio,
32
    output  reg [p_DW-1:0]  ov_pio,
33
    // WBS
34
    input       [ 3:0]  iv_wbs_adr, // byte-addr
35
    input       [31:0]  iv_wbs_dat,
36
    input               i_wbs_we,
37
    input               i_wbs_stb,
38
    input       [ 3:0]  iv_wbs_sel, // NC, for now
39
    input               i_wbs_cyc,
40
    output  reg [31:0]  ov_wbs_dat,
41
    output  reg         o_wbs_ack
42
);
43
//////////////////////////////////////////////////////////////////////////////////
44
// mem-map def
45
localparam  lp_IN_ADDR  =   0*4; // byte-addr
46
localparam  lp_OUT_ADDR =   1*4; // ..
47
 
48
//////////////////////////////////////////////////////////////////////////////////
49
    // chip-select
50
    wire    s_wbs_ce;
51
    // ireg
52
    reg     [p_DW-1:0]  sv_pio_i;
53
 
54
//////////////////////////////////////////////////////////////////////////////////
55
    // chip-select flag
56
    assign  s_wbs_ce    =   i_wbs_stb & i_wbs_cyc;
57
 
58
//////////////////////////////////////////////////////////////////////////////////
59
//
60
// WB-Slase
61
//
62
always @(posedge i_clk)
63
begin   :   WBS_LOGIC
64
    if (i_srst)
65
        begin   :   RST
66
            ov_wbs_dat <= 0;
67
            o_wbs_ack  <= 0;
68
 
69
            ov_pio <= 0;
70
        end
71
    else
72
        begin   :   WRK
73
            // wb-write
74
            if (s_wbs_ce & i_wbs_we & (iv_wbs_adr == lp_OUT_ADDR))
75
                ov_pio <= iv_wbs_dat;
76
            // wb-read
77
            case(iv_wbs_adr)
78
                lp_IN_ADDR  :   ov_wbs_dat <= sv_pio_i;
79
                lp_OUT_ADDR :   ov_wbs_dat <= ov_pio;
80
                default     :   ov_wbs_dat <= 0;
81
            endcase
82
            // wb-ask
83
            o_wbs_ack <=    (s_wbs_ce)? !o_wbs_ack :
84
                                        1'b0       ;
85
        end
86
end
87
//////////////////////////////////////////////////////////////////////////////////
88
//
89
// In-REG
90
//
91
always @(posedge i_clk)
92
begin   :   IREG_LOGIC
93
    sv_pio_i <= iv_pio;
94
end
95
//////////////////////////////////////////////////////////////////////////////////
96
endmodule

powered by: WebSVN 2.1.0

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