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

Subversion Repositories w11

[/] [w11/] [tags/] [w11a_V0.7/] [rtl/] [vlib/] [serport/] [serport_uart_rxtx_ab.vhd] - Blame information for rev 33

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 30 wfjm
-- $Id: serport_uart_rxtx_ab.vhd 666 2015-04-12 21:17:54Z mueller $
2 2 wfjm
--
3 29 wfjm
-- Copyright 2007-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
4 2 wfjm
--
5
-- This program is free software; you may redistribute and/or modify it under
6
-- the terms of the GNU General Public License as published by the Free
7
-- Software Foundation, either version 2, or at your option any later version.
8
--
9
-- This program is distributed in the hope that it will be useful, but
10
-- WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
11
-- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12
-- for complete details.
13
--
14
------------------------------------------------------------------------------
15
-- Module Name:    serport_uart_rxtx_ab - syn
16
-- Description:    serial port UART - transmitter-receiver + autobauder
17
--
18
-- Dependencies:   serport_uart_autobaud
19
--                 serport_uart_rxtx
20
-- Test bench:     -
21
-- Target Devices: generic
22 29 wfjm
-- Tool versions:  ise 8.2-14.7; viv 2014.4; ghdl 0.18-0.31
23 9 wfjm
--
24
-- Synthesized (xst):
25
-- Date         Rev  ise         Target      flop lutl lutm slic t peri
26 30 wfjm
-- 2015-04-12   666 14.7  131013 xc6slx16-2   100  142    0   48 s  6.2
27 9 wfjm
-- 2010-12-25   348 12.1    M53d xc3s1000-4    99  197    -  124 s  9.8
28
--
29 2 wfjm
-- Revision History: 
30
-- Date         Rev Version  Comment
31 29 wfjm
-- 2015-02-01   641   1.2    add CLKDIV_F for autobaud;
32 13 wfjm
-- 2011-10-22   417   1.1.1  now numeric_std clean
33 9 wfjm
-- 2010-12-26   348   1.1    add ABCLKDIV port for clock divider setting
34 2 wfjm
-- 2007-06-24    60   1.0    Initial version 
35
------------------------------------------------------------------------------
36
 
37
library ieee;
38
use ieee.std_logic_1164.all;
39 13 wfjm
use ieee.numeric_std.all;
40 2 wfjm
 
41
use work.slvtypes.all;
42 19 wfjm
use work.serportlib.all;
43 2 wfjm
 
44
entity serport_uart_rxtx_ab is          -- serial port uart: rx+tx+autobaud
45
  generic (
46
    CDWIDTH : positive := 13;           -- clk divider width
47
    CDINIT: natural := 15);             -- clk divider initial/reset setting
48
  port (
49
    CLK : in slbit;                     -- clock
50
    CE_MSEC : in slbit;                 -- 1 msec clock enable
51
    RESET : in slbit;                   -- reset
52
    RXSD : in slbit;                    -- receive serial data (uart view)
53
    RXDATA : out slv8;                  -- receiver data out
54
    RXVAL : out slbit;                  -- receiver data valid
55
    RXERR : out slbit;                  -- receiver data error (frame error)
56
    RXACT : out slbit;                  -- receiver active
57
    TXSD : out slbit;                   -- transmit serial data (uart view)
58
    TXDATA : in slv8;                   -- transmit data in
59
    TXENA : in slbit;                   -- transmit data enable
60
    TXBUSY : out slbit;                 -- transmit busy
61
    ABACT : out slbit;                  -- autobaud active; if 1 clkdiv invalid
62 9 wfjm
    ABDONE : out slbit;                 -- autobaud resync done
63 29 wfjm
    ABCLKDIV : out slv(CDWIDTH-1 downto 0); -- autobaud clock divider setting
64
    ABCLKDIV_F : out slv3                   -- autobaud clock divider fraction
65 2 wfjm
  );
66
end serport_uart_rxtx_ab;
67
 
68
architecture syn of serport_uart_rxtx_ab is
69
 
70 13 wfjm
  signal CLKDIV : slv(CDWIDTH-1 downto 0) := slv(to_unsigned(0, CDWIDTH));
71 29 wfjm
  signal CLKDIV_F : slv3 := (others=>'0');
72 2 wfjm
  signal ABACT_L : slbit := '0';        -- local readable copy of ABACT
73
  signal UART_RESET : slbit := '0';
74
 
75
begin
76
 
77
  AB : serport_uart_autobaud
78
    generic map (
79
      CDWIDTH => CDWIDTH,
80
      CDINIT  => CDINIT)
81
    port map (
82 29 wfjm
      CLK      => CLK,
83
      CE_MSEC  => CE_MSEC,
84
      RESET    => RESET,
85
      RXSD     => RXSD,
86
      CLKDIV   => CLKDIV,
87
      CLKDIV_F => CLKDIV_F,
88
      ACT      => ABACT_L,
89
      DONE     => ABDONE
90 2 wfjm
    );
91
 
92
  UART_RESET <= ABACT_L or RESET;
93
  ABACT      <= ABACT_L;
94 9 wfjm
  ABCLKDIV   <= CLKDIV;
95 29 wfjm
  ABCLKDIV_F <= CLKDIV_F;
96
 
97 2 wfjm
  RXTX : serport_uart_rxtx
98
    generic map (
99
      CDWIDTH => CDWIDTH)
100
    port map (
101
      CLK    => CLK,
102
      RESET  => UART_RESET,
103
      CLKDIV => CLKDIV,
104
      RXSD   => RXSD,
105
      RXDATA => RXDATA,
106
      RXVAL  => RXVAL,
107
      RXERR  => RXERR,
108
      RXACT  => RXACT,
109
      TXSD   => TXSD,
110
      TXDATA => TXDATA,
111
      TXENA  => TXENA,
112
      TXBUSY => TXBUSY
113
    );
114
 
115
end syn;

powered by: WebSVN 2.1.0

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