diff --git a/Makefile b/Makefile
index 0d4a2ba9e9e383c1d6ee126132115163a53b4c44..d09bf6e19fb36a7a5415c8f6a04da5c9616d6ec9 100644
--- a/Makefile
+++ b/Makefile
@@ -60,7 +60,8 @@ CORES = axi_axis_reader_v1_0 \
pps_gen_v1_1 \
pwm_gen_v1_0 \
ramp_gen_v1_0 \
- selector_v1_0
+ selector_v1_0 \
+ time_trig_gen_v1_0
VIVADO = vivado -nolog -nojournal -mode batch
XSCT = xsct
diff --git a/cores/time_trig_gen_v1_0/core_config.tcl b/cores/time_trig_gen_v1_0/core_config.tcl
new file mode 100644
index 0000000000000000000000000000000000000000..f931d39ff2769c59ab02c91c0271fbc88c79cb54
--- /dev/null
+++ b/cores/time_trig_gen_v1_0/core_config.tcl
@@ -0,0 +1,7 @@
+set display_name {Time Trigger Generator}
+
+set core [ipx::current_core]
+
+set_property DISPLAY_NAME $display_name $core
+set_property DESCRIPTION $display_name $core
+
diff --git a/cores/time_trig_gen_v1_0/time_trig_gen.vhd b/cores/time_trig_gen_v1_0/time_trig_gen.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..660101b10241b849d2352863c6a4d99f5f491e21
--- /dev/null
+++ b/cores/time_trig_gen_v1_0/time_trig_gen.vhd
@@ -0,0 +1,49 @@
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.numeric_std.all;
+
+entity time_trig_gen is
+ port (
+ aclk : in std_logic;
+ aresetn : in std_logic;
+ cfg_data: in std_logic_vector(32-1 downto 0);
+ trig_o : out std_logic
+ );
+end time_trig_gen;
+
+architecture rtl of time_trig_gen is
+
+ signal cntr_reg, cntr_next : std_logic_vector(32-1 downto 0);
+ signal trig_reg, trig_next : std_logic;
+ signal comp_reg, comp_next : std_logic;
+
+begin
+
+ process(aclk)
+ begin
+ if rising_edge(aclk) then
+ if (aresetn = '0') then
+ cntr_reg <= (others => '0');
+ trig_reg <= '0';
+ comp_reg <= '0';
+ else
+ cntr_reg <= cntr_next;
+ trig_reg <= trig_next;
+ comp_reg <= comp_next;
+ end if;
+ end if;
+ end process;
+
+ comp_next <= '0' when (unsigned(cntr_reg) = unsigned(cfg_data)-1) else
+ '1';
+
+ cntr_next <= std_logic_vector(unsigned(cntr_reg) + 1) when (comp_reg = '1') else
+ (others => '0') when (comp_reg = '0') else --reset
+ cntr_reg;
+
+ trig_next <= '1' when (unsigned(cntr_reg) = unsigned(cfg_data)-1) else
+ '0';
+
+ trig_o <= trig_reg;
+
+end rtl;