// 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
|
|
|