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

Subversion Repositories ata

[/] [ata/] [trunk/] [rtl/] [verilog/] [ocidec-1/] [ro_cnt.v] - Blame information for rev 15

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

Line No. Rev Author Line
1 15 rherveille
//
2
// Counter.v, contains 1) run-once down-counter  2) general purpose up-down riple-carry counter
3
//
4
// Author: Richard Herveille
5
// Rev. 1.0 June 27th, 2001. Initial Verilog release
6
// Rev. 1.1 July  2nd, 2001. Fixed incomplete port list.
7
//
8
 
9
///////////////////////////
10
// run-once down-counter //
11
///////////////////////////
12
 
13
// counts D+1 cycles before generating 'DONE'
14
 
15
`include "timescale.v"
16
 
17
module ro_cnt (clk, nReset, rst, cnt_en, go, done, d, q, id);
18
        // parameter declaration
19
        parameter SIZE = 8;
20
        // inputs & outputs
21
        input  clk;           // master clock
22
        input  nReset;        // asynchronous active low reset
23
        input  rst;           // synchronous active high reset
24
        input  cnt_en;        // count enable
25
        input  go;            // load counter and start sequence
26
        output done;          // done counting
27
        input  [SIZE-1:0] d;  // load counter value
28
        output [SIZE-1:0] q;  // current counter value
29
        input  [SIZE-1:0] id; // initial data after reset
30
 
31
        // variable declarations
32
        reg rci;
33
        wire nld, rco;
34
 
35
        //
36
        // module body
37
        //
38
 
39
        always@(posedge clk or negedge nReset)
40
                if (~nReset)
41
                        rci <= #1 1'b0;
42
                else if (rst)
43
                        rci <= #1 1'b0;
44
                else if (cnt_en)
45
                        rci <= #1 (go | rci) & !rco;
46
 
47
        assign nld = !go;
48
 
49
        // hookup counter
50
        ud_cnt #(SIZE) cnt (.clk(clk), .nReset(nReset), .rst(rst), .cnt_en(cnt_en),
51
                .ud(1'b0), .nld(nld), .d(d), .q(q), .resd(id), .rci(rci), .rco(rco));
52
 
53
        // assign outputs
54
        assign done = rco;
55
endmodule

powered by: WebSVN 2.1.0

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