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_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_uart_top
8
// Project Name:
9
// Target Devices:
10
// Tool versions:
11
// Description:
12
//
13
//
14
//                  WBS mem-map:
15
//
16
//
17
//
18
//
19
// Revision:
20
// Revision 0.01 - File Created,
21
//
22
//////////////////////////////////////////////////////////////////////////////////
23
`timescale 1ns / 1ps
24
 
25
module wb_uart_top #
26
(
27
    parameter p_FDEPTH  = 0,    // fifo-depth
28
    parameter p_FREQ    = 0,    // input clk-freq
29
    parameter p_BAUD    = 0     // uaart baud-rate
30
)
31
(
32
    // SYS_CON
33
    input   i_clk,
34
    input   i_srst,
35
    // WBS      [i_clk]
36
    input   [ 3:0]  iv_wbs_adr, // byte-addr
37
    input   [31:0]  iv_wbs_dat,
38
    input           i_wbs_we,
39
    input           i_wbs_stb,
40
    input   [ 3:0]  iv_wbs_sel, // NC, for now
41
    input           i_wbs_cyc,
42
    output  [31:0]  ov_wbs_dat,
43
    output          o_wbs_ack,
44
    // UART     [async]
45
    input           i_uart_rxd,
46
    output  reg     o_uart_txd
47
);
48
//////////////////////////////////////////////////////////////////////////////////
49
    // ctrl
50
    wire            s_ctrl_utx_start;
51
    wire    [ 7:0]  s_ctrl_utx_data;
52
    wire            s_ctrl_rfifo_rd;
53
    // sts
54
    wire            s_sts_utx_busy;
55
    wire            s_sts_rfifo_ef;
56
    wire    [ 7:0]  sv_sts_rfifo_data;
57
    // U_RX-if
58
    wire            s_urx_ready;
59
    wire    [ 7:0]  sv_urx_data;
60
    // U_TX
61
    wire            s_uart_txd;
62
 
63
//////////////////////////////////////////////////////////////////////////////////
64
//
65
// WBS
66
//
67
wb_uart_slv         U_WBS
68
(
69
// SYS_CON
70
.i_clk              (i_clk),
71
.i_srst             (i_srst),
72
// WBS
73
.iv_wbs_adr         (iv_wbs_adr), // byte-addr
74
.iv_wbs_dat         (iv_wbs_dat),
75
.i_wbs_we           (i_wbs_we),
76
.i_wbs_stb          (i_wbs_stb),
77
.iv_wbs_sel         (iv_wbs_sel),
78
.i_wbs_cyc          (i_wbs_cyc),
79
.ov_wbs_dat         (ov_wbs_dat),
80
.o_wbs_ack          (o_wbs_ack),
81
// out-ctrl
82
.o_ctrl_utx_start   (s_ctrl_utx_start),
83
.o_ctrl_utx_data    (s_ctrl_utx_data),
84
.o_ctrl_rfifo_rd    (s_ctrl_rfifo_rd),
85
// in-sts
86
.i_sts_utx_busy     (s_sts_utx_busy),
87
.i_sts_rfifo_ef     (s_sts_rfifo_ef),
88
.iv_sts_rfifo_data  (sv_sts_rfifo_data)
89
);
90
//////////////////////////////////////////////////////////////////////////////////
91
//
92
// RX-FIFO
93
//
94
wb_uart_mscfifo     #(8, $clog2(p_FDEPTH)) //  p_DW, p_AW
95
                    U_RFIFO
96
(
97
// SYS_CON
98
.i_clk              (i_clk),
99
.i_arst             (i_srst),
100
// DIN
101
.i_wr               (s_urx_ready),
102
.iv_data            (sv_urx_data),
103
// DOUT
104
.i_rd               (s_ctrl_rfifo_rd),
105
.ov_data            (sv_sts_rfifo_data),
106
// STS-OUT
107
.ov_count           (),
108
.o_full             (),
109
.o_empty            (s_sts_rfifo_ef)
110
);
111
//////////////////////////////////////////////////////////////////////////////////
112
//
113
// UART modules
114
//
115
async_transmitter   #(p_FREQ, p_BAUD) // ClkFrequency, Baud
116
                    U_TX
117
(
118
// SYS_CON
119
.clk                (i_clk),
120
// if
121
.TxD_start          (s_ctrl_utx_start),
122
.TxD_data           (s_ctrl_utx_data),
123
.TxD_busy           (s_sts_utx_busy),
124
// out
125
.TxD                (s_uart_txd) // output == LUT-out
126
);
127
always @(posedge i_clk) // top-output == REG-out
128
    o_uart_txd <= s_uart_txd;
129
 
130
async_receiver      #(p_FREQ, p_BAUD) // ClkFrequency, Baud
131
                    U_RX
132
(
133
// SYS_CON
134
.clk                (i_clk),
135
// if
136
.RxD_data_ready     (s_urx_ready),
137
.RxD_data           (sv_urx_data),
138
// in
139
.RxD                (i_uart_rxd),
140
// nc
141
.RxD_idle           (),
142
.RxD_endofpacket    ()
143
);
144
//////////////////////////////////////////////////////////////////////////////////
145
endmodule

powered by: WebSVN 2.1.0

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