it can be implemented as a binary counter, but you need to shift and xor the binary count with itself.
if you are asked to do the logic design, you can design it as a state machine and figure out the logic diagram.
in verilog:
reg [n-1:0] bcount;
reg gcount;
always @(posedge clk or negedge reset)
begin
if(~reset)
bcount > 1) ^ bcount;