source: XOpenSparcT1/trunk/OC-UART/uart_sync_flops.v @ 6

Revision 6, 5.5 KB checked in by pntsvt00, 13 years ago (diff)

versione iniziale opensparc

Line 
1//////////////////////////////////////////////////////////////////////
2////                                                              ////
3////  uart_sync_flops.v                                             ////
4////                                                              ////
5////                                                              ////
6////  This file is part of the "UART 16550 compatible" project    ////
7////  http://www.opencores.org/cores/uart16550/                   ////
8////                                                              ////
9////  Documentation related to this project:                      ////
10////  - http://www.opencores.org/cores/uart16550/                 ////
11////                                                              ////
12////  Projects compatibility:                                     ////
13////  - WISHBONE                                                  ////
14////  RS232 Protocol                                              ////
15////  16550D uart (mostly supported)                              ////
16////                                                              ////
17////  Overview (main Features):                                   ////
18////  UART core receiver logic                                    ////
19////                                                              ////
20////  Known problems (limits):                                    ////
21////  None known                                                  ////
22////                                                              ////
23////  To Do:                                                      ////
24////  Thourough testing.                                          ////
25////                                                              ////
26////  Author(s):                                                  ////
27////      - Andrej Erzen (andreje@flextronics.si)                 ////
28////      - Tadej Markovic (tadejm@flextronics.si)                ////
29////                                                              ////
30////  Created:        2004/05/20                                  ////
31////  Last Updated:   2004/05/20                                  ////
32////                  (See log for the revision history)          ////
33////                                                              ////
34////                                                              ////
35//////////////////////////////////////////////////////////////////////
36////                                                              ////
37//// Copyright (C) 2000, 2001 Authors                             ////
38////                                                              ////
39//// This source file may be used and distributed without         ////
40//// restriction provided that this copyright statement is not    ////
41//// removed from the file and that any derivative work contains  ////
42//// the original copyright notice and the associated disclaimer. ////
43////                                                              ////
44//// This source file is free software; you can redistribute it   ////
45//// and/or modify it under the terms of the GNU Lesser General   ////
46//// Public License as published by the Free Software Foundation; ////
47//// either version 2.1 of the License, or (at your option) any   ////
48//// later version.                                               ////
49////                                                              ////
50//// This source is distributed in the hope that it will be       ////
51//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
52//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
53//// PURPOSE.  See the GNU Lesser General Public License for more ////
54//// details.                                                     ////
55////                                                              ////
56//// You should have received a copy of the GNU Lesser General    ////
57//// Public License along with this source; if not, download it   ////
58//// from http://www.opencores.org/lgpl.shtml                     ////
59////                                                              ////
60//////////////////////////////////////////////////////////////////////
61//
62// CVS Revision History
63//
64// $Log: not supported by cvs2svn $
65//
66
67
68`include "timescale.v"
69
70
71module uart_sync_flops
72(
73  // internal signals
74  rst_i,
75  clk_i,
76  stage1_rst_i,
77  stage1_clk_en_i,
78  async_dat_i,
79  sync_dat_o
80);
81
82parameter Tp            = 1;
83parameter width         = 1;
84parameter init_value    = 1'b0;
85
86input                           rst_i;                  // reset input
87input                           clk_i;                  // clock input
88input                           stage1_rst_i;           // synchronous reset for stage 1 FF
89input                           stage1_clk_en_i;        // synchronous clock enable for stage 1 FF
90input   [width-1:0]             async_dat_i;            // asynchronous data input
91output  [width-1:0]             sync_dat_o;             // synchronous data output
92
93
94//
95// Interal signal declarations
96//
97
98reg     [width-1:0]             sync_dat_o;
99reg     [width-1:0]             flop_0;
100
101
102// first stage
103always @ (posedge clk_i or posedge rst_i)
104begin
105    if (rst_i)
106        flop_0 <= #Tp {width{init_value}};
107    else
108        flop_0 <= #Tp async_dat_i;   
109end
110
111// second stage
112always @ (posedge clk_i or posedge rst_i)
113begin
114    if (rst_i)
115        sync_dat_o <= #Tp {width{init_value}};
116    else if (stage1_rst_i)
117        sync_dat_o <= #Tp {width{init_value}};
118    else if (stage1_clk_en_i)
119        sync_dat_o <= #Tp flop_0;       
120end
121
122endmodule
Note: See TracBrowser for help on using the repository browser.