Your code is perfectly legal, but the synthesis tools (who will translate your VHDL into netlists) cannot cope with it. In general, wait statements are tough for synthesis tools. A few accept "wait for rising_edge(clk);", the others don't accept any wait statements.
The basic skeleton the synthesizer likes is this:
process (clk, rst) is
begin
if rst = '0' then -- '0' for active-low reset or '1' for active-high reset
-- reset your signals
elsif rising_edge(clk) then
-- do stuff
end if;
end proces;
If I try to fiddle your code into this skeleton, I get something like this:
ARCHITECTURE RTL OF ENABLE IS
BEGIN
PROCESS(clk)
BEGIN
if rst = '1' then
RD <= '1';
elsif(rising_edge(clk)) then
IF CNVST = '1' THEN
RD <= '0';
end if;
END IF;
END PROCESS;
END;
No need to draw a diagram first. This will limit your hardware designs to things you can visualize. If you just stick to the skeleton above, you can write complex state machines that you could never draw if you force yourself to think of flip-flops and gates.
In order to get a feeling of how the synthesis tool works, it is useful to inspect the synthesis results.