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

Subversion Repositories uart16550

[/] [uart16550/] [tags/] [initial/] [verilog/] [UART_top.v] - Diff between revs 3 and 106

Only display areas with differences | Details | Blame | View Log

Rev 3 Rev 106
// UART Wishbone-compatible core top level 
// UART Wishbone-compatible core top level 
//
//
// Author: Jacob Gorban   (jacob.gorban@flextronicssemi.com)
// Author: Jacob Gorban   (jacob.gorban@flextronicssemi.com)
// Company: Flextronics Semiconductor
// Company: Flextronics Semiconductor
//
//
// Releases:
// Releases:
//              1.1     First release
//              1.1     First release
//
//
 
 
`include "timescale.v"
`include "timescale.v"
`include "UART_defines.v"
`include "UART_defines.v"
 
 
module UART_top (
module UART_top (
        clk,
        clk,
 
 
        // Wishbone signals
        // Wishbone signals
        wb_rst_i, wb_addr_i, wb_dat_i, wb_dat_o, wb_we_i, wb_stb_i, wb_cyc_i, wb_ack_o,
        wb_rst_i, wb_addr_i, wb_dat_i, wb_dat_o, wb_we_i, wb_stb_i, wb_cyc_i, wb_ack_o,
        int_o, // interrupt request
        int_o, // interrupt request
 
 
        // UART signals
        // UART signals
        // serial input/output
        // serial input/output
        stx_o, srx_i,
        stx_o, srx_i,
 
 
        // modem signals
        // modem signals
        rts_o, cts_i, dtr_o, dsr_i, ri_i, dcd_i
        rts_o, cts_i, dtr_o, dsr_i, ri_i, dcd_i
 
 
        );
        );
 
 
 
 
input           clk;
input           clk;
 
 
// WISHBONE interface
// WISHBONE interface
input           wb_rst_i;
input           wb_rst_i;
input   [`ADDR_WIDTH-1:0]        wb_addr_i;
input   [`ADDR_WIDTH-1:0]        wb_addr_i;
input   [7:0]    wb_dat_i;
input   [7:0]    wb_dat_i;
output  [7:0]    wb_dat_o;
output  [7:0]    wb_dat_o;
input           wb_we_i;
input           wb_we_i;
input           wb_stb_i;
input           wb_stb_i;
input           wb_cyc_i;
input           wb_cyc_i;
output          wb_ack_o;
output          wb_ack_o;
output          int_o;
output          int_o;
 
 
// UART signals
// UART signals
input           srx_i;
input           srx_i;
output          stx_o;
output          stx_o;
output          rts_o;
output          rts_o;
input           cts_i;
input           cts_i;
output          dtr_o;
output          dtr_o;
input           dsr_i;
input           dsr_i;
input           ri_i;
input           ri_i;
input           dcd_i;
input           dcd_i;
 
 
wire            stx_o;
wire            stx_o;
wire            rts_o;
wire            rts_o;
wire            dtr_o;
wire            dtr_o;
 
 
wire    [`ADDR_WIDTH-1:0]        wb_addr_i;
wire    [`ADDR_WIDTH-1:0]        wb_addr_i;
wire    [7:0]    wb_dat_i;
wire    [7:0]    wb_dat_i;
wire    [7:0]    wb_dat_o;
wire    [7:0]    wb_dat_o;
 
 
wire            we_o;   // Write enable for registers
wire            we_o;   // Write enable for registers
 
 
wire    [3:0]    ier;
wire    [3:0]    ier;
wire    [7:0]    iir;
wire    [7:0]    iir;
wire    [3:0]    fcr;  /// bits 7,6,2,1 of fcr. Other bits are ignored
wire    [3:0]    fcr;  /// bits 7,6,2,1 of fcr. Other bits are ignored
wire    [4:0]    mcr;
wire    [4:0]    mcr;
wire    [7:0]    lcr;
wire    [7:0]    lcr;
wire    [7:0]    lsr;
wire    [7:0]    lsr;
wire    [7:0]    msr;
wire    [7:0]    msr;
wire    [31:0]   dl;  // 32-bit divisor latch
wire    [31:0]   dl;  // 32-bit divisor latch
 
 
wire            enable;
wire            enable;
 
 
//
//
// MODULE INSTANCES
// MODULE INSTANCES
//
//
 
 
////  WISHBONE interface module
////  WISHBONE interface module
UART_wb         wb_interface(
UART_wb         wb_interface(
                .clk(           clk             ),
                .clk(           clk             ),
                .wb_rst_i(      wb_rst_i        ),
                .wb_rst_i(      wb_rst_i        ),
//              .wb_dat_i(      wb_dat_i        ),
//              .wb_dat_i(      wb_dat_i        ),
//              .wb_dat_o(      wb_dat_o        ),
//              .wb_dat_o(      wb_dat_o        ),
                .wb_we_i(       wb_we_i         ),
                .wb_we_i(       wb_we_i         ),
                .wb_stb_i(      wb_stb_i        ),
                .wb_stb_i(      wb_stb_i        ),
                .wb_cyc_i(      wb_cyc_i        ),
                .wb_cyc_i(      wb_cyc_i        ),
                .wb_ack_o(      wb_ack_o        ),
                .wb_ack_o(      wb_ack_o        ),
//              .int_o(         int_o           ),
//              .int_o(         int_o           ),
                .we_o(          we_o            )
                .we_o(          we_o            )
                );
                );
 
 
// Registers
// Registers
UART_regs       regs(
UART_regs       regs(
                .clk(           clk             ),
                .clk(           clk             ),
                .wb_rst_i(      wb_rst_i        ),
                .wb_rst_i(      wb_rst_i        ),
                .wb_addr_i(     wb_addr_i       ),
                .wb_addr_i(     wb_addr_i       ),
                .wb_dat_i(      wb_dat_i        ),
                .wb_dat_i(      wb_dat_i        ),
                .wb_dat_o(      wb_dat_o        ),
                .wb_dat_o(      wb_dat_o        ),
                .wb_we_i(       we_o            ),
                .wb_we_i(       we_o            ),
                .ier(           ier             ),
                .ier(           ier             ),
                .iir(           iir             ),
                .iir(           iir             ),
                .fcr(           fcr             ),
                .fcr(           fcr             ),
                .mcr(           mcr             ),
                .mcr(           mcr             ),
                .lcr(           lcr             ),
                .lcr(           lcr             ),
                .lsr(           lsr             ),
                .lsr(           lsr             ),
                .msr(           msr             ),
                .msr(           msr             ),
                .dl(            dl              ),
                .dl(            dl              ),
                .modem_inputs(  {cts_i, dsr_i,
                .modem_inputs(  {cts_i, dsr_i,
                                 ri_i,  dcd_i}  ),
                                 ri_i,  dcd_i}  ),
                .stx_o(         stx_o           ),
                .stx_o(         stx_o           ),
                .srx_i(         srx_i           ),
                .srx_i(         srx_i           ),
                .enable(        enable          ),
                .enable(        enable          ),
                .rts_o(         rts_o           ),
                .rts_o(         rts_o           ),
                .dtr_o(         dtr_o           )
                .dtr_o(         dtr_o           )
                );
                );
 
 
endmodule
endmodule
 
 

powered by: WebSVN 2.1.0

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