-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathemugen.v
60 lines (57 loc) · 1.46 KB
/
emugen.v
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: ITEP
// Engineer: SvirLex
//
// Create Date: 00:17:19 03/29/2022
// Design Name: timecnt
// Module Name: emugen
// Project Name: drift4spascharm
// Target Devices: xc3s400-4pq208
// Tool versions:
// Description: Emulates trigger signal and cycle
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module emugen(
input clk, // 40 MHz
input enable, // Emulation signal enable
output reg trigger = 1 // resulting trigger signal
);
parameter period = 40000; // trigger period in 40 MHz clock = 1 ms
parameter cycleon = 40000000; // cycle ON time = 1 s
parameter cycleoff = 80000000; // cycle OFF = 2 s
reg [29:0] cyclecnt;
reg cycle = 0;
reg [19:0] trigcnt;
always @(posedge clk) begin
if (!enable) begin
cycle <= 0; // off
cyclecnt <= 0;
end else begin
if ((cycle == 0 && cyclecnt >= cycleoff) || (cycle == 1 && cyclecnt >= cycleon)) begin
cycle <= !cycle;
cyclecnt <= 0;
end else begin
cyclecnt <= cyclecnt + 1;
end
end
if (cycle == 0) begin
trigger <= 1;
trigcnt <= 0;
end else begin
if (trigcnt >= period) begin
trigger <= 1;
trigcnt <= 0;
end else begin
trigger <= 0;
trigcnt <= trigcnt + 1;
end
end
end
endmodule