Hi,
you have posted in the wrong group, since this is not an issue of timing analysis.
But here's some help anyway.
From your description I understand that you want to build some sort of monoflop.
A short trigger impulse shall cause a 1 sec impulse.
To keep it simple I explain it without a retrigger feature.
Your code has a big mistake:
process (clock, start)
begin
if start = '1' then <- This causes the rest of the code to be active only while the trigger is active. Big mistake!
if rising_edge(clock) then <- This line and allthat follows possibly never ever will be active.
So, what's to do?
First, you have to decide, whether your trigger impulse is longer or shorter than the clock period.
In the first case you can write a simple synchronous process. like this:
begin
if rising_edge(clock) then
if triggered = '0' and start = '1' then
triggered <= '1'; -- start detected
Counter <= (others => '0');
elsif triggered = '1'
-- do some counting stuff
elsif Counter = Maxcount then
triggered <= '0'; --disable counter andprepare for nextstart
end if;
end if;
end process;
You may fill this with the missing statements.
Now, if your start impulse is shorter than your clock period things become a little more tricky.
To catch the start impulse you can use an asynchronous set input of a FF:
begin
if Reset = '1' then
Trigger_FF = '0';
elsif start = '1' then
Trigger_FF <= '1'
elsif rising_edge(Clock) then
Trigger_FF <= Trigger_FF and not Stop;
end if;
end process;
You need a second process to do the counting, and at the end of counting it has to disable the Trigger_FF by setting Stop for one clock period.
Have a nice synthesis
Eilert