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

Subversion Repositories uart2spi

[/] [uart2spi/] [trunk/] [rtl/] [top/] [top.v] - Blame information for rev 6

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dinesha
 
2
//////////////////////////////////////////////////////////////////////
3
////                                                              ////
4 3 dinesha
////  UART2SPI  Top Module                                        ////
5 2 dinesha
////                                                              ////
6
////  This file is part of the uart2spi  cores project            ////
7
////  http://www.opencores.org/cores/uart2spi/                    ////
8
////                                                              ////
9
////  Description                                                 ////
10
////  Uart2SPI top level integration.                             ////
11
////    1. spi_core                                               ////
12
////    2. uart_core                                              ////
13
////    3. uart_msg_handler                                       ////
14
////                                                              ////
15
////  To Do:                                                      ////
16
////    nothing                                                   ////
17
////                                                              ////
18
////  Author(s):                                                  ////
19
////      - Dinesh Annayya, dinesha@opencores.org                 ////
20
////                                                              ////
21
//////////////////////////////////////////////////////////////////////
22
////                                                              ////
23
//// Copyright (C) 2000 Authors and OPENCORES.ORG                 ////
24
////                                                              ////
25
//// This source file may be used and distributed without         ////
26
//// restriction provided that this copyright statement is not    ////
27
//// removed from the file and that any derivative work contains  ////
28
//// the original copyright notice and the associated disclaimer. ////
29
////                                                              ////
30
//// This source file is free software; you can redistribute it   ////
31
//// and/or modify it under the terms of the GNU Lesser General   ////
32
//// Public License as published by the Free Software Foundation; ////
33
//// either version 2.1 of the License, or (at your option) any   ////
34
//// later version.                                               ////
35
////                                                              ////
36
//// This source is distributed in the hope that it will be       ////
37
//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
38
//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
39
//// PURPOSE.  See the GNU Lesser General Public License for more ////
40
//// details.                                                     ////
41
////                                                              ////
42
//// You should have received a copy of the GNU Lesser General    ////
43
//// Public License along with this source; if not, download it   ////
44
//// from http://www.opencores.org/lgpl.shtml                     ////
45
////                                                              ////
46
//////////////////////////////////////////////////////////////////////
47
 
48
module top (
49
        line_reset_n ,
50
        line_clk ,
51
 
52
        // configuration control
53
        cfg_tx_enable  , // Enable Transmit Path
54
        cfg_rx_enable  , // Enable Received Path
55
        cfg_stop_bit   , // 0 -> 1 Start , 1 -> 2 Stop Bits
56
        cfg_pri_mod    , // priority mode, 0 -> nop, 1 -> Even, 2 -> Odd
57
        cfg_baud_16x   ,
58
 
59
       // Status information
60
        frm_error      ,
61
        par_error      ,
62
 
63
        baud_clk_16x,
64
 
65
       // Line Interface
66
        rxd,
67
        txd,
68
 
69
      // Spi I/F
70
        sck,
71
        so,
72
        si,
73
        cs_n
74
 
75
     );
76
 
77
 
78
 
79
//---------------------------------
80
// Global Dec
81
// ---------------------------------
82
 
83 6 dinesha
input        line_reset_n          ; // line reset
84
input        line_clk              ; // line clock
85 2 dinesha
 
86
//-------------------------------------
87
// Configuration 
88
// -------------------------------------
89
input         cfg_tx_enable        ; // Tx Enable
90
input         cfg_rx_enable        ; // Rx Enable
91
input         cfg_stop_bit         ; // 0 -> 1 Stop, 1 -> 2 Stop
92
input   [1:0] cfg_pri_mod          ; // priority mode, 0 -> nop, 1 -> Even, 2 -> Odd
93
input   [11:0] cfg_baud_16x        ; // 16x Baud clock generation
94
 
95
//--------------------------------------
96
// ERROR Indication
97
// -------------------------------------
98
output        frm_error            ; // framing error
99
output        par_error            ; // par error
100
 
101
output        baud_clk_16x         ; // 16x Baud clock
102
 
103
 
104
//-------------------------------------
105
// Line Interface
106
// -------------------------------------
107
input         rxd                  ; // uart rxd
108
output        txd                  ; // uart txd
109
 
110
//-------------------------------------
111
// Spi I/F
112
//-------------------------------------
113
output              sck            ; // clock out
114
output              so             ; // serial data out
115
input               si             ; // serial data in
116
output [3:0]        cs_n           ; // cs_n
117
//---------------------------------------
118
// Control Unit interface
119
// --------------------------------------
120
 
121 6 dinesha
wire  [15:0] reg_addr              ; // Register Address
122
wire  [31:0]  reg_wdata            ; // Register Wdata
123
wire         reg_req               ; // Register Request
124
wire         reg_wr                ; // 1 -> write; 0 -> read
125
wire          reg_ack              ; // Register Ack
126
wire   [31:0] reg_rdata            ;
127 2 dinesha
//--------------------------------------
128
// TXD Path
129
// -------------------------------------
130 6 dinesha
wire         tx_data_avail         ; // Indicate valid TXD Data 
131
wire [7:0]   tx_data               ; // TXD Data to be transmited
132
wire        tx_rd                  ; // Indicate TXD Data Been Read
133 2 dinesha
 
134
 
135
//--------------------------------------
136
// RXD Path
137
// -------------------------------------
138 6 dinesha
wire         rx_ready              ; // Indicate Ready to accept the Read Data
139
wire [7:0]  rx_data                ; // RXD Data 
140
wire        rx_wr                  ; // Valid RXD Data
141 2 dinesha
 
142
spi_core  u_spi (
143
 
144
             .clk                (baud_clk_16x),
145
             .reset_n            (line_reset_n),
146
 
147
        // Reg Bus Interface Signal
148
             .reg_cs             (reg_req      ),
149
             .reg_wr             (reg_wr       ),
150
             .reg_addr           (reg_addr[5:2]),
151
             .reg_wdata          (reg_wdata    ),
152
             .reg_be             (4'b1111      ),
153
 
154
            // Outputs
155
            .reg_rdata           (reg_rdata    ),
156
            .reg_ack             (reg_ack      ),
157
 
158
          // line interface
159
               .sck              (sck          ),
160
               .so               (so           ),
161
               .si               (si           ),
162
               .cs_n             (cs_n         )
163
 
164
           );
165
 
166
 uart_core u_core (
167
          .line_reset_n       (line_reset_n) ,
168
          .line_clk           (line_clk) ,
169
 
170
        // configuration control
171
          .cfg_tx_enable      (cfg_tx_enable) ,
172
          .cfg_rx_enable      (cfg_rx_enable) ,
173 6 dinesha
          .cfg_stop_bit       (cfg_stop_bit)  ,
174
          .cfg_pri_mod        (cfg_pri_mod)   ,
175
          .cfg_baud_16x       (cfg_baud_16x)  ,
176 2 dinesha
 
177
    // TXD Information
178
          .tx_data_avail      (tx_data_avail) ,
179 6 dinesha
          .tx_rd              (tx_rd)         ,
180
          .tx_data            (tx_data)       ,
181 2 dinesha
 
182
 
183
    // RXD Information
184 6 dinesha
          .rx_ready           (rx_ready)      ,
185
          .rx_wr              (rx_wr)         ,
186
          .rx_data            (rx_data)       ,
187 2 dinesha
 
188
       // Status information
189
          .frm_error          (frm_error) ,
190
          .par_error          (par_error) ,
191
 
192
          .baud_clk_16x       (baud_clk_16x) ,
193
 
194
       // Line Interface
195
          .rxd                (rxd) ,
196
          .txd                (txd)
197
 
198
     );
199
 
200
 
201
 
202
uart_msg_handler u_msg (
203
          .reset_n            (line_reset_n ) ,
204
          .sys_clk            (baud_clk_16x ) ,
205
 
206
 
207
    // UART-TX Information
208
          .tx_data_avail      (tx_data_avail) ,
209
          .tx_rd              (tx_rd) ,
210
          .tx_data            (tx_data) ,
211
 
212
 
213
    // UART-RX Information
214
          .rx_ready           (rx_ready) ,
215
          .rx_wr              (rx_wr) ,
216
          .rx_data            (rx_data) ,
217
 
218
      // Towards Control Unit
219
          .reg_addr          (reg_addr),
220
          .reg_wr            (reg_wr),
221
          .reg_wdata         (reg_wdata),
222
          .reg_req           (reg_req),
223
          .reg_ack           (reg_ack),
224
          .reg_rdata         (reg_rdata)
225
 
226
     );
227
 
228
endmodule

powered by: WebSVN 2.1.0

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