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] - Rev 7

Compare with Previous | Blame | View Log

//////////////////////////////////////////////////////////////////////////////////
// Company:         
// Engineer:        IK
// 
// Create Date:     11:35:01 03/21/2013 
// Design Name:     
// Module Name:     wb_uart_top
// Project Name:    
// Target Devices:  
// Tool versions:   
// Description:     
//                  
//                  
//                  WBS mem-map:
//                      
//                      
//                  
//                  
// Revision: 
// Revision 0.01 - File Created, 
//
//////////////////////////////////////////////////////////////////////////////////
`timescale 1ns / 1ps

module wb_uart_top #
(
    parameter p_FDEPTH  = 0,    // fifo-depth
    parameter p_FREQ    = 0,    // input clk-freq
    parameter p_BAUD    = 0     // uaart baud-rate
)
(
    // SYS_CON
    input   i_clk,
    input   i_srst,
    // WBS      [i_clk]
    input   [ 3:0]  iv_wbs_adr, // byte-addr
    input   [31:0]  iv_wbs_dat,
    input           i_wbs_we,
    input           i_wbs_stb,
    input   [ 3:0]  iv_wbs_sel, // NC, for now
    input           i_wbs_cyc,
    output  [31:0]  ov_wbs_dat,
    output          o_wbs_ack,
    // UART     [async]
    input           i_uart_rxd,
    output  reg     o_uart_txd
);
//////////////////////////////////////////////////////////////////////////////////
    // ctrl
    wire            s_ctrl_utx_start;
    wire    [ 7:0]  s_ctrl_utx_data;
    wire            s_ctrl_rfifo_rd;
    // sts
    wire            s_sts_utx_busy;
    wire            s_sts_rfifo_ef;
    wire    [ 7:0]  sv_sts_rfifo_data;
    // U_RX-if
    wire            s_urx_ready;
    wire    [ 7:0]  sv_urx_data;
    // U_TX
    wire            s_uart_txd;
    
//////////////////////////////////////////////////////////////////////////////////
//
// WBS
//
wb_uart_slv         U_WBS
(
// SYS_CON
.i_clk              (i_clk),
.i_srst             (i_srst),
// WBS
.iv_wbs_adr         (iv_wbs_adr), // byte-addr
.iv_wbs_dat         (iv_wbs_dat),
.i_wbs_we           (i_wbs_we),
.i_wbs_stb          (i_wbs_stb),
.iv_wbs_sel         (iv_wbs_sel),
.i_wbs_cyc          (i_wbs_cyc),
.ov_wbs_dat         (ov_wbs_dat),
.o_wbs_ack          (o_wbs_ack),
// out-ctrl
.o_ctrl_utx_start   (s_ctrl_utx_start),
.o_ctrl_utx_data    (s_ctrl_utx_data),
.o_ctrl_rfifo_rd    (s_ctrl_rfifo_rd),
// in-sts
.i_sts_utx_busy     (s_sts_utx_busy),
.i_sts_rfifo_ef     (s_sts_rfifo_ef),
.iv_sts_rfifo_data  (sv_sts_rfifo_data)
);
//////////////////////////////////////////////////////////////////////////////////
//
// RX-FIFO
//
wb_uart_mscfifo     #(8, $clog2(p_FDEPTH)) //  p_DW, p_AW
                    U_RFIFO
(
// SYS_CON
.i_clk              (i_clk),
.i_arst             (i_srst),
// DIN
.i_wr               (s_urx_ready),
.iv_data            (sv_urx_data),
// DOUT
.i_rd               (s_ctrl_rfifo_rd),
.ov_data            (sv_sts_rfifo_data),
// STS-OUT
.ov_count           (),
.o_full             (),
.o_empty            (s_sts_rfifo_ef)
);
//////////////////////////////////////////////////////////////////////////////////
//
// UART modules
//
async_transmitter   #(p_FREQ, p_BAUD) // ClkFrequency, Baud
                    U_TX
(
// SYS_CON
.clk                (i_clk),
// if
.TxD_start          (s_ctrl_utx_start),
.TxD_data           (s_ctrl_utx_data),
.TxD_busy           (s_sts_utx_busy),
// out
.TxD                (s_uart_txd) // output == LUT-out
);
always @(posedge i_clk) // top-output == REG-out
    o_uart_txd <= s_uart_txd;

async_receiver      #(p_FREQ, p_BAUD) // ClkFrequency, Baud
                    U_RX
(
// SYS_CON
.clk                (i_clk),
// if
.RxD_data_ready     (s_urx_ready),
.RxD_data           (sv_urx_data),
// in
.RxD                (i_uart_rxd),
// nc
.RxD_idle           (),
.RxD_endofpacket    ()
);
//////////////////////////////////////////////////////////////////////////////////
endmodule

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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