I have a clock coming from a pin (GMI_CLK). It passes through a PLL and a new clock with 4 times the frequency is generated (Sys_CLK).
Now I need a pulse each time a rising edge of the original clock is detected (Sys_valid).
This works perfect in the simulation. It has been coded as followed, but both ways generate errors during synthesis:
make_clkvalid: process(sys_clk)
variable GMI_CLK_alt : std_logic;
begin
if rising_edge(sys_clk) then
if GMI_CLK = '1' and GMI_CLK_alt = '0' then
Sys_valid <= '1';
else
Sys_valid <= '0';
end if;
GMI_CLK_alt := GMI_CLK;
end if;
end process make_clkvalid;
[Synth 8-5535] port has illegal connections. It is illegal to have a port connected to an input buffer and other components. The following are the port connections : Input Buffer: Port I of instance clkin1_ibufg(IBUF) in module Other Components: Port I1 of instance i_43(LUT2) in module GMI_IO Port I1 of instance i_42(LUT2) in module GMI_IO Port D of instance GMI_CLK_alt_reg__0(FD) in module GMI_IO Port D of instance GMI_CLK_alt_reg(FD_1) in module GMI_IO
or like this:
make_clkvalid: process(GMI_CLK, Sys_clk)
begin
if rising_edge(GMI_CLK) then
Sys_valid <= '1';
elsif falling_edge(Sys_clk) then
Sys_valid <= '0';
end if;
end process make_clkvalid;
[Synth 8-27] else clause after check for clock not supported [GMI_IO.vhd":183]
How can I implement it for synthesis?