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_uart/] [hdl/] [wb_uart_slv.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_uart_slv
8
// Project Name:
9
// Target Devices:
10
// Tool versions:
11
// Description:
12
//
13
//
14
//
15
//
16
// Revision:
17
// Revision 0.01 - File Created,
18
//
19
//////////////////////////////////////////////////////////////////////////////////
20
`timescale 1ns / 1ps
21
 
22
module wb_uart_slv
23
(
24
    // SYS_CON
25
    input   i_clk,
26
    input   i_srst,
27
    // WBS
28
    input       [ 3:0]  iv_wbs_adr, // byte-addr
29
    input       [31:0]  iv_wbs_dat,
30
    input               i_wbs_we,
31
    input               i_wbs_stb,
32
    input       [ 3:0]  iv_wbs_sel, // NC, for now
33
    input               i_wbs_cyc,
34
    output  reg [31:0]  ov_wbs_dat,
35
    output  reg         o_wbs_ack,
36
    // out-ctrl
37
    output          o_ctrl_utx_start,
38
    output  [ 7:0]  o_ctrl_utx_data,
39
    output          o_ctrl_rfifo_rd,
40
    // in-sts
41
    input           i_sts_utx_busy,
42
    input           i_sts_rfifo_ef,
43
    input   [ 7:0]  iv_sts_rfifo_data
44
);
45
//////////////////////////////////////////////////////////////////////////////////
46
// mem-map:
47
localparam  lp_RXD_ADDR     =   0*4; // byte-addr
48
localparam  lp_TXD_ADDR     =   1*4;
49
localparam  lp_STS_ADDR     =   2*4;
50
 
51
//////////////////////////////////////////////////////////////////////////////////
52
    // csr
53
    logic   [31:0]  sv_reg_sts;
54
    // wb chip-select
55
    wire    s_wbs_ce;
56
 
57
//////////////////////////////////////////////////////////////////////////////////
58
    // chip-select flag
59
    assign  s_wbs_ce    =   i_wbs_stb & i_wbs_cyc;
60
    //
61
    //
62
    assign  o_ctrl_utx_start    =   o_wbs_ack & (iv_wbs_adr == lp_TXD_ADDR);
63
    assign  o_ctrl_utx_data     =   iv_wbs_dat[7:0];
64
    assign  o_ctrl_rfifo_rd     =   o_wbs_ack & (iv_wbs_adr == lp_RXD_ADDR);
65
 
66
//////////////////////////////////////////////////////////////////////////////////
67
//
68
// WB-Slase
69
//
70
always @(posedge i_clk)
71
begin   :   WBS_LOGIC
72
    if (i_srst)
73
        begin   :   RST
74
            ov_wbs_dat <= 0;
75
            o_wbs_ack  <= 0;
76
        end
77
    else
78
        begin   :   WRK
79
            // wb-write
80
 
81
            // wb-read
82
            case(iv_wbs_adr)
83
                lp_RXD_ADDR     :   ov_wbs_dat <= iv_sts_rfifo_data;
84
                lp_STS_ADDR     :   ov_wbs_dat <= sv_reg_sts;
85
                default         :   ov_wbs_dat <= 0;
86
            endcase
87
            // wb-ask
88
            o_wbs_ack <=    (s_wbs_ce)? !o_wbs_ack :
89
                                        1'b0       ;
90
        end
91
end
92
 
93
always @(*)
94
begin   :   STATUS_LOGIC
95
    // status
96
    sv_reg_sts      <= 0;
97
    sv_reg_sts[0]   <= i_sts_utx_busy;
98
    sv_reg_sts[1]   <= i_sts_rfifo_ef;
99
 
100
end
101
//////////////////////////////////////////////////////////////////////////////////
102
endmodule

powered by: WebSVN 2.1.0

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