]> git.ozlabs.org Git - minimigmac.git/blob - fpga/sim_clocks.v
Add GPL v2
[minimigmac.git] / fpga / sim_clocks.v
1 `timescale 1ns / 100ps
2
3 /*
4  * Generate clocks for simulation
5  * 
6  * We generate:
7  * 
8  *   - sysclk16 at 16.6666Mhz (60ns)
9  *   - sysclk33 at 33.3333Mhz (30ns)
10  * 
11  */
12 module clockgen(input           mclk, /* ignored */
13                 output reg      sysclk16,
14                 output reg      sysclk33,
15                 output reg      pixclk);
16
17         initial begin
18                 sysclk16 = 0;
19                 sysclk33 = 0;
20                 pixclk = 0;             
21         end
22
23         always begin
24                 #30 sysclk16 = ~sysclk16;
25         end
26         always begin
27                 #15 sysclk33 = ~sysclk33;
28         end
29         always begin
30                 #20 pixclk = ~pixclk;
31         end
32 endmodule
33
34 /* The xilinx OFDDRCPE IO module is simulated here for iverilog */
35 module OFDDRCPE
36 (
37         output          Q,
38         input           C0,
39         input           C1,
40         input           CE,
41         input           CLR,
42         input           D0,
43         input           D1,
44         input           PRE
45 );
46         reg             c = 0;
47
48         assign Q = c == 0 ? D0 : D1;
49
50         always@(posedge C0 or posedge C1 or posedge CLR or posedge PRE) begin
51                 if (CLR)
52                   c = 0;
53                 else if (PRE)
54                   c = 1;
55                 else if (CE) begin
56                         if (C0)
57                           c = 0;
58                         else if (C1)
59                           c = 1;                        
60                 end             
61         end             
62 endmodule