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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [orpsocv2/] [rtl/] [verilog/] [clkgen/] [clkgen.v] - Blame information for rev 362

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 361 julius
//////////////////////////////////////////////////////////////////////
2
//
3
// clkgen
4
//
5
// Handles clock and reset generation for rest of design
6
//
7
//
8
//////////////////////////////////////////////////////////////////////
9
////                                                              ////
10
//// Copyright (C) 2009, 2010 Authors and OPENCORES.ORG           ////
11
////                                                              ////
12
//// This source file may be used and distributed without         ////
13
//// restriction provided that this copyright statement is not    ////
14
//// removed from the file and that any derivative work contains  ////
15
//// the original copyright notice and the associated disclaimer. ////
16
////                                                              ////
17
//// This source file is free software; you can redistribute it   ////
18
//// and/or modify it under the terms of the GNU Lesser General   ////
19
//// Public License as published by the Free Software Foundation; ////
20
//// either version 2.1 of the License, or (at your option) any   ////
21
//// later version.                                               ////
22
////                                                              ////
23
//// This source is distributed in the hope that it will be       ////
24
//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
25
//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
26
//// PURPOSE.  See the GNU Lesser General Public License for more ////
27
//// details.                                                     ////
28
////                                                              ////
29
//// You should have received a copy of the GNU Lesser General    ////
30
//// Public License along with this source; if not, download it   ////
31
//// from http://www.opencores.org/lgpl.shtml                     ////
32
////                                                              ////
33
//////////////////////////////////////////////////////////////////////
34
//
35
// A simple implementation for the main generic ORPSoC simulations
36
//
37
 
38
`include "timescale.v"
39
`include "orpsoc-defines.v"
40
 
41
module clkgen
42
  (
43
   // Main clocks in, depending on board
44
   clk_pad_i,
45
 
46
   // Wishbone clock and reset out  
47
   wb_clk_o,
48
   wb_rst_o,
49
 
50
   // JTAG clock
51
`ifdef JTAG_DEBUG
52
   tck_pad_i,
53
   dbg_tck_o,
54
`endif
55
 
56
   // Asynchronous, active low reset in
57
   rst_n_pad_i
58
 
59
   );
60
 
61
   input clk_pad_i;
62
 
63
   output wb_rst_o;
64
   output wb_clk_o;
65
 
66
`ifdef JTAG_DEBUG
67
   input  tck_pad_i;
68
   output dbg_tck_o;
69
`endif
70
 
71
   // Asynchronous, active low reset (pushbutton, typically)
72
   input  rst_n_pad_i;
73
 
74
   // First, deal with the asychronous reset
75
   wire   async_rst;
76
   wire   async_rst_n;
77
 
78
   // An input buffer is usually instantiated here
79
   assign async_rst_n = rst_n_pad_i;
80
 
81
   // Everyone likes active-high reset signals...
82
   assign async_rst = ~async_rst_n;
83
 
84
`ifdef JTAG_DEBUG
85
   assign dbg_tck_o = tck_pad_i;
86
`endif
87
 
88
   //
89
   // Declare synchronous reset wires here
90
   //
91
 
92
   // An active-low synchronous reset signal (usually a PLL lock signal)
93
   wire   sync_rst_n;
94 362 julius
   assign sync_rst_n  = async_rst_n; // Pretend it's somehow synchronous now
95 361 julius
 
96
 
97
   // Here we just assign "board" clock (really test) to wishbone clock
98
   assign wb_clk_o = clk_pad_i;
99
 
100
   //
101
   // Reset generation
102
   //
103
   //
104
 
105
   // Reset generation for wishbone
106
   reg [15:0]       wb_rst_shr;
107
   always @(posedge wb_clk_o or posedge async_rst)
108
     if (async_rst)
109
       wb_rst_shr <= 16'hffff;
110
     else
111
       wb_rst_shr <= {wb_rst_shr[14:0], ~(sync_rst_n)};
112
 
113
   assign wb_rst_o = wb_rst_shr[15];
114
 
115
endmodule // clkgen

powered by: WebSVN 2.1.0

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