Si ya has implementado un reloj de tiempo real (te refieres a eso cuando dices timer,imagino) no entiendo cómo se te hace difícil encarar la parte que te queda de tu proyecto,pero bueno,te arrojo un par de ideas que te pueden ayudar.
Yo implementaría el sistema con 4 subsistemas modelados en vhdl de forma independiente y después interconectados desde esquemático:
----------------------------------------------
MODULO RELOJ:
Implementa un reloj a tiempo real con las entradas y salidas que tú veas necesarias,por si quieres agregarle la posibilidad de representar la hora en displays,programar la hora con pulsadores,programar la hora de activación de la carga,etc...
No mencionas si tras la activación del calentador a la hora concreta quieres que esté funcionando durante un tiempo limitado y vuelva a desactivarse,aunque imagino que debe ser así,así que para poder detectar cuando se alcanza la hora de encendido y cuando la de apagado,este módulo deberá tener una salida de 1 bit que se activará cuando llegue la hora de encendido y permanecerá activa hasta que se alcance la hora de apagado,momento en el que se desactivará.Llamemos a esta señal de salida,por ejemplo, "Hora_disparo".
MODULO SENSOR:
Este módulo se encargaria de comunicarse con un sensor de temperatura con interfaz digital...la forma en que lo haga,las entradas y salidas que necesite para ello y su correspondiente descripción vhdl dependerá del sensor que escojas.
Deberá contar también con una señal de salida de 1 bit que estará activa cuando se esté por debajo del umbral mínimo de temperatura que se establezca y se volverá a desactivar cunado se alcance la temperatura máxima.Llamemos a esta señal de salida "Temperatura_disparo".
MODULO DE DISPARO:
Este módulo se encargará de controlar el circuito de potencia de la carga.La cantidad de salidas que precise para ello dependerá de cual sea ese circuito de potencia,aunque lo normal es que baste con una única salida de 1 bit (pongámosla activa a nivel alto) que podría atacar la base de un transistor para activar-desactivar un relé.Llamemos a esa salida "Activacion_carga".
Deberá tener como entradas las dos señales procedentes de los otros dós módulos,o sea,"Hora_disparo" y "Temperatura_disparo".
Su descripción podría ser algo tan sencillo como esto:
entity MODULO_DISPARO is
port(Hora_disparo , Temperatura_disparo , Enable : in std_logic,
Activacion_carga : out std_logic);
end MODULO_DISPARO;
architecture COMBINACIONAL of MODULO_DISPARO is
begin
Activacion_carga <= '1' when hora = '1' and temperatura = '1' and Enable = '1' else '0';
end COMBINACIONAL;
MODULO DE CONTROL:
Debería poder inhibir la activación de la carga (señal "Enable" cuando fuera necesario (apagado o encendido manual del calentador,mientras se programa el reloj,etc...)
Podría ser necesario que se encargara de la inicialización del sistema(inicialización del reloj y de las comunicaciones sensor - MODULO_SENSOR),aunque esto es algo que se puede hacer en cada módulo individualmente.
----------------------------------------------------------
El MODULO RELOJ es un circuito síncrono,por lo que debe llevar señal de reset.
El MODULO SENSOR posiblemente necesites que también sea síncrono,por lo que también debe llevar una entrada de reset y una de clock.
Aprovecha el reset para inicializar ambos módulos.
El módulo de disparo es puramente combinacional,por lo que no precisa ni de señal de clock ni de reset.