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

Subversion Repositories w11

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

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 36 wfjm
-- $Id: serport_uart_rxtx_ab.vhd 774 2016-06-12 17:08:47Z mueller $
2 2 wfjm
--
3 35 wfjm
-- Copyright 2007-2016 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 36 wfjm
-- Tool versions:  ise 8.2-14.7; viv 2014.4-2016.2; ghdl 0.18-0.33
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 36 wfjm
-- NOTE: for test bench usage a copy of all serport_* entities, with _tb
37
-- !!!!  appended to the name, has been created in the /tb sub folder.
38
-- !!!!  Ensure to update the copy when this file is changed !!
39 2 wfjm
 
40
library ieee;
41
use ieee.std_logic_1164.all;
42 13 wfjm
use ieee.numeric_std.all;
43 2 wfjm
 
44
use work.slvtypes.all;
45 19 wfjm
use work.serportlib.all;
46 2 wfjm
 
47
entity serport_uart_rxtx_ab is          -- serial port uart: rx+tx+autobaud
48
  generic (
49
    CDWIDTH : positive := 13;           -- clk divider width
50
    CDINIT: natural := 15);             -- clk divider initial/reset setting
51
  port (
52
    CLK : in slbit;                     -- clock
53
    CE_MSEC : in slbit;                 -- 1 msec clock enable
54
    RESET : in slbit;                   -- reset
55
    RXSD : in slbit;                    -- receive serial data (uart view)
56
    RXDATA : out slv8;                  -- receiver data out
57
    RXVAL : out slbit;                  -- receiver data valid
58
    RXERR : out slbit;                  -- receiver data error (frame error)
59
    RXACT : out slbit;                  -- receiver active
60
    TXSD : out slbit;                   -- transmit serial data (uart view)
61
    TXDATA : in slv8;                   -- transmit data in
62
    TXENA : in slbit;                   -- transmit data enable
63
    TXBUSY : out slbit;                 -- transmit busy
64
    ABACT : out slbit;                  -- autobaud active; if 1 clkdiv invalid
65 9 wfjm
    ABDONE : out slbit;                 -- autobaud resync done
66 29 wfjm
    ABCLKDIV : out slv(CDWIDTH-1 downto 0); -- autobaud clock divider setting
67
    ABCLKDIV_F : out slv3                   -- autobaud clock divider fraction
68 2 wfjm
  );
69
end serport_uart_rxtx_ab;
70
 
71
architecture syn of serport_uart_rxtx_ab is
72
 
73 13 wfjm
  signal CLKDIV : slv(CDWIDTH-1 downto 0) := slv(to_unsigned(0, CDWIDTH));
74 29 wfjm
  signal CLKDIV_F : slv3 := (others=>'0');
75 2 wfjm
  signal ABACT_L : slbit := '0';        -- local readable copy of ABACT
76
  signal UART_RESET : slbit := '0';
77
 
78
begin
79
 
80
  AB : serport_uart_autobaud
81
    generic map (
82
      CDWIDTH => CDWIDTH,
83
      CDINIT  => CDINIT)
84
    port map (
85 29 wfjm
      CLK      => CLK,
86
      CE_MSEC  => CE_MSEC,
87
      RESET    => RESET,
88
      RXSD     => RXSD,
89
      CLKDIV   => CLKDIV,
90
      CLKDIV_F => CLKDIV_F,
91
      ACT      => ABACT_L,
92
      DONE     => ABDONE
93 2 wfjm
    );
94
 
95
  UART_RESET <= ABACT_L or RESET;
96
  ABACT      <= ABACT_L;
97 9 wfjm
  ABCLKDIV   <= CLKDIV;
98 29 wfjm
  ABCLKDIV_F <= CLKDIV_F;
99
 
100 2 wfjm
  RXTX : serport_uart_rxtx
101
    generic map (
102
      CDWIDTH => CDWIDTH)
103
    port map (
104
      CLK    => CLK,
105
      RESET  => UART_RESET,
106
      CLKDIV => CLKDIV,
107
      RXSD   => RXSD,
108
      RXDATA => RXDATA,
109
      RXVAL  => RXVAL,
110
      RXERR  => RXERR,
111
      RXACT  => RXACT,
112
      TXSD   => TXSD,
113
      TXDATA => TXDATA,
114
      TXENA  => TXENA,
115
      TXBUSY => TXBUSY
116
    );
117
 
118
end syn;

powered by: WebSVN 2.1.0

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