Все легко уминается с небольшим запасом сдвигом и подсчетом.
out = 4'b0000; наверное надо поправить, хотя на результат может и не повлиять

Писал на скорую руку. Сыро и требует доработки, но работает в нужном направлении.
Код
module m52_6(rst,clk,in_i,out_o,keyEv);
input rst, clk;
input [51:0] in_i;
output [5:0] out_o;
output keyEv;
reg [51:0] inReg;
reg [5:0] keyCtr;
assign keyEv = ~inReg[51];
always @ (posedge clk)
if (rst) inReg <= in_i;
else begin
if (keyEv) inReg <= in_i;
else inReg[51:0] <= {inReg[51:0], inReg[51]}; end
always @ (posedge clk)
if (rst) keyCtr <= 0;
else if(~keyEv) keyCtr <= keyCtr + 1;
else keyCtr <= 0;
assign out_o = keyCtr;
endmodule