Desafortunadamente, 16 bits no son suficientes para convertir una señal de 50MHz en una señal de 50Hz. Esto es porque necesitas dividir el reloj por 1 millón. $$ 2 ^ {16} = 65536 $$ Por lo tanto, no es suficiente. Un contador con al menos 20 bits sería suficiente porque: $$ 2 ^ {20} = 1048576 $$
Para convertir la señal, simplemente cuenta hasta 1 millón de ciclos de reloj y luego cambia el estado de la señal de salida.
ejemplo:
always @(posedge clk_in) begin
count_20 <= count_20 + 1;
if(count_20 == 1000000)
begin
count<=0;
clk_out <= !clk_out;
end
end
Editar:
Resulta que ^^ daría como resultado una señal de 25Hz, por lo que solo necesitas contar hasta 500000, que necesita 19 bits. La pregunta entonces es de dónde viene ese bit 20, ya que necesita dividirse por 1 millón. Bueno, el bit clk_out sirve como ese bit 20.